The output and the durable record must not disagree about what a session consists of (/wrap-up §8). Three of today's four governance findings surfaced during the wrap protocol rather than during the work it wrapped, and the session file written before those steps did not carry them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RmFYCUeAaPqbpJMj6uGokk
12 KiB
name, description, type, metadata
| name | description | type | metadata | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Session 2026-08-31 — the 270 got read, and the population was wrong | The pulling thread named at two consecutive wraps and untouched both times was taken all the way. PENDING-164 AMENDMENT 1's declared-owed classification pass ran on 40 of 362 rows, pre-registered and committed alone (5ba5842) before any commit body was read. Sample B, systematic across the corrected population: 12 of the 17 rows deciding about a mechanism name one the register never mentions — including a log-chain spec amendment, a retired session-memory protocol, and a stopgap env var retired by a plan that calls it a stopgap. Three of the five RECORDED rows entered the register 25, 46 and 53 days late. Sample A — the literal inherited question — returns 1, and the pre-registration said in advance that it would refute nothing. Found before sampling: prior-art.py's owned_repos() tests remotes against a fragment of the steward's account name, so CapableMind-AI, BetterMemories.io and be are invisible; the population is 362 and six of the twelve findings live in those repos. Both its positive controls are satisfied by the broken predicate. Filed as PENDING-171. |
project |
|
Session 2026-08-31 — the 270 got read, and the population was wrong
PAST — what moved
The thread that had been named twice and touched neither time
The 2026-08-27 wrap left a literal, checkable question: of the first 20 census candidates, how many decided about a mechanism the register never mentions? It also left a warning against itself — a count of zero is the strongest possible refutation of PENDING-164 and must be reported as such, not explained away.
Pre-registered first, committed alone (5ba5842), before any commit body was read — the
3a33666 precedent. Two samples fixed in advance, the classification protocol written down,
controls named in both directions, a contamination guard with the three register files hashed, and
§8 stating in writing what would refute the item.
⚠ The population was never 270 — found before sampling
prior-art.py's owned_repos() decides ownership by testing remotes against
OWNED_HOSTS = ("github.com/davidglidden", "davidglidden/", "git.skemantix.com") — an account
name inside a remote path, which is not the relation it claims to compute.
_Dev/CapableMind-AI (35), _Dev/BetterMemories.io (42) and _Dev/be (12) all fail it: 89
unseen candidates. The population is 362. The two largest omissions are the doctrine repo and
the L1 repo — the two the wake digest lists first.
⚠ Both positive controls are satisfied by the broken predicate. They require 0677e8a
(chamber-library) and 95760ff (dotfiles); a rule that misses all three repos returns both. Third
instance this month of a control encoding what was already expected. Filed PENDING-171,
recommending (c) invert the predicate + (d) a control that can actually fail.
Deliberately not repaired in-session — changing OWNED_HOSTS would change the population the
result is pre-registered against.
The answer
| sample | rows | mechanism decisions | SILENT | RECORDED-LATE | RECORDED-contemp. |
|---|---|---|---|---|---|
| A — newest 20, as printed | 20 | 11 | 1 | 0 | 10 |
| B — every 18th of 362 | 20 | 17 | 12 | 3 | 2 |
🔑 The contrast is the finding, and it was written down before the reading began. Sample A's
head is the fortnight the register was most active; 18 of 20 rows are dotfiles and 9 of 20
write to the register in the same commit — such a commit cannot be silent by construction. A
near-zero there measures the sampling frame, not the record. Reported both anyway rather than
quietly substituting the better sample.
Strongest instances, none looked for: 95b44d0 amends the log-chain spec to v0.6 —
logchain is a named constitutional constraint with 29 register mentions; data-portability,
ImportProvenance, import trust return zero. 0e3deee retires an entire session-memory
protocol. d0051dd retires KRONOS_TRACKED_REPOS, a stopgap another plan names as such.
RECORDED-LATE earned its pre-registered place: three of five RECORDED rows first entered the
register 25, 46 and 53 days after the commit. The known case demanded it — LFS scores 84
mentions today, all filed 2026-08-26, twelve weeks after 0677e8a. A late mention is recovery,
not routing. Wider reading: 15 of 17.
Controls, both directions. logchain → 29 (must-not-flag alive). Must-detect satisfied on the
second of three fixed-in-advance candidates: ChromaDB, 213 commits / 0 register. All three
reported regardless; SurrealDB returned 2 and did not serve. Guard held: register hashes
byte-identical before and after; nothing written until the last row was measured.
⚠ Where the judgement sits, and the sensitivity band
Naming the mechanism is interpretation. Every term string is recorded, so any verdict is
re-runnable in one command and contestable on the term. Two post-pre-registration deviations, both
declared, both neutral-or-adverse: multi-term rows require all terms silent; and a reading
rule — an occurrence counts only if it is about the mechanism. Seven terms returned non-zero;
all were read and quoted. The rule moved four rows in BOTH directions (benchmark, lex →
RECORDED; ornament, recall quality → SILENT). Band 10–13; ruling 12.
PRESENT — confidence to recalibrate
- ⚠ My own probe returned five confident false zeroes (
grep -m8 -n -o ".\{0,70\}TERM.\{0,70\}"matched nothing while looking like it had looked). For some minutes it read as two instruments disagreeing about the register — the shape this thread treats as a finding. It was not one. The next such mismatch must not inherit the assumption that a mismatch is always meaningful. - ⚠ I inherited "first 20, in register order" as if it were well-defined. It is not: the census prints newest-first, and its newest end is the least informative slice available. The prior wrap handed forward a sampling instruction it had not checked.
- What held. Pre-registered and committed alone before reading. Answered the literal question even though it was the weaker one. Ran the fairness sweep whose only possible effect was to reduce my own count. Did not repair the tool mid-measurement. Filed nothing about the twelve into the register — that is option (b), which PENDING-164 argues against and today does not overturn.
THE WRAP'S OWN FINDINGS — none of which were the session's subject
⚠ Recorded here because the wrap produced more than it recorded. Three of today's four governance findings surfaced during the wrap protocol, not during the work it was wrapping.
A concurrent sibling session, detected by neither party's apparatus
Two Claude Code sessions ran simultaneously. The sibling woke, was told by the digest
"PREVIOUS SESSION DID NOT WRAP", checked the substrate instead of believing it — this
session's transcript was still growing and had committed one minute into that wake — and
concluded concurrent, not previous. It then stopped before touching the pulling thread
and held two substrate corrections rather than race this session's memory write. Its ledger:
dotfiles is ahead 1 … the sibling's, not mine to push.
🔑 Nothing detected the collision. It was avoided by one session reading an mtime attentively
and drawing an inference the digest had drawn wrongly from the same fact. ⚠ "PREVIOUS SESSION
DID NOT WRAP" is a negative state-claim with no falsifier, in the instrument every session
reads first — PENDING-158's class. → PENDING-104 ADDENDUM 2; a wake-digest.py patch is
filed in the harvest register.
The two held corrections, verified rather than relayed
MEMORY.mdasserted the FoolNOTHING WIRED — no statusLine, no script, §13.1 spec unwritten. False on all three clauses.settings.jsonhas been runningtarbuckle-body.pyasstatusLine(refreshInterval 60) for six days; 5tarbuckle-*scripts; the §13.1 spec exists; 7 state files. ⚠ The sibling's counts (7 scripts, 6 state files) were off in BOTH directions against the measured 5 and 7 — which is why the rule is re-measure, never relay, even from a party that is right about the substance.- Ladder N-now is 44/84, not 51 — DOWN 7 since 08-25. The 30-day rolling window (PENDING-147) sheds faster than it gains, so grading may recede rather than approach. Re-measured by the trial's own method.
⚠ The FIX lane has been running past its own authorization for 29 days
REVIEWED-85 made /wrap-up §1.6's FIX lane PROVISIONAL until a steward–jurist check-in
"after the first batch or one month, whichever comes first." Batch 1 closed 2026-08-02.
skill-harvest-fix-lane-index.md says in its own words "the check-in is due." It has not
happened. One executor-classified FIX (2026-08-08) was applied past that boundary.
🔑 The finding is not the lapse — it is that governance-drift-check.py printed
✓ deferred decisions: 5 tracked, none due while a condition that fired four weeks ago sat
unmarked. The check-in was never given a DEFERRED-DECISION block, so it lived among the 143
prose deferrals the instrument counts and refuses to classify. PENDING-168's thesis reaching
its own apparatus. Block filed with a past trigger; the check now reports
⏰ 1 of 6 open have COME DUE. Proved by readback, not by write-success.
Consequence adopted before it was convenient: today's one harvest candidate — a clean FIX
with an exact 2026-08-24 precedent — was filed as [PROPOSAL] on the lane's own suspension rule.
And it corrected a banked proposal rather than duplicating it
The 2026-08-27 register row proposes checking the daily note's required sections "from the
skeleton's own SKELETON constant so the two copies cannot disagree." ⚠ SKELETON is the
copy that is wrong: it writes 5 headings where /wrap-up §7.5 specifies 6, missing
## <Project>. A rule derived from the drifted copy cannot detect the drift —
feedback-derive-the-rule-from-the-consumer-not-from-the-survivor, arriving inside a proposal
written to prevent that class. Self-demonstrated: today's note was filled faithfully against
the skeleton and has no project heading.
Instruments, counted forward
5 run · 4 carrying a control written before first execution · K = 1. The K: the fairness
sweep re-derives what prior-art.py's own report() already does per term — a batch driver over
the instrument's own functions, written to avoid re-running controls 33 times. One-shot and
proportionate; rule of three not reached. The 5th (the grep context probe) is the one that
carried no control, and it is the one that failed.
FUTURE — what pulls
- 322 of 362 rows unread. Today is an explicit lower bound and refuses extrapolation. The next tranche should be another systematic draw, never the head of the list.
- PENDING-171 needs a ruling before any further census run — the population is wrong until it lands, and the fix must come after today's result is read, not inside it.
- ⚠ Untouched a FOURTH session: the §5 regrade gate. Recorded, not dropped.
- Owed and concrete: 115 of the answer key's 120 rows still need a full hand-read; REVIEWED-122's build cannot proceed on a 5-row-verified key.
- Steward's, and blocking: rule the six-item record-keeping block — as amended or sent back.
Literal question for next-Claude (checkable; turns on the record, not on introspection): Of the twelve register-silent mechanisms found today, how many are ones the register SHOULD contain? Today deliberately did not ask this — a MemPalace CI retry policy is plausibly not the steward's governance business, and answering "whether the record contains them" is not answering "whether it ought to". ⚠ This question has no mechanical form and must not be given one. The honest instrument is a stated criterion, applied to twelve named rows, with the criterion written down before the rows are re-read — and a count of zero would mean PENDING-164 measures a real absence that costs nothing, which is a live possibility and must be reportable as such.