# 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.