Cassette Build Report 048 — The Law Was Written, but Nobody Enforced It
A whole-system audit found rules for removal maps, citations, file scope, and queue order that existed in the records but not in the ledger that was meant to enforce them.

Scope note: This report covers the S00–S19 whole-system audit before S20. It follows the gap between a rule written in project records and a rule enforced by the governing ledger; it does not claim that every written requirement in a software project is missing an executable check.
Before S20 opened, I asked for a review of everything we had already called closed. Not nineteen small reviews stacked one on another. One look at the whole system.
That change in scale exposed a problem that the step reviews could not see. AGENTS.md said every component needed a Q78 removal map: the row that should fail if that component disappeared. It also said tools/ledger.py enforced the map. The ledger did not enforce it. No product file carried a removal row. Nineteen steps and seven product modules had been allowed to grow under a rule that existed only as a sentence.
The rule was scheduled for S27, near the end of the build. That meant the mechanism deciding whether a component deserved to exist would arrive after most of the components had already been written. The sequence was backwards.
Opus 5 Max found that contradiction. Kimi K3 Max had run thirty-five tests and a clean ledger and found the future queue coherent. Sol agreed with Opus after reading the live tree, then found more: commit messages could describe a J increase without a mechanically checked research citation; S11 had no acceptance boundary even though its evidence depended on a live service; and S19’s containment wording stopped at compiler.py while store.py imported a libc handle one step lower in the path.
The disagreement was useful because it was specific. Kimi reviewed the steps as a sequence. Opus reviewed the obligations as a system. Neither perspective was sufficient alone. A queue can be tidy and still place an obligation before the artifact it needs. A local check can be true and still fail to govern the path named by the claim.
Sol also found that the ledger excluded tracked Python under .github, research, and outputs. A file in one of those directories could escape line counting, import-graph checks, runtime confinement, and the removal map while the ledger reported clean. The repair removed the geographical exemption. Only foreign environments and ignored caches remained outside the authored surface.
The new discovery was recorded in the ledger itself:
UNTRACKED_CACHE_DIRS = {".git", "__pycache__", ".pytest_cache"}
PRODUCT_MODULES = {"errors", "store", "sources", "compiler", "pager", "trainer", "broker"}
The ledger scope in tools/ledger.py is not the whole repair, but it shows the direction. The governed surface is defined by what the repository owns, not by the directory in which a file happens to sit. AGENTS.md gained one machine-readable Q78 row for every present product and tool authority. Missing, stale, empty, or unknown rows now make the ledger fail.
The audit did not stop at Q78. The generated schemas still contained open strings, arrays, numbers, and objects in later protocol surfaces. The generator now emits finite records where Cassette owns the shape and bounded inert values where a provider record must remain flexible. S03 walks those bounds independently. An unknown provider argument dies at the canonical Q6 schema boundary instead of wandering into a later capability check.
S05 received another correction. The row claimed more SafeTensors and GGUF behavior than the implementation performed. Sol added a bounded GGUF v2/v3 parser, duplicate-name and byte-range checks, hashed imports, immutable training-delta pages, root inheritance, and exact delta reads. Export stayed with S22A, where a trained child would actually exist. The audit did not reward a promise for being early.
One finding then turned against the reviewer. Sol first required every tuned revision to carry a nonempty delta list. The focused fixture passed. The full suite did not: S06 also allowed a complete replacement SafeTensors checkpoint. Thirty-five tests passed and one failed. Sol narrowed the rule to tuned roots that actually carry deltas, then reran the complete repository. Thirty-six tests passed. The failed repair belongs in the record because a plausible system rule can still contradict an earlier valid form.
The work changed how I read a green ledger. A green local step says that the step’s declared questions passed. A whole-system audit asks whether the questions themselves are attached to the right authority, in the right order, across the full owned surface. That is a different proof.
S20 began with a better queue, a real removal map, and a ledger that could see the code it claimed to govern. The practical rule is plain: if a requirement decides whether code deserves to exist, enforce it while the code is being admitted. Do not leave the law at the end of the road and call the road governed.
