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

211 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.