49 lines
1.5 KiB
YAML
49 lines
1.5 KiB
YAML
|
|
scenario: ground/gr-p05-solve-legality
|
||
|
|
description: >
|
||
|
|
GR-P05, ruled by ground-game 2026-08-03: SOLVE is legal only where it
|
||
|
|
can do something. P1 holds no Clarify and is refused Problem 1; P2
|
||
|
|
holds one, is admitted, and claims it.
|
||
|
|
|
||
|
|
The prior-round-claim half of GR-P05 is asserted in
|
||
|
|
`bot::tests::validate_enforces_all_four_solve_conditions` rather than
|
||
|
|
here, because reaching a second round costs a dozen commands to test
|
||
|
|
one rejection.
|
||
|
|
|
||
|
|
The rule is asserted here rather than only in `legal_commands`, because
|
||
|
|
a rule enforced by the offer alone constrains only clients that ask what
|
||
|
|
is legal — a scenario file would walk straight past it. That is what the
|
||
|
|
AM-1 coverage gate surfaced when GR-P05 was added with no scenario.
|
||
|
|
covers: [GR-P05, GR-A02, GR-P03]
|
||
|
|
provisional: false
|
||
|
|
seed: 42
|
||
|
|
setup:
|
||
|
|
players: 3
|
||
|
|
preset: standard-3p
|
||
|
|
patch:
|
||
|
|
"lead": 1
|
||
|
|
"players.0.hand": [{ suit: Change }]
|
||
|
|
"players.1.hand": [{ suit: Clarify }]
|
||
|
|
commands:
|
||
|
|
# 0 — P1 holds no Clarify: refused.
|
||
|
|
- actor: P1
|
||
|
|
cmd: select_action
|
||
|
|
args: { action: SOLVE, problem: 1 }
|
||
|
|
# 1 — P2 holds one: admitted.
|
||
|
|
- actor: P2
|
||
|
|
cmd: select_action
|
||
|
|
args: { action: SOLVE, problem: 1 }
|
||
|
|
- actor: P1
|
||
|
|
cmd: select_action
|
||
|
|
args: { action: INVESTIGATE, problem: 2 }
|
||
|
|
- actor: P3
|
||
|
|
cmd: select_action
|
||
|
|
args: { action: INVESTIGATE, problem: 3 }
|
||
|
|
- actor: SYSTEM
|
||
|
|
cmd: reveal
|
||
|
|
- actor: SYSTEM
|
||
|
|
cmd: resolve
|
||
|
|
expect:
|
||
|
|
rejects: [0]
|
||
|
|
state:
|
||
|
|
"problems.1.claimed_by": 1
|