COMMON PROBLEM was the only scoring mode with no scenario — implemented since CB-WP-0001, referenced by nothing, and would not have failed if deleted. Five players, where the threshold is reachable at all: every Problem claimed for a total of 10 against 9, and the winner is decided by Blame rather than by claimed value — P4 claimed the highest Problem and loses to P3 because two Blame tokens sit in front of them. No defect was found on the first execution of that path, which is worth saying plainly rather than implying the scenario was hard-won. The assertions were mutation-checked three ways instead of trusted, because a dot-path expectation that silently fails to resolve would report PASS: a wrong personal score, a wrong mastery, and removing the Blame from the fixture each turn it red. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
81 lines
2.2 KiB
YAML
81 lines
2.2 KiB
YAML
scenario: ground/gr-e03-common-problem
|
||
description: >
|
||
COMMON PROBLEM scoring (GR-E03), the only scoring mode with no scenario
|
||
until CB-WP-0010 T02 — implemented since CB-WP-0001 and referenced by
|
||
nothing. Five players, where the threshold is actually reachable (10
|
||
available against 9). The group qualifies, personal scores are claimed
|
||
value −1 per Blame held, and the Blame is what decides the winner: P4
|
||
claimed the highest-value Problem and still loses to P3 because two
|
||
Blame tokens sit in front of them.
|
||
covers: [GR-E03, GR-E01, GR-R09, GR-T02]
|
||
seed: 42
|
||
setup:
|
||
players: 5
|
||
preset: standard-5p
|
||
patch:
|
||
"round": 5
|
||
"mode": CommonProblem
|
||
# Every Problem claimed: 1+2+3+4 = 10, over the 5-6p threshold of 9.
|
||
"problems.1.claimed_by": 0
|
||
"problems.2.claimed_by": 1
|
||
"problems.3.claimed_by": 2
|
||
"problems.4.claimed_by": 3
|
||
"problems.2.face_up": true
|
||
"problems.3.face_up": true
|
||
"problems.4.face_up": true
|
||
# GR-T02: two Blame tokens in front of P4, −1 each.
|
||
"players.3.blame_from": [0, 1]
|
||
commands:
|
||
- actor: P1
|
||
cmd: select_action
|
||
args: { action: GROUND }
|
||
- actor: P2
|
||
cmd: select_action
|
||
args: { action: GROUND }
|
||
- actor: P3
|
||
cmd: select_action
|
||
args: { action: GROUND }
|
||
- actor: P4
|
||
cmd: select_action
|
||
args: { action: GROUND }
|
||
- actor: P5
|
||
cmd: select_action
|
||
args: { action: GROUND }
|
||
- actor: SYSTEM
|
||
cmd: reveal
|
||
- actor: P1
|
||
cmd: choose_ground_mode
|
||
args: { mode: GR }
|
||
- actor: P2
|
||
cmd: choose_ground_mode
|
||
args: { mode: GR }
|
||
- actor: P3
|
||
cmd: choose_ground_mode
|
||
args: { mode: GR }
|
||
- actor: P4
|
||
cmd: choose_ground_mode
|
||
args: { mode: GR }
|
||
- actor: P5
|
||
cmd: choose_ground_mode
|
||
args: { mode: GR }
|
||
- actor: SYSTEM
|
||
cmd: resolve
|
||
- actor: SYSTEM
|
||
cmd: end_round
|
||
expect:
|
||
events:
|
||
- kind: GameEnded
|
||
state:
|
||
"outcome.total": 10
|
||
"outcome.threshold": 9
|
||
"outcome.group_success": true
|
||
# GR-E03: claimed value −1 per Blame held.
|
||
"outcome.personal.3": 2
|
||
"outcome.personal.2": 3
|
||
# P4 claimed 4 and still loses: the Blame is load-bearing here.
|
||
"outcome.winners": [2]
|
||
# GR-E03 has no Mastery rating; that is GR-E02's.
|
||
"outcome.mastery": null
|
||
"round": 5
|
||
"step": End
|
||
rejects: []
|