Skip to content

Commit 01de9d1

Browse files
committed
docs: record round 36 in the bug-hunt decision log
Assisted-by: Claude:claude-sonnet-5
1 parent aceb238 commit 01de9d1

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

.abcd/work/DECISIONS.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1065,3 +1065,40 @@ Architecture-shaping decisions graduate to an ADR under
10651065
were fixed — corrected here too. It also caught that round 2's "six"
10661066
recount of `adds no network dependency` instances double-counted
10671067
`CLAUDE.md`, a symlink to `AGENTS.md`; the distinct-file count is five.
1068+
- 2026-08-07 — Bug-hunt round 36: two confirmed substantive defects, two
1069+
nitpicks, zero refuted. `review.AppendVerdict` held its verdict record to
1070+
`MaxJSONLLine` (round 25) but never checked the running total against
1071+
`MaxJSONLBytes` (round 33) — the last of `findings.jsonl`'s three writers
1072+
left uncovered after round 35 closed the same gap for `analyze -ingest`.
1073+
A `findings.jsonl` built at or right up to the cap is a legal ingest
1074+
output; recording a verdict against it durably bricked every finding and
1075+
verdict already on file (every later `analyze.Load`, `review`, and
1076+
`report` refused or silently dropped the findings; re-ingesting to repair
1077+
it was itself refused once a verdict existed, since `holdsVerdicts` also
1078+
bounds only a line, not the total). Fixed with a stat-then-append check
1079+
under `AppendVerdict`'s existing lock, mirroring `WriteJSONL`'s and
1080+
`oversizedFindings`' pre-flight pattern. Separately, `demo`'s capture
1081+
endpoint checked each interaction record against `MaxJSONLLine` but never
1082+
tracked `interactions.jsonl`'s running total against `MaxJSONLBytes` (the
1083+
bound `merge`'s reader enforces): a sequence of individually valid
1084+
captures, each answered `204`, could accumulate past the cap and leave a
1085+
session durably unmergeable, discovered only after capture ended — as
1086+
little as ~2,000 ordinary-sized interactions through the documented
1087+
instrument-your-own-app path, not the contrived multi-megabyte records the
1088+
hunting round first reproduced with. Fixed the same way, using the file
1089+
offset `appendRecords` already obtains via `Seek` before every write;
1090+
`events.rrweb.jsonl` is deliberately exempt, matching `MaxJSONLBytes`' own
1091+
documented archival carve-out. Both fixes carry regression tests watched
1092+
to fail pre-fix and pass post-fix, and both survived two independent
1093+
adversarial refuters apiece, including live end-to-end reproductions
1094+
against a built binary rather than re-reading the same source the hunt
1095+
round had. Nitpicks fixed: `README.md`'s "the CLI never calls a model or
1096+
the network" was the one absolute network claim rounds 26, 27, and 35's
1097+
otherwise-identical corrections missed — round 35's "sole outlier" framing
1098+
covered only the canonical `adds no network dependency` phrase, which
1099+
cannot match README's differently-worded instance; reworded to the
1100+
canonical, `analyze`-scoped form. `docs/reference/session-directory.md`'s
1101+
`findings.jsonl` schema table named `mode`'s `A`/`B` values without
1102+
defining what distinguishes them anywhere user-facing (the only definition
1103+
lived in internal, non-shipped brief documents) — one clause now points
1104+
the reader at README's own "Reference capture" bullet.

0 commit comments

Comments
 (0)