T05. tools/design.py, make design, and the register in GroundRules.md --
14 rows, no new file, because ADR-0012 D2 made §Underdetermined the
register rather than building one beside it.
Backfill was the test and it caught two things the ADR did not have.
First, a `role` column. The first report alarmed on U2 and was wrong to:
U2's scenario is green BECAUSE the provisional default it documents is
implemented, which says nothing about whether ground-game agrees. GR-E01's
was a counterexample that went green. Same colour, opposite meaning -- a
register that cannot tell them apart either alarms constantly or never.
Only a green counterexample alarms. Folded back into GameDesign §1.3.
Second, it contradicted the survey. CB-RES-0007 said "six of the ten
already have provisional scenarios." Measured -- grep -lE "\bU<n>\b" over
scenarios/ground -- exactly ONE U-item names itself. Five provisional
scenarios exist and four probably encode U-item defaults, but the mapping
is not written down, so it is not checkable. Same defect class as the
wrong premises, found inside the survey that proposed the fix. Now a
reported debt: open, lacking a reproduction: 9, target 0.
design.py carries the control design-baseline.py never had, asserted
directly: a row citing a nonexistent file must not count as reproduced,
using the exact path 2da19a4 deleted -- which the old tool called green.
design-baseline.py is marked superseded rather than deleted; it is the
evidence for how a wrong number got into a survey.
T06. The report is a FILE in ground-game under GROUND-WP-0002, committed
there, with a hub message that only points at it. It asks for no ruling:
it carries GR-E01's withdrawal, our reproduction debt, and two notes that
are explicitly not findings.
And it had to acknowledge something nobody anticipated. GROUND-WP-0002 is
finished -- all ten U-items were RULED 2026-08-03, every one confirmed as
the default we simulate, plus five of six provisional scenarios. The
survey said "0 of 10 ruled" two days later and this register was built
saying `reported`. That is the unread-inbox failure running in the
opposite direction: they answered and we did not collect it. The
instrument's first run surfaced it. They are `ruled`, not `applied` --
lifting the now-settled provisional flags is owed and is not done, and
make design shows them open until it is.
T07. evidence/CB-EV-0021. Two of six catches in this pass came from
execution rather than process (the role distinction from building it, the
ten uncollected rulings from running it), which is InnerLoop §Design
goal's prediction holding.
make self-tests, facts-check, loop-lint: clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
20 KiB
GROUND Rules — simulation specification
Status: v0.1 draft, derived 2026-07-31 from the authoritative sister
repo ground-game, edition dataset GROUND-DARVO-CORE-0.1
(editions/ground-darvo-r0/: Rules_Text, Actions, DARVO, Relations,
Problems, Solutions, Scenarios, Modes, Tokens, Player_Mats, Glossary).
This is a derivation, not a design: where the dataset is silent, the gap
is listed in §Underdetermined with a PROVISIONAL simulation default and
must be flagged back to ground-game, never silently canonized.
Every rule is numbered and individually testable; scenario files cover
rules via their covers: list (M-D1-COV). Names in CAPS are dataset
terms.
1. Objects and state (GR-O)
- GR-O01 A game has 2–6 players, exactly 5 rounds, one Scenario card, and one Mode card.
- GR-O02 Per-player state: Stress (integer 0–5), Freedom token (READY/SPENT), DARVO marker (OFF/DENY/ATTACK/REVERSE), Focus/Blame token (with owner and location), 2 relation slots, a hand of Solution cards, a set of 5 Action cards, claimed Problems, and 0+ Protection tokens.
- GR-O03 Table state: Surface Problem (face up), hidden Problems (face down), Denied tokens on Problems, Solution deck and discard, Lead marker (one player), Round marker (1–5), relation tiles (Bond/Rivalry side) between player pairs.
- GR-O04 A Problem has: required Solution suit (Clarify, Repair, Boundary, or Change), point value, visibility (face up / face down), Denied flag, and claimed-by (a player or nobody).
- GR-O05 A relation between two players is exactly one of Bond or Rivalry; at most one relation may exist between the same two players.
2. Setup (GR-S)
- GR-S01 Setup uses the chosen Scenario's Surface Problem face up and its hidden Problems face down, filtered by player count: priorities 1–2 for 2 players, 1–3 for 3–4 players, 1–4 for 5–6 players.
- GR-S02 Each player starts with: Stress 2, Freedom READY, DARVO marker OFF, Focus/Blame token (Focus side, unplaced), two free relation slots, and two dealt Solution cards.
- GR-S03 The Lead marker starts with a (seeded-)random player; the Round marker starts at 1.
- GR-S04 The Solution deck is the 24 core Solution cards (6 per suit) minus those dealt, shuffled deterministically from the game seed.
3. Round structure (GR-R)
- GR-R01 Each round has four steps in order: Select, Reveal, Resolve, End.
- GR-R02 (Select) Every player simultaneously chooses exactly one of their five Actions face down, with target designation where the Action requires one. Choices are hidden from other players until Reveal (commit/reveal).
- GR-R03 (Select, stress gate) A player at Stress 4 or 5 may select only ATTACK or GROUND, unless they spend their READY Freedom token during Select (before Reveal), which permits any one Action and turns the token to SPENT.
- GR-R04 (Reveal) All selected Actions are revealed simultaneously.
- GR-R05 (Reveal, GROUND mode) A player who revealed GROUND chooses its mode (GR / OU / ND) and its target after seeing all revealed Actions, before resolution begins.
- GR-R06 (Resolve) Resolution proceeds in fixed step order: 1 GROUND, 2 Support, 3 active DARVO stages, 4 Investigate, 5 Attack, 6 Solve.
- GR-R07 (Resolve, ties) Within the same step, resolve starting with the Lead player, continuing clockwise.
- GR-R08 (End) At End: clamp all Stress to 0–5; any player at Stress 5 whose DARVO marker is OFF sets it to DENY (their sequence begins next round); rotate Lead clockwise; advance the Round marker.
- GR-R09 After Round 5's End step, the game ends and scoring applies (GR-E).
4. Stress and Freedom (GR-F)
- GR-F01 Stress is always an integer clamped to 0–5.
- GR-F02 At Stress 0–3 all five Actions are selectable.
- GR-F03 A Freedom token is READY or SPENT; spending is only possible when READY, and only during Select (GR-R03).
- GR-F04 GROUND—GR readies its player's Freedom token. Support received through an existing Bond readies the target's Freedom token.
5. Actions (GR-A)
- GR-A01 (INVESTIGATE) Reveal one chosen hidden, non-Denied Problem, then draw one Solution. If no hidden non-Denied Problems remain, draw one Solution only.
- GR-A02 (SOLVE) Targeting one face-up, non-Denied Problem: when Solve resolves, discard one Solution matching the Problem's required suit and claim the Problem. If the Problem was already claimed by an earlier resolver this round (Lead order), the Solution is not discarded and nothing happens.
- GR-A03 (SUPPORT, no relation) Target gets −1 Stress; a Bond may then form per GR-L02.
- GR-A04 (SUPPORT, existing Bond) Target gets −2 Stress, target's Freedom becomes READY, and if the target is in an active DARVO sequence its current stage is cancelled and the whole sequence ends (marker to OFF).
- GR-A05 (SUPPORT, existing Rivalry) Target gets −1 Stress; the target chooses: flip the relation to Bond, or break it.
- GR-A06 (ATTACK, no relation) Target gets +1 Stress; a Rivalry forms automatically if both players have a free slot (GR-L03).
- GR-A07 (ATTACK, existing Bond) Target gets +2 Stress and the Bond flips to Rivalry.
- GR-A08 (ATTACK, existing Rivalry) Target gets +2 Stress and the relation breaks (both link tokens return).
- GR-A09 (ATTACK, cancellation) Protection or GROUND—OU may cancel an Attack. A cancelled Attack changes neither Stress nor relations.
- GR-A10 (GROUND—GR, Ground & Restate) Self: −2 Stress and Freedom becomes READY. If the player is in an active DARVO sequence, the current stage still resolves this round, then the remaining sequence ends.
- GR-A11 (GROUND—OU, Observe & Uphold) Choose one: restore one Denied Problem (face up, remove Denied token); cancel one Attack targeting the player this round; or protect one face-up Problem from Deny this round.
- GR-A12 (GROUND—ND, Name & Decide) Choose one: remove one Blame token from the player; break one relation involving the player; or reject one Reverse targeting the player this round.
- GR-A13 SUPPORT and ATTACK target one other player; INVESTIGATE targets a hidden Problem; SOLVE targets a face-up non-Denied Problem.
6. Relations (GR-L)
- GR-L01 Each player has exactly 2 relation slots; each relation consumes one slot from each endpoint. If either endpoint lacks a free slot, the immediate Support/Attack effect still applies but no relation forms.
- GR-L02 (Bond formation) A no-relation Support creates a Bond only if both players have a free slot and the target accepts.
- GR-L03 (Rivalry formation) A no-relation Attack creates a Rivalry automatically (no consent) if both players have a free slot.
- GR-L04 (Flip/break) Bond→Rivalry on Attack-through-Bond (GR-A07); Rivalry→Bond or break by target's choice on Support-through-Rivalry (GR-A05); break on Attack-through-Rivalry (GR-A08); GROUND—ND may break any relation involving its player (GR-A12).
- GR-L05 A Bond formed this round by a Support does not itself cancel DARVO; only Support through a Bond that existed before this round's Support step regulates DARVO (GR-A04).
7. DARVO sequence (GR-D)
- GR-D01 (Trigger) At End, a player at Stress 5 with marker OFF sets the marker to DENY; their DENY stage resolves in the next round's DARVO step (GR-R08).
- GR-D02 (Binding) Once triggered, the sequence advances one stage per consecutive round — DENY, then ATTACK, then REVERSE — regardless of the player's later Stress, unless ended early (GR-D06/GR-A04/GR-A10).
- GR-D03 (DENY) Mandatory effect in the DARVO step: choose one face-up, unsolved Problem not protected by GROUND—OU this round; turn it face down and place a Denied token. A Denied Problem cannot be solved or revealed by ordinary Investigate; only GROUND—OU restores it.
- GR-D04 (ATTACK stage) Mandatory effect: make one extra Attack against any other player, resolved with the normal relation rules (GR-A06..A09), in addition to the player's chosen Action. Then place the player's Focus token beside the target — even if the extra Attack was cancelled. The Focus target is remembered as the REVERSE target.
- GR-D05 (REVERSE) Mandatory effect targeting the Focus holder: unless rejected by that player's GROUND—ND this round, flip Focus to Blame in front of them, give them +1 Stress, and gain one Protection token. Then (rejected or not — see §Underdetermined U5) the sequence owner reduces own Stress by 2 and the sequence ends (marker OFF).
- GR-D06 (Early end) The sequence ends immediately when: an existing Bond's Support cancels the current stage (GR-A04), or GROUND—GR ends it after the current stage resolves (GR-A10). If it ends before REVERSE, the placed Focus token is removed.
- GR-D07 A player whose marker is not OFF cannot trigger a new sequence (GR-R08); after the sequence ends, the marker is OFF and re-triggering is possible at a later End.
8. Problems and solving (GR-P)
-
GR-P01 Only face-up, non-Denied Problems can be targeted by SOLVE or claimed.
-
GR-P02 Hidden (face-down, non-Denied) Problems can only be revealed by INVESTIGATE (GR-A01); Denied Problems only by GROUND—OU (GR-A11).
-
GR-P03 A claimed Problem belongs to its claimant and counts its printed value for scoring; a Problem can be claimed at most once.
-
GR-P04 Competing SOLVEs on the same Problem in the same round resolve in Lead order (GR-R07); losers keep their Solution (GR-A02).
-
GR-P05 (ruled by ground-game 2026-08-03, GROUND-WP-0002 T02) SOLVE is offered only where it can do something. A seat may select SOLVE on a Problem only if it is face-up, non-Denied, unclaimed, and the seat holds a Solution of the required suit. A Problem claimed in a prior round is not a legal target; the same-round race of GR-P04 is unaffected, because both seats select before either resolves.
Not a bluff mechanic. CB-WP-0018 raised the possibility that selecting an unfulfillable SOLVE was an intended face-down bluff. The ruling is that it was a filter bug: "the player always knows their hand… physical tables self-police the same way."
9. Protection, Focus and Blame (GR-T)
- GR-T01 A Protection token cancels the next Attack against its holder (including a DARVO extra Attack), then returns to the supply.
- GR-T02 A Blame token in front of a player is worth −1 to that player's personal score and stays until removed by GROUND—ND.
- GR-T03 Each player has exactly one Focus/Blame token; it is either unplaced (Focus, with owner), placed Focus-side (during own DARVO), or flipped to Blame in front of the REVERSE target.
10. Game end and scoring (GR-E)
- GR-E01 After Round 5, sum the printed values of all claimed Problems; the Scenario's threshold (by player count: 2p → 5, 3–4p → 7, 5–6p → 9 in dataset 0.1) decides group success where the Mode uses it.
- GR-E02 (SHARED GROUND, co-op) One shared score; group succeeds iff total ≥ threshold. Mastery rating = successes minus 1 per Blame token in play and 1 per Denied Problem.
- GR-E03 (COMMON PROBLEM, PERSONAL EDGE, semi-co-op) Group must meet the threshold; if it does, each player scores claimed value −1 per Blame they hold; highest wins. Tiebreak: lower Stress, then more Bonds, then shared victory.
- GR-E04 (BONDED COALITIONS) Group must meet the threshold; each connected Bond network is a coalition (unbonded players are solo); coalition score = sum of members' personal scores; highest coalition wins. Rivalries do not connect. Tiebreak: lower combined Stress, then fewer Blame tokens, then shared victory.
The finding register
This section is the design-finding register (ADR-0012 D2). It was the
register for dataset ambiguities already; CB-WP-0022 extended it to all
five kinds rather than building a second one beside it. Admissibility,
kinds, states and metrics: GameDesign.md. Reported by
make design.
| id | kind | state | reproduction | role | raised | owner |
|---|---|---|---|---|---|---|
| U1 | underdetermined | ruled | — | default | 2026-07-31 | ground-game |
| U2 | underdetermined | ruled | scenarios/ground/gr-d01-darvo-trigger.yaml | default | 2026-07-31 | ground-game |
| U3 | underdetermined | ruled | — | default | 2026-07-31 | ground-game |
| U4 | underdetermined | ruled | — | default | 2026-07-31 | ground-game |
| U5 | underdetermined | ruled | — | default | 2026-07-31 | ground-game |
| U6 | underdetermined | ruled | — | default | 2026-07-31 | ground-game |
| U7 | underdetermined | ruled | — | default | 2026-07-31 | ground-game |
| U8 | underdetermined | ruled | — | default | 2026-07-31 | ground-game |
| U9 | underdetermined | ruled | — | default | 2026-07-31 | ground-game |
| U10 | underdetermined | ruled | — | default | 2026-07-31 | ground-game |
| F11 | inert | applied | scenarios/ground/gr-p05-solve-legality.yaml | counterexample | 2026-08-02 | clay-borg |
| F12 | degenerate | note | — | — | 2026-08-01 | clay-borg |
| F13 | inconsistent | withdrawn | scenarios/ground/gr-e01-threshold-reachable-2p.yaml | counterexample | 2026-08-01 | clay-borg |
| F14 | unplayed | note | — | — | 2026-08-01 | clay-borg |
- 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 rule changed, not just the annotation. The case we reported was not the case that fired:validatealready rejected face-down, and the maintainer's three inert SOLVEs were the hand case. - F12 — GR-A13 "wasted SOLVE" on an already-claimed Problem. A
scenario had to pick a default and did.
note: no artifact isolates the degenerate line, so under GameDesign §3.1 it may not be reported until one exists. - F13 — GR-E01 vs GR-S01, withdrawn 2026-08-05. Raised as "4/6/9
against 5/7/9, no dataset reconciles them."
2da19a4measured 6/9/12 against 5/7/9 and the scenario was renamed-unreachable-→-reachable-. Its reproduction is green, which under GameDesign §1.3 is the alarm that forced the resolution. Withdrawn rather than deleted, and the withdrawal is reported (ADR-0012 D5). - F14 — GR-E03/GR-E04 never played to the end. Nineteen passes, never
played out.
noteuntil a trial game exists; GROUND-WP-0003 is the playtest that would close it, and GameDesign §5's protocol makes the recording the artifact.
The register's first run found ten answers nobody had collected
U1–U10 are ruled, not reported. GROUND-WP-0002 T05 answered all
ten on 2026-08-03 — every one confirmed as the default clay-borg
already simulates — and GROUND-WP-0002 T03 confirmed five of the six
provisional scenarios, voiding gr-e01 as a rules gap. The workplan is
finished.
CB-RES-0007 reported "0 of 10 ruled" and this register was built saying
reported. Both were two days stale on the day they were written. The
answers had arrived and nothing propagated them — the same failure as the
unread inbox, in the opposite direction.
They are ruled, not applied, and the difference is work we owe.
Per ADR-0012 D5, applied means the source changed and the provisional
default was deleted. The rulings confirmed our defaults, so the rules did
not move — but the scenarios still carry provisional: true for choices
that are now settled. Lifting those flags and recording each ruling is
what closes U1–U10, and it is not done. make design shows them open
until it is.
What the backfill measured, and what it contradicted
Only U2 names its U-item in a scenario. Measured, not estimated:
for u in U1 .. U10; do grep -lE "\b$u\b" scenarios/ground/*.yaml; done
CB-RES-0007 asserted "six of the ten already have provisional
scenarios." Five provisional scenarios exist and one cites the item
it stands for. The other four may well encode U-item defaults — the
mapping is simply not written down, so it is not checkable, and an
uncheckable link is the defect this register exists to fix. The register
records what is citable; the rest is debt, visible in make design.
No sixth kind was needed — the five kinds absorbed all four non-U findings. And the survey's "six provisional defaults" was not entered as a finding: C3 showed it double-counted GR-E01, and the provisional scenarios are reproductions for underdetermined items, not a finding of their own.
U1–U10 are reported while lacking reproductions, which GameDesign
§3.1 would now forbid. They were reported on 2026-07-30, before the rule
existed. They are grandfathered rather than rewritten, and the debt is a
reported metric with a target of zero.
Underdetermined in dataset 0.1 — PROVISIONAL defaults (flag to ground-game)
Owner: ground-game. Raised: 2026-07-31. Every U-item carries an owner
and a raise date so its age is visible; make coverage reports both and
warns past 30 days. CI warns rather than breaks — the ruling belongs
to ground-game and the kernel cannot make it for them — but every evidence
file that depends on one must list it (CB-WP-0003 T08).
A ruling flips the scenario, not the kernel: the default is encoded in a
scenario tagged provisional: true, so a correction is a data change.
Formalization exposed points the dataset does not decide. Simulation uses the stated default; each is tagged in scenarios that depend on it and must be confirmed or corrected by ground-game.
- U1 Bond acceptance timing (GR-L02): when does the target "accept"? Default: a decision point during the Support resolution, target decides with full knowledge of revealed Actions.
- U2 Stress clamping during resolution (GR-F01): dataset caps Stress at End; mats physically cap at 0–5. Default: clamp on every application (no intermediate values above 5/below 0). Note this interacts with DARVO triggering (a mid-round spike to 5 that is reduced again before End does not trigger).
- U3 DENY with no legal target (GR-D03): if no face-up unsolved unprotected Problem exists, default: the stage resolves as a no-op and the sequence still advances.
- U4 Solution deck exhaustion (GR-A01): default: reshuffle the discard into a new deck deterministically; if both are empty, the draw is skipped.
- U5 Rejected REVERSE — self-effects (GR-D05): the Actions sheet says GROUND—ND "rejects one Reverse"; the DARVO sheet orders the −2 self-Stress after the flip/+1/Protection block. Default: rejection cancels the effects on the target (no Blame, no +1) and the Protection gain, but the sequence owner still takes −2 Stress and the sequence still ends; the Focus token returns unflipped.
- U6 Simultaneous Bond-Support and stage cancellation (GR-A04, GR-R06): Support (step 2) resolves before DARVO stages (step 3), so a Bond Support in the same round cancels that round's stage before it fires. Stated as the intended reading; confirm.
- U7 Focus target elimination: dataset has no player elimination, so no rule needed; confirm none exists.
- U8 Multiple Attack cancellation sources (GR-A09): if both Protection and GROUND—OU could cancel the same Attack, default: GROUND—OU (chosen at step 1) applies first; Protection is consumed only if it actually cancels.
- U9 Two players at Stress 5 at the same End (GR-R08): both trigger; their stages resolve in Lead order in later rounds. No interaction rule needed; confirm.
- U10 Hand limits: none stated. Default: no hand limit.
Scenario coverage obligation
Every GR-rule above must be covered by ≥1 scenario under
scenarios/ground/ (M-D1-COV); every U-item's default must be covered by
a scenario tagged provisional: true so a ground-game correction flips
the scenario, not the kernel.