[FIX] Stamp 16 superseded trackers; harvest the rule one of them carried

The record is updated where information ARRIVES and never where a reader LOOKS.
Three instances found the same day, each with the correct information already
written down elsewhere:

  REVIEWED-81 (AUTHORIZED 07-28)      -> PENDING-81 still reads open
  the ARC open-work register, which   -> those 6 trackers still read live
    says in its own description that
    it supersedes them, with a
    per-file verified verdict
  register entry A2: "the content     -> register entry B3, one page below:
    half (B3) is now unblocked +         "[OPEN - gated on A2]"
    started" (06-17)

The third is the sharpest: both halves sit in the SAME document, so no tooling
gap explains it. ~/CLAUDE.md already rules this under Memory Discipline
("mark the superseded record as superseded"); the rule is being applied to facts
and not to trackers, PENDING items or register entries, which are also facts
about state.

Executed under steward authorization, arrears only:
- 16 trackers stamped `superseded_by:` + `superseded_on:` AND a visible in-body
  banner. The banner is the point — metadata alone repeats the defect, since the
  finding is about what a reader sees. 9 obsoleted by the 2026-07-07 MemPalace
  wind-down; 7 already carrying the register's own verified `DONE-retire`.
- B3's label corrected, with the two-month error left visible rather than
  silently amended.
- Nothing moved, renamed or deleted: 381 pointers resolve, 0 dead, 0 mis-authored.

HARVESTED BEFORE STAMPING, and this is why the harvest came first:
`project-mempalace-library-incremental-remine-strategy` carried a steward-verbatim
rule that is instrument-independent — never run a single multi-day index; order by
criticality; gate each tranche on READBACK, not on write-success (933,576 drawers
once stored successfully and could not be read back at all). It lived only inside
a MemPalace tracker, so retiring the instrument would have retired the rule with
it. ~/CLAUDE.md names that exact hazard: "state the obligation first and the
instrument second, or the next retired tool takes a rule down with it." Now
`feedback-bulk-indexing-runs-incrementally-with-readback.md`, and it applies to
studium-engine corpus work.

Held back deliberately: 2 correctly-parked files with named dependencies, 2 named
nowhere (returned to the steward), and 39 trackers unread — recorded as a gap,
not as a finding.

Measurement note: every earlier estimate of tracker staleness was wrong, because
both mtime and git-last-commit were reset across 283 files by the 2026-06-06
normalization sweep. The honest figure excludes it: median 90 days.

Filed as PENDING-142 ADDENDUM 2 per steward direction (fold, do not file anew).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013Y6t6qx7cpaCu5xGdD36u4
This commit is contained in:
David F Glidden
2026-08-17 15:23:26 +02:00
co-authored by Claude Opus 5
parent 69e258116a
commit ef6fa94dcd
21 changed files with 218 additions and 3 deletions
+33
View File
@@ -3225,3 +3225,36 @@ chk("ruled_pendings ignores a ruling that names no PENDING",
**Awaiting:** Steward authorization, with the parent item. Nothing changed in `ruled_pendings` or its test.
---
## PENDING-142 — ADDENDUM 2: the same defect on three surfaces — the record is updated where information ARRIVES, never where a reader LOOKS
**Date:** 2026-08-17
**Tag:** [HARDENING]
**Summary:** The parent item is not a parser bug. It is one instance of a general failure mode found on three unrelated surfaces the same day, each time with the correct information already written down somewhere else.
**The three instances, all verified against the substrate:**
| the update was written… | …but a reader checking status opens | and it reads |
|---|---|---|
| `REVIEWED-81`, AUTHORIZED 2026-07-28 | `PENDING-81` | still open (parent item) |
| `project-arc-open-work-register.md`, which states in its own description that it *"supersedes the standalone '-pending' files for status"* and issues a per-file verdict | those 6 tracker files | still live |
| register entry **A2**, which records *"the content half (B3) is now unblocked + started"* (2026-06-17) | register entry **B3**, one page below | `[OPEN — gated on A2]` |
The third is the sharpest: **both halves are in the same document**, so this is not a cross-file synchronisation problem and no tooling gap explains it. The information was known, was written, and was written in the place where the writer's attention was — never in the place a reader would go.
**Why this matters more than the parser.** Every remedy proposed for the parent item (title-matching, decision-reading, three-valued reporting) makes the *tool* smarter at inferring status from records that do not carry it. None addresses the cause, which is that closure is recorded as an event in the closing document rather than as a state on the closed one. A cleverer parser reduces the symptom and leaves the record no more honest.
⚠ **`~/CLAUDE.md` already rules this**, under Memory Discipline: *"When facts change, supersede explicitly — mark the superseded record as superseded and write the new one. An unmarked correction leaves two live versions and no way to tell which is current."* The rule exists, is constitutional, and is being applied to *facts* while trackers, PENDING items and register entries — which are also facts about state — go unmarked. **This item is therefore not a request for new doctrine.** It is a report that existing doctrine has no enforcement surface and, measurably, is not being followed.
**Measured extent (2026-08-17):** 61 project trackers, median 90 days since last substantive edit (excluding the 2026-06-06 283-file normalization sweep, which reset both mtime and git-date and made every earlier estimate of "staleness" wrong). Of 16 read closely: 9 obsoleted by the MemPalace wind-down of 2026-07-07 with **no supersession marker of any kind**, 7 already carrying a verified `DONE—retire` verdict in the register that supersedes them. **The remaining 39 are unread and unclassified — that number is not a finding, it is a gap.**
**Executed under steward authorization the same day** (stamping only; nothing moved, renamed or deleted, so every inbound pointer still resolves): 16 trackers stamped `superseded_by:` + a visible in-body banner — metadata alone would have repeated the defect, since the whole finding is about what a reader sees. B3's label corrected, with the two-month error left visible rather than silently amended. One rule harvested out first: `feedback-bulk-indexing-runs-incrementally-with-readback.md`, a steward-verbatim rule about never running a single multi-day index and gating each tranche on **readback rather than write-success** — it was carried only inside a MemPalace tracker, so retiring the instrument would have retired the rule with it. `~/CLAUDE.md`'s *"state the obligation first and the instrument second, or the next retired tool takes a rule down with it"* is exactly this case, live.
**Options for the standing rule (none executed):**
- **(a) At the decision, not in a sweep.** When a ruling, wind-down or consolidation obsoletes a record, stamp the obsoleted record in the same act. Cost is paid where the knowledge is.
- **(b) Detection only.** Report records with no substantive edit >90d, no `superseded_by`, and no named blocking dependency. Cheap; makes the arrears visible without asserting what is dead.
- **(c) Both** — (a) as the practice, (b) as the check that it is happening.
**Recommendation: (c), with (b) built first.** (b) needs no judgment and would have surfaced all three instances above; (a) is a habit and habits need the check to know whether they are holding. ⚠ **(b) must be three-valued** — live · superseded · *cannot tell* — or it repeats the parent item's defect one layer up, which is how this session started.
**Files affected:** `~/dotfiles/scripts/governance-drift-check.py` or `wake-digest.py` for (b); `/wrap-up` for (a).
**Awaiting:** Steward authorization on the standing rule. The arrears above are already paid.
---