diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index dac6333..083deb1 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -11,7 +11,8 @@ | workplan | GROUND-WP-0001 | done | — | workplans/GROUND-WP-0001-statehub-bootstrap.md | | workplan | GROUND-WP-0002 | finished | — | workplans/GROUND-WP-0002-rulings-clay-borg-is-blocked-on.md | | workplan | GROUND-WP-0003 | ready | — | workplans/GROUND-WP-0003-playtest-semi-and-coalitions.md | -| workplan | GROUND-WP-0004 | ready | — | workplans/GROUND-WP-0004-the-threshold-ruling-rests-on-a-bad-premise.md | +| workplan | GROUND-WP-0004 | finished | — | workplans/GROUND-WP-0004-the-threshold-ruling-rests-on-a-bad-premise.md | +| workplan | GROUND-WP-0005 | backlog | — | workplans/GROUND-WP-0005-difficulty-tiers-and-pressure-dial.md | | task | GROUND-WP-0001-T01 | done | — | workplans/GROUND-WP-0001-statehub-bootstrap.md | | task | GROUND-WP-0001-T02 | done | — | workplans/GROUND-WP-0001-statehub-bootstrap.md | | task | GROUND-WP-0001-T03 | done | — | workplans/GROUND-WP-0001-statehub-bootstrap.md | @@ -25,5 +26,7 @@ | task | GROUND-WP-0003-T03 | todo | — | workplans/GROUND-WP-0003-playtest-semi-and-coalitions.md | | task | GROUND-WP-0003-T04 | todo | — | workplans/GROUND-WP-0003-playtest-semi-and-coalitions.md | | task | GROUND-WP-0003-T05 | todo | — | workplans/GROUND-WP-0003-playtest-semi-and-coalitions.md | -| task | GROUND-WP-0004-T01 | todo | — | workplans/GROUND-WP-0004-the-threshold-ruling-rests-on-a-bad-premise.md | -| task | GROUND-WP-0004-T02 | todo | — | workplans/GROUND-WP-0004-the-threshold-ruling-rests-on-a-bad-premise.md | +| task | GROUND-WP-0004-T01 | done | — | workplans/GROUND-WP-0004-the-threshold-ruling-rests-on-a-bad-premise.md | +| task | GROUND-WP-0004-T02 | done | — | workplans/GROUND-WP-0004-the-threshold-ruling-rests-on-a-bad-premise.md | +| task | GROUND-WP-0005-T01 | wait | — | workplans/GROUND-WP-0005-difficulty-tiers-and-pressure-dial.md | +| task | GROUND-WP-0005-T02 | wait | — | workplans/GROUND-WP-0005-difficulty-tiers-and-pressure-dial.md | diff --git a/editions/ground-darvo-r0/Modes.csv b/editions/ground-darvo-r0/Modes.csv index bad8a47..a48c063 100644 --- a/editions/ground-darvo-r0/Modes.csv +++ b/editions/ground-darvo-r0/Modes.csv @@ -1,4 +1,4 @@ mode_id,title,mode_type,tagline,rules_text,scoring_tiebreak,back_design_id -MODE_COOP,SHARED GROUND,Cooperative,The group succeeds or fails together.,"All claimed Problem cards form one shared score. Meet the Scenario threshold by the end of Round 5. No individual winner is declared. For a mastery rating, subtract 1 for each Blame token still in play and 1 for each Denied Problem.",Not applicable.,BACK_MODE -MODE_SEMI,"COMMON PROBLEM, PERSONAL EDGE",Semi-cooperative,The group must succeed before anyone can win.,"The group succeeds only if the total value of all claimed Problems meets the Scenario threshold. If it succeeds, each player scores the value of Problems they claimed minus 1 per Blame token they hold. Highest score wins.","Lower Stress, then more Bonds, then shared victory.",BACK_MODE -MODE_COALITION,BONDED COALITIONS,Dynamic teams,Bonds decide the sides at the end.,"The group must first meet the Scenario threshold. At game end, each connected network of Bonds is a coalition; unbonded players are one-player coalitions. Sum the personal scores of coalition members. The highest-scoring coalition wins. Rivalries do not connect players.","Lower combined Stress, then fewer Blame tokens, then shared victory.",BACK_MODE +MODE_COOP,SHARED GROUND,Cooperative,The group succeeds or fails together.,"All claimed Problem cards form one shared score. Meet the Scenario threshold by the end of Round 5. Playable at 2–6 players — not a high-seat-only mode. No individual winner is declared. For a mastery rating, subtract 1 for each Blame token still in play and 1 for each Denied Problem.",Not applicable.,BACK_MODE +MODE_SEMI,"COMMON PROBLEM, PERSONAL EDGE",Semi-cooperative,The group must succeed before anyone can win.,"The group succeeds only if the total value of all claimed Problems meets the Scenario threshold (always ≤ available points for the seat band). If it succeeds, each player scores the value of Problems they claimed minus 1 per Blame token they hold. Highest score wins.","Lower Stress, then more Bonds, then shared victory.",BACK_MODE +MODE_COALITION,BONDED COALITIONS,Dynamic teams,Bonds decide the sides at the end.,"The group must first meet the Scenario threshold (always ≤ available points for the seat band). At game end, each connected network of Bonds is a coalition; unbonded players are one-player coalitions. Sum the personal scores of coalition members. The highest-scoring coalition wins. Rivalries do not connect players.","Lower combined Stress, then fewer Blame tokens, then shared victory.",BACK_MODE diff --git a/editions/ground-darvo-r0/README.csv b/editions/ground-darvo-r0/README.csv index c7ac451..6664483 100644 --- a/editions/ground-darvo-r0/README.csv +++ b/editions/ground-darvo-r0/README.csv @@ -10,4 +10,4 @@ Relationship tiles,6 Relationship limit,2 active relation slots per player Primary sheets,"BOM, Print_Manifest, Actions, Solutions, Problems, Scenarios, Modes, Player_Mats, Tokens, Relations, DARVO, Symbols, Back_Designs, Rules_Text" Machine reuse,"Stable IDs are designed for card-layout templates, print merges, JSON pipelines, and later localization." -Scope note,"This is a playtest-ready textual and symbolic dataset, not final graphic design or balanced production rules." +Scope note,"This is a playtest-ready textual and symbolic dataset, not final graphic design or final production balance. GR-S01 deal is Surface + hidden priorities 1..k; available points 6/9/12; Standard thresholds 5/7/9 (GROUND-WP-0004)." diff --git a/editions/ground-darvo-r0/Rules_Text.csv b/editions/ground-darvo-r0/Rules_Text.csv index 8279102..d3493b3 100644 --- a/editions/ground-darvo-r0/Rules_Text.csv +++ b/editions/ground-darvo-r0/Rules_Text.csv @@ -1,21 +1,22 @@ order,section,heading,body -1,Object,What players are trying to do,"Uncover hidden Problems and solve them with matching Solutions before the end of Round 5. Support, Attack, Bonds, Rivalries, Stress, DARVO, and GROUND determine how much freedom each player retains while doing so." -2,Setup,Choose the game,"Choose one Scenario card and one Mode card. Use the Surface Problem shown by the Scenario. Add hidden Problems by player count: priorities 1–2 for 2 players, 1–3 for 3–4 players, and 1–4 for 5–6 players." -3,Setup,Prepare each player,"Each player takes one mat, the five Action cards with their player symbol, one Stress marker at 2, one ready Freedom token, one DARVO marker at OFF, one Focus/Blame token, and two relation-link tokens. Deal two Solution cards to each player." -4,Setup,Prepare the table,Place the Surface Problem face up and the selected hidden Problems face down. Put the remaining Solution deck within reach. Give the Lead marker to a random player and place the Round marker on 1. -5,Round,1. Select,"Every player chooses one Action face down and places it beside its target where needed. At Stress 4 or 5, a player must choose ATTACK or GROUND unless they spend a ready Freedom token before reveal." -6,Round,2. Reveal,Reveal all selected Actions simultaneously. Players using GROUND choose their mode after seeing the revealed Actions. -7,Round,3. Resolve,"Resolve in this order: GROUND, Support, active DARVO stages, Investigate, Attack, Solve. Within the same step, start with the Lead player and continue clockwise." -8,Round,4. End,Cap Stress at 0–5. Any player at Stress 5 who is not already in DARVO places their marker on DENY for the next round. Rotate Lead clockwise and advance the Round marker. -9,Stress,Stress and Freedom,"Stress 0–3 allows any Action. At Stress 4–5, only ATTACK or GROUND is freely available. Spending a ready Freedom token allows any one Action; turn it to SPENT. GROUND—GR and Support through an existing Bond can ready it." -10,DARVO,A binding sequence,"Once triggered, DARVO continues from DENY to ATTACK to REVERSE over consecutive rounds even if Stress later falls. Existing Bond Support cancels the current stage and ends the sequence. GROUND—GR lets the current stage resolve, then ends the remaining sequence." -11,DARVO,DENY,Turn one visible unsolved Problem face down and mark it Denied. It cannot be solved or revealed by ordinary Investigate. GROUND—OU can restore it. -12,DARVO,ATTACK,Make one extra Attack against another player and place your Focus token beside that target. This extra Attack is in addition to your chosen Action. -13,DARVO,REVERSE,"Target the player holding your Focus. Unless rejected by GROUND—ND, flip Focus to Blame in front of them, give them +1 Stress, and gain Protection. Reduce your own Stress by 2 and end the sequence." -14,Relations,Creating and limiting relations,"Every player has two relation slots. A relation uses one link token from each player. If either player has no free slot, the immediate Support or Attack still works but no new relation is formed. Only one relation may exist between the same two players." -15,Relations,Bond,A no-relation Support may create a Bond if both players have a free slot and the target accepts. Support through an existing Bond is strong enough to regulate DARVO. Attack through a Bond causes +2 Stress and flips it to Rivalry. -16,Relations,Rivalry,A no-relation Attack creates Rivalry automatically when both slots are available. Attack through Rivalry causes +2 Stress and breaks it. Support through Rivalry causes −1 Stress; the target chooses to flip it to Bond or break it. -17,Problems,Hidden and Denied Problems,"Only face-up, non-Denied Problems can be solved. Investigate reveals one hidden Problem and draws one Solution. Deny can turn a previously revealed Problem face down again." -18,Problems,Solving,"Play SOLVE beside a face-up Problem and discard one matching Solution when Solve resolves. Claim that Problem and count its printed value. If another player claims it first in Lead order, keep your Solution." -19,End,End of game,"After Round 5, total solved Problem values and apply the selected Mode card. The Scenario gives the threshold for 2 players, 3–4 players, and 5–6 players." -20,Safety,Learning frame,"DARVO is a response pattern, not proof of an underlying accusation and not a diagnosis. GROUND does not require reconciliation. Breaking a relation, bringing in process, or preserving personal freedom can be a successful result." +1,Object,What players are trying to do,"Uncover hidden Problems and solve them with matching Solutions before the end of Round 5. Support, Attack, Bonds, Rivalries, Stress, DARVO, and GROUND determine how much freedom each player retains while doing so. The game is for 2–6 players in every Mode, including SHARED GROUND." +2,Setup,Choose the game,"Choose one Scenario card and one Mode card. Always use the Scenario's Surface Problem. Then add hidden Problems by player count: priorities 1–2 for 2 players, 1–3 for 3–4 players, and 1–4 for 5–6 players. Surface is never optional and is never counted as one of those hidden priorities." +3,Setup,Problems in play and available value,"Problems in play = Surface + the selected hidden priorities. With the core problem values (2+2+2+3+3), available points are 6 at 2 players, 9 at 3–4 players, and 12 at 5–6 players. Every published setup must keep the Scenario threshold at or below that available total so the group can win in principle." +4,Setup,Prepare each player,"Each player takes one mat, the five Action cards with their player symbol, one Stress marker at 2, one ready Freedom token, one DARVO marker at OFF, one Focus/Blame token, and two relation-link tokens. Deal two Solution cards to each player." +5,Setup,Prepare the table,Place the Surface Problem face up and the selected hidden Problems face down. Put the remaining Solution deck within reach. Give the Lead marker to a random player and place the Round marker on 1. +6,Round,1. Select,"Every player chooses one Action face down and places it beside its target where needed. At Stress 4 or 5, a player must choose ATTACK or GROUND unless they spend a ready Freedom token before reveal." +7,Round,2. Reveal,Reveal all selected Actions simultaneously. Players using GROUND choose their mode after seeing the revealed Actions. +8,Round,3. Resolve,"Resolve in this order: GROUND, Support, active DARVO stages, Investigate, Attack, Solve. Within the same step, start with the Lead player and continue clockwise." +9,Round,4. End,Cap Stress at 0–5. Any player at Stress 5 who is not already in DARVO places their marker on DENY for the next round. Rotate Lead clockwise and advance the Round marker. +10,Stress,Stress and Freedom,"Stress 0–3 allows any Action. At Stress 4–5, only ATTACK or GROUND is freely available. Spending a ready Freedom token allows any one Action; turn it to SPENT. GROUND—GR and Support through an existing Bond can ready it." +11,DARVO,A binding sequence,"Once triggered, DARVO continues from DENY to ATTACK to REVERSE over consecutive rounds even if Stress later falls. Existing Bond Support cancels the current stage and ends the sequence. GROUND—GR lets the current stage resolve, then ends the remaining sequence." +12,DARVO,DENY,Turn one visible unsolved Problem face down and mark it Denied. It cannot be solved or revealed by ordinary Investigate. GROUND—OU can restore it. +13,DARVO,ATTACK,Make one extra Attack against another player and place your Focus token beside that target. This extra Attack is in addition to your chosen Action. +14,DARVO,REVERSE,"Target the player holding your Focus. Unless rejected by GROUND—ND, flip Focus to Blame in front of them, give them +1 Stress, and gain Protection. Reduce your own Stress by 2 and end the sequence." +15,Relations,Creating and limiting relations,"Every player has two relation slots. A relation uses one link token from each player. If either player has no free slot, the immediate Support or Attack still works but no new relation is formed. Only one relation may exist between the same two players." +16,Relations,Bond,A no-relation Support may create a Bond if both players have a free slot and the target accepts. Support through an existing Bond is strong enough to regulate DARVO. Attack through a Bond causes +2 Stress and flips it to Rivalry. +17,Relations,Rivalry,A no-relation Attack creates Rivalry automatically when both slots are available. Attack through Rivalry causes +2 Stress and breaks it. Support through Rivalry causes −1 Stress; the target chooses to flip it to Bond or break it. +18,Problems,Hidden and Denied Problems,"Only face-up, non-Denied Problems can be solved. Investigate reveals one hidden Problem and draws one Solution. Deny can turn a previously revealed Problem face down again." +19,Problems,Solving,"Play SOLVE beside a face-up Problem and discard one matching Solution when Solve resolves. Claim that Problem and count its printed value. If another player claims it first in Lead order, keep your Solution." +20,End,End of game,"After Round 5, total solved Problem values and apply the selected Mode card. The Scenario's Standard thresholds are 5 for 2 players, 7 for 3–4 players, and 9 for 5–6 players — always at or below available points for that seat band (6 / 9 / 12)." +21,Safety,Learning frame,"DARVO is a response pattern, not proof of an underlying accusation and not a diagnosis. GROUND does not require reconciliation. Breaking a relation, bringing in process, or preserving personal freedom can be a successful result." diff --git a/editions/ground-darvo-r0/Scenarios.csv b/editions/ground-darvo-r0/Scenarios.csv index f399e81..ac2ad99 100644 --- a/editions/ground-darvo-r0/Scenarios.csv +++ b/editions/ground-darvo-r0/Scenarios.csv @@ -1,5 +1,5 @@ -scenario_id,title,premise,surface_problem_id,hidden_problem_ids,setup_2_players,setup_3_4_players,setup_5_6_players,threshold_2_players,threshold_3_4_players,threshold_5_6_players,starting_stress,round_track -SCN_01,Missed Deadline,"The team promised a delivery. It did not arrive when expected, and the conversation about why is becoming personal.",PRB_01_S,PRB_01_1 | PRB_01_2 | PRB_01_3 | PRB_01_4,Use hidden priorities 1–2.,Use hidden priorities 1–3.,Use hidden priorities 1–4.,5,7,9,All players start at Stress 2.,Rounds 1–5 printed along the bottom edge. -SCN_02,Shared Responsibility,A shared responsibility keeps being left undone. Everyone agrees it matters; nobody agrees on what fairness requires.,PRB_02_S,PRB_02_1 | PRB_02_2 | PRB_02_3 | PRB_02_4,Use hidden priorities 1–2.,Use hidden priorities 1–3.,Use hidden priorities 1–4.,5,7,9,All players start at Stress 2.,Rounds 1–5 printed along the bottom edge. -SCN_03,Decision Without Consent,A decision affecting the group was announced as settled. Several players believe they were consulted only after the fact.,PRB_03_S,PRB_03_1 | PRB_03_2 | PRB_03_3 | PRB_03_4,Use hidden priorities 1–2.,Use hidden priorities 1–3.,Use hidden priorities 1–4.,5,7,9,All players start at Stress 2.,Rounds 1–5 printed along the bottom edge. -SCN_04,Broken Confidence,"Information shared in confidence travelled beyond the expected circle. Harm, intent, and responsibility are now contested.",PRB_04_S,PRB_04_1 | PRB_04_2 | PRB_04_3 | PRB_04_4,Use hidden priorities 1–2.,Use hidden priorities 1–3.,Use hidden priorities 1–4.,5,7,9,All players start at Stress 2.,Rounds 1–5 printed along the bottom edge. +scenario_id,title,premise,surface_problem_id,hidden_problem_ids,setup_2_players,setup_3_4_players,setup_5_6_players,threshold_2_players,threshold_3_4_players,threshold_5_6_players,starting_stress,round_track +SCN_01,Missed Deadline,"The team promised a delivery. It did not arrive when expected, and the conversation about why is becoming personal.",PRB_01_S,PRB_01_1 | PRB_01_2 | PRB_01_3 | PRB_01_4,Surface + hidden priorities 1–2 (3 problems; available 6). Threshold 5.,Surface + hidden priorities 1–3 (4 problems; available 9). Threshold 7.,Surface + hidden priorities 1–4 (5 problems; available 12). Threshold 9.,5,7,9,All players start at Stress 2.,Rounds 1–5 printed along the bottom edge. +SCN_02,Shared Responsibility,A shared responsibility keeps being left undone. Everyone agrees it matters; nobody agrees on what fairness requires.,PRB_02_S,PRB_02_1 | PRB_02_2 | PRB_02_3 | PRB_02_4,Surface + hidden priorities 1–2 (3 problems; available 6). Threshold 5.,Surface + hidden priorities 1–3 (4 problems; available 9). Threshold 7.,Surface + hidden priorities 1–4 (5 problems; available 12). Threshold 9.,5,7,9,All players start at Stress 2.,Rounds 1–5 printed along the bottom edge. +SCN_03,Decision Without Consent,A decision affecting the group was announced as settled. Several players believe they were consulted only after the fact.,PRB_03_S,PRB_03_1 | PRB_03_2 | PRB_03_3 | PRB_03_4,Surface + hidden priorities 1–2 (3 problems; available 6). Threshold 5.,Surface + hidden priorities 1–3 (4 problems; available 9). Threshold 7.,Surface + hidden priorities 1–4 (5 problems; available 12). Threshold 9.,5,7,9,All players start at Stress 2.,Rounds 1–5 printed along the bottom edge. +SCN_04,Broken Confidence,"Information shared in confidence travelled beyond the expected circle. Harm, intent, and responsibility are now contested.",PRB_04_S,PRB_04_1 | PRB_04_2 | PRB_04_3 | PRB_04_4,Surface + hidden priorities 1–2 (3 problems; available 6). Threshold 5.,Surface + hidden priorities 1–3 (4 problems; available 9). Threshold 7.,Surface + hidden priorities 1–4 (5 problems; available 12). Threshold 9.,5,7,9,All players start at Stress 2.,Rounds 1–5 printed along the bottom edge. diff --git a/history/260804-threshold-reachability-and-difficulty.md b/history/260804-threshold-reachability-and-difficulty.md new file mode 100644 index 0000000..21a075b --- /dev/null +++ b/history/260804-threshold-reachability-and-difficulty.md @@ -0,0 +1,292 @@ +# Threshold reachability and difficulty levers + +**Date:** 2026-08-04 +**Status:** **Ruled** under GROUND-WP-0004-T01 (deal 6/9/12, thresholds 5/7/9 Standard, SHARED GROUND 2–6). Difficulty tiers residual → GROUND-WP-0005. +**Context:** GROUND-WP-0004 (reopen of GR-E01 after clay-borg's premise correction); table confirmation that 3p SHARED GROUND felt unwinnable. +**Purpose:** (1) make every seat count arithmetically winnable; (2) map mechanical bottlenecks and propose difficulty control that fits existing rules. + +--- + +## 0. What the numbers actually are + +Three different point totals have been used. Only one matches the printed rules plus `Problems.csv`. + +### Authoritative problem values (every scenario) + +| card | `hidden_priority` | `point_value` | suit | +|------|------------------:|--------------:|------| +| Surface | 0 | 2 | Repair (varies by scenario pattern; see Problems.csv) | +| Hidden 1 | 1 | 2 | Clarify | +| Hidden 2 | 2 | 2 | Boundary | +| Hidden 3 | 3 | 3 | Repair | +| Hidden 4 | 4 | 3 | Change | +| **file total** | | **12** | | + +### GR-S01 as printed (`Rules_Text.csv` §Setup + `Scenarios.csv`) + +> Use the **Surface Problem**. Add **hidden** Problems: priorities **1–2** (2p), **1–3** (3–4p), **1–4** (5–6p). + +Surface is **always** in play; the priority filter only selects which *hidden* cards join it. + +| seats | in play | max points | GR-E01 threshold | margin | need % of max | +|------:|--------:|-----------:|-----------------:|-------:|--------------:| +| 2 | S + H1–2 (3) | **6** | 5 | +1 | 83% | +| 3–4 | S + H1–3 (4) | **9** | 7 | +2 | 78% | +| 5–6 | S + H1–4 (5) | **12** | 9 | +3 | 75% | + +**Under a correct import of GR-S01 + Problems.csv, every seat count is arithmetically winnable.** + +### Where clay-borg's 4 / 6 / 9 came from + +After correcting the false "12 always available" claim, CB-WP-0021 treated GR-S01 as dealing **2 / 3 / 4 total** problems counted from the Surface upward (Surface + first *n−1* hidden). That drops one card vs the printed setup and yields: + +| seats | their deal | their max | threshold | | +|------:|-----------:|----------:|----------:|---| +| 2 | 2 | 4 | 5 | impossible | +| 3–4 | 3 | 6 | 7 | impossible | +| 5–6 | 4 | 9 | 9 | exact only | + +That matches the engine **stand-in** shape (deal depth 2/3/4, Surface = priority 1), not the edition text. The stand-in itself (values = priority: 1+2+3 = 6 at 3p vs threshold 7) is what table play and `gd0001` measured. + +| source | 2p max | 3–4p max | 5–6p max | vs 5/7/9 | +|--------|-------:|---------:|---------:|----------| +| Engine stand-in | 3 | 6 | 10 | fail / fail / ok | +| clay-borg "CSV deal" | 4 | 6 | 9 | fail / fail / exact | +| **Printed GR-S01 + CSV** | **6** | **9** | **12** | **ok / ok / ok** | + +**Implication for the ruling:** the void of `gr-e01-threshold-unreachable-2p` was wrong for the *wrong reason* (claimed 12 in play). The reopened claim that low seats are *arithmetically* impossible is also wrong for the *correct* dataset + setup. What remains real is: + +1. The engine has been simulating an impossible game at 2–4p. +2. Even with correct 6/9/12, thresholds demand **~75–83% of all available points** — little room for DENY, missed suits, or social friction. That matches "I played well and still lost" without true impossibility. + +--- + +## 1. Easy adaptation — make every setup winnable + +### Recommended default (no rebalance, rules already allow it) + +**Rule the deal explicitly, once, for clay-borg and print:** + +- Problems in play = **Surface (always)** ∪ **hidden priorities `1..k`**, with `k ∈ {2,3,4}` by seat band. +- Available value = **6 / 9 / 12** (not 4 / 6 / 9, not 12-always). +- Thresholds **5 / 7 / 9 stand**. +- `gr-e01-threshold-unreachable-2p` becomes an **engine import / fixture bug**, not a design gap — rewrite the scenario as a non-provisional check that `sum(point_value of dealt) ≥ threshold` for every seat band. +- Explicitly **reject** "SHARED GROUND is 5–6p only": README and Modes advertise 2–6. + +**Dataset touch (optional but clarifying):** add a one-line setup formula to `Rules_Text` / scenario microcopy: + +> *In play: Surface + hidden priorities 1–k. Available points: 6 (2p) / 9 (3–4p) / 12 (5–6p). Threshold: 5 / 7 / 9.* + +No threshold column change required for step 1. + +### If table feel still fails after correct deal (fallback knobs) + +Use only if playtest after correct import still loses too often when play is competent: + +| knob | change | effect | +|------|--------|--------| +| **A. Soften thresholds** | 2p→4, 3–4p→6, 5–6p→8 | ~67% of max; one mid-value miss still ok | +| **B. Always deal full five** | k=4 at all seats | max always 12; scale threshold by seats or difficulty | +| **C. Extra round at low seats** | 2p: 6 rounds | more Investigate/Solve bandwidth when action total is 10 | + +Prefer **A** only after measuring with correct deal; do not pre-emptively lower numbers that already work on paper. + +### What not to do for step 1 + +- Do **not** declare low-seat SHARED GROUND intentionally unwinnable (user requirement: every setup must allow player win). +- Do **not** raise problem values silently inside `r0` (GROUND-WP-0002 contract: `point_value` change = revision bump). +- Do **not** leave clay-borg on stand-in values while print says otherwise. + +--- + +## 2. Structural analysis — limits and bottlenecks + +### 2.1 Win pipeline (per Problem) + +``` +[hidden?] --INVESTIGATE--> face-up --SOLVE + matching suit--> claimed (points) + ^ ^ + | | + DENY can reverse Stress 4–5 gates SOLVE + (needs GROUND—OU) (needs Freedom or calm) +``` + +Only **face-up, non-Denied** Problems can be claimed. Surface starts face up; every hidden card costs at least one Investigate somewhere in the five rounds. + +### 2.2 Action budget (5 rounds, simultaneous) + +| seats | total actions | min INV (full clear) | min SOLVE | productive floor | slack | +|------:|--------------:|---------------------:|----------:|-----------------:|------:| +| 2 | 10 | 2 | 3 | 5 | 5 | +| 3 | 15 | 3 | 4 | 7 | 8 | +| 4 | 20 | 3 | 4 | 7 | 13 | +| 5 | 25 | 4 | 5 | 9 | 16 | +| 6 | 30 | 4 | 5 | 9 | 21 | + +Slack looks generous, but it is **not free**: Support, Attack, GROUND, DARVO recovery, and failed suit races all consume the same action slot. At 2p, half the game *must* be pure problem work if the table wants a full clear; any DARVO episode that forces GROUND/Support eats the margin that threshold 5-of-6 already requires. + +### 2.3 Bottleneck map + +| # | bottleneck | mechanism | how it blocks the win | +|---|------------|-----------|------------------------| +| **B1** | **Reveal chain** | Only Investigate reveals non-Denied hidden Problems | Unrevealed cards contribute 0; DENY undoes prior Investigates until OU | +| **B2** | **Suit match** | SOLVE needs exact suit in hand; only Investigate (and starting deal) add Solutions | Dead hands; wasted rounds fishing the deck | +| **B3** | **Stress gate** | Stress 4–5 → only ATTACK/GROUND free; Investigate/Solve need ready Freedom | Productive actions disappear exactly when the table is on fire | +| **B4** | **Freedom scarcity** | One binary token; ready via GROUND—GR or Bond Support | Serializes recovery; no hand limit but Freedom is the real scarce resource | +| **B5** | **DARVO tax** | 3-stage binding sequence; DENY steals a face-up Problem | Multi-round opportunity cost; can deny the exact card needed for threshold | +| **B6** | **Relation slots** | 2 slots/player; Bond Support is the strong DARVO cancel | Support network is capacity-limited; Rivalry burns slots | +| **B7** | **Solve race** | Same-round Lead order; loser keeps Solution but burns the Action | Coordination tax in semi-coop / coalitions | +| **B8** | **Fixed horizon** | Exactly 5 rounds | No catch-up time after a late DENY or late reveal of a 3-point card | +| **B9** | **Threshold density** | Need ~75–83% of all points in play | Losing any 3-value card (or two 2-value) often ends the group | + +### 2.4 Suit demand (full clear, typical scenario shape) + +| seats | suits required | +|------:|----------------| +| 2 | Repair, Clarify, Boundary (one each) | +| 3–4 | Repair ×2, Clarify, Boundary | +| 5–6 | Repair ×2, Clarify, Boundary, Change | + +Deck is 6 per suit / 24 total; opening deal is 2 per seat (random). **Investigate is both the reveal engine and the only steady suit pump.** That double duty is the deepest structural coupling: the action that opens problems also feeds the action that closes them. + +### 2.5 Seat-count dynamics (why low seats feel worse) + +- **Absolute slack** is lowest at 2p, but **threshold %** is also highest (83%). +- Fewer seats ⇒ fewer parallel Investigates and fewer Bond partners to cancel DARVO. +- More seats ⇒ more Attacks and more DARVO triggers, but more total actions and more Support bandwidth. +- Semi-coop / coalitions add **incentive to race SOLVE** and to Attack for personal edge, which steals actions from the group pipeline — thresholds that are tight in pure co-op become brutal when players partially defect. + +Solo (not in core; `EXT_SOLO` noted) inherits the 2p action poverty without a Bond partner: DENY cannot be cancelled by Bond Support; only GROUND—GR after the stage / OU for Denied cards. Solo difficulty is dominated by **B3–B5**, not by multiplayer politics. + +--- + +## 3. Mechanisms to control difficulty of winning + +Goal: every setup remains **winnable in principle**; harder settings demand luck, persistence, and tighter coordination — not arithmetic impossibility. + +### 3.1 Candidate levers (ordered by simplicity / fit) + +#### L1 — **Target ratio of available points** (recommended primary dial) + +Define: + +``` +available = sum(point_value of Problems in play) # 6 / 9 / 12 under GR-S01 +threshold = ceil(available × ratio) # or a printed table per band +``` + +| tier | ratio | 2p thr | 3–4p thr | 5–6p thr | feel | +|------|------:|-------:|---------:|---------:|------| +| Learning | ~50% | 3 | 5 | 6 | room for one serious mistake | +| Standard (≈ current) | ~75–83% | 5 | 7 | 9 | competent group, little waste | +| Mastery / Hard | 100% | 6 | 9 | 12 | claim everything; DENY is lethal | +| Impossible (forbidden) | >100% | — | — | — | never ship | + +**Why this fits:** thresholds already scale with seat band; this only *names* the relationship to available value and makes difficulty a first-class setup choice instead of a hidden property of three magic numbers. Solo and multiplayer share one concept. clay-borg can assert `threshold ≤ available` as an invariant for every tier except an explicit "impossible" test fixture. + +#### L2 — **Pressure dial** (starting Stress / Freedom / DARVO aggressiveness) + +| tier | start Stress | Freedom | note | +|------|-------------:|---------|------| +| Calm | 1 | READY | more rounds of free Investigate/Solve | +| Standard | 2 | READY | current | +| Frayed | 3 | READY | gate approaches sooner | +| Solo Hard | 2 | SPENT or none | Freedom scarcity as difficulty | + +Thematic fit is excellent (individual layer). Does not by itself fix a bad threshold; pairs with L1. + +#### L3 — **Problem depth (k)** + +Today `k` is tied only to seat count. Untie slightly: + +- Learning: always `k=2` (max 6) even at 5–6p, lower absolute complexity. +- Standard: current seat scaling. +- Deep dive: always `k=4` (max 12) at any seat count — more to discover, longer pipeline; threshold from L1. + +This is the original design note in history ("complexity control: number of active problems and relationship slots"). + +#### L4 — **Round track length** + +6 rounds at 2p / solo increases slack without changing card data. Simple but changes the Scenario card layout and "5 rounds" product promise. + +#### L5 — **Solution economy** + +Guaranteed opening suits, extra starting Solutions, or "Investigate draws 2" on easy tiers. Effective but blunts B2 and risks making SOLVE automatic. + +#### L6 — **DENY severity** + +Easy: DENY only flips face down without Denied token (Investigate can re-open). Hard: current Denied rules. Changes the antagonist's teeth; high thematic cost if softened too much for the DARVO edition identity. + +### 3.2 Recommended package + +| layer | rule | +|-------|------| +| **Invariant** | For every published setup: `threshold ≤ available_points` (hard). | +| **Default (r0 print)** | Keep seat bands and 5/7/9 once deal is correctly 6/9/12; document as **Standard** (~75–83%). | +| **Difficulty (setup choice)** | Optional third setup axis beside Scenario + Mode: **Learning / Standard / Mastery**, implemented primarily as **L1 ratios** (and optionally L2 start Stress for solo). | +| **Solo** | Same L1 tiers; default slightly easier ratio or Calm start Stress until automa exists; Bond-less cancel path is only GROUND. | + +### 3.3 Integration with existing rules (how it would look on the table) + +Current setup sentence: + +> Choose one Scenario card and one Mode card. … Add hidden Problems by player count … + +Proposed addition (minimal): + +> Optionally choose a **Difficulty** (Learning / Standard / Mastery). Standard uses the Scenario's printed thresholds. Learning / Mastery replace the threshold with the tier table (or: with ⌈available × ratio⌉). Available points are always Surface + selected hidden priorities. + +**Where it lives in data:** + +| artifact | change | +|----------|--------| +| `Scenarios.csv` | Keep `threshold_*` as **Standard**; *or* replace with `available_*` + document ratios in Modes/Rules | +| `Modes.csv` | Unaffected (still who wins *after* group success) | +| `Rules_Text.csv` | One Setup row: available formula + difficulty tiers | +| `Extensions.csv` / solo | `EXT_SOLO` can reference the same tiers | +| clay-borg | `threshold()` becomes `f(seats, difficulty)`; setup asserts reachability | + +**Print economy:** Scenario already has three threshold columns. Learning/Mastery can be: + +- a small **Difficulty card** (3 cards) with three numbers each, or +- a second row of numbers on the Scenario (busy), or +- a single lookup: "Learning = Standard − 2 (min 1); Mastery = available". + +Simplest physical form: **one Difficulty card** used with every Scenario — three numbers for the three seat bands — so Scenario text stays clean. + +**Interaction with mastery rating (MODE_COOP):** already subtracts Blame and Denied Problems. That remains a *quality* score after a win; difficulty tiers change *whether* the win is possible under waste. Keep them separate: tier = gate hardness; mastery = cleanliness of the win. + +**Interaction with semi-coop / coalitions:** group gate is shared; personal race sits on top. Harder L1 increases cooperation pressure (defecting into pure Attack becomes more self-defeating). That is desirable tension, not a conflict with L1. + +### 3.4 Worked examples + +**2p Standard (current intent, correct deal):** available 6, need 5. May leave one 1-point miss — but all cards are 2+, so must claim 3 of 3 cards *or* claim two cards only if values were uneven — with values 2+2+2, **must claim all three** to reach 5? 2+2=4 < 5, so **must claim all three (6)**. Margin +1 is illusory for discrete 2-point cards: **2p Standard requires a full clear.** + +That is an important subtlety: integer card values mean **margin +1 with all-even values still forces 100% claim rate**. True slack appears only when a 3-value card can be left unsolved while two others cover the threshold — which starts at 3–4p (e.g. claim 2+2+3=7 exactly, leave a 2). + +So even "arithmetically reachable" 2p Standard is **full-clear or lose**. That may be intended hardness or a reason to set Learning at 4 (any two cards) and Standard at 5 only if a 1-point card exists — or accept full-clear as the 2p identity. + +**3p Standard:** available 9, need 7. Patterns that win: drop one 2-value (claim 7) or claim all. Drop a 3-value (claim 6) → lose. DENY on a 3 without OU recovery often ends the game. + +**Mastery any seats:** claim all; every DENY must be undone. + +--- + +## 4. Decisions (GROUND-WP-0004-T01/T02 — ruled 2026-08-04) + +1. **Deal arithmetic:** Surface + hidden 1..k ⇒ available **6 / 9 / 12**. Confirmed. +2. **Thresholds 5 / 7 / 9** stand as **Standard** (2p Standard = full clear). Confirmed. +3. **Difficulty tiers:** not in r0 close-out; residual **GROUND-WP-0005** after playtest on correct deal. +4. **SHARED GROUND** is **2–6**, not 5–6p only. Confirmed. +5. **Hygiene (T02):** arithmetic findings need runnable repro **and** Surface-separated deal table; rulings should cite the repro; edition text is authority for GR-S01 if the engine under-tests the wrong deal. + +--- + +## 5. Summary + +| step | outcome | +|------|---------| +| **1. Easy winability** | Correct GR-S01 counting already makes all seats winnable (6/9/12 ≥ 5/7/9). Fix is primarily a **deal specification + engine import**, not new thresholds. Optionally soften later if full-clear 2p is too sharp. | +| **2. Difficulty control** | Best simple concept: **threshold as a ratio of available problem value**, with optional **Pressure dial** (start Stress/Freedom) for solo and mastery. Integrates as a third setup card or a tier table; preserves Modes, DARVO, and edition IDs. | + +Until Standard is played on the **correct** deal, do not rebalance point values or lower printed thresholds solely on stand-in or undercounted evidence. diff --git a/workplans/GROUND-WP-0004-the-threshold-ruling-rests-on-a-bad-premise.md b/workplans/GROUND-WP-0004-the-threshold-ruling-rests-on-a-bad-premise.md index 7c09a2f..ae842d9 100644 --- a/workplans/GROUND-WP-0004-the-threshold-ruling-rests-on-a-bad-premise.md +++ b/workplans/GROUND-WP-0004-the-threshold-ruling-rests-on-a-bad-premise.md @@ -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`. diff --git a/workplans/GROUND-WP-0005-difficulty-tiers-and-pressure-dial.md b/workplans/GROUND-WP-0005-difficulty-tiers-and-pressure-dial.md new file mode 100644 index 0000000..6b7e53e --- /dev/null +++ b/workplans/GROUND-WP-0005-difficulty-tiers-and-pressure-dial.md @@ -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`.