crates/nornir-escape/Cargo.toml
[package]
name = "nornir-escape"
version = "0.1.0"
edition = "2021"
# PUBLISHABLE (the "later wave" this crate was held for has arrived). A pure
# markup-escaping primitive shared by every tool that emits SVG/XML. It was
# `publish = false` while its consumers were path-only; three PUBLISHABLE crates now
# declare `version = "0.1.0"` beside the path and cannot resolve it from the registry:
# Skidbladnir/Cargo.toml:65
# holger/server/repository/znippy-maven/Cargo.toml:25
# holger/server/repository/znippy-rpm/Cargo.toml:31
# Measured 2026-08-02: the sparse index 404s on `nornir-escape`, so `cargo publish` on
# any of the three fail-stops with *no matching package named `nornir-escape`* — 20
# publishable crates blocked transitively, and the only reason Skidbladnir has a 0/1
# leaf ratio. Inlining the escaper in three places instead would re-create the SEVEN
# byte-identical twins this leaf was extracted to kill (LAW 5).
# Nothing blocks it: std-only, ZERO runtime deps, and its one dependency
# (`nornir-testmatrix`, optional, `testmatrix` feature only) is live at 0.2.7.
description = "The ONE shared markup-escaping primitive for the nordisk constellation — XML/SVG entity escaping (`xml` → `& < > \"` become `& < > "`, allocation-free `Cow` when the input is already clean). REUSE (LAW #5): seven BYTE-IDENTICAL `xml_escape`/`svg_escape` copies grew independently across nornir (viz `diagram`/`coverage_metrics_svg`, `arch`, `mimir`, `nornir-introspect`), edda (`nornir-testmatrix` coverage SVG) and Skidbladnir (`msi` WXS) — this leaf owns the canon so every SVG/XML emitter escapes the same four entities identically. std-only, ZERO runtime deps. Domain-coupled escapers (typst markdown→typst conversion, markdown table cells, asset-name slugs) STAY in their conductor (L5a)."
license = "MIT OR Apache-2.0"
repository = "https://git.gunnar.rs/nordisk/edda"
keywords = ["xml", "svg", "escape", "entities", "markup"]
categories = ["encoding", "text-processing"]
exclude = ["/.nornir/"]
[features]
default = []
# `testmatrix` — emit each escaper surface's health (exact entity-vector output,
# clean-passthrough borrows, RED corrupted-mapping rejection) into the nornir
# test-matrix via `functional_status`. OFF BY DEFAULT: a compiled-out no-op with
# no nornir dep, so a lean/library build carries neither the emitter nor testmatrix.
testmatrix = ["dep:nornir-testmatrix", "nornir-testmatrix/testmatrix"]
[dependencies]
# Introspection-marker emitter — only compiled with `testmatrix`. Path+version
# (like the other edda leaves) so the workspace resolves the local sibling. This
# is the ONLY dependency, and it is absent from a default (release) build.
nornir-testmatrix = { version = "0.2.7", path = "../nornir-testmatrix", default-features = false, optional = true }