Development record
The cold-reading window eval fails on every branch that grows the intent, capture or lint surfaces, and the recalibration it names is a hand-run recipe no verb performs. TestEveryCommittedEntryFitsItsDeclaredWindow (evals/coldreading_window_test.go, in the smoke lane, so in make preflight and the pre-push hook) re-measures each committed preset entry against the tokens_est it declares, and the widening and detection objects list internal/core/intent, internal/core/lint, commands/intent.md and commands/capture.md by path, so any change on the intent lifecycle moves the measurement; the declared margin is one per cent, about nine thousand tokens on a nine-hundred-thousand-token object, which one lane consumes. Measured in the pilot run of 2026-09-20: main at the pilot base 891623 (widening) and 900660 (detection); lane B alone 897023; lane B merged with lane A 900584, 584 over its declaration; lane C alone 905106 and 914143, over both. The remedy the eval names (re-measure by dry run, move the declaration to the smallest ten-thousand boundary with at least one per cent headroom, restamp measured_tokens_est, measured_bytes and measured_at, commit with the reason) has now been run by hand four times (twice on 2026-09-15, precedent fc5c7e27; twice in the pilot), each time by a fresh agent at about fifteen minutes and eighty thousand tokens. Wanted: a verb (working name: reading calibrate) that performs the stated rule for every position and prints the commit body, so a merged tip is recalibrated by one command; the smaller rung is a script under scripts/. Separately for the product thinker: whether one per cent is the right margin when a single lane's text exceeds it.
The cold-reading window eval fails on every branch that grows the intent, capture or lint surfaces, and the recalibration it names is a hand-run recipe no verb performs. TestEveryCommittedEntryFitsItsDeclaredWindow (evals/coldreading_window_test.go, in the smoke lane, so in make preflight and the pre-push hook) re-measures each committed preset entry against the tokens_est it declares, and the widening and detection objects list internal/core/intent, internal/core/lint, commands/intent.md and commands/capture.md by path, so any change on the intent lifecycle moves the measurement; the declared margin is one per cent, about nine thousand tokens on a nine-hundred-thousand-token object, which one lane consumes. Measured in the pilot run of 2026-09-20: main at the pilot base 891623 (widening) and 900660 (detection); lane B alone 897023; lane B merged with lane A 900584, 584 over its declaration; lane C alone 905106 and 914143, over both. The remedy the eval names (re-measure by dry run, move the declaration to the smallest ten-thousand boundary with at least one per cent headroom, restamp measured_tokens_est, measured_bytes and measured_at, commit with the reason) has now been run by hand four times (twice on 2026-09-15, precedent fc5c7e27; twice in the pilot), each time by a fresh agent at about fifteen minutes and eighty thousand tokens. Wanted: a verb (working name: reading calibrate) that performs the stated rule for every position and prints the commit body, so a merged tip is recalibrated by one command; the smaller rung is a script under scripts/. Separately for the product thinker: whether one per cent is the right margin when a single lane's text exceeds it.
Remedy grounds (2026-09-29)
- The rule has been run by hand at least four times at about fifteen minutes each (the record's evidence), and implement's ReadingCorpus (internal/core/implement/bounds.go) already serialises the lanes that touch the corpus, so the calibrating command is the remaining half; no outside practice was needed.
- Rejected: widening the margin alone, which delays the failure without removing the hand step.
Frontmatter
| id | iss-2609210748032488 |
|---|---|
| type | issue |
| lifecycle | open |
| severity | minor |
.abcd/work/issues/open/iss-2609210748032488-the-cold-reading-window-eval-fails-on.md
open on GitHub ↗ · commit history ↗
mentions2
- iss-2609211105023379N lanes in flight that grow the reading corpus are N serial recalibrations of one file, .abcd/config/reading-presets.json, because every lane's recalibration rewrites the same four fields per position and conflicts with every other lane's, and the merge queue's update-branch cannot merge them. So two such PRs cannot be in the queue together: the second goes BEHIND when the first merges and is stuck on a conflict the forge cannot resolve. The pilot run sequenced its lanes by hand around this: lane C recalibrated three times (at its own tip, after PR 648, after PR 649) and lane D twice, at fifteen minutes and sixty to eighty thousand tokens each, and the last lane closed a full session later than its code was ready. Sibling of iss-2609210748032488 (the recalibration is a hand-run recipe): that record wants the verb; this one records that even with the verb the recalibration must happen once, on the integration tip, not once per lane — the calibration belongs to the merge, as a queue-side step or a single post-merge commit, not to the branch. For the big run's file: lanes that touch internal/core/intent, internal/core/lint, internal/core/capture or their surface pages cannot be queued together.
- iss-2610241549584964The product thinker's 2026-10-12 ruling that a reading-window breach warns and never blocks a merge exists only in commit c738e111e and the comment at evals/coldreading_window_test.go:9; no decision record holds it, so a search of .abcd/work/decisions/ for prior rulings misses it, and iss-2609210748032488 still reads as waiting on the M33 margin interview for a check that no longer refuses anything.