Session 146 fixed `--run-id` across the seven doors and called it a class. It was not: the class
is every caller-supplied value that reaches a file name, and `write_outbox` composes
`{run_id}-{approach_id}`. Measured 20.09 -- `--approach-id a/../../../ESCAPE` answered 0 and put
the artefacts three levels above the directory the caller named. Counted rather than assumed: 11
path compositions in `outbox.py`, 2 such values, both now through one `_checked_name`.
The ledger sentence that said containment was UNREACHABLE after the string rule was untrue, and
the approach-id escape is the disproof -- the removed check would have caught it. It is back, but
in `outbox._artefact_path`, where the composition is, not in the door. That is the difference
that makes it reachable: the string rule lives in the door, while `run.py` hands its own
`--run-id` straight to the writers and goes past it. Checked before the directory is created, so
a refusal leaves nothing behind, and it covers the next flag someone interpolates into a name.
The judge's exact call now answers 3 with 0 files outside. Suite 2291/0/5/5 (746 s), ruff clean,
mypy 0. Both gates re-run after `git add`: v1 exit 1 (0/3, 0/3, 3/8, no report, 3/8, NOT
MEASURED, 1/20), B exit 1 (15/17, 0/2, 15/15 over 516 files, 0/3, 4/5, NOT MEASURED) -- no row
moved, and row 3's denominator held because the probe grew in place rather than as a new file.
Also: the presentation deck said 1.1.0 was the current version in two places. 1.2.0 now stands in
every tracked place that claims the repo's version. No bump, no tag, no new capability.
[skip-docs]
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The MAF-free rule is a family of guards, not one list: _MAF_FREE_MODULES
holds nine modules (tests/test_okf.py:22-32), ingest/ingest_mcp carry
their own, hitl/notify add a transitive import-graph guard. The repo map
says so instead of claiming one AST guard over eight modules.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
One-hour walkthrough in seven parts: purpose, architecture, the elements,
the workflow and its feedback loops by duration, the MAF harness (what it
is, its building blocks, what this repo chose and refused), the quality
method with measured status, and the work after v1.1. 48 inline SVG
figures, white background, every content slide carries a source line into
the tree. Numbers carry their denominators; the two-denominator caveat on
the stress rounds and the two attempts of the 14.08 live run are stated.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>