diff --git a/workplans/CB-WP-0021-import-the-edition.md b/workplans/CB-WP-0021-import-the-edition.md index 03d3266..0a10ca6 100644 --- a/workplans/CB-WP-0021-import-the-edition.md +++ b/workplans/CB-WP-0021-import-the-edition.md @@ -66,6 +66,30 @@ But it resolves nothing about GR-E01, and T03 must send ground-game a *sharper* question rather than a retirement: **either GR-S01's deal count is wrong or GR-E01's thresholds are, and no dataset can reconcile them.** +## SUPERSEDED 2026-08-04 — ground-game ruled, and it was the deal + +The question above was sent and **answered** (GROUND-WP-0004, ruled +2026-08-04). It was GR-S01: + +> **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."* + +So the deal is **3 / 4 / 5** Problems, not 2 / 3 / 4. Available points +become **6 / 9 / 12**, thresholds **5 / 7 / 9 stand**, and SHARED GROUND +is a **2–6 player** mode as printed — not 5–6p only. + +**The import is now load-bearing rather than merely correct.** The ruled +6 / 9 / 12 holds *only* with `Problems.csv` values (2,2,2,3,3). With the +stand-in's `value = priority` the same deal gives **6 / 10 / 15** — a +different game that happens to also be winnable. **Fixing the deal without +importing the data would produce numbers ground-game did not rule on.** + +The two are therefore one pass, and this workplan is re-scoped to do both. + +**A subtlety the ruling keeps, worth not smoothing away:** at 2p, values +2+2+2 against a threshold of 5 still require a **full clear** — any two +cards sum to 4. *"Reachable ≠ forgiving."* + ## The constraint, measured before declaring **AM-4a has 3,798 lines of headroom.** A CSV crate costs, marginally @@ -127,6 +151,32 @@ content change. invalidates every recorded hash, in a project whose central invariant is replay determinism, is not a data-loading change. +## Task: deal what GR-S01 now says + +```task +id: CB-WP-0021-T05 +status: todo +priority: high +``` + +`problem_priorities` returns 2 / 3 / 4 and `setup` deals priorities +`1..=N` with priority 1 as the face-up Surface. That is **Surface + +(N−1) hidden**. The ruling is **Surface + k hidden**, k = 2 / 3 / 4. + +Do this **with** T02, not before it: the ruled arithmetic is a property of +the deal *and* the data together, and landing one without the other gives +numbers nobody ruled on. + +**Controls:** +- for every seat band, `sum(point_value of dealt) ≥ threshold` — this is + the check ground-game asked for by name, and it replaces + `gr-e01-threshold-unreachable-2p`; +- the Surface Problem is dealt at every seat count and is **never** one of + the hidden slots; +- **`gd0001` must be inverted**, not deleted. It asserts unreachability at + 2/3/4 seats and is the record of why this changed; inverting it is how a + reader learns the game became winnable rather than that a test vanished. + ## Task: import it, and let the thresholds mean something ```task @@ -147,9 +197,10 @@ Hidden → face down) and `hidden_priority`. again. - **A scenario must be able to reach GR-E01's threshold at 2 players**, which is the specific thing that was impossible. Assert the arithmetic, - not just that a game runs. -- The 5-problem shape must survive: the stand-in dealt 3, and code that - assumed 3 will not announce itself. + not just that a game runs — and at 2p that means a **full clear**, since + 2+2+2 against 5 leaves no slack. +- The deal shape must survive: code that assumed 2/3/4 Problems will not + announce itself when it becomes 3/4/5. ## Task: retire the rules gap that was never one @@ -165,10 +216,13 @@ state_hub_task_id: "ff3bd923-9066-49ce-aadd-a3552e4964ff" *"is unreachable at 2, 3 and 4 players"*. If T02 lands, that scenario is asserting a property of the **stand-in**, not of the game. -Retire or rewrite it, and **say which of the six provisional items this -resolves**, so GROUND-WP-0002 T03 shrinks rather than being left to -rediscover it. Message `ground-game` with the outcome — the last such -message sat unread for four days because nothing pointed at it. +**Ruled 2026-08-04:** *"Not a design gap. Rewrite as a non-provisional +import/fixture check: for every seat band, `sum(point_value of dealt +Problems) ≥ threshold`."* + +So it is **rewritten, not retired**, and it stops being provisional — +`provisional_owner: ground-game` comes off because ground-game has now +ruled. Message `ground-game` with the outcome. Do **not** quietly delete a failing-in-fact scenario. CB-EV-0005: *a score improved by deleting the question is not an improvement.* diff --git a/workplans/CB-WP-0022-the-design-instrument.md b/workplans/CB-WP-0022-the-design-instrument.md index 925802f..c6e4be0 100644 --- a/workplans/CB-WP-0022-the-design-instrument.md +++ b/workplans/CB-WP-0022-the-design-instrument.md @@ -161,7 +161,12 @@ above, and require an attempt at: third thing; - **that "carries its reproduction" is affordable** — if half the real findings cannot be reproduced cheaply, the rule will be quietly dropped - and the register becomes a suggestion box anyway; + and the register becomes a suggestion box anyway. *(Since this task was + written the answer has hardened: two findings reached ground-game on + wrong premises, and ground-game has itself ruled that reproductions are + required. The reviewer should now press the opposite way — whether the + rule is **sufficient**, given both bad premises would have shipped a + passing test alongside a wrong description.)* - **that a register is needed at all**, rather than one more section in `GroundRules.md §Underdetermined`, which already exists and already works. @@ -212,6 +217,26 @@ Candidate measures, to be argued not adopted: *read*; that is the number this exists to fix; - **findings closed by a ruling** vs **findings still open**, with age. +**ground-game has ruled on what a finding must carry** (GROUND-WP-0004 +T02, 2026-08-04), and it is stricter than this pass proposed. Adopt it: + +> 1. Arithmetic findings must ship a **runnable reproduction** *and* a +> **row-level deal table** listing 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, so a later reader can re-run it. + +The second half is theirs to keep. The first is ours, and it is a direct +consequence of both premises we got wrong: *"12 in the file"* was a sum +without a deal table, and *"offered on a face-down Problem"* was a +condition named without checking which one actually fired. + +**So the reproduction rule gains a shape requirement, not just an +existence one.** A finding that ships a passing test but describes the +wrong quantity is still a bad finding — which is exactly what happened +twice. The spec must say what a reproduction has to *show*, not only that +one exists. + Also specify the **trial protocol**, which is the part with no precedent here: a trial game is a `--record`ed session plus an observation log, so *"we played it and X happened"* is replayable rather than remembered. The