1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//! The event log โ the game state *is* this append-only stream.
//!
//! Two principles from DESIGN.md ยง6 shape what gets recorded:
//!
//! 1. **Record resolved values, not raw inputs.** `GameStarted` carries the
//! *generated world snapshot*, not just the seed: if only the seed were
//! stored and the world re-derived on load, any improvement to worldgen
//! would silently corrupt every old save โ the same failure mode as
//! re-parsing raw LLM text. Worldgen is an edge producer whose *output* is
//! the recorded input.
//! 2. **Record outcomes the fold consumes without re-running engines.**
//! `MatchPlayed` carries the result; replay folds over it and never
//! re-simulates, so upgrading the match engine (Phase 2) can never rewrite
//! history. Live play produces these events via `step`; replay just eats
//! them. This is exactly how recorded agent `Decision`s will enter in
//! Phase 5 โ human lineups (`LineupSubmitted`) already follow the pattern.
use ;
use ;