Rule GR-S01 deal and close GROUND-WP-0004 threshold gap
Surface is always in play with hidden priorities 1..k, so available points are 6/9/12 against Standard thresholds 5/7/9 — every seat band is winnable. Encode the contract in edition rules, finish the workplan, and park optional difficulty tiers as GROUND-WP-0005.
This commit is contained in:
parent
b8ff288f3d
commit
8886543aa0
8 changed files with 440 additions and 84 deletions
|
|
@ -4,11 +4,11 @@ type: workplan
|
|||
title: "Reopen GR-E01: the void ruling rests on a premise clay-borg has corrected"
|
||||
domain: consumer
|
||||
repo: ground-game
|
||||
status: ready
|
||||
status: finished
|
||||
owner: bernd
|
||||
topic_slug: whynot
|
||||
created: "2026-08-03"
|
||||
updated: "2026-08-03"
|
||||
updated: "2026-08-04"
|
||||
origin: correction
|
||||
origin_ref: GROUND-WP-0002
|
||||
state_hub_workstream_id: "067434eb-18cc-472f-b4ea-7dd16555629f"
|
||||
|
|
@ -23,82 +23,91 @@ GROUND-WP-0002 T03 ruled `gr-e01-threshold-unreachable-2p`:
|
|||
> thresholds (2p→5, 3–4p→7, 5–6p→9) stand.
|
||||
|
||||
**The 12 is wrong, and clay-borg is where it came from.** Twelve points
|
||||
exist *in the file*; **GR-S01 deals 2 / 3 / 4 of the five Problems**, so
|
||||
the points ever in play are 4 / 6 / 9. clay-borg asserted the 12 in its
|
||||
CB-WP-0021 declaration, corrected itself one commit later after actually
|
||||
running the arithmetic, and by then the ruling had been made.
|
||||
exist *in the file*; clay-borg then “corrected” to 4 / 6 / 9 by treating
|
||||
GR-S01 as dealing 2 / 3 / 4 *total* problems from Surface upward. That
|
||||
undercount still drops the explicit Surface + hidden split in the rules.
|
||||
|
||||
**The gap is not a stand-in artifact. It survives the authoritative
|
||||
dataset**, and it has now been confirmed at the table.
|
||||
|
||||
## The evidence, in three independent forms
|
||||
## The evidence that reopened this
|
||||
|
||||
**1. Play.** The maintainer played several 3-player games on 2026-08-03
|
||||
and could not win any of them.
|
||||
and could not win any of them (engine stand-in / undercount shape).
|
||||
|
||||
**2. The engine's own constants.**
|
||||
**2. Engine constants (stand-in):** max 3 / 6 / 10 vs thresholds 5 / 7 / 9
|
||||
— unreachable at 2–4 seats.
|
||||
|
||||
| seats | dealt (GR-S01) | max achievable | GR-E01 threshold | |
|
||||
|---:|---:|---:|---:|---|
|
||||
| 2 | 2 | 3 | 5 | **unreachable** |
|
||||
| 3 | 3 | 6 | 7 | **unreachable** |
|
||||
| 4 | 3 | 6 | 7 | **unreachable** |
|
||||
| 5 | 4 | 10 | 9 | reachable |
|
||||
| 6 | 4 | 10 | 9 | reachable |
|
||||
|
||||
Claim every Problem in play, concede nothing, play perfectly — at 2, 3 and
|
||||
4 seats the group still loses. In SHARED GROUND, where the group total
|
||||
*is* the outcome, those games cannot be won.
|
||||
|
||||
**3. Both datasets agree.** The stand-in gives 3 / 6 / 10; `Problems.csv`
|
||||
gives 4 / 6 / 9. Both fall short of 5 / 7 / 9. **No edition data
|
||||
reconciles them**, which is the part the void ruling turned on.
|
||||
**3. clay-borg “CSV deal”:** max 4 / 6 / 9 — still unreachable at 2–4.
|
||||
|
||||
**Reproduction:** `gd0001_group_success_is_unreachable_below_five_seats`
|
||||
in clay-borg —
|
||||
`cargo test -p games-ground --all-features gd0001 -- --nocapture`. It
|
||||
reads `problem_priorities` and `threshold` out of the engine, so it cannot
|
||||
drift from the rules it tests.
|
||||
in clay-borg (stand-in / wrong deal depth).
|
||||
|
||||
## Task: rule again, on the corrected numbers
|
||||
|
||||
```task
|
||||
id: GROUND-WP-0004-T01
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "dcd7da12-be3a-4289-8d21-1924401a1259"
|
||||
```
|
||||
|
||||
Two numbers disagree and only one can be right:
|
||||
### RULED 2026-08-04 (maintainer confirmed direction)
|
||||
|
||||
- **GR-S01's deal** — 2 / 3 / 4 of five Problems. Should more be in play
|
||||
at low seat counts?
|
||||
- **GR-E01's thresholds** — 5 / 7 / 9. Were they set for a deal larger
|
||||
than GR-S01 makes?
|
||||
| question | ruling |
|
||||
|---|---|
|
||||
| **GR-S01 deal** | **Surface always** ∪ **hidden priorities `1..k`**, with `k = 2` (2p), `3` (3–4p), `4` (5–6p). Surface is never one of the hidden priority slots. |
|
||||
| **Available points** (`Problems.csv` values) | **6 / 9 / 12** for those seat bands — not 12-always, not 4/6/9. |
|
||||
| **GR-E01 thresholds** | **5 / 7 / 9 stand** as the **Standard** target. All are ≤ available. |
|
||||
| **SHARED GROUND seat range** | **2–6 players**, same as the box. Not a 5–6p-only mode. |
|
||||
| **`gr-e01-threshold-unreachable-2p`** | **Not a design gap.** Rewrite as a non-provisional **import/fixture check**: for every seat band, `sum(point_value of dealt Problems) ≥ threshold`. Invert/retire `gd0001` when the engine deals Surface + hidden correctly. |
|
||||
| **Difficulty tiers** | Not required to close this. Design parked as residual [GROUND-WP-0005](GROUND-WP-0005-difficulty-tiers-and-pressure-dial.md). |
|
||||
|
||||
A third possibility to rule out **explicitly**, because nothing currently
|
||||
does: the thresholds may be *intended* to be unreachable at low seat
|
||||
counts, with SHARED GROUND being a 5–6 player mode. If that is the
|
||||
design, say so — the engine will otherwise keep offering a game that
|
||||
cannot be won, and a player will keep concluding they played badly.
|
||||
**Subtlety retained:** at 2p, values 2+2+2 mean need 5 still requires a
|
||||
**full clear** (any two cards sum to 4). Reachable ≠ forgiving.
|
||||
|
||||
`gr-e01-threshold-unreachable-2p` stays as a failing-in-fact record until
|
||||
this is answered. It is **not** retired on the previous ruling.
|
||||
**Edition encoding (this session):**
|
||||
|
||||
- `Rules_Text.csv` — explicit Surface-vs-hidden deal, available 6/9/12,
|
||||
threshold ≤ available invariant, 2–6 all modes.
|
||||
- `Scenarios.csv` — setup columns spell Surface + hidden + available +
|
||||
threshold (columns 5/7/9 unchanged).
|
||||
- `Modes.csv` — SHARED GROUND explicitly 2–6; semi/coalition note
|
||||
threshold ≤ available.
|
||||
- `README.csv` — one-line deal/threshold contract.
|
||||
- Analysis: [`history/260804-threshold-reachability-and-difficulty.md`](../history/260804-threshold-reachability-and-difficulty.md).
|
||||
|
||||
## Task: how a clay-borg premise reached a ruling unchecked
|
||||
|
||||
```task
|
||||
id: GROUND-WP-0004-T02
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "bd1c7a7d-36a2-4bf4-ab42-8e5489706df4"
|
||||
```
|
||||
|
||||
Worth one paragraph, not a project: the ruling was sound reasoning on a
|
||||
supplied number, and the number was wrong. The engine now attaches a
|
||||
**runnable reproduction** to findings of this kind (clay-borg CB-WP-0022),
|
||||
so a future ruling can be checked against an artifact rather than a
|
||||
sentence.
|
||||
### RULED 2026-08-04 — process hygiene
|
||||
|
||||
State whether that is sufficient from this side, or whether rulings should
|
||||
cite the reproduction they relied on.
|
||||
The original void ruling was **sound reasoning on a bad input**. clay-borg
|
||||
supplying a single aggregate (“12 in the file”) without a **Surface-
|
||||
separated deal table** made the error cheap to accept.
|
||||
|
||||
**From this side, sufficient going forward:**
|
||||
|
||||
1. Arithmetic findings must ship a **runnable reproduction** (clay-borg’s
|
||||
CB-WP-0022 practice) **and** a row-level deal table that lists Surface
|
||||
and each hidden priority separately — never only “sum of file” or
|
||||
“deal depth N”.
|
||||
2. ground-game rulings that depend on arithmetic **should cite** that
|
||||
reproduction id (or path) in the workplan ruling block so a later
|
||||
reader can re-run it.
|
||||
3. ground-game will **spot-check** deal tables against
|
||||
`Rules_Text` + `Problems.csv` before treating a gap as design vs
|
||||
import. A second wrong total (4/6/9) is how this reopened.
|
||||
|
||||
Runnable repro alone is not enough if the engine under test encodes the
|
||||
wrong deal; the edition text remains authority for GR-S01.
|
||||
|
||||
## Residuals
|
||||
|
||||
- **[GROUND-WP-0005](GROUND-WP-0005-difficulty-tiers-and-pressure-dial.md)**
|
||||
— optional Learning/Mastery tiers + Pressure dial after playtest on
|
||||
correct deal (`origin: residual`, `origin_ref: GROUND-WP-0004`).
|
||||
- clay-borg: import Surface + hidden; rewrite `gr-e01` / invert `gd0001`.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
---
|
||||
id: GROUND-WP-0005
|
||||
type: workplan
|
||||
title: "Difficulty tiers (threshold ratio) and optional Pressure dial"
|
||||
domain: consumer
|
||||
repo: ground-game
|
||||
status: backlog
|
||||
owner: bernd
|
||||
topic_slug: whynot
|
||||
created: "2026-08-04"
|
||||
updated: "2026-08-04"
|
||||
origin: residual
|
||||
origin_ref: GROUND-WP-0004
|
||||
state_hub_workstream_id: "e6a26af9-f58d-44b4-89fd-bcb5ecba3e0f"
|
||||
---
|
||||
|
||||
# Optional difficulty control after GR-E01 arithmetic is settled
|
||||
|
||||
**Origin residual of GROUND-WP-0004.** Arithmetic winability is closed:
|
||||
Surface + hidden `1..k` → available 6/9/12; Standard thresholds 5/7/9.
|
||||
Design for a simple difficulty dial lives in
|
||||
[`history/260804-threshold-reachability-and-difficulty.md`](../history/260804-threshold-reachability-and-difficulty.md).
|
||||
|
||||
Do **not** start this until playtest on the correct deal shows a need for
|
||||
Learning / Mastery (or solo) tuning. Standard is already shippable.
|
||||
|
||||
## Task: decide whether to add named tiers
|
||||
|
||||
```task
|
||||
id: GROUND-WP-0005-T01
|
||||
status: wait
|
||||
priority: low
|
||||
state_hub_task_id: "95dcd233-8ebf-44de-95ee-f69b3d973d26"
|
||||
```
|
||||
|
||||
After competent play on correct GR-S01 import: keep Standard only, or add
|
||||
Learning / Mastery as **threshold ratios of available** (plus optional
|
||||
Pressure dial: start Stress / Freedom). If yes, integrate as a third setup
|
||||
axis (Difficulty card) without changing Mode scoring.
|
||||
|
||||
## Task: encode tiers in edition data (if T01 says yes)
|
||||
|
||||
```task
|
||||
id: GROUND-WP-0005-T02
|
||||
status: wait
|
||||
priority: low
|
||||
state_hub_task_id: "1e7202cf-01af-48e6-b71d-029de9ec61e2"
|
||||
```
|
||||
|
||||
Rules_Text + scenario or difficulty-card data; clay-borg `threshold(seats,
|
||||
difficulty)` and invariant `threshold ≤ available`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue