T08 iter 6: game end and the three scoring modes; AM-1 at 100%
- GR-R09: after Round 5's End the game ends and scoring runs instead of the round advancing. - GR-E01: claimed Problems sum their printed values against the player-count threshold (2p 5, 3-4p 7, 5-6p 9 in dataset 0.1). - GR-E02 SHARED GROUND: shared score, Mastery reduced per Blame token and per Denied Problem. - GR-E03 COMMON PROBLEM: personal score is claimed value less Blame, tiebroken by lower Stress then more Bonds. - GR-E04 BONDED COALITIONS: connected components over Bonds only, so Rivalries do not connect and an unbonded player is a coalition of one; tiebroken by lower combined Stress then fewer Blame. Ties yield every tied candidate rather than an arbitrary pick, which is what "shared victory" in GR-E03/E04 asks for. AM-1 rule coverage is now 58/58 (100%), 21 scenarios, 17 tests. Caveat recorded rather than papered over: GR-E02's "successes" is not defined in dataset 0.1. It is implemented as the count of claimed Problems and both scoring scenarios are marked provisional, so a ground-game ruling flips a scenario rather than the kernel. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
0e92535f11
commit
85d93a9e3c
6 changed files with 372 additions and 2 deletions
|
|
@ -3,7 +3,7 @@ description: >
|
|||
SOLVE discards a Solution of the Problem's suit and claims it
|
||||
(GR-A02). A second solver of the same Problem the same round spends
|
||||
nothing, because an earlier resolver in Lead order already claimed it.
|
||||
covers: [GR-A02, GR-R07, GR-O04]
|
||||
covers: [GR-A02, GR-R07, GR-O04, GR-P04]
|
||||
provisional: false
|
||||
seed: 42
|
||||
setup:
|
||||
|
|
|
|||
50
scenarios/ground/gr-e02-shared-ground.yaml
Normal file
50
scenarios/ground/gr-e02-shared-ground.yaml
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
scenario: ground/gr-e02-shared-ground
|
||||
description: >
|
||||
SHARED GROUND scoring after Round 5 (GR-R09, GR-E01, GR-E02): one
|
||||
shared total against the player-count threshold, with a Mastery
|
||||
rating reduced by each Blame token and each Denied Problem.
|
||||
covers: [GR-R09, GR-E01, GR-E02, GR-P03]
|
||||
provisional: true
|
||||
seed: 42
|
||||
setup:
|
||||
players: 3
|
||||
preset: standard-3p
|
||||
patch:
|
||||
"lead": 0
|
||||
"round": 5
|
||||
"mode": SharedGround
|
||||
# 3p threshold is 7; claimed values 1+3 fall short.
|
||||
"problems.1.claimed_by": 0
|
||||
"problems.3.claimed_by": 1
|
||||
"problems.2.denied": true
|
||||
"players.2.blame_from": [0]
|
||||
commands:
|
||||
- actor: P1
|
||||
cmd: select_action
|
||||
args: { action: INVESTIGATE, problem: 2 }
|
||||
- actor: P2
|
||||
cmd: select_action
|
||||
args: { action: INVESTIGATE, problem: 2 }
|
||||
- actor: P3
|
||||
cmd: select_action
|
||||
args: { action: INVESTIGATE, problem: 2 }
|
||||
- actor: SYSTEM
|
||||
cmd: reveal
|
||||
- actor: SYSTEM
|
||||
cmd: resolve
|
||||
- actor: SYSTEM
|
||||
cmd: end_round
|
||||
expect:
|
||||
events:
|
||||
- kind: GameEnded
|
||||
state:
|
||||
"outcome.total": 4
|
||||
"outcome.threshold": 7
|
||||
"outcome.group_success": false
|
||||
# 2 claimed Problems, −1 Blame, −1 Denied.
|
||||
"outcome.mastery": 0
|
||||
"outcome.winners": []
|
||||
# GR-R09: the game ended rather than advancing to Round 6.
|
||||
"round": 5
|
||||
"step": End
|
||||
rejects: []
|
||||
54
scenarios/ground/gr-e04-coalitions.yaml
Normal file
54
scenarios/ground/gr-e04-coalitions.yaml
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
scenario: ground/gr-e04-coalitions
|
||||
description: >
|
||||
BONDED COALITIONS scoring (GR-E04): Bond networks score together,
|
||||
Rivalries do not connect, and an unbonded player is a coalition of
|
||||
one. Personal scores subtract Blame (GR-E03, GR-T02).
|
||||
covers: [GR-E03, GR-E04, GR-O03]
|
||||
provisional: true
|
||||
seed: 42
|
||||
setup:
|
||||
players: 3
|
||||
preset: standard-3p
|
||||
patch:
|
||||
"lead": 0
|
||||
"round": 5
|
||||
"mode": BondedCoalitions
|
||||
# Values 1+2+3 = 6 claimed; 3p threshold is 7, so no group success.
|
||||
"problems.1.claimed_by": 0
|
||||
"problems.2.claimed_by": 1
|
||||
"problems.3.claimed_by": 2
|
||||
"relations.0-1": Bond
|
||||
"relations.1-2": Rivalry
|
||||
"players.0.blame_from": [2]
|
||||
commands:
|
||||
- actor: P1
|
||||
cmd: select_action
|
||||
args: { action: SUPPORT, target: P2 }
|
||||
- actor: P2
|
||||
cmd: select_action
|
||||
args: { action: SUPPORT, target: P1 }
|
||||
- actor: P3
|
||||
cmd: select_action
|
||||
args: { action: INVESTIGATE, problem: 2 }
|
||||
- actor: SYSTEM
|
||||
cmd: reveal
|
||||
- actor: SYSTEM
|
||||
cmd: resolve
|
||||
- actor: SYSTEM
|
||||
cmd: end_round
|
||||
expect:
|
||||
events:
|
||||
- kind: GameEnded
|
||||
state:
|
||||
"outcome.total": 6
|
||||
"outcome.group_success": false
|
||||
# P1 claimed value 1 less one Blame; P2 value 2; P3 value 3.
|
||||
"outcome.personal.0": 0
|
||||
"outcome.personal.1": 2
|
||||
"outcome.personal.2": 3
|
||||
# GR-E04: P1+P2 are Bonded; the Rivalry leaves P3 solo.
|
||||
"outcome.coalitions.0.members": [0, 1]
|
||||
"outcome.coalitions.0.score": 2
|
||||
"outcome.coalitions.1.members": [2]
|
||||
"outcome.coalitions.1.score": 3
|
||||
rejects: []
|
||||
29
scenarios/ground/gr-f02-no-gate.yaml
Normal file
29
scenarios/ground/gr-f02-no-gate.yaml
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
scenario: ground/gr-f02-no-gate
|
||||
description: >
|
||||
Below the stress gate every Action is selectable (GR-F02): at Stress 3
|
||||
a player may choose SOLVE, which GR-R03 would refuse at Stress 4.
|
||||
covers: [GR-F02]
|
||||
provisional: false
|
||||
seed: 42
|
||||
setup:
|
||||
players: 3
|
||||
preset: standard-3p
|
||||
patch:
|
||||
"lead": 0
|
||||
"players.0.stress": 3
|
||||
"players.1.stress": 4
|
||||
"players.0.hand": [{ suit: Clarify }]
|
||||
"players.1.hand": [{ suit: Clarify }]
|
||||
commands:
|
||||
# GR-F02: Stress 3 is below the gate, so SOLVE is available.
|
||||
- actor: P1
|
||||
cmd: select_action
|
||||
args: { action: SOLVE, problem: 1 }
|
||||
# GR-R03: the same Action at Stress 4 is refused.
|
||||
- actor: P2
|
||||
cmd: select_action
|
||||
args: { action: SOLVE, problem: 1 }
|
||||
expect:
|
||||
state:
|
||||
"selections.0.action": Solve
|
||||
rejects: [1]
|
||||
|
|
@ -2,7 +2,7 @@ scenario: ground/smoke-setup
|
|||
description: >
|
||||
Smoke scenario for the T07 scaffold: exercises the documented file format
|
||||
end to end. Assertions are the GR-S setup facts; execution lands in T08.
|
||||
covers: [GR-S02, GR-S03, GR-O01]
|
||||
covers: [GR-S02, GR-S03, GR-S04, GR-O01, GR-O02]
|
||||
provisional: false
|
||||
seed: 42
|
||||
setup:
|
||||
|
|
@ -14,4 +14,10 @@ expect:
|
|||
"round": 1
|
||||
"players.0.stress": 2
|
||||
"players.0.freedom_ready": true
|
||||
"players.0.darvo": Off
|
||||
"players.0.protection": 0
|
||||
"players.0.blame_from": []
|
||||
# GR-S04: 24 core Solutions less the 2 dealt to each of 3 players.
|
||||
"solution_deck.17.suit": Change
|
||||
"solution_discard": []
|
||||
rejects: []
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue