id: claim_halflife-2026-09-09-corpus
hunt: claim_halflife
started: 2026-09-09T23:20-05:00
finished: 2026-09-09T23:40-05:00
ran:
- git rev-parse --is-shallow-repository
- git fetch --unshallow origin
- .venv/bin/python hunts/claim_halflife/corpus.py
- .venv/bin/python hunts/claim_halflife/classify.py
- .venv/bin/python hunts/claim_halflife/controls.py
- .venv/bin/python hunts/claim_halflife/depth.py 100 262 500 800
outcome: the container's checkout was shallow at 262 commits against 1084 and nothing announced it; on the full history 22 of 95 case-log entries were never touched again, against 29 at the container's own depth and 91 at depth 100
artifacts:
- hunts/claim_halflife/artifacts/corpus.json
- hunts/claim_halflife/artifacts/classified.json
- hunts/claim_halflife/artifacts/controls.json
- hunts/claim_halflife/artifacts/depth.jsonid: claim_halflife-2026-09-10-ladders
hunt: claim_halflife
started: 2026-09-09T23:45-05:00
finished: 2026-09-10T00:30-05:00
ran:
- .venv/bin/python hunts/claim_halflife/lesion.py
- .venv/bin/python hunts/claim_halflife/lesion2.py
- .venv/bin/python hunts/claim_halflife/lesion3.py
outcome: of 25 (hunt, test) pairs that can be scored, 19 defend at least one number against a 10 percent mutation and 8 are byte-pinned; 6 read none; the first two ladders are kept because each measured the instrument rather than the tree, the first by mutating one leaf and the second by mutating only the first of up to thirty-seven artifacts a test names
artifacts:
- hunts/claim_halflife/artifacts/lesion.json
- hunts/claim_halflife/artifacts/lesion2.json
- hunts/claim_halflife/artifacts/lesion3.jsonid: claim_halflife-2026-09-10-blind-audit
hunt: claim_halflife
started: 2026-09-10T00:10-05:00
finished: 2026-09-10T00:40-05:00
ran:
- .venv/bin/python hunts/claim_halflife/make_audit_sample.py
- a blind classification by a separate agent, with the key moved out of the repository before it ran
- .venv/bin/python hunts/claim_halflife/score_audit.py <key> <audit>
- .venv/bin/python hunts/claim_halflife/classify2.py
- .venv/bin/python hunts/claim_halflife/make_audit_sample2.py <key2>
outcome: the audit agreed with the classifier on 16 of 30, precision 0.40 and recall 0.55 on a balanced sample, so the correction rate is withdrawn; two structural defects named and repaired; re-scoring against the same rows reaches 21 of 30, which is fitted rather than measured, and a disjoint sample of thirty went to a second blind audit
artifacts:
- hunts/claim_halflife/artifacts/audit_sample.json
- hunts/claim_halflife/artifacts/audit_score.json
- hunts/claim_halflife/artifacts/classified2.json
- hunts/claim_halflife/artifacts/audit_sample2.jsonNotes
- The ladder broke the tree while measuring it. Its first version restored mutated artifacts with
git checkout --; a concurrentgitin the same working tree made one restore fail with exit 128 and left a mutated artifact behind. The rule was already in the operating playbook. It is now obeyed: original bytes in memory, and the restore is asserted to round-trip. - The key was moved out of the repository before the blind audit ran, not merely withheld in the prompt, because an agent with a shell can read a file it is told not to read.
classify.pyis kept exactly as it was. A classifier that scored near chance is evidence about how this kind of measurement fails, and deleting it would remove the only record of that.
id: claim_halflife-2026-10-10-landing
hunt: claim_halflife
started: 2026-10-10T17:24+00:00
finished: 2026-10-10T18:42+00:00
ran:
- git worktree add <scratch> 2da62eb9842db72d4f6bad09c6f13efe384d6ab7, with this directory copied in
- .venv/bin/python hunts/claim_halflife/corpus.py
- .venv/bin/python hunts/claim_halflife/classify.py
- .venv/bin/python hunts/claim_halflife/controls.py
- .venv/bin/python hunts/claim_halflife/depth.py 100 262 500 800
- .venv/bin/python hunts/claim_halflife/classify2.py
- .venv/bin/python hunts/claim_halflife/make_audit_sample.py
- .venv/bin/python hunts/claim_halflife/make_audit_sample2.py <key2>
- .venv/bin/python hunts/claim_halflife/score_audit.py artifacts/audit_key.json artifacts/blind_audit_round1.json
- .venv/bin/python hunts/claim_halflife/score_audit.py <key2> artifacts/blind_audit_round2.json audit_score2.json
- .venv/bin/python hunts/claim_halflife/lesion.py
- .venv/bin/python hunts/claim_halflife/lesion2.py
- .venv/bin/python hunts/claim_halflife/lesion3.py
- .venv/bin/python -m pytest -q hunts/claim_halflife
outcome: corpus.json, lexical_mask.json, classified.json, classified2.json, controls.json, depth.json, audit_key.json, audit_score.json and audit_score2.json are byte-identical; the two audit samples differ only in the width of git's abbreviated index hashes; with the scratch tree in the state each ladder first ran in, lesion3.json is byte-identical, lesion2.json differs only in wall-clock seconds and lesion.json only in the captured output path of its one baseline-red row; two stated facts do not reproduce and are marked where stated
artifacts:
- hunts/claim_halflife/test_claim_halflife.py
- hunts/claim_halflife/RESULTS.md
- docs/43-what-happens-to-a-claim.mdRun in a scratch worktree at 2da62eb, the commit the corpus is frozen at, with this directory copied in, because the scripts read history from whatever is checked out and the ladders mutate other hunts' artifacts and run their tests. Outputs were compared with the committed artifacts and left in the scratch copy. The analysis scripts take seconds; each ladder takes 2.5 to 6 minutes on a 4-vCPU container.
- Landed on main and renumbered #122 to #131, 2026-10-10. On main #122 is
dh_minus_landing; #127 to #130 areeuler_defect_axis,li_dh_onset(#298),epstein_height(#299) andquotient_exponent(#300). The front door, numbered 40 on the branch, isdocs/43; main uses 40 for the page on one form per discriminant. - What the ladders needed to reproduce, 2026-10-10. Three things about the tree they ran in, none of them in this directory. First, the gitignored zero cache: without
data/explicit_zeros.npzholding 2000 zeros,tests/test_zeta_temperament.pycomputes them and takes more than the ladder's 900-second timeout, andlesion.pystops; the cache was built withmpmath.zetazeroat 25 digits exactly aszeta.explicit.first_zeroswould (its first 1000 agree bit for bit with an existing cache), after which the test takes a second.lesion2.pycounts a timeout as green, so without the cache it would have scored that target silently. Second and third, this hunt's own case-log entry:lesion.py's committed output showstest_hunt_probe_discipline.pyred becauseclaim_halflife/was on disk with no entry, and the re-run without one matches it; the committedlesion2.jsonandlesion3.jsonshow the same test green on the null rung, so the entry existed by then, and with the branch's entry added to the scratchhunts/README.mdboth reproduce. Without it,lesion3.pyscores that pair byte-pinned, because its null rung never runs the untouched tree (RESULTS.mdsection 3, the note). - Artifacts committed without a manifest, found on landing:
audit_key2_sample.json,blind_audit_round2.json,audit_score2.jsonandaudit_score_repaired_same_rows.json. The blind audits are the separate agents' outputs and cannot be re-run;audit_score2.jsonre-derives from them (above) andaudit_score_repaired_same_rows.jsonis re-derived bytest_claim_halflife.pyas 21 of 30.lesion3.logislesion3.py's console output; the landing re-run printed the same lines but for timings. - Not re-run, 2026-10-10: the live shallow measurement of 34 entries (35.8%), which by its own description cannot be (
RESULTS.mdsection 2).