Design authority lives in ../proposal/ — start with 01-design-principles.md
(P-1..P-11) and the decisions register ../proposal/decisions.md (D-001–D-080).
Code that contradicts a settled decision is wrong even if it works.
Probe code (../probes/) is rewritten with its tests carried, never
copied. A promotion PR states which probe it promotes; the probe's test
corpus and gap ledger come along as the crate's test suite. Probe code itself
is a design artifact, not a dependency.
fmt∘fmt = fmt), lossless round-trip (text(tree) == input,
including comment count and anchors), parse-error input returned untouched,
cross-platform determinism.strata-diag/0, see docs/diagnostics.md), never a crash.cargo xtask ci
runs the test suite twice and byte-compares generated artifacts; a diff
fails the build.Run the full gate locally before pushing:
| 1 | cargo xtask ci # whole workspace |
| 2 | cargo xtask ci -p strata-cli # scoped, while sibling crates are mid-build |
(fmt-check → clippy -D warnings → tests ×2 + artifact byte-compare.)
If implementation forces a divergence from ../proposal/, do not silently
adapt: record it in a SPEC-ISSUES.md at the crate root (what diverged, why,
which proposal section/decision it touches). These files feed back into
../proposal/ — a divergence is resolved either by fixing the code or by a
decisions-register event, never by drift.