Files
rune/docs
Nick e434acd4a2 fix(scaffolding): remove the dormant widening authority; freeze the record (R2 cleanup)
The Phase G canonical-intent audit found two IMPLEMENTATION_ACCIDENTs left by the
R2 supersession, plus stale doctrine that still described the overruled rule.
Neither accident restored the superseded behaviour, but each is the kind of
leftover a later tranche can read as authority — which is exactly the
resurrection risk R2 exists to close.

1. DEAD WIDENING BRANCH REMOVED. `check_mutation` carried a branch that WIDENED
   the durable scope when a contract was `scope_provisional` and the path was
   out of scope ("extend it and record — do NOT block"). No current writer can
   reach it (`scope_provisional` is only set alongside an EMPTY scope, where the
   verdict is `unknown`, not `out_of_scope`), which made it a latent second
   widening authority rather than live code. Removed rather than repaired: a
   future path that somehow reaches that state now gets the canonical
   OUT_OF_SCOPE refusal, with the lawful remedy named. A dormant widening
   authority is worse than dead code.

2. THE RECORD NO LONGER CONTRADICTS THE BOUNDARY. `establish_scope` freezes the
   scope (`scope_provisional = False`) and returns `provisional: False,
   frozen: True` — while writing `"provisional": True` into the observation it
   persists. Enforcement was correct; the durable audit trail asserted the
   opposite. That record is precisely the evidence a later tranche could cite to
   "restore" accumulate-forever. Now records `provisional: False, frozen: True`.

3. STALE DOCTRINE CORRECTED, HISTORY PRESERVED. `docs/SCAFFOLDING_MIMO_DEFAULT.md`
   still said divergence "extends and records; it does not block" and that
   `seal_scope()` "promotes provisional → declared"; `derive_scope`'s docstring
   still said a provisional scope "accumulates rather than blocks". Both now
   state the corrected invariant and keep the old wording explicitly labelled
   SUPERSEDED, with the original rationale intact — the reasoning was sound, the
   mechanism was not, and erasing it would lose why the machinery looks as it does.
   Residual 2 updated to match.

4. R2 SUPERSESSION PERSISTED CANONICALLY. `docs/RUNE_CANONICAL_INTENT_STATE.md`
   now records the supersession in SUPERSEDED APPROACHES, with the measured
   evidence (31 → 109 scope entries, no authority references), the corrected
   invariant, the implementing commits, and an explicit note that the older T23
   rationale is historical evidence and not current intent.

Tests: two regressions added to tests/test_t24_governance.py — the dormant path
is FORCED (provisional + non-empty scope) and must refuse rather than widen; and
the establishment record must not contradict the frozen state. 50 passed; the
authority/scaffolding/t23/t24/recovery sweep is 150 passed. BLE001 ratchet 347/347.
2026-09-25 12:09:02 +01:00
..