Committed alone, before any sampled commit body was read, so the pre-registration
hash is unambiguous — the 3a33666 precedent.
The census population was never 270. prior-art.py's owned_repos() tests remotes
against a fragment of the steward's GitHub account name, so CapableMind-AI,
BetterMemories.io and be all fail the predicate: 89 further candidates, and the
population is 362. The instrument's two positive controls are both satisfied by
a predicate that misses all three, so they could not have caught it.
prior-art.py is deliberately left unmodified — repairing it here would break the
reproducibility of the census run this pass samples from.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RmFYCUeAaPqbpJMj6uGokk
10 KiB
PENDING-164 AMENDMENT 1 — the classification pass: PRE-REGISTRATION
Date: 2026-08-31 Written by: the executor. Status: pre-registration. Written and committed BEFORE any sampled commit body was read. Inherits: the literal question left by the 2026-08-27 wrap, quoted verbatim below. Discharges (in part): PENDING-164 AMENDMENT 1's declared-owed second half — "the 270-candidate classification pass is unscheduled and unclaimed."
1. The inherited question, verbatim
Of the first 20 census candidates, how many decided about a mechanism the register never mentions? Run
prior-art.pyon each named mechanism and count the ones returning commits but zero register mentions. ⚠ A count of zero would be the strongest possible refutation of PENDING-164 and should be reported as such, not explained away. The instrument's own caveat applies in reverse too: absence of commits is weak evidence, but presence of commits with register silence is exactly the disease, and today's PENDING-160 case shows the register-mention column is the half that carries the signal.
It is answered as asked. It is also answered on a second sample, for the reason in §3.
2. ⚠ A population defect found before sampling, and recorded here because it changes the number
prior-art.py's owned_repos() computes ownership by testing each repo's remotes against
OWNED_HOSTS = ("github.com/davidglidden", "davidglidden/", "git.skemantix.com").
Run today it returns 7 repos. Three of the steward's working repos fail the predicate:
| repo | first remote | why it fails |
|---|---|---|
_Dev/CapableMind-AI |
git@github.com:CapableMind-ai/capableMind_docs.git |
org is CapableMind-ai, not davidglidden |
_Dev/BetterMemories.io |
git@github.com:CapableMind-ai/betterMemories_app.git |
same |
_Dev/be |
git@github.com:boomerbot-xyz/be.git |
org is boomerbot-xyz |
The predicate matches an account name inside the remote path, which is not the same relation as
ownership. (github.com/davidglidden, the slash form, cannot match an SSH remote at all; every
current match is carried by the bare davidglidden/ fragment or by git.skemantix.com.)
Measured contribution of the three excluded repos, same verb set: 89 further candidates — CapableMind-AI 35, BetterMemories.io 42, be 12.
⇒ The population is 362, not 270/273. The two largest omissions are the doctrine repo and the L1 implementation repo — the two places where a decision that never reached the authorization record would matter most, and the two repos the wake digest lists first among active work.
⚠ The instrument's positive controls do not catch this and could not. They require 0677e8a
(chamber-library) and 95760ff (dotfiles) to be returned. Both are satisfied by a predicate that
misses all three repos above. The control encodes the case that was already known — the failure
mode this record has now logged more than once.
This defect is reported, not silently repaired. prior-art.py is left unmodified by this
pre-registration so that the census run it produced remains reproducible; any change to
OWNED_HOSTS is a separate act, filed separately.
3. The two samples, both fixed before reading
Sample A — the literal inheritance. Rows 1–20 of prior-art.py --census in the order the
instrument itself prints them (date-descending), over its own 7-repo population of 273.
Sample B — the corrected population. Every 18th row (indices 0, 18, … 342) of the 362-row
corrected population, sorted date-descending with sha as tiebreak, frozen to
population-362.tsv. Deterministic, and by construction it reaches all ten repos and every month
from 2025-06 to 2026-08.
Why both, stated before the answers are known. Sample A's head is the fortnight in which the
register was most active, and 18 of its 20 rows are dotfiles commits, many of which are register
filings. A sample drawn from the best-documented slice of the corpus is biased toward RECORDED
and against the finding — so a zero on Sample A is weak, in a direction that would be easy to
misreport as refutation. Sample B is not a replacement for Sample A and does not supersede the
inherited question; it is the second reading that makes Sample A's result interpretable. Both are
reported in full whichever way each points.
4. Classification protocol
For each sampled commit, in order:
-
Read the full commit message (
git show -s --format=%B) and its--stat. Not the subject line — the subject is what the instrument matched, and matching a verb is not deciding about a mechanism. -
Does it decide about a mechanism? A mechanism is a nameable technical or procedural apparatus — a library, a storage model, a hook, a schema, a tool, a protocol — that the commit adopts, retires, replaces or migrates away from. Ordinary content work that merely uses a census verb is NOT-A-MECHANISM. Recorded with the reason.
-
If YES, write down the exact term string a proposer would plausibly use for that mechanism, and run
prior-art.py <term>. Recordcommitsandregister mentions. -
Classify:
- SILENT —
commits > 0andregister mentions == 0. PENDING-164's condition exactly. - RECORDED —
register mentions > 0. - NOT-A-MECHANISM — step 2 said no.
- SILENT —
-
For every RECORDED row, additionally measure when the term first entered the register:
git -C ~/dotfiles log --reverse -S"<term>" --date=short --format=%ad -- PENDING.md PENDING-archive.md REVIEWED.md, and compare to the commit date. Sub-classify:- RECORDED-CONTEMPORANEOUS — first register entry on or before the commit date, or within 14 days after it.
- RECORDED-LATE — first register entry more than 14 days after the commit.
⚠ This column exists because the known case demands it:
LFStoday returns 22 register mentions and would score RECORDED, yet every one of them was filed on 2026-08-26, twelve weeks after0677e8a. A register mention that post-dates the commit by months does not show the decision was routed into the record; it shows it was recovered later, usually by accident. RECORDED-LATE is not a pass.
The answer to the inherited question is the count of SILENT. The count of SILENT + RECORDED-LATE is reported beside it as the wider reading, clearly labelled as the wider reading and never substituted for the narrow one.
5. ⚠ The interpretive step, exposed rather than hidden
Step 3 is a judgement: which term names the mechanism. A different term can flip a row's answer.
This pass therefore records the exact term string for every row, so that every verdict is
re-runnable by a second party with one command and contestable on the term rather than on the
conclusion. This is the same limit prior-art.py's own docstring declares — "that is
interpretation, not extraction" — and it is not removed by this pass, only made auditable.
6. Controls — both directions, fixed here
Must-not-flag (the register-search half is alive). logchain — named verbatim in the
constitutional constraints of ~/CLAUDE.md. It must return register mentions > 0. If it
returns 0, every SILENT verdict in this pass is void and the pass reports nothing.
Must-detect (the pipeline can emit SILENT at all). A term with commits and no register
mentions must be demonstrated from outside both samples. Candidates, in this fixed order —
SurrealDB, then ChromaDB, then Squarespace. The first that satisfies commits > 0 and register mentions == 0 serves as the control; all three results are reported regardless, and
a non-zero register count is a datum about the register, not a rejected trial.
Instrument controls. prior-art.py --selftest must PASS in the same session (it did, before
the census run: controls: PASS ('LFS' → 21 commits)).
If must-detect fails on all three — no SILENT is demonstrable outside the samples — then a sample count of zero cannot be distinguished from a broken pipeline, and the pass must say so instead of reporting a refutation.
7. Contamination guard
The measurement reads ~/PENDING.md, ~/PENDING-archive.md, ~/REVIEWED.md. Nothing is written
to any of them until every row is measured. This is the PENDING-104 ADDENDUM 1 failure in
advance: on 2026-08-27 the executor's own filing silently changed the file a checker was reading,
and the disagreement surfaced as an unexplained anomaly in someone else's tool.
SHA-256 at the start of measurement:
071a8caffcbf4ae531dd44b227ea5728920ee926e9d610b18cca8d99be0e773a PENDING.md
a3b28bf2231f061557683b370835da1a7b73990a0555f9e82dd5db37f95c87f9 PENDING-archive.md
c7241083361cf4a2ced68103ab95dcf8fd61870ccaf30d7ab360380d5be3f77e REVIEWED.md
The result document re-hashes all three at the end of measurement. If any hash differs, the register-mention column is void and the result says so rather than reporting the numbers.
8. What would refute PENDING-164, and what would not
- SILENT = 0 in Sample B (the cross-repo, cross-year sample), with the must-detect control satisfied, is the strongest refutation this design can produce at n=20, and is to be reported in those words. It would mean: in a systematic sweep of the steward's whole commit history for adoption and retirement language, every mechanism decided about is already findable in the register.
- SILENT = 0 in Sample A alone refutes nothing, for the reason given in §3, and must not be reported as though it did.
- SILENT > 0 in either sample is a lower bound on the backlog, never an estimate of it. n=20 of 362 supports no extrapolation and none will be offered.
9. Scope boundary
This pass classifies 40 rows of 362. It does not classify the remaining 322, does not repair
OWNED_HOSTS, does not file the mechanisms it finds into the register, and does not re-open
PENDING-164's ruled options (c) and (d), which are built and need nothing. What it produces is a
count, a method, a frozen population, and an exposed term list.