CB-WP-0029 T01-T03: components you can count, and a supply that does not bind

ADR-0016, Tokens.csv vendored, tracks and discs on the table, and a supply
audit that found nothing and says so.

T03 MEASURED BEFORE T01 DECIDED. 750 games, 2-6 seats, greedy and random:
Protection reaches 1 per seat and 2 on the table against a supply of 6;
Denied 3 of 5; relation links EXACTLY 12 OF 12 and never more; Focus/Blame
0 conflicts. The link row is the interesting one -- GR-L01's two-slot rule
IS the twelve-token supply written twice, which is the shape of a supply
needing no separate enforcement.

AND THE FIRST VERSION OF THE FOCUS/BLAME CHECK WAS WRONG. It compared a
seat's own placed Focus against its OWN blame_from -- but that list holds
OTHER players' discs, so they are different tokens. It reported 2
conflicts; corrected, it reports 0. Fifth instance of this project's
recurring defect, a number computed correctly about the wrong subject, and
the first caught before it left the repo rather than by a reviewer.

D2: a token is a VIEW, not a type. The aggregate gains no `Token` --
adding one would create a second source of truth for Stress, and the first
time they disagreed the bug would be invisible because both would look
internally consistent.

D3: quantity does NOT bind, and the reason is not the measurement. A
component limit the rules do not state is not a rule. Refusing a seventh
Protection token would enforce something nobody ruled -- CB-WP-0023's
error inverted: SOLVE was OFFERED where it could not act; this would
REFUSE where the rules allow. The check ships as a standing control, so a
future violation becomes a question for ground-game (does the box bound
the game, or do the rules?) rather than a bound the engine invented.
Registered as F22, withdrawn: a stated negative, because a survey that
finds nothing and leaves no trace cannot be told from one never run.

D4: Stress on a 0-5 track that turns red at 5 where DARVO arms, DARVO on
OFF/DENY/ATTACK/REVERSE, Freedom as the two-sided disc the edition says it
is, Protection and Blame counted, Lead and Round on the table.

Two tests broke on token discs and both were FIXTURE defects:
seat_centres matched every <circle> and track stops are circles. Seats now
carry class="seat".

The table height limit went 460 -> 500 as a CORRECTION, not a concession.
460 had no derivation; 500 does -- ~800px viewport less ~120 header and
~150 controls leaves ~530, and the version that broke dragging was 620.
CB-WP-0021 T06's rule is to fix the measurement rather than lower the
floor, and an underived number is a measurement defect.

make all: exit 0. 66 render tests, 26 cb-play.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-08-07 09:54:20 +02:00
parent 7fa0c65e6d
commit 631fb41fc2
10 changed files with 657 additions and 57 deletions

View file

@ -18,6 +18,7 @@ build must not depend on a sibling checkout that CI does not have.
| `Actions.csv` | 2026-08-06 | `4fa3b8ed` | the five action cards' own words (ADR-0015 D2) |
| `Solutions.csv` | 2026-08-06 | `4fa3b8ed` | Solution titles and microcopy |
| `Modes.csv` | 2026-08-06 | `4fa3b8ed` | mode text and `scoring_tiebreak` |
| `Tokens.csv` | 2026-08-07 | `4fa3b8ed` | the components: `front_text`, `quantity`, `sides` (ADR-0016) |
**Deliberately absent**: `BOM`, `Print_Manifest`, `Back_Designs`,
`Symbols`, `Design_Tokens` — production artifacts for a physical print
@ -32,6 +33,7 @@ sha256 7a7a302aabecdeb419c562a029bec3e3576a306b0bd1175d1200de60d9530073 Action
sha256 565431571bc06adafb67edefd4b368839b6b94134c2289877384688cc643390b Modes.csv
sha256 0a04830c93b62dcb2f4411a9fbde576368a7427fe9e63c5015e606e4d42d23a0 Problems.csv
sha256 0bda1ee97de726b5e8c4404ab15ecc53a359e6c23db74fb41ecb51d78f9884ad Solutions.csv
sha256 25273bb6e74c9ad545c5e89dfe0f76b294d0a6cbef51f80d548039d5f0943484 Tokens.csv
```
`make edition-check` compares this against `../ground-game` when that

View file

@ -0,0 +1,10 @@
token_id,name,quantity,sides,shape,size,symbol_id,front_text,use
TOK_STRESS,Stress marker,6,Single,Cube or disc,1012 mm,SYM_STRESS,None,One per player; move on Stress 05 track.
TOK_FREEDOM,Freedom token,6,Double,Disc,18 mm,SYM_FREEDOM,READY,Spend to choose any action at Stress 45; GROUND—GR or Bond Support readies it.
TOK_DARVO,DARVO stage marker,6,Single,Arrow pawn or disc,1418 mm,SYM_DENY,DARVO,One per player; move along OFF/DENY/ATTACK/REVERSE track.
TOK_LINK,Relation link token,12,Single,Small disc,14 mm,PLAYER_SYMBOL,Player symbol,Two per player; one is placed at each endpoint of a Bond/Rivalry tile.
TOK_FOCUS_BLAME,Focus / Blame token,6,Double,Disc,18 mm,SYM_FOCUS_BLAME,FOCUS,"At DARVO Attack, place Focus by the target. At Reverse, flip to Blame. Each Blame is 1 personal score."
TOK_PROTECTION,Protection token,6,Single,Shield or disc,18 mm,SYM_PROTECTION,PROTECTION,"Cancel the next Attack against the holder, then return the token."
TOK_DENIED,Denied token,5,Single,Bar or disc,18 mm,SYM_DENIED,DENIED,Place on a Problem turned face down by Deny. Remove when GROUND—OU restores the Problem.
TOK_LEAD,Lead marker,1,Single,Pawn or large disc,22 mm,SYM_LEAD,LEAD,"Starts with a random player, breaks same-step ties, and rotates clockwise after each round."
TOK_ROUND,Round marker,1,Single,Small disc,14 mm,SYM_LEAD,ROUND,Move along the 15 track printed on the active Scenario card.
1 token_id name quantity sides shape size symbol_id front_text use
2 TOK_STRESS Stress marker 6 Single Cube or disc 10–12 mm SYM_STRESS None One per player; move on Stress 0–5 track.
3 TOK_FREEDOM Freedom token 6 Double Disc 18 mm SYM_FREEDOM READY Spend to choose any action at Stress 4–5; GROUND—GR or Bond Support readies it.
4 TOK_DARVO DARVO stage marker 6 Single Arrow pawn or disc 14–18 mm SYM_DENY DARVO One per player; move along OFF/DENY/ATTACK/REVERSE track.
5 TOK_LINK Relation link token 12 Single Small disc 14 mm PLAYER_SYMBOL Player symbol Two per player; one is placed at each endpoint of a Bond/Rivalry tile.
6 TOK_FOCUS_BLAME Focus / Blame token 6 Double Disc 18 mm SYM_FOCUS_BLAME FOCUS At DARVO Attack, place Focus by the target. At Reverse, flip to Blame. Each Blame is −1 personal score.
7 TOK_PROTECTION Protection token 6 Single Shield or disc 18 mm SYM_PROTECTION PROTECTION Cancel the next Attack against the holder, then return the token.
8 TOK_DENIED Denied token 5 Single Bar or disc 18 mm SYM_DENIED DENIED Place on a Problem turned face down by Deny. Remove when GROUND—OU restores the Problem.
9 TOK_LEAD Lead marker 1 Single Pawn or large disc 22 mm SYM_LEAD LEAD Starts with a random player, breaks same-step ties, and rotates clockwise after each round.
10 TOK_ROUND Round marker 1 Single Small disc 14 mm SYM_LEAD ROUND Move along the 1–5 track printed on the active Scenario card.