clay-borg/scenarios/ground/gr-a05-support-response.yaml
tegwick 290ad06c31 T08 iter 4: GROUND-OU/ND choices and Support consent
Closes the three rules deferred in iter 2 and 3 because each needed a
decision from a player rather than a default I would have invented:

- GR-A11 GROUND-OU: restore a Denied Problem, protect a face-up one
  from Deny, or cancel an Attack aimed at the chooser.
- GR-A12 GROUND-ND: remove a Blame token, break a relation involving
  the chooser, or reject a Reverse.
- GR-L02 / GR-A05: the Support target answers after Reveal — accept or
  decline a Bond where no relation exists, flip or break an existing
  Rivalry. A Bond can no longer form without consent.

Each choice is validated against the state it claims to act on: a
restore needs a Denied Problem, a cancel needs an Attack actually aimed
at the chooser, a Blame removal needs that token present, a break needs
that relation to exist. GR takes no sub-choice, and OU and ND may only
use choices from their own list.

GR-A09 ordering follows the U8 default: an OU cancellation is chosen at
step 1 and applies first, so a Protection token is spent only when it
is what actually cancels.

14 scenarios pass; AM-1 coverage 41/58 (70%), up from 34/58.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 02:27:25 +02:00

57 lines
1.5 KiB
YAML

scenario: ground/gr-a05-support-response
description: >
A Support target answers after Reveal: through a Rivalry they flip it
to a Bond or break it (GR-A05); with no relation a Bond forms only if
they accept (GR-L02). A player not receiving Support cannot answer.
covers: [GR-A05, GR-L02, GR-A03]
provisional: false
seed: 42
setup:
players: 3
preset: standard-3p
patch:
"lead": 0
"relations.0-1": Rivalry
commands:
- actor: P1
cmd: select_action
args: { action: SUPPORT, target: P2 }
- actor: P2
cmd: select_action
args: { action: SUPPORT, target: P3 }
- actor: P3
cmd: select_action
args: { action: INVESTIGATE, problem: 3 }
- actor: SYSTEM
cmd: reveal
# GR-A05: P2 is supported through a Rivalry, so it may flip.
- actor: P2
cmd: respond_to_support
args: { response: flip_to_bond }
# GR-L02: P3 has no relation with its supporter, so it accepts.
- actor: P3
cmd: respond_to_support
args: { response: accept_bond }
# P1 received no Support this round.
- actor: P1
cmd: respond_to_support
args: { response: accept_bond }
# GR-A05: a flip is not available where no relation exists.
- actor: P3
cmd: respond_to_support
args: { response: flip_to_bond }
- actor: SYSTEM
cmd: resolve
expect:
events:
- kind: SupportAnswered
player: 1
response: FlipToBond
- kind: RelationFormed
relation: Bond
state:
"relations.0-1": Bond
"relations.1-2": Bond
"players.1.stress": 1
"players.2.stress": 1
rejects: [6, 7]