Skip to content

bench/LOCK: control 2 names the rows that exist - #205

Merged
gafferongames merged 1 commit into
mainfrom
lock-control2-bench-mixed
Aug 31, 2026
Merged

bench/LOCK: control 2 names the rows that exist#205
gafferongames merged 1 commit into
mainfrom
lock-control2-bench-mixed

Conversation

@gafferongames

Copy link
Copy Markdown
Contributor

bench/LOCK's procedural control 2 requires "the unchanged shapes' c/cpp
rows (bench_packet/ints/bits)"
to reproduce in-sitting in any PR that
touches the c/cpp legs.

Those three rows no longer exist. The owner's one-bench ruling (#196) left
Bench.schema as the only bench corpus, and #199 retired the three
hand-coded shapes with it — their type declarations and goldens survive as
conformance fixtures, but no runner measures them. A control that names rows
nobody can produce is a control that cannot be run, and the very next PR
touching the c/cpp legs (#204) hits it.

Amended to name bench_mixed (family gen: write and round_trip) and
bitpacker (family bits).

bitpacker is the load-bearing half. Its source is byte-identical across
every harness change — the diffs move only its call site's position in the
file — so any movement it shows is the translation unit's layout and nothing
else. That is exactly what control 2 exists to catch, and it is what both
#199 and #204 found: frozen code moving several percent in one language
because the TU around it shrank.

Per the lock's own amendment protocol, this PR's diff touches only
bench/LOCK. The mechanical prefix list is untouched (it is currently
suspended under the #189 one-shot carve), and the full lift condition —
the round closing on the owner's word, issue #170 — is unchanged.

🤖 Generated with Claude Code

The procedural control that guards the c/cpp legs required
"the unchanged shapes' c/cpp rows (bench_packet/ints/bits)" to reproduce
in-sitting. Those three rows were retired by #199 under the owner's
one-bench ruling (#196), so as written the control names nothing and cannot
be run.

Amended to name bench_mixed (family gen: write and round_trip) and
bitpacker (family bits). bitpacker is the load-bearing half: its source is
byte-identical across every harness change, so any movement it shows is the
translation unit's layout and nothing else — which is precisely what
control 2 exists to catch.

Diff touches ONLY bench/LOCK, per the lock's own amendment protocol.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants