battery provenance: a recorded pool, a prereg that prices the extraction term, and three limits on the existing reads - #53
Merged
fathomlab merged 1 commit intoSep 1, 2026
Conversation
…ion term, and three limits on the existing reads The 462-concept battery every disjoint-worlds read is scored over is a hand-authored string literal (run_g0clear.py:31-65, 465 words) whose entire filter chain is one order-preserving dedup removing three words (:66-67). No candidate pool was ever recorded, so the extraction term for those reads is UNCHECKABLE retrospectively. New files only. No paper, receipt, certificate or seal is touched, and run_g0clear.py and its 462-word battery are unchanged. - build_concept_pool.py / concept_pool.json — a pool that exists BEFORE the selection. 547,373 candidate types drawn by a stated rule from wikitext-103-raw-v1 pinned at revision b08601e0, then eight named filters each recording rule, why, cost, removal count and a sha256 of its survivors. Battery is a seeded sample (seed 52) of the 5,199 survivors. Survival ratio 462/547,373 = 0.00084403. Deterministic and byte-reproducible across PYTHONHASHSEED and platform line endings. CPU only; no weights loaded, four cached tokenizers. - PREREG_b52_pooled_battery_2026_09_01.md — reruns the read on that battery and reports E beside it. Seven machine-scored gates with declared power bases, a total outcome table, six null cells, a fresh split seed with a MEASURED freshness gate (the b34v3 lesson), and a two-sided reproduction gate at 0.15 derived from the binomial SE at n=70. Commits in advance to publishing a failure as a failure. - ADDENDUM_battery_and_holdout_limits_2026_09_01.md — three limits that BOUND the published reads without overturning them. Selection provenance unrecorded; the seed-0 FIN-70 set scored across nine committed experiments (two more than reported); the "open vocabulary" readout is a 462-way closed set over the same literal. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is now measurable that was not
The 462-concept battery every read in
papers/disjoint-worlds/is scored over is a hand-authored string literal —_BANKatrun_g0clear.pylines 31-65, 465 whitespace-separated words typed into the source. Its entire filter chain is lines 66-67: an order-preserving dedup that removes exactly three words (chicken, orange, mushroom, each written into two of the author's own category blocks). 465 becomes 462, and nothing else touches it.Because no candidate pool was ever recorded, the extraction term for those reads — the share of candidate concepts that survived into the scored set — is not computable retrospectively. There is no rejection log, no source corpus, no seed to replay. This PR does not try to recover that number. It makes the term computable going forward and records what the missing artifact costs.
build_concept_pool.py+concept_pool.json— a pool that exists before the selection.wikitext-103-raw-v1train, pinned at revisionb08601e0, CC BY-SA 3.0ENGLISH_STOP_WORDSfunction wordSurvival ratio 462 / 547,373 = 0.00084403; sampling fraction 462 / 5,199 = 0.088863. Every filter records its rule, why it exists, what it costs, its removal count, and a sha256 of its survivors. Deterministic and byte-reproducible — verified by re-running under different
PYTHONHASHSEEDvalues and comparing bytes, and the receipt is written with LF endings so it reproduces off Windows too. CPU only, no weights loaded, four cached tokenizers.Filter costs are stated rather than implied. F4 would refuse
fireandback; F5 removesbrown,academy,abbey,admiral,march; F7 removesearlybecauseearsurvives. F6 — the filter the old chain lacks entirely — would have refused 35 of the existing 462 words, including 6 of its 70 held-out concepts.PREREG_b52_pooled_battery_2026_09_01.md— reruns the read on that battery and reports E beside it. Seven gates, each with a declared power basis and a stated meaning; a total outcome table (all 128 combinations covered, verified by brute force); six null cells under a composition-checked maximum; a fresh split seed with a measured freshness gate rather than an asserted one; and a two-sided reproduction gate requiring the pooled gemma read to land within 0.15 of the published 0.7857 — a bar derived from the binomial standard error at n=70, not chosen. All eight outcome branches, the smoke path, and the composition guard were exercised throughstyxx.protocolagainst synthetic inputs; the prereg parses with zero undeclared power bases and zero vacuous gates.If the pooled battery does not reproduce the read, the prereg names that as the most informative outcome the design can produce and commits to publishing it as a finding.
The existing reads are bounded, not overturned
ADDENDUM_battery_and_holdout_limits_2026_09_01.mdrecords three limits, each verified against the committed code rather than taken on trust. Its first paragraph says plainly that the reads stand: 0.7857 and 0.5714 were computed by committed code, against gates frozen before the runs, with nulls at or near chance. Nothing here contradicts a number. What the limits do is narrow the population those numbers describe.run_thought_transfer.py, while the docstring and theparent_baseline.Nreceipt field both say 110; 341 words are net new with no recorded rationale.split_concepts(seed=0)FIN-70 set is scored across nine committed experiments, two more than reported —run_g0_stage1andrun_g0_stage1balso score it. The map is never fitted on it, and the two headline reads (run_b31v2,run_b34v3) use it only for scoring. But three write-side scripts select a hyperparameter on a slice of it (lock_dose(fin[:5]),dose_pool = fin[:8], andN_NATIVE_SEL = 12explicitly commented "held-out concepts used to pick the steer-optimal layer"), always on native target directions. Seventeen scripts readlayer 11 / k 150out of g0clear's receipt, selected on SEL_dirs — of whose 69 concepts 60 sit in b34v3's seed-343 training set and 9 sit in its held-out set, so the "sits inside the training set" formulation is true of 60 of 69 and the precise version belongs in the record.run_b35c.pyline 46 buildsvocab = fin + tr— the same hand-typed 462 — and scores each query by argmin over all of them. That is a 462-way closed-set identification. Being fair: the code's docstring and the prereg both say so explicitly, andb35c_result.jsonreturnedINVALID__null_artifact, so no open-vocabulary claim is published from it. The overclaim is in the name.The addendum also records where the arc caught itself first, at the same length as the criticisms:
b34v3_fresh_split_addendum.jsonpersisted a 13-of-70 overlap that falsified its own frozen prereg's disjointness assertion — we reproduced the split independently and got 13, matching exactly — and published the read recomputed on the 57 genuinely-unseen concepts rather than burying it.Scope of the diff
New files only.
git statusbefore commit showed four untracked additions and zero modifications. No paper, receipt, certificate or seal is touched; nothing under.github/is touched;run_g0clear.pyand its 462-word battery are unchanged, and the 2026-08 battery is not regenerated.papers/AUDIT_the_whole_program_2026_09_01.mdandpapers/INDEX_program_map_2026_09_01.mdare left to the concurrentfeat/program-auditbranch.Not merging. A human decides.
🤖 Generated with Claude Code