From 8334dcf4ef9398ddab6e64cace965b305c386648 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 26 Aug 2026 08:00:43 +0000 Subject: [PATCH 1/2] =?UTF-8?q?board:=20route=20the=20ARCHIVE=3F=20batch?= =?UTF-8?q?=20=E2=80=94=203/3=20were=20false=20positives,=20all=20live?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit First routing pass over SUPERSESSION-INDEX.md. Took the ARCHIVE? batch first because it was smallest and looked most decided; every member was wrong, and archiving on the route would have retired work in flight. The classifier searched the whole status string for a shipped-word, so it had no notion of WHAT shipped: it matched a phase inside an ACTIVE status, a predecessor inside a PROPOSAL, and a `Status legend:` defining the tick mark. Verified against STATUS_BOARD.md instead of the headers -- one plan is 12 shipped with a stale 4-row tail citing #388/#390, one has all five D-ids Queued, one is Queued/OBE. All three name a RETIRE symbol, so all three are RESCOPE. ARCHIVE? 0, RESCOPE 47->50, READ unchanged. The fix is an anchor, not a longer word list: any alternation matching COMPLETE fires on case 1, any matching SHIPPED fires on case 2. Only the status's leading token predicates the plan. Both halves falsified -- fires on real shipped statuses, silent on all three -- and the rule is not dead: odoo-source-extraction-v1 carries a leading-shipped status tree-wide. The correction is generated into the legend, not hand-written, so the self-reproduction invariant from #1044 still holds (verified idempotent). Two limits recorded and left open: crate hit-counts include tombstone comments (CollapseGateEmission reads 5 files and is gone), and nothing reconciles a board row against its PR's real outcome. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01AGVLyRZNEKKBSfBDJfbY3V --- .claude/board/SUPERSESSION-INDEX.md | 17 +++-- ...-e-the-archive-route-was-3-of-3-wrong-1.md | 66 +++++++++++++++++++ .claude/board/entries/README.md | 1 + .claude/tools/supersession_index.py | 15 ++++- 4 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 .claude/board/entries/2026-08-26-e-the-archive-route-was-3-of-3-wrong-1.md diff --git a/.claude/board/SUPERSESSION-INDEX.md b/.claude/board/SUPERSESSION-INDEX.md index f4eb46d37..d69131606 100644 --- a/.claude/board/SUPERSESSION-INDEX.md +++ b/.claude/board/SUPERSESSION-INDEX.md @@ -70,11 +70,15 @@ Route is **mechanical triage, not a verdict**: `ARCHIVE?` = the plan's own statu it shipped; `RESCOPE` = it targets a symbol marked RETIRE; `READ` = neither signal fires and a human read decides. Board coverage counts this plan's D-ids cited on the board. +`ARCHIVE?` reads the status's LEADING token only. The first batch it produced was +**3/3 false positives** -- an unanchored match on a word that did not predicate the +plan (`ACTIVE ... Phase A/B COMPLETE`, `PROPOSAL. v1 SHIPPED in PR #420`, and a +`Status legend:` defining the tick mark). All three were live, and archiving them +would have retired work in flight. A route here is a prompt to read the plan, never +a licence to act on it. + | route | plan | ruled symbols named | self-declared status | board coverage | |---|---|---|---|---| -| **ARCHIVE?** | `cognitive-substrate-convergence-v2` | `BindSpace`, `CollapseGateEmission`, `GateDecision`, `MergeMode` … | ACTIVE — sprint-11 Phase A/B COMPLETE (pendi | 5/15 | -| **ARCHIVE?** | `odoo-savant-reasoners-v2` | `BindSpace`, `CollapseGateEmission` | PROPOSAL. v1 SHIPPED in PR #420 (`D-ODOO-SAV | 2/3 | -| **ARCHIVE?** | `unified-soa-rubikon-integration-v1` | `BindSpace` | legend:** ✅ SHIPPED (verified file:line this | 8/8 | | **READ** | `archetype-scaffold-v1` | `GateDecision` | In progress (2026-04-24) | 0/0 | | **READ** | `capstone-cognitive-loop-wiring-nan-census-v1` | `GateDecision` | PROPOSED (2026-06-20). The measurement compa | 0/0 | | **READ** | `deepnsm-v3-convergence-v1` | `StepMask` | PROPOSED (doc-only). Extends `v3-convergence | 5/5 | @@ -89,6 +93,7 @@ and a human read decides. Board coverage counts this plan's D-ids cited on the b | **READ** | `v3-convergence-wiring-v1` | `GateDecision` | ACTIVE (2026-07-01). Operator: "I'm all in f | 0/0 | | **RESCOPE** | `soa-migration-diff-resolution-2026-06-13` | `BindSpace`, `CollapseGateEmission`, `GateDecision`, `MergeMode` … | The SoA / BindSpace / identity plan family, | 3/5 | | **RESCOPE** | `cognitive-substrate-convergence-v1` | `BindSpace`, `CollapseGateEmission`, `GateDecision`, `MergeMode` … | PROPOSAL (sprint-10 architectural decisions | 5/13 | +| **RESCOPE** | `cognitive-substrate-convergence-v2` | `BindSpace`, `CollapseGateEmission`, `GateDecision`, `MergeMode` … | ACTIVE — sprint-11 Phase A/B COMPLETE (pendi | 5/15 | | **RESCOPE** | `bindspace-singleton-to-mailbox-soa-v1` | `BindSpace`, `CollapseGateEmission`, `ResonanceDto`, `ThinkingStyle` | CONJECTURE / design (migration spec). NOT ye | 18/19 | | **RESCOPE** | `callcenter-membrane-v1` | `BindSpace`, `GateDecision`, `MergeMode`, `ThinkingStyle` | Active | 0/0 | | **RESCOPE** | `causaledge64-mailbox-rename-soa-v1` | `BindSpace`, `GateDecision`, `MergeMode`, `ThinkingStyle` | Active (draft, 2026-05-14) | 1/10 | @@ -108,6 +113,7 @@ and a human read decides. Board coverage counts this plan's D-ids cited on the b | **RESCOPE** | `kognitionswirtschaft-v1` | `GateDecision`, `ThinkingStyle` | PROPOSED (unbuilt, unprobed). Operator-initi | 1/7 | | **RESCOPE** | `lance-graph-ontology-v5` | `BindSpace`, `GateDecision` | Drafted (2026-05-07). Picks up where v4 (`cl | 3/16 | | **RESCOPE** | `north-star-integration-v1` | `CollapseGateEmission`, `ThinkingStyle` | RATIFIED (council resolved + gates ratified | 1/1 | +| **RESCOPE** | `odoo-savant-reasoners-v2` | `BindSpace`, `CollapseGateEmission` | PROPOSAL. v1 SHIPPED in PR #420 (`D-ODOO-SAV | 2/3 | | **RESCOPE** | `ogar-ar-shape-endgame-v1` | `GateDecision`, `ThinkingStyle` | when filed:** PLAN (pre-council). Becomes PL | 0/0 | | **RESCOPE** | `rung-ladder-grounding-v1` | `CollapseGateEmission`, `GateState` | PROPOSAL (the most-obvious first grounding p | 0/4 | | **RESCOPE** | `rung-persona-orchestration-v1` | `BindSpace`, `ThinkingStyle` | PROPOSAL (sibling to `rung-mul-grounding-v1` | 4/9 | @@ -134,8 +140,9 @@ and a human read decides. Board coverage counts this plan's D-ids cited on the b | **RESCOPE** | `super-domain-rbac-tenancy-v1` | `BindSpace` | Active | 23/41 | | **RESCOPE** | `thought-cycle-soa-awareness-integration-v1` | `BindSpace` | integration plan. No implementation claimed | 0/0 | | **RESCOPE** | `unified-ogit-architecture-v1` | `ThinkingStyle` | , **code refs**, and where it | 0/0 | +| **RESCOPE** | `unified-soa-rubikon-integration-v1` | `BindSpace` | (no overclaim) | 8/8 | -- **ARCHIVE?**: 3 -- **RESCOPE**: 47 +- **ARCHIVE?**: 0 +- **RESCOPE**: 50 - **READ**: 12 - ruled symbols tracked: 14 diff --git a/.claude/board/entries/2026-08-26-e-the-archive-route-was-3-of-3-wrong-1.md b/.claude/board/entries/2026-08-26-e-the-archive-route-was-3-of-3-wrong-1.md new file mode 100644 index 000000000..729b96c1a --- /dev/null +++ b/.claude/board/entries/2026-08-26-e-the-archive-route-was-3-of-3-wrong-1.md @@ -0,0 +1,66 @@ +## 2026-08-26 — E-THE-ARCHIVE-ROUTE-WAS-3-OF-3-WRONG-1 + +**Status:** FINDING (measured) · **Confidence:** HIGH + +First routing pass over `SUPERSESSION-INDEX.md`, taking the `ARCHIVE?` batch +first because it was the smallest and looked the most decided. **All three were +false positives, and every one of them is live work.** Archiving on the route +would have retired a plan mid-flight. + +The classifier searched the whole status string for a shipped-word: + +```python +SHIPPED = re.compile(r'\b(SHIPPED|COMPLETE[D]?|SUPERSEDED|DONE|CLOSED|LANDED)\b') +route = "ARCHIVE?" if SHIPPED.search(st) else ... +``` + +An unanchored search has no notion of **what** shipped. The three hits: + +| plan | matched on | what the word actually predicated | +|---|---|---| +| `cognitive-substrate-convergence-v2` | `COMPLETE` | a *phase* — the status opens `ACTIVE`, and the very next word is `(pending merges)` | +| `odoo-savant-reasoners-v2` | `SHIPPED` | its **predecessor** — `PROPOSAL. v1 SHIPPED in PR #420`; this plan exists *because* v1's shape was judged wrong | +| `unified-soa-rubikon-integration-v1` | `SHIPPED` | a **legend** — `Status legend:` defining what ✅ means, captured as if it were a status | + +Verified against `STATUS_BOARD.md` rather than the headers, anchoring the join on +each row's own leading cell (a loose `grep D-CSV-11` returns the D-CSV-14 row, +which *mentions* it — same bad-join class as the earlier filename-stem inflation): + +- `cognitive-substrate-convergence-v2` — 12 Shipped, 4 **In PR**, 1 Queued. The + four cite **#388/#390**; the repo is at #1044. Not archivable — its board rows + are *stale*, which is a different defect and a different fix. +- `odoo-savant-reasoners-v2` — all five of its own D-ids **Queued**. Never + started. +- `unified-soa-rubikon-integration-v1` — Queued, one OBE, one In PR. + +All three name a RETIRE symbol, so all three route **RESCOPE**. `ARCHIVE?` → 0, +`RESCOPE` 47 → 50, `READ` unchanged at 12. + +**The fix is an anchor, not a longer word list.** A stricter alternation cannot +help: any pattern matching `COMPLETE` fires on case 1, any matching `SHIPPED` +fires on case 2. Only the status's *leading* token predicates the plan. +`STATUS` additionally now refuses `Status legend:`. + +Both halves falsified rather than assumed — it fires on `SHIPPED in #420`, +`DONE (2026-06-01)`, `✅ SHIPPED`, `Superseded by v3`; it is silent on all three +false positives. **The rule is not dead:** `odoo-source-extraction-v1` carries a +leading-shipped status tree-wide, so a category reading 0 inside the table is a +measurement, not a broken guard. (My first can-it-fire run reported a spurious +`False` because I fed `SHIPPED` a raw line; the generator only ever feeds it the +captured group. The test was wrong, not the code.) + +**Two limits found while measuring, both still open:** + +1. **`crates` hit counts include tombstone comments.** `CollapseGateEmission` + shows 5 crate files and is genuinely **gone** — all six occurrences are + comments recording its removal. The column measures textual mention, so a + dead symbol reads as live. +2. **The stale-status class is real and unmeasured.** Four D-CSV rows still say + `In PR (#388/#390)` hundreds of PRs later. Nothing reconciles a board row + against its PR's actual outcome. This is the "claim-vs-reality drift" check + already named as the highest-value unrun scriptable class. + +**The generalizable rule:** a mechanical route is a *prompt to read*, never a +licence to act. The value of taking the smallest, most-decided-looking batch +first was that it was small enough to check every member — and checking every +member is what found that the category was empty. diff --git a/.claude/board/entries/README.md b/.claude/board/entries/README.md index 4c16f09e2..603ed00b3 100644 --- a/.claude/board/entries/README.md +++ b/.claude/board/entries/README.md @@ -163,3 +163,4 @@ up in exactly one of them, never both. | 2026-08-06 | `E-AN-IDENTITY-SLOT-IS-NOT-A-RAIL-REF-WHICH-IS-WHY-A-WIDE-CARVING-CAN-BE-CORRECT-1` | the byte-axis rule is a rule about REFERENCES, and an exact identity is not one | [2026-08-06-e-an-identity-slot-is-not-a-rail-ref-which-is-why-a-wide-carving-can-be-correct-1.md](2026-08-06-e-an-identity-slot-is-not-a-rail-ref-which-is-why-a-wide-carving-can-be-correct-1.md) | | 2026-08-06 | `E-A-SORTED-CODEBOOK-ORDINAL-IS-A-PROPERTY-OF-THE-KEY-SET-NOT-THE-KEY-1` | a within-book bijectivity witness cannot see a between-book shift, and that is the gap review found | [2026-08-06-e-a-sorted-codebook-ordinal-is-a-property-of-the-key-set-not-the-key-1.md](2026-08-06-e-a-sorted-codebook-ordinal-is-a-property-of-the-key-set-not-the-key-1.md) | | 2026-08-06 | `E-A-REPEATABLE-TRANSFER-IS-NOT-IDEMPOTENCE-OVER-A-MULTI-FILE-DIRECTORY-1` | the PR #901 review round: four corrections, one of them load-bearing on a safety claim | [2026-08-06-e-a-repeatable-transfer-is-not-idempotence-over-a-multi-file-directory-1.md](2026-08-06-e-a-repeatable-transfer-is-not-idempotence-over-a-multi-file-directory-1.md) | +| 2026-08-26 | `E-THE-ARCHIVE-ROUTE-WAS-3-OF-3-WRONG-1` | the index's ARCHIVE? batch was 3/3 false positives — an unanchored shipped-word match with no notion of what shipped; all three plans were live | [2026-08-26-e-the-archive-route-was-3-of-3-wrong-1.md](2026-08-26-e-the-archive-route-was-3-of-3-wrong-1.md) | diff --git a/.claude/tools/supersession_index.py b/.claude/tools/supersession_index.py index d447c2dec..1df3514ba 100644 --- a/.claude/tools/supersession_index.py +++ b/.claude/tools/supersession_index.py @@ -48,8 +48,13 @@ def count(pat, *dirs): board = "\n".join(open(f,encoding='utf-8',errors='ignore').read() for f in glob.glob(".claude/board/entries/*.md")+[".claude/board/EPIPHANIES.md"]) AWARE = re.compile(r'v3/COMPONENT-MAP|\.claude/v3|RETIRE|REPURPOSE|D-PERT') -SHIPPED = re.compile(r'\b(SHIPPED|COMPLETE[D]?|SUPERSEDED|DONE|CLOSED|LANDED)\b') -STATUS = re.compile(r'[Ss]tatus:?\*{0,2}\s*([^\n|]{0,52})') +# Anchored to the status's LEADING token on purpose. An unanchored search matched +# a word that did not predicate the plan -- "ACTIVE ... Phase A/B COMPLETE", +# "PROPOSAL. v1 SHIPPED in PR #420" -- routing live plans to ARCHIVE?. 3/3 of the +# first ARCHIVE? batch were that error (2026-08-26 routing pass). +SHIPPED = re.compile(r'^\W*(SHIPPED|COMPLETE[D]?|SUPERSEDED|DONE|CLOSED|LANDED)\b', re.I) +# `(?!\s*legend)` so "Status legend:** OK SHIPPED (verified...)" is not read as a status. +STATUS = re.compile(r'[Ss]tatus(?!\s*legend):?\*{0,2}\s*([^\n|]{0,52})') DID = re.compile(r'\b(D-[A-Z]{2,}[A-Z0-9]*(?:-[A-Z0-9]+)*)\b') rows = [] @@ -134,6 +139,12 @@ def plans_for(sym): out("Route is **mechanical triage, not a verdict**: `ARCHIVE?` = the plan's own status says\n") out("it shipped; `RESCOPE` = it targets a symbol marked RETIRE; `READ` = neither signal fires\n") out("and a human read decides. Board coverage counts this plan's D-ids cited on the board.\n\n") +out("`ARCHIVE?` reads the status's LEADING token only. The first batch it produced was\n") +out("**3/3 false positives** -- an unanchored match on a word that did not predicate the\n") +out("plan (`ACTIVE ... Phase A/B COMPLETE`, `PROPOSAL. v1 SHIPPED in PR #420`, and a\n") +out("`Status legend:` defining the tick mark). All three were live, and archiving them\n") +out("would have retired work in flight. A route here is a prompt to read the plan, never\n") +out("a licence to act on it.\n\n") out("| route | plan | ruled symbols named | self-declared status | board coverage |\n") out("|---|---|---|---|---|\n") for route, n, stem, named, st, cited, tot in sorted(rows, key=lambda r: (r[0], -r[1])): From cf1a946ffc4e7a8e33dc4697816b09bfdadd82ba Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 26 Aug 2026 08:10:07 +0000 Subject: [PATCH 2/2] board: constrain status extraction to plan metadata (codex P2 on #1046) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Skipping `Status legend:` by name was whack-a-mole. STATUS still searched the whole document and took the first hit anywhere, so unified-soa-rubikon's next match was the section heading `## 6. Honest status (no overclaim)` at line 181 -- and the table reported `(no overclaim)` as its status. Codex also named the escalation: a mid-document `## 9. Status: SHIPPED items` recreates the false ARCHIVE? outright. A status is metadata, not prose. Extraction now runs over plan_head() -- the preamble extended through any leading status-titled section, since `## §0 — Status` is metadata and line 181 is not. Measured against two alternatives: a strict preamble cut loses self-reasoning-substrate-v1's real status; a 40-line window's only marginal catch is itself prose. Nine junk statuses go, not one. Two near-misses recovered by allowing a parenthetical (`**Status (§0):** PROPOSED`). Twelve rows now read `—`; an honest absence beats a fabricated status. Routes unchanged (0/50/12), generation still idempotent, falsifier suite gained codex's escalation case and stays two-sided. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01AGVLyRZNEKKBSfBDJfbY3V --- .claude/board/SUPERSESSION-INDEX.md | 24 ++++++------ ...-e-the-archive-route-was-3-of-3-wrong-1.md | 37 +++++++++++++++++++ .claude/tools/supersession_index.py | 25 ++++++++++++- 3 files changed, 72 insertions(+), 14 deletions(-) diff --git a/.claude/board/SUPERSESSION-INDEX.md b/.claude/board/SUPERSESSION-INDEX.md index d69131606..e9a57060f 100644 --- a/.claude/board/SUPERSESSION-INDEX.md +++ b/.claude/board/SUPERSESSION-INDEX.md @@ -88,28 +88,28 @@ a licence to act on it. | **READ** | `mask-algebra-revision-read-v1` | `StepMask` | DRAFT, awaiting operator ruling on §5 | 1/3 | | **READ** | `persistence-artifact-backed-commit-v1` | `persist_cycle` | RATIFIED (operator ruling 2026-08-09). Phase | 0/0 | | **READ** | `r2il-bpe-typed-genetic-recombination-v1` | `GateDecision` | PROPOSAL, §7's three falsifiers now RUN (see | 1/1 | -| **READ** | `scientific-kg-substrate-v1` | `GateDecision` | (§0):** PROPOSED — **scoping doc**, no code. | 8/9 | -| **READ** | `self-reasoning-substrate-v1` | `GateDecision` | - **Status:** PROPOSED — doc-only. No code, | 5/5 | +| **READ** | `scientific-kg-substrate-v1` | `GateDecision` | PROPOSED — **scoping doc**, no code. Records | 8/9 | +| **READ** | `self-reasoning-substrate-v1` | `GateDecision` | PROPOSED — doc-only. No code, no contract ch | 5/5 | | **READ** | `v3-convergence-wiring-v1` | `GateDecision` | ACTIVE (2026-07-01). Operator: "I'm all in f | 0/0 | -| **RESCOPE** | `soa-migration-diff-resolution-2026-06-13` | `BindSpace`, `CollapseGateEmission`, `GateDecision`, `MergeMode` … | The SoA / BindSpace / identity plan family, | 3/5 | -| **RESCOPE** | `cognitive-substrate-convergence-v1` | `BindSpace`, `CollapseGateEmission`, `GateDecision`, `MergeMode` … | PROPOSAL (sprint-10 architectural decisions | 5/13 | -| **RESCOPE** | `cognitive-substrate-convergence-v2` | `BindSpace`, `CollapseGateEmission`, `GateDecision`, `MergeMode` … | ACTIVE — sprint-11 Phase A/B COMPLETE (pendi | 5/15 | +| **RESCOPE** | `soa-migration-diff-resolution-2026-06-13` | `BindSpace`, `CollapseGateEmission`, `GateDecision`, `MergeMode` … | — | 3/5 | +| **RESCOPE** | `cognitive-substrate-convergence-v1` | `BindSpace`, `CollapseGateEmission`, `GateDecision`, `MergeMode` … | PROPOSAL (sprint-10 architectural decisions | 6/13 | +| **RESCOPE** | `cognitive-substrate-convergence-v2` | `BindSpace`, `CollapseGateEmission`, `GateDecision`, `MergeMode` … | ACTIVE — sprint-11 Phase A/B COMPLETE (pendi | 7/15 | | **RESCOPE** | `bindspace-singleton-to-mailbox-soa-v1` | `BindSpace`, `CollapseGateEmission`, `ResonanceDto`, `ThinkingStyle` | CONJECTURE / design (migration spec). NOT ye | 18/19 | | **RESCOPE** | `callcenter-membrane-v1` | `BindSpace`, `GateDecision`, `MergeMode`, `ThinkingStyle` | Active | 0/0 | | **RESCOPE** | `causaledge64-mailbox-rename-soa-v1` | `BindSpace`, `GateDecision`, `MergeMode`, `ThinkingStyle` | Active (draft, 2026-05-14) | 1/10 | -| **RESCOPE** | `integrated-cognitive-planner-v1` | `BindSpace`, `GateDecision`, `ResonanceDto`, `dispatch_busdto` | ` (:90), `QueryReference{server_id,ref_versi | 2/3 | +| **RESCOPE** | `integrated-cognitive-planner-v1` | `BindSpace`, `GateDecision`, `ResonanceDto`, `dispatch_busdto` | — | 2/3 | | **RESCOPE** | `palantir-parity-cascade-v2` | `BindSpace`, `MergeMode`, `ResonanceDto`, `ThinkingStyle` | plan, not implementation. | 1/17 | | **RESCOPE** | `temporal-markov-and-style-classes-v1` | `BindSpace`, `MergeMode`, `StepMask`, `ThinkingStyle` | ACTIVE (operator-ratified 2026-07-10: "other | 16/19 | | **RESCOPE** | `unified-soa-convergence-v1` | `BindSpace`, `CollapseGateEmission`, `ResonanceDto`, `ThinkingStyle` | PROPOSAL / integration plan. Design-spec onl | 22/25 | | **RESCOPE** | `bindspace-mailbox-soa-dependency-map-v1` | `BindSpace`, `dispatch_busdto`, `persist_cycle` | MAP / preflight. No source wired yet. Read-b | 2/2 | | **RESCOPE** | `bindspace-mailbox-soa-w3-w4a-impl-v1` | `BindSpace`, `dispatch_busdto`, `persist_cycle` | v2 — 5-consolidation + 3-brutal-critic pass | 1/1 | -| **RESCOPE** | `cognitive-substrate-convergence-v3` | `BindSpace`, `CollapseGateEmission`, `MergeMode` | ACTIVE — sprint-12 Wave F + Wave G complete | 5/16 | +| **RESCOPE** | `cognitive-substrate-convergence-v3` | `BindSpace`, `CollapseGateEmission`, `MergeMode` | ACTIVE — sprint-12 Wave F + Wave G complete | 7/16 | | **RESCOPE** | `mailbox-cycle-aware-write-contract-v1` | `BindSpace`, `dispatch_busdto`, `persist_cycle` | CONJECTURE / design. 5+3-gated before code. | 1/1 | | **RESCOPE** | `unified-integration-v1` | `BindSpace`, `MergeMode`, `ThinkingStyle` | Active — brainstorm phase complete; delivera | 0/0 | | **RESCOPE** | `2026-05-06-splat-osint-ingestion-v1` | `BindSpace`, `MergeMode` | Active — PR 1+2 of 6 in flight on `claude/sp | 1/7 | | **RESCOPE** | `Palette256-3DSB-PhiSpiral-attention-integration-plan` | `BindSpace`, `CollapseGateEmission` | — | 0/0 | -| **RESCOPE** | `anatomy-realtime-v1` | `BindSpace`, `ThinkingStyle` | . | 0/1 | -| **RESCOPE** | `elegant-herding-rocket-v1` | `BindSpace`, `ThinkingStyle` | ") vs | 0/0 | +| **RESCOPE** | `anatomy-realtime-v1` | `BindSpace`, `ThinkingStyle` | — | 0/1 | +| **RESCOPE** | `elegant-herding-rocket-v1` | `BindSpace`, `ThinkingStyle` | — | 0/0 | | **RESCOPE** | `kognitionswirtschaft-v1` | `GateDecision`, `ThinkingStyle` | PROPOSED (unbuilt, unprobed). Operator-initi | 1/7 | | **RESCOPE** | `lance-graph-ontology-v5` | `BindSpace`, `GateDecision` | Drafted (2026-05-07). Picks up where v4 (`cl | 3/16 | | **RESCOPE** | `north-star-integration-v1` | `CollapseGateEmission`, `ThinkingStyle` | RATIFIED (council resolved + gates ratified | 1/1 | @@ -125,7 +125,7 @@ a licence to act on it. | **RESCOPE** | `bindspace-columns-v1` | `BindSpace` | Active | 0/0 | | **RESCOPE** | `codec-sweep-via-lab-infra-v1` | `BindSpace` | — | 0/0 | | **RESCOPE** | `cycle-coherent-soa-snapshot-v1` | `CollapseGateEmission` | Queued | 0/6 | -| **RESCOPE** | `dacr7-band-reading-contract-v1` | `ThinkingStyle` | + the temporal doctrine | 3/5 | +| **RESCOPE** | `dacr7-band-reading-contract-v1` | `ThinkingStyle` | — | 3/5 | | **RESCOPE** | `foundry-consumer-parity-v1` | `BindSpace` | Active | 0/0 | | **RESCOPE** | `foundry-roadmap-unified-smb-medcare-v1` | `BindSpace` | Active | 0/0 | | **RESCOPE** | `lf-integration-mapping-v1` | `BindSpace` | Active (2026-04-25) | 0/0 | @@ -139,8 +139,8 @@ a licence to act on it. | **RESCOPE** | `sql-spo-ontology-bridge-v1` | `BindSpace` | Active | 0/0 | | **RESCOPE** | `super-domain-rbac-tenancy-v1` | `BindSpace` | Active | 23/41 | | **RESCOPE** | `thought-cycle-soa-awareness-integration-v1` | `BindSpace` | integration plan. No implementation claimed | 0/0 | -| **RESCOPE** | `unified-ogit-architecture-v1` | `ThinkingStyle` | , **code refs**, and where it | 0/0 | -| **RESCOPE** | `unified-soa-rubikon-integration-v1` | `BindSpace` | (no overclaim) | 8/8 | +| **RESCOPE** | `unified-ogit-architecture-v1` | `ThinkingStyle` | — | 0/0 | +| **RESCOPE** | `unified-soa-rubikon-integration-v1` | `BindSpace` | — | 8/8 | - **ARCHIVE?**: 0 - **RESCOPE**: 50 diff --git a/.claude/board/entries/2026-08-26-e-the-archive-route-was-3-of-3-wrong-1.md b/.claude/board/entries/2026-08-26-e-the-archive-route-was-3-of-3-wrong-1.md index 729b96c1a..d54920247 100644 --- a/.claude/board/entries/2026-08-26-e-the-archive-route-was-3-of-3-wrong-1.md +++ b/.claude/board/entries/2026-08-26-e-the-archive-route-was-3-of-3-wrong-1.md @@ -64,3 +64,40 @@ captured group. The test was wrong, not the code.) licence to act. The value of taking the smallest, most-decided-looking batch first was that it was small enough to check every member — and checking every member is what found that the category was empty. + +--- + +**⊕ CORRECTION (same day, codex P2 on #1046 — verified, and it was right).** +The first fix skipped `Status legend:` **by name**. That is whack-a-mole, not a +fix: `STATUS` still searched the whole document and took the first hit anywhere, +so for `unified-soa-rubikon-integration-v1` the next match became the section +heading `## 6. Honest status (no overclaim)` at line 181 — and the table duly +reported **`(no overclaim)`** as that plan's self-declared status. Codex also +named the escalation I had not: any mid-document heading whose text after +`status` leads with a shipped token (`## 9. Status: SHIPPED items`) recreates +the false `ARCHIVE?` outright. + +The class, not the instance: **a status is metadata, not prose.** Extraction now +runs over `plan_head()` — the preamble, extended through any *leading* +status-titled section (`## §0 — Status` is metadata; line 181 is not). A strict +preamble cut was measured first and was too tight: it lost +`self-reasoning-substrate-v1`, whose real status sits in exactly such a `## §0` +section. A 40-line window was also measured — its only marginal catch was itself +prose, so the principled rule beat the magic constant on the evidence. + +Nine junk statuses disappear, not one: alongside `(no overclaim)` the table had +been reporting `` ` (:90), `QueryReference{server_id,ref_versi ``, `") vs `, +`, **code refs**, and where it `, and `. ` as statuses. Two more rows were +near-misses recovered by allowing a parenthetical (`**Status (§0):** PROPOSED`). +Twelve rows now read `—`; an honest absence beats a fabricated status. + +Routes are unchanged (`ARCHIVE?` 0 · `RESCOPE` 50 · `READ` 12) and generation is +still idempotent. The falsifier suite gained codex's escalation case and stays +two-sided: fires on `SHIPPED in #420` / `DONE (2026-06-01)` / `SUPERSEDED by v3`, +silent on all five negatives. + +**What this adds to the entry above:** the original finding was that a route is a +prompt to read, never a licence to act. This correction is the same error one +level up — I fixed the *instance* I had measured rather than the *class* it +belonged to, and shipped a table with a fabricated value in it. Naming the +failing input is not the same as naming the failure. diff --git a/.claude/tools/supersession_index.py b/.claude/tools/supersession_index.py index 1df3514ba..e4ebe197c 100644 --- a/.claude/tools/supersession_index.py +++ b/.claude/tools/supersession_index.py @@ -54,16 +54,37 @@ def count(pat, *dirs): # first ARCHIVE? batch were that error (2026-08-26 routing pass). SHIPPED = re.compile(r'^\W*(SHIPPED|COMPLETE[D]?|SUPERSEDED|DONE|CLOSED|LANDED)\b', re.I) # `(?!\s*legend)` so "Status legend:** OK SHIPPED (verified...)" is not read as a status. -STATUS = re.compile(r'[Ss]tatus(?!\s*legend):?\*{0,2}\s*([^\n|]{0,52})') +# Searched over the PREAMBLE only (text before the first `## ` heading), because a +# plan's status is metadata, not prose. Skipping `legend` by name was whack-a-mole: +# the next unanchored hit was the section heading `## 6. Honest status (no overclaim)`, +# which the table then reported as a status -- and any mid-document heading whose text +# after `status` leads with a shipped token would have recreated the false `ARCHIVE?`. +# (codex P2 on #1046, verified.) +STATUS = re.compile(r'[Ss]tatus(?!\s*legend)\s*(?:\([^)]{0,12}\))?:?\*{0,2}\s*([^\n|]{0,52})') DID = re.compile(r'\b(D-[A-Z]{2,}[A-Z0-9]*(?:-[A-Z0-9]+)*)\b') +def plan_head(txt): + """The plan's metadata region: the preamble, extended through any LEADING + section whose heading is itself about status (`## §0 - Status`). Status is + metadata, not prose -- searching the whole document scraped section headings + and mid-document sentences as if they were statuses.""" + parts = re.split(r'(?m)^(## .*)$', txt) + out = [parts[0]] + for i in range(1, len(parts) - 1, 2): + if re.search(r'status', parts[i], re.I): + out.append(parts[i + 1]) + else: + break + return "\n".join(out) + rows = [] for p, txt in plans.items(): named = sorted(s for s in syms if re.search(rf'\b{re.escape(s)}\b', txt)) if not named or AWARE.search(txt): continue dids = set(DID.findall(txt)) cited = sum(1 for d in dids if d in board) - st = (STATUS.search(txt).group(1).strip() if STATUS.search(txt) else '') + head = plan_head(txt) + st = (STATUS.search(head).group(1).strip() if STATUS.search(head) else '') retires = [s for s in named if syms[s][0].startswith('RETIRE')] route = ("ARCHIVE?" if SHIPPED.search(st) else "RESCOPE" if retires else