Nothing in flight. The in-flight section is rewritten to the post-release state and carries the five things a fresh session must not do: push (main is 8 ahead of origin/main), seed the registry, send the 17-handle note, run either dated prediction early, or start U7 without re-counting the booths first. Two new detail files: the release itself, and what each of the five review passes could only see alone -- the strongest evidence this repo has for running all of them rather than picking one. The earlier U6 entry is reconciled; it was written while the gates were still out and said NOT TAGGED. Restored in the rewrite: the warning that the 17 handles were never told `keep` stopped meaning "waiting on an answer", which is load-bearing for how the 2026-10-06 re-count reads, and the fact that a remote now exists.
2.9 KiB
U6 released as v0.6.0 — benches, and the number that was two defects
2026-09-22 · booth
The sixth of seven v1 units. Only U7 remains. 444 → 607 tests. Tagged
v0.6.0 (minor, operator-approved). NOT PUSHED — push is his call.
What shipped
booth/benches.py— stdlib-only AND sibling-free.Bench,normalize_bench_url(the identity), a lenientread_bencheson the render path and a strict_load_stricton the write path,mkstemp+fsync+os.replaceunder an flock, andorder_bencheswith a stated total order(state rank, name casefolded, id).links.booth_target— ONE predicate for "is this a booth URL", host-agnostic, path-shaped, percent-decoding, control-character-rejecting, never raising. Three callers: the CLI refusal, the board's dead marker,bench import.booth linkrefuses a booth URL (namingbooth new --why) and a credentialed one, writing nothing in either case.- The board marks dead rows — 161 of 221 live. Removal stays the operator's two clicks through the bulk control that already existed. Nothing deletes.
booth bench add|ls|state|rm|import.--applyREQUIRES the ids.
The decision that shaped the unit, and it was measured
The design doc's headline "69% rot" was two defects wearing one number, and splitting them is what made the unit the right size — see 2026-09-22-one-number-was-two-defects. 178 of 221 rows are booth announcements (156 already dead) whose cause U5 had already closed; only 8 are the bench re-post the registry fixes. A unit scoped off the unsplit number would have built the registry, declared victory, and left 178 rows rotting.
Identity is the FULL normalized URL, not the origin, and that was measured
rather than chosen: origin identity merges eight distinct gitea repositories
into one row, three unrelated HuggingFace model cards into one, and the two LRPG
surfaces on 10.100.10.50:8321 — the design doc's own example of two real
benches — into one. It destroys more than it deduplicates.
booth link is NOT deprecated, against the design doc's plan. Roughly 14 of
the 35 distinct non-booth targets are reference bookmarks (repos, model cards,
docs) for which the board is the right and only home. Deprecating it would have
evicted a third of its live content. The IA doc is corrected.
The gates
All four closed, and every one paid — see
2026-09-22-three-cold-panels-on-one-unit. Contract review
01M35BWCJ806MT75NA630Y4WFH, code review 01M35CK8YKEKMV7T15JXEF6A8N, bug hunt
01M35CRRK2RTVWWF1BN09AFQG3, one consolidated reply sent to heid at
01M35FY8QZTB9E5VR4WXDSBGEV.
Live evidence, unplanned
The sweeper ran mid-session: 23 booths → 19, and dead board rows went 156 → 161 in about fifteen minutes. The defect compounding in real time while the fix was being built — which is the argument for U6-before-U7 playing out on its own.