feat(wave-1): retire the dead instruments, delete the aliases nobody calls (PR-3, PR-3b, R-7)
Wave 1 — delete — run before more Wave 2 enforcement, correcting the method inversion this arc had been committing: the plan sequences scrub -> DELETE -> enforce, and Wave 1 was ruling-blocked while Wave 2 was not, so enforcement landed first on structures deletion might have removed. PR-3 (R-7 ruled A) docs/gaps.md and docs/audit/substrate-liveness-ratchet.md carry historical banners that name H-9's own mechanism as the reason they exist: an instrument that looks authoritative converts "I should check" into "I already checked". The ratchet's seven OPEN items — W-003, W-005, W-007, W-008, W-009, W-017, W-018, every one L10-chained — migrated into G-5 WITH their dependency chains, because that reasoning is the ratchet's lasting contribution and its status column is not. One deliverable could not be executed as written and is recorded rather than claimed: L12 has NO in-repo generator to drop it from. The system map is local and gitignored (D5 — a regeneratable index carrying no authority), so the phantom existed only there and in one taxonomy row. That row now records the ruling instead of the flag. PR-3b — new, and it corrected its own author Added when PR-4's two ratchets made the question unavoidable: what exactly are they policing? Measured: 21 curated suites, 9 holding exactly ONE file, 12 holding <=4, and 2 reachable from any gate. I proposed cutting ~11. The evidence supported FOUR. cognition, teaching, packs and algebra are named in AGENTS.md's own pre-merge-gate instruction; fast, pulse and proof in the CLI's help text; phase5, phase6, adr-0024, math and formation in READMEs and ADRs. Deleting those breaks documented commands — worse than the sprawl. Taking the 4 the evidence supports, rather than the 11 I had already said out loud, is the whole point. Deleted: refusal, margin, rotor, inner-loop. Zero --suite references anywhere in code, docs, ADRs, workflows or CLI help. Per-phase ADR-0024 aliases offered so reviewers could run a phase independently; nothing ever did. All seven of their files remain covered by adr-0024 — verified BEFORE the cut — so nothing was orphaned and no coverage moved. 21 -> 17 suites. Pin 3's gate-unreachable gap 19 -> 15 BY DELETION, which costs no gate time at all, versus promotion which costs it every run. An alias nobody calls is not a curation decision; it is one more name that has to be kept true, and two ratchets were policing these. Registers: H-9 CLOSED, PR-3 and PR-3b marked LANDED, G-5 carries the seven migrated items, the taxonomy's L12 row records the ruling. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wcw2pnMBwyvmNyQg4uPEt4
This commit is contained in:
parent
065826c556
commit
d0bedfc198
8 changed files with 74 additions and 24 deletions
|
|
@ -289,18 +289,18 @@ TEST_SUITES: dict[str, tuple[str, ...]] = {
|
|||
),
|
||||
"formation": ("tests/formation",),
|
||||
"proof": ("tests/test_proof_properties.py",),
|
||||
# ADR-0024 chain suites (Phases 2-6). Each phase has its own contract
|
||||
# tests so reviewers can run them independently; ``adr-0024`` runs the full
|
||||
# chain end-to-end.
|
||||
"refusal": ("tests/test_refusal_contract.py",),
|
||||
"margin": ("tests/test_margin_admissibility.py",),
|
||||
"rotor": ("tests/test_rotor_admissibility.py",),
|
||||
"inner-loop": (
|
||||
"tests/test_inner_loop_admissibility.py",
|
||||
"tests/test_inner_loop_phase2.py",
|
||||
"tests/test_inner_loop_phase3.py",
|
||||
"tests/test_inner_loop_phase4.py",
|
||||
),
|
||||
# ADR-0024 chain suites (Phases 2-6). ``adr-0024`` runs the full chain
|
||||
# end-to-end; ``phase5``/``phase6`` survive because README.md and the
|
||||
# forward_semantic_control READMEs invoke them by name.
|
||||
#
|
||||
# PR-3b (Wave 1, 2026-07-28) — four per-phase aliases deleted: ``refusal``,
|
||||
# ``margin``, ``rotor``, ``inner-loop``. Each was offered so reviewers could
|
||||
# run a phase independently, and measured across the repository, **nothing
|
||||
# invoked any of them** — zero `--suite` references in code, docs, ADRs,
|
||||
# workflows or the CLI's own help. Every one of their seven files is still
|
||||
# covered by ``adr-0024``, so no coverage moved and nothing was orphaned.
|
||||
# An alias nobody calls is not a curation decision; it is a name that has to
|
||||
# be kept true. Two ratchets (membership, reachability) were policing these.
|
||||
"phase5": ("tests/test_phase5_corpus.py",),
|
||||
"phase6": ("tests/test_phase6_demo.py",),
|
||||
"adr-0024": (
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ All 33 zones, mapped once. Liveness is the map's 2026-06-09 label — **48 days
|
|||
| ingest-boundary | M2 | partial-wiring-debt | |
|
||||
| ingest-compiler | M2 | partial-wiring-debt | |
|
||||
| sensorium-afferent | M2 | inert | |
|
||||
| sensorium-falsification | M2 | live-internal | map labels it "L12" — a stratum no other document uses; flag for ruling |
|
||||
| sensorium-falsification | M2 | live-internal | map labelled it "L12" — a stratum no other document uses. **Ruled 2026-07-28 (R-7): dropped.** No in-repo generator emits it (the system map is local and gitignored, per D5 a regeneratable index carrying no authority), so nothing in the repository was changed — the phantom existed only in a local artifact and in this row. Recorded rather than silently deleted, so the next reader does not re-derive it. |
|
||||
| L4-recognition | M3 | partial-wiring-debt | |
|
||||
| L5-cognition | M3 | partial-wiring-debt | |
|
||||
| comprehend-organ ⚑ | M3 | live-serving | zero subsystems mapped |
|
||||
|
|
|
|||
|
|
@ -42,6 +42,20 @@ What remains owed is the **ceremony**, and it is this assessment's own §8 maint
|
|||
|
||||
A recorded prose result with no pinned digest is **testimony, not evidence** — the same failure mode as the map, the ratchet, and the blueprint.
|
||||
|
||||
**Absorbed 2026-07-28 (R-7, PR-3) — the substrate-liveness ratchet's seven OPEN items.** The ratchet is now historical; every one of its open entries was L10-chained, which is this entry, so they live here rather than in a stale instrument:
|
||||
|
||||
| Item | What it is | Chain |
|
||||
|---|---|---|
|
||||
| **W-003** | `VaultPromotionPolicy` dormant | audit-dependency on L10 |
|
||||
| **W-005** | E0/E2 readback modulation absent | W-004 → W-005 |
|
||||
| **W-007** | `DerivedRecognizer` not integrated into the live turn loop | W-003 → recognizer-storage ADR → W-007 |
|
||||
| **W-008** | Runtime model (L10) scope adoption | scope landed (#236); spike/ADR pending |
|
||||
| **W-009** | HITL async queue surface | W-008 → W-009 |
|
||||
| **W-017** | Automated T1/T2 → T3 promotion absent | W-009 → W-017 |
|
||||
| **W-018** | ADR-0080 contemplation not autonomous | W-008 → W-018 |
|
||||
|
||||
Their dependency reasoning is still sound and is the ratchet's lasting contribution; its *status column* was not, which is why the instrument is retired and its content is not.
|
||||
|
||||
**Two prior claims in this entry were wrong and are withdrawn.** (a) *"No suite contains any `l10`/`always_on` test"* was a scan artifact: `TEST_SUITES["full"] = ("tests/",)` is a **directory**, so every test file is trivially in a suite. The true statement is that the five `tests/test_l10_*.py` files are in **no curated suite tuple** — reachable only through `full`. (b) *"nothing runs its pins"* is false: CI never invokes `core test --suite`, it runs raw pytest with marker filters, and no L10 file carries `quarantine` or `slow` — so the pins **execute twice a day**, in `full-pytest.yml` (post-merge) and `nightly-full-pytest.yml` (cron `0 2 * * *`). The correct statement is that **nothing runs them on any pre-merge gate**.
|
||||
**Evidence:** `M6` + `always-on-process` cards; `evals/l10_always_on/contract.md`; `core/cli_test.py:13`; `.github/workflows/{smoke,full-pytest,nightly-full-pytest}.yml`. · **Authority:** execution + the R-9 evidence-standard and cadence ruling.
|
||||
|
||||
|
|
|
|||
|
|
@ -85,6 +85,7 @@ The surviving delta is **not a containment hole** — refusal is fail-closed and
|
|||
**Why it hinders:** an instrument that *looks* authoritative converts "I should check" into "I already checked." Phase 0's error was this mechanism operating on this assessment.
|
||||
**Better home:** this register supersedes `docs/gaps.md` (marked historical); the ratchet's 7 OPEN items migrate here (G-5 absorbs their L10 dependency); the map stays a regeneratable local index per D5, with "L12" dropped; the assessment directory becomes the standing ruled record, `verified_at`-stamped.
|
||||
**Authority:** ruling (one PR).
|
||||
**Status (2026-07-28): CLOSED — R-7 ruled A; PR-3 landed.** `docs/gaps.md` and the substrate-liveness ratchet both carry historical banners naming this entry's own mechanism as the reason. The ratchet's seven OPEN items (W-003/005/007/008/009/017/018, all L10-chained) migrated into G-5 with their dependency chains. `L12` had no in-repo generator — the map is local and gitignored — so the phantom is recorded as ruled rather than deleted, which is the honest form.
|
||||
|
||||
## H-10 · The demotion that mispriced the paradigm experiment
|
||||
**Verdict:** `strained` framing — a correct ruling casting an incorrect shadow · **Layers:** M3/governance
|
||||
|
|
|
|||
|
|
@ -205,9 +205,22 @@ The assessment directory's own corrections (N-1…N-7 applied to `30-gap-registe
|
|||
### PR-2 · Delete the decoration · **S** · H-2
|
||||
`DriveGradientMap` construction at `chat/runtime.py:716` and the class; `InhibitionMask`/`InhibitionOperator` exports from `core/physics/__init__.py`. Their *intents* are preserved in writing first: drive → the CR-2 design brief (G-4), the mask → the CR-1 ADR (G-14). **Verification:** the sabotage test in reverse — full `smoke` plus the deduction and cognition suites must be byte-identical before and after; a deletion that changes a surface means the object was not decoration and the PR is abandoned.
|
||||
|
||||
### PR-3 · Retire the dead instruments · **S** · H-9
|
||||
### PR-3 · Retire the dead instruments · **S** · H-9 — **LANDED 2026-07-28** (R-7 ruled A)
|
||||
`docs/gaps.md` → historical banner pointing at `30-gap-register.md`; substrate-liveness ratchet → historical, 7 OPEN items migrated into G-5; the phantom `L12` stratum dropped from the local map generator. Per R-7.
|
||||
|
||||
**Landed.** Both banners written, naming *why* rather than just *what* — H-9's mechanism (an authoritative-looking instrument converts "I should check" into "I already checked") is quoted in the banner it explains. All seven OPEN ratchet items (**W-003, W-005, W-007, W-008, W-009, W-017, W-018** — every one L10-chained) migrated into G-5 with their dependency chains intact, because that reasoning is the ratchet's lasting contribution and its status column is not.
|
||||
|
||||
**One deliverable could not be executed as written, and is recorded rather than claimed:** `L12` has **no in-repo generator to drop it from**. The system map is local and gitignored (D5: a regeneratable index carrying no authority), so the phantom existed only in that local artifact and in one taxonomy row. The row now records the ruling instead of the flag.
|
||||
|
||||
### PR-3b · Collapse the suite aliases · **S** · *new, Wave 1* — **LANDED 2026-07-28**
|
||||
Not in the original plan. Added when PR-4's two ratchets made the question unavoidable: *what exactly are they policing?* Measured — **21 curated suites, 9 holding exactly one file, 12 holding ≤4, and 2 reachable from any gate.**
|
||||
|
||||
The cut is much smaller than the sprawl suggests, and the measurement is why. `cognition`, `teaching`, `packs`, `algebra` are named in **AGENTS.md's own pre-merge-gate instruction**; `fast`, `pulse`, `proof` in the CLI's help text; `phase5`, `phase6`, `adr-0024`, `math`, `formation` in READMEs and ADRs. Deleting those breaks documented commands — worse than the sprawl.
|
||||
|
||||
**Four suites had zero `--suite` references anywhere in code, docs, ADRs, workflows or CLI help: `refusal`, `margin`, `rotor`, `inner-loop`.** Per-phase ADR-0024 aliases offered so reviewers could run a phase independently; nothing ever did. All seven of their files remain covered by `adr-0024`, so **nothing was orphaned and no coverage moved** — verified before the cut, not after.
|
||||
|
||||
**21 → 17 suites.** Pin 3's gate-unreachable gap went **19 → 15 by deletion**, which costs no gate time — the ratchet turning the way it should. An alias nobody calls is not a curation decision; it is one more name that has to be kept true, and two ratchets were policing these.
|
||||
|
||||
---
|
||||
|
||||
## 4. Wave 2 — Simplify & enforce
|
||||
|
|
|
|||
|
|
@ -1,3 +1,13 @@
|
|||
> **HISTORICAL — superseded 2026-07-28 (R-7, ruled).**
|
||||
> Last revised ~2026-05-24 and stale since. Its **seven OPEN items — W-003,
|
||||
> W-005, W-007, W-008, W-009, W-017, W-018 — are all L10-chained** and have
|
||||
> migrated into **G-5** of the live register
|
||||
> ([`docs/assessment/30-gap-register.md`](../assessment/30-gap-register.md)),
|
||||
> which carries the L10 proof debt with current evidence.
|
||||
>
|
||||
> Kept for its dependency reasoning, which is still good; not for its status
|
||||
> column, which is not. Do not add entries here.
|
||||
|
||||
# Substrate Liveness Ratchet — v5 (quick-wins lane cleared: W-011/W-012/W-015/W-016 closed)
|
||||
|
||||
**Scope:** [substrate-liveness-audit-scope](../adr/substrate-liveness-audit-scope.md) (v2)
|
||||
|
|
|
|||
11
docs/gaps.md
11
docs/gaps.md
|
|
@ -1,3 +1,14 @@
|
|||
> **HISTORICAL — superseded 2026-07-28 (R-7, ruled).**
|
||||
> This register closed its 26th and last entry and has taken no entry from any
|
||||
> 2026-06+ arc. The live register is
|
||||
> [`docs/assessment/30-gap-register.md`](assessment/30-gap-register.md).
|
||||
>
|
||||
> It is kept for its history, not its authority. H-9's mechanism is why this
|
||||
> banner exists: *an instrument that looks authoritative converts "I should
|
||||
> check" into "I already checked"* — and Phase 0 of the holistic assessment was
|
||||
> that mechanism operating on the assessment itself. Two dead registers plus a
|
||||
> live one is worse than one live one.
|
||||
|
||||
# Capability Gaps
|
||||
|
||||
This file tracks registered blockers for capability progression. Open
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ PR-4 itself raised against G-7's original formulation: *a curated suite nobody
|
|||
runs is the same non-guarantee as ``full``, wearing a different name.* The fix
|
||||
had the same blind spot as the thing it fixed.
|
||||
|
||||
Measured at 2026-07-28: **21 curated suites, 2 gate-reachable.** ``smoke`` and
|
||||
Measured at 2026-07-28: **21 curated suites, 2 gate-reachable** — then **17 and 2** after PR-3b deleted four aliases nothing invoked. ``smoke`` and
|
||||
``deductive`` are invoked by ``scripts/hooks/pre-push`` and
|
||||
``scripts/ci/local-ci.sh --tier gate``; the other nineteen have members and no
|
||||
caller. That is why this is a **baseline plus ratchet** and not a flat rule —
|
||||
|
|
@ -47,7 +47,11 @@ _ROOT = Path(__file__).resolve().parents[1]
|
|||
#: So the set is declared here and *verified* against the shell below.
|
||||
GATE_SUITES: frozenset[str] = frozenset({"smoke", "deductive"})
|
||||
|
||||
#: Curated suites with members and no gate caller, measured 2026-07-28.
|
||||
#: Curated suites with members and no gate caller.
|
||||
#: 19 at first measurement; **15 after PR-3b (Wave 1) deleted four unreferenced
|
||||
#: per-phase aliases** — `refusal`, `margin`, `rotor`, `inner-loop`. That is the
|
||||
#: ratchet turning the way it is supposed to: the gap shrank by deletion rather
|
||||
#: than by promotion, which costs no gate time at all.
|
||||
#: This list may only SHRINK. A suite leaves it by being invoked from a gate
|
||||
#: tier — not by being deleted from this file.
|
||||
UNREACHABLE_BASELINE: frozenset[str] = frozenset(
|
||||
|
|
@ -58,16 +62,12 @@ UNREACHABLE_BASELINE: frozenset[str] = frozenset(
|
|||
"fast",
|
||||
"formation",
|
||||
"full",
|
||||
"inner-loop",
|
||||
"margin",
|
||||
"math",
|
||||
"packs",
|
||||
"phase5",
|
||||
"phase6",
|
||||
"proof",
|
||||
"pulse",
|
||||
"refusal",
|
||||
"rotor",
|
||||
"runtime",
|
||||
"sensorium",
|
||||
"teaching",
|
||||
|
|
@ -164,13 +164,14 @@ def test_baseline_has_no_stale_entries() -> None:
|
|||
def test_recorded_gate_gap_matches_the_measurement() -> None:
|
||||
"""Pin the number so the gap moving is a reviewed decision, not a drift.
|
||||
|
||||
19 of 21 at 2026-07-28. Shrinking this is the point — it shrinks by putting
|
||||
15 of 17, after PR-3b. (19 of 21 before it.) Shrinking this is the point — it shrinks by putting
|
||||
a suite on the gate, which costs gate time and is therefore a decision
|
||||
someone has to make deliberately.
|
||||
"""
|
||||
assert len(UNREACHABLE_BASELINE) <= 19, (
|
||||
f"gate-unreachable suites grew to {len(UNREACHABLE_BASELINE)} (was 19). "
|
||||
"The ratchet only turns one way."
|
||||
assert len(UNREACHABLE_BASELINE) <= 15, (
|
||||
f"gate-unreachable suites grew to {len(UNREACHABLE_BASELINE)} (was 15; "
|
||||
"19 before PR-3b deleted four unreferenced aliases). The ratchet only "
|
||||
"turns one way."
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue