make trials reported "positions unreachable: 4, target 0 — the recording exists but the position moved". All four were false. A recording holds one hash, the final state, and reachability asked whether the note's hash was in that file — so a mid-game note could never match, and a post-game note from any but the last game could not either. Instance 8 of the ADR-0018 family: vary only WHEN a note was written and the answer flips, with nothing having moved. The root cause was not the metric. play again reused state belonging to a game: it overwrote the previous game's recording (data loss), never cleared the journal (game 2's log opened with game 1's commands), and so a note's command index pointed into a recording without those commands. Fixing reachability alone would have gone green while a session still destroyed its own evidence. A note now binds by (game, after) — an index into the recording's own commands list, which a reader can replay to. The hash keeps a job as the integrity check at the end of a game, where it can actually fail. Game 1 keeps the path it was given, so GameDesign §5's documented invocation is unchanged; later games get -2, -3 and nothing is overwritten. Legacy 5-column logs stay readable and are reported as legacy, never as orphans — an unsubstantiated orphan claim is the defect being fixed. All three fixes mutation-proven, including at the call site via a real two-game session. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
4ddff3b17c
commit
edab11c0e4
10 changed files with 909 additions and 41 deletions
153
trials/2026-08-07-1558.yaml
Normal file
153
trials/2026-08-07-1558.yaml
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
scenario: ground/cb-play-session
|
||||
description: recorded by cb-play (CB-WP-0008 T02)
|
||||
covers: []
|
||||
provisional: false
|
||||
provisional_owner: ''
|
||||
provisional_raised: ''
|
||||
ruled: ''
|
||||
ruled_by: ''
|
||||
ruled_note: ''
|
||||
encodes_u_item: ''
|
||||
seed: 1
|
||||
setup:
|
||||
players: 3
|
||||
preset: standard-3p
|
||||
patch: {}
|
||||
commands:
|
||||
- actor: P1
|
||||
cmd: select_action
|
||||
args:
|
||||
action: INVESTIGATE
|
||||
problem: 2
|
||||
- actor: P2
|
||||
cmd: select_action
|
||||
args:
|
||||
action: SOLVE
|
||||
problem: 1
|
||||
- actor: P3
|
||||
cmd: select_action
|
||||
args:
|
||||
action: SOLVE
|
||||
problem: 1
|
||||
- actor: SYSTEM
|
||||
cmd: reveal
|
||||
args: {}
|
||||
- actor: SYSTEM
|
||||
cmd: resolve
|
||||
args: {}
|
||||
- actor: SYSTEM
|
||||
cmd: end_round
|
||||
args: {}
|
||||
- actor: P1
|
||||
cmd: select_action
|
||||
args:
|
||||
action: INVESTIGATE
|
||||
problem: 3
|
||||
- actor: P2
|
||||
cmd: select_action
|
||||
args:
|
||||
action: INVESTIGATE
|
||||
problem: 3
|
||||
- actor: P3
|
||||
cmd: select_action
|
||||
args:
|
||||
action: INVESTIGATE
|
||||
problem: 3
|
||||
- actor: SYSTEM
|
||||
cmd: reveal
|
||||
args: {}
|
||||
- actor: SYSTEM
|
||||
cmd: resolve
|
||||
args: {}
|
||||
- actor: SYSTEM
|
||||
cmd: end_round
|
||||
args: {}
|
||||
- actor: P1
|
||||
cmd: select_action
|
||||
args:
|
||||
action: SOLVE
|
||||
problem: 3
|
||||
- actor: P2
|
||||
cmd: select_action
|
||||
args:
|
||||
action: INVESTIGATE
|
||||
problem: 4
|
||||
- actor: P3
|
||||
cmd: select_action
|
||||
args:
|
||||
action: SOLVE
|
||||
problem: 2
|
||||
- actor: SYSTEM
|
||||
cmd: reveal
|
||||
args: {}
|
||||
- actor: SYSTEM
|
||||
cmd: resolve
|
||||
args: {}
|
||||
- actor: SYSTEM
|
||||
cmd: end_round
|
||||
args: {}
|
||||
- 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: SOLVE
|
||||
problem: 4
|
||||
- actor: SYSTEM
|
||||
cmd: reveal
|
||||
args: {}
|
||||
- actor: P1
|
||||
cmd: respond_to_support
|
||||
args:
|
||||
response: accept_bond
|
||||
- actor: P2
|
||||
cmd: respond_to_support
|
||||
args:
|
||||
response: accept_bond
|
||||
- actor: SYSTEM
|
||||
cmd: resolve
|
||||
args: {}
|
||||
- actor: SYSTEM
|
||||
cmd: end_round
|
||||
args: {}
|
||||
- actor: P1
|
||||
cmd: select_action
|
||||
args:
|
||||
action: SUPPORT
|
||||
target: P3
|
||||
- actor: P2
|
||||
cmd: select_action
|
||||
args:
|
||||
action: SUPPORT
|
||||
target: P1
|
||||
- actor: P3
|
||||
cmd: select_action
|
||||
args:
|
||||
action: SUPPORT
|
||||
target: P1
|
||||
- actor: SYSTEM
|
||||
cmd: reveal
|
||||
args: {}
|
||||
- actor: P3
|
||||
cmd: respond_to_support
|
||||
args:
|
||||
response: accept_bond
|
||||
- actor: SYSTEM
|
||||
cmd: resolve
|
||||
args: {}
|
||||
- actor: SYSTEM
|
||||
cmd: end_round
|
||||
args: {}
|
||||
expect:
|
||||
events: []
|
||||
state: {}
|
||||
rejects: []
|
||||
state_hash: 8ade38824ca4853ac51fa8156673098ab2975a92b0db75783b0cd68a267ec30e
|
||||
Loading…
Add table
Add a link
Reference in a new issue