clay-borg/scenarios/ground/gr-e03-common-problem.yaml
tegwick 82fdb85173 CB-WP-0010-T02: GR-E03 gets a scenario
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>
2026-08-02 02:16:51 +02:00

81 lines
2.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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: []