Files
dotfiles/claude/governance/PENDING-164-census-classification-RESULT-2026-08-31.md
T
David F GliddenandClaude Opus 5 1d46d484ff [HARDENING] PENDING-164 AMENDMENT 2: the classification pass ran; PENDING-171 filed
AMENDMENT 1 declared its second half owed and unclaimed. It ran on 40 of 362
rows, pre-registered at 5ba5842 before any commit body was read.

Sample B, systematic across the corrected population: 12 of the 17 rows that
decide about a mechanism name one the register never mentions. Three of the
five recorded rows first entered the register 25, 46 and 53 days after the
commit. Sample A — the literal inherited question, the newest 20 — returns 1,
and the pre-registration said in advance that it would refute nothing: 9 of
its 20 rows write to the register in the same commit and cannot be silent by
construction.

Controls both directions. logchain 29 mentions (alive); ChromaDB 213 commits
and 0 mentions (silence is emittable). All three register files hash
byte-identical before and after; nothing was written to them until the last
row was measured.

PENDING-171: owned_repos() tests remotes against a fragment of the steward's
account name, so CapableMind-AI, BetterMemories.io and be are invisible — 89
unseen candidates, and six of the twelve silent mechanisms come from them.
Both positive controls are satisfied by the broken predicate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RmFYCUeAaPqbpJMj6uGokk
2026-08-31 09:17:53 +02:00

14 KiB
Raw Blame History

PENDING-164 AMENDMENT 1 — the classification pass: RESULT

Date: 2026-08-31 Pre-registration: PENDING-164-census-classification-PREREGISTRATION-2026-08-31.md, commit 5ba5842, committed alone before any sampled commit body was read. Population: PENDING-164-population-362-2026-08-31.tsv (362 rows), frozen in the same commit. Instrument: scripts/prior-art.py, unmodified. --selftest PASS in-session (controls: PASS ('LFS' → 21 commits)).


THE ANSWER

Sample A — the inherited question, asked exactly as it was left: of the first 20 census candidates, 1 decided about a mechanism the register never mentions.

Sample B — the systematic sample across the corrected population: 12 of 20.

Normalised to the rows that actually decide about a mechanism:

rows mechanism decisions SILENT RECORDED-LATE RECORDED-CONTEMP.
A — newest 20, 7-repo list 20 11 1 (9%) 0 10
B — systematic, 362-row list 20 17 12 (71%) 3 2

The contrast is the result, and it was predicted in writing before the reading began. §3 of the pre-registration said Sample A's head is the fortnight in which the register was most active, that a sample drawn from it is biased toward RECORDED, and that a zero there would refute nothing. That is what happened: 18 of Sample A's 20 rows are dotfiles commits, 9 of the 20 write to the register in the same commit, and for those the register-mention test is circular — such a commit cannot be register-silent by construction.

Per pre-registration §8: Sample A's low count is not a refutation of PENDING-164 and is not reported as one. Sample B is the reading that carries information, and it points the other way.

Wider reading, labelled as such and never substituted for the narrow one: SILENT + RECORDED-LATE = 15 of 17 in Sample B. Only two mechanism decisions in the whole systematic sample were routed into the register at the time they were taken.


Controls (pre-registered §6), all satisfied

control required result
must-not-flag: logchain register mentions > 0 29, first entry 2026-03-27 ✓
must-detect #1: SurrealDB commits > 0, register == 0 135 commits, 2 register — does not serve
must-detect #2: ChromaDB " 213 commits, 0 register — serves ✓
must-detect #3: Squarespace " 1 commit, 0 register — also silent
instrument selftest PASS PASS

All three must-detect candidates reported regardless, as pre-registered. The pipeline demonstrably emits SILENT outside both samples, so a sample zero would have been interpretable. It was not needed.

Contamination guard (§7): held. All three register files hash byte-identical before and after measurement: 071a8ca… PENDING.md · a3b28bf… PENDING-archive.md · c724108… REVIEWED.md. Nothing was written to the register until after the last row was measured.


⚠ The population was never 270

prior-art.py's owned_repos() tests remotes against a fragment of the steward's GitHub account name. Three working repos fail the predicate and contribute 89 further candidates:

repo remote candidates
_Dev/BetterMemories.io github.com:CapableMind-ai/betterMemories_app 42
_Dev/CapableMind-AI github.com:CapableMind-ai/capableMind_docs 35
_Dev/be github.com:boomerbot-xyz/be 12

The population is 362. The two largest omissions are the doctrine repo and the L1 implementation repo. The instrument's two positive controls are both satisfied by a predicate that misses all three, so they could not have caught it — the control encoding the case already known, again. Filed as PENDING-171. prior-art.py is left unmodified so this census stays reproducible.

⚠ Six of Sample B's twelve SILENT rows come from the three excluded repos. Had the pass been run on the instrument's own population, half the finding would have been invisible.


Method, and where the judgement sits

The interpretive step is naming the mechanism. Every term is recorded, so any verdict is re-runnable with one command and contestable on the term rather than on the conclusion.

Two deviations from the pre-registration, both stated because both were decided after it was written, and both run against the finding or are neutral:

  1. Multiple terms per row where a mechanism has an obvious second name. A row is SILENT only if all its terms are silent. This makes SILENT harder, not easier.
  2. A reading rule for non-zero hits. A row counts as RECORDED only if at least one register occurrence is about the mechanism the commit decided on. Seven terms returned non-zero and every occurrence was read and is quoted below. This rule moved four rows, in both directions: B144 and B180 → RECORDED; B216 and B288 → SILENT. A reader who rejects the rule and counts any string hit gets 10 rather than 12; a reader who counts only exact mechanism-name hits gets 13. The band is 10–13; the ruling is 12.

Every non-zero alternate, read:

term reg what the occurrences are about verdict
benchmark 4 "A2 [PROPOSAL]: if we adopt the benchmark, record it as a floor not a ceiling" — the exact decision ad21bd3 synthesises B144 → RECORDED
lex 7 bare (84 gross) the ARC lex content class and its v1-legacy deferral; 77 of 84 are substring noise (Alexander, reflex, complexity) B180 → RECORDED (contested: the class, not the template)
ornament 2 a chamber-library spec version note; an Acrobat ClearScan producer string unrelated → B216 SILENT
drawer 7 studium-engine retrieve.py / drawers_fts unrelated → B162 SILENT
launchd 3 the mumble daemon's cost; a "no trigger of any kind" state-claim unrelated → B306 SILENT
rerun / HNSW 6 / 3 re-running trials; L1's vector-store similarity probe unrelated → B072 SILENT
Kronos 1 a fleet name in an L1 saturation note unrelated → B252 SILENT
recall quality 2 recall quality as a property of retrieval, not the A/B methodology adopted B288 SILENT (contested)

⚠ An earlier probe of mine reported zero occurrences for five of these terms. The probe's grep -m8 -n -o ".\{0,70\}TERM.\{0,70\}" form returned nothing; plain grep and the instrument agree exactly. My tool was broken, not the register — recorded because for twenty minutes it looked like two instruments disagreeing, which is the shape this thread has learned to treat as a finding, and this time it was not one.


Sample B — every row

# commit repo date mechanism decided about term(s) c / r verdict
B000 718ba77 dotfiles 08-27 — session record — not-a-mechanism
B018 43f8b6c dotfiles 08-19 — trial prepared and held — not-a-mechanism
B036 4a1a731 chamber-library 07-27 source_lines one convention, producer + 11 consumers source_lines 7/4 RECORDED-contemp.
B054 b043c29 mempalace 07-04 agent identity as host:agent:project (RFC 005) host:agent:project, RFC 005, agent identity 1/0, 1/0, 5/0 SILENT
B072 37194cf mempalace 06-22 adopt pytest-rerunfailures for the Windows HNSW flake pytest-rerunfailures 1/0 SILENT
B090 eb7a557 animal 06-09 migrate to the sass:color module (Dart Sass 3.0 removes the globals) sass:color, Dart Sass, sass 1/0, 3/0, 14/0 SILENT
B108 f11958d be 06-06 — EU entity domicile (not apparatus) — not-a-mechanism
B126 9be2b97 mempalace 06-05 max_backups retention + prune_backups max_backups, prune_backups 2/0, 1/0 SILENT
B144 ad21bd3 CapableMind-AI 06-01 benchmark-governance spec v1.0 (three invariants) benchmark-governance / benchmark 7/0, 100/4 RECORDED-contemp.
B162 06ab20d mempalace 05-29 _scoped_source_filter / parent_drawer_id scoping parent_drawer_id 10/0 SILENT
B180 50c402b animal 05-20 retire templates/lex.html into about-page.html lex.html / lex 4/0, —/7 RECORDED-late
B198 dd247ea animal 05-09 AldineXXI §VII.e — luminance retired, --gray deprecated for text AldineXXI, --gray 99/25, 10/1 RECORDED-late (25d)
B216 39c480d animal 05-03 ornaments retired per spec (SCSS cruft removed) ornament 54/2 SILENT
B234 0e3deee animal 04-25 retire the July-2025 session-memory protocol + update-docs.py SESSION-MEMORY.md, update-docs.py, CONTEXT-MAPS 7/0, 1/0, 3/0 SILENT
B252 d0051dd CapableMind-AI 04-15 Atlas-owned repo registry retires KRONOS_TRACKED_REPOS KRONOS_TRACKED_REPOS, repo registry 2/0, 1/0 SILENT
B270 1bb7503 BetterMemories.io 04-13 SurrealDB → SQLite + LanceDB storage migration LanceDB 46/4 RECORDED-late (46d)
B288 1546271 CapableMind-AI 04-06 recall-quality A/B methodology (+ org migration) recall quality 8/2 SILENT
B306 ef5c6bc BetterMemories.io 03-07 setup-launchd.sh retired for install.sh setup-launchd.sh, launchd 3/0, 23/3 SILENT
B324 95b44d0 CapableMind-AI 02-25 import-trust / data-portability v1.1, log-chain spec v0.6 data-portability, ImportProvenance, import trust 4/0, 1/0, 2/0 SILENT
B342 197afff animal 2025-07-04 CSS custom-property system migration CSS custom propert 4/0 SILENT

Sample A — every row

# commit mechanism term c / r verdict
A01 07f0285 global safe.directory for the cold archive safe.directory, safe directory, dubious ownership 1/0, 0/0, 0/0 SILENT
A02 a0d63f4 hook-directory allowlist allowlist 14/4 RECORDED ⟳
A03 74d3ea9 LFS LFS 21/84 RECORDED ⟳
A04 374285b — places REVIEWED-130 — not-a-mechanism ⟳
A05 2408032 pre-commit stops recommending LFS LFS 21/84 RECORDED
A06 5737d4d — wording harmonisation — not-a-mechanism
A07 5694b92 — executes a filed run-once — not-a-mechanism
A08 063eccf STATE-CLAIM + resolved: schema STATE-CLAIM 10/20 RECORDED ⟳
A09 f1c91d9 retire the thinking-mirror launchd agent thinking-mirror 2/1 RECORDED
A10 7226e0d daybook-ensure link-upward-only daybook-ensure 2/2 RECORDED
A11 3dbf1d4 — session record — not-a-mechanism
A12 f84dd0e — design option — not-a-mechanism ⟳
A13 acfbb9f the randomness beacon as seed source beacon 15/26 RECORDED ⟳
A14 956b969 — criterion restated — not-a-mechanism ⟳
A15 783cf79 — record recovery — not-a-mechanism ⟳
A16 03813cf — trial re-aim — not-a-mechanism ⟳
A17 43f8b6c — trial held — not-a-mechanism
A18 fab8fb0 vault Frontmatter Specification v1.0.0 migration Frontmatter Specification / frontmatter 4/0 / 125/63 RECORDED ⚠
A19 ef6fa94 superseded_by: stamping convention superseded_by 3/2 RECORDED
A20 de1c34b retire bare distinct_spans for population-carrying names distinct_spans 4/16 RECORDED

⟳ = the commit writes to the register, so it cannot be silent by construction (9 of 20). ⚠ A18: the generic word frontmatter is in the register 63 times, but the versioned specification document itself — the thing that was bumped to v1.0.0 and then v1.0.1 — returns 4 commits, 0 register mentions. The row is RECORDED under the ruling; the mechanism is arguably not.


What this does and does not establish

Establishes. In a systematic sweep of the steward's whole commit history for adoption and retirement language, the majority of mechanism decisions are not findable in the authorization record by the name they were decided under. PENDING-164 generalised from one case; that generalisation now has 12 further instances drawn without looking for them, in five repos, across fourteen months. Three of the five RECORDED rows are RECORDED-LATE by 25, 46 and 53 days, which on this record's own reading is a decision recovered later, not routed.

Does not establish. Nothing about the remaining 322 rows. n=20 of 362 supports no extrapolation and none is offered — the 71% is a property of this sample, not an estimate of the backlog. Nor does it establish that any of the 12 should have been in the register: a MemPalace CI retry policy is not obviously the steward's governance business, and that question is not answered here. What is answered is the one that was asked: whether the record contains them. It does not.

⚠ The strongest instances are the ones that are unambiguously in scope. B324 amends the log-chain spec — the logchain is named in ~/CLAUDE.md's constitutional constraints, logchain appears in the register 29 times, and this spec bump appears zero times. B252 retires a mechanism another plan document names as a stopgap. B234 retires a whole session-memory protocol. These are not incidental.

Boundary case, flagged rather than buried: B108 (Be's EU entity domicile) is a real decision absent from the record and was scored not-a-mechanism because it is not apparatus. Under a wider definition it is a thirteenth.

Scope boundary

322 of 362 rows are unclassified. OWNED_HOSTS is not repaired. None of the twelve silent mechanisms is filed into the register by this pass — doing so would be option (b), which PENDING-164 recommends against and which this result does not disturb: options (c) and (d) remain built and sufficient, and this pass is evidence for their necessity, not against it.