CB-WP-0046: the rule the placement encodes, and a log that names its rules
Some checks failed
ci / check (push) Failing after 4s

CB-WP-0045 left "nothing explains what a scope does" open and gave a
FALSE reason: that scoping is our Variant so no printed sentence exists.
The H2 package ships Rules_Text.csv -- twenty-two passages of
player-facing rules -- and nothing in clay-borg had ever read the file.
A wrong reason for an open item is worse than an open item; it retires
the question. Filed as F26 against ground-game: a package that adds a
FILE is invisible where one that adds a column is not.

The scope rule now renders under the table in the edition's own words,
only when a non-global scope is in play, matched by heading rather than
row number, and absent (never paraphrased) if the edition drops it.

The trial log stamps its variant on the begin marker -- a session
property, not an eighth column -- read off state.variant rather than the
--variant flag, because a bare `state.variant = v` leaves H2 inert and a
flag-stamped log would put false provenance on real player words. An
unstamped log reports `unrecorded`, never `ground-darvo-r0`.

Six mutations, six red. The sixth is the finding: every trials.py fixture
built its marker out of BEGIN, so nine checks followed BEGIN away from
what hotseat.rs writes and stayed green while real logs broke. A fixture
built from the constant under test cannot test the constant -- the
control is now a literal, asserted from both sides.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-08-08 19:15:52 +02:00
parent df65e2dee1
commit de25c4cae0
10 changed files with 986 additions and 12 deletions

View file

@ -53,9 +53,30 @@ kinds, states and metrics: [`GameDesign.md`](GameDesign.md). Reported by
| F21 | degenerate | note | — | — | 2026-08-06 | clay-borg |
| F23 | inconsistent | applied | decisions/ADR-0017-chaos-window-2-verdict.md | counterexample | 2026-08-07 | clay-borg |
| F22 | underdetermined | withdrawn | games_ground::edition::supply_tests::play_never_exceeds_the_components_the_box_holds | counterexample | 2026-08-07 | clay-borg |
| F26 | inert | raised | `crates/cb-render-html/src/lib.rs::a_scoped_table_says_what_a_scope_does` | counterexample | 2026-08-08 | ground-game |
<!-- design-register:end -->
- **F26 — a package that adds a FILE is invisible, where a package that
adds a column is not.** `h2-scoped-problem-stress` ships
`Rules_Text.csv` — twenty-two passages of player-facing rules, including
the one passage that says what a `stress_scope` does. No reader in
clay-borg mentioned the file, so `edition-check` could not call it stale
(a file nothing reads is not out of date, it is unseen) and no gate
could call it unread. The rule the table's whole layout encodes sat in
the repo, reachable by no player, for the entire measured life of H2.
**Inert rather than underdetermined**: nothing is ambiguous about the
rule and the engine implements it correctly — the text simply could not
fire. Third instance of F18's shape and the first where the unit is a
file, which is why it is filed separately instead of folded in.
Raised against `ground-game` because the actionable half is theirs: a
package's manifest should name its own files, so that a consumer reading
none of them is a detectable state. clay-borg now reads the one passage
it needed (CB-WP-0046); the other twenty-one remain unread and that is
the standing evidence.
- **F11 — SOLVE offered where it cannot act.** Offered on a face-down
Problem, or with no matching suit in hand; inert every time. Ruled
GROUND-WP-0002 T02, implemented CB-WP-0023 as GR-P05. `applied` — the