Evidence
No figure on this site was typed by hand. Each one below is read from an artifact in the repository at build time and is stated with what it does not establish.
| Figure | Value | Artifact | Limit |
|---|---|---|---|
| Specification version | 2.1 | spec/VERSION, tag spec-2.1 | A version names a rule set, not a chant release |
| chant pin | 0.73.0 | root package.json | The engine under test, not necessarily the corpus’s revision |
| Reference implementation | 2.1.0 | packages/reference/package.json | Same author as chant; not an independent implementation |
| Conformance suite | 2.1.0 | packages/conformance/package.json | Carries the fixtures at the declared spec version |
| Rules with a fixture | 135 of 139 | spec/fixtures/UNCOVERED.md | The rest are listed with a reason each |
| Fixtures | 127, of which 65 whole-build | spec/fixtures/ | Cases somebody chose |
| Corpus | 109 projects, 441 files | chant 0.73.0 at 8ccbf3f4 | chant’s own examples, not a sample of real-world source |
| Comparable files | 440, verdicts agree | packages/conformance/corpus-report.md | Verdict agreement, which is the weaker claim; 1 loads no package |
| Both fold, identical namespaces | 304 | same | Entities compared as class plus properties, on one shared host |
| The evaluator as WebAssembly | 1255 KB, no imports | evaluators/rust built for wasm32-unknown-unknown; rust-wasm-agreement.test.ts | The same crate as the binary; it proves embedding, and the profile’s proof is the column below |
| The data-host column | 441 of 441 agree, 142 fold on both | same, with evaluators/rust built | Two evaluators on one profile, sharing an author and one specification text, so agreement shows the text is implementable rather than right. Writing the Rust one found the reference reviving and tainting in a profile that does neither, both fixed in the reference |
The claims, and the scenarios that check them
Each claim on what it enables has a scenario under scripts/smoke/scenarios/ that runs on a throwaway Forgejo and prints one verdict line per step. The weekly demo workflow runs every scenario twice and commits the result here. The second run sets BREAK=1, which sabotages the setup so the scenario has to catch it.
| Claim | Command | Held | Broken case caught |
|---|---|---|---|
| Folding and running the same policy give the same values, and a file that would differ is refused before either is trusted. ~1 min. | just smoke fold-equals-run | pass | caught |
| The fold produces the plan without running the file, so a side effect the file carries never happens. ~1 min. | just smoke no-execution | pass | caught |
| After an apply, reading live back and diffing against the declared source finds nothing; a drift is named exactly. ~1 min. | just smoke round-trip | pass | caught |
| A rule over the declared values, the removal cap, holds a plan that removes too much before anything is applied. ~1 min. | just smoke rules-over-values | pass | caught |
Last run at 3304d9a on 2026-09-14, against forgejo-warden 86dc6406.
What the consumer is running
The site presents forgejo-warden as the demonstration that this specification is usable by a platform that is neither this repository nor chant, and a demonstration is worth what it actually runs. Warden pins its own evaluator, so the version it demonstrates is that repository’s lockfile rather than this one’s. Nothing here read it until #192, and it had drifted six minors behind unnoticed.
No weekly run has recorded the consumer's declared version yet. scripts/consumer-skew.mjs reads it from the evaluator the consumer itself installed, and the demo workflow commits the result.
Read rather than gated. Which version a consumer pins is that repository’s decision, and no gate here can see its lockfile between runs. Nothing had to be added to warden for this: spec/README.md already asks an implementation to declare the version it implements, and the evaluator warden installs already carries the declaration. What was missing was something on this side that looked.
paper/measurements.md is the full statement of each measurement and the history of what changed. The chant-side measurements (the fold differential, the execution-boundary profile) live in chant’s repository and are cited there.