irregular6612 commited on
Commit
d53ff08
·
1 Parent(s): ef18469

feat(cp7): additive SessionTrace.memory_ref

Browse files
proteus/runtime/trace.py CHANGED
@@ -84,6 +84,8 @@ class SessionTrace(BaseModel):
84
  turns: Per-turn traces, in play order.
85
  outcome: ``"survived"`` or ``"eliminated"``.
86
  metrics: Computed session metrics (see ``runtime.metrics``).
 
 
87
  """
88
 
89
  scenario: str
@@ -95,3 +97,5 @@ class SessionTrace(BaseModel):
95
  turns: list[TurnTrace] = Field(default_factory=list)
96
  outcome: Literal["survived", "eliminated"]
97
  metrics: dict[str, float] = Field(default_factory=dict)
 
 
 
84
  turns: Per-turn traces, in play order.
85
  outcome: ``"survived"`` or ``"eliminated"``.
86
  metrics: Computed session metrics (see ``runtime.metrics``).
87
+ memory_ref: Path/ref of the CP7 memory checkpoint shown at the handover,
88
+ or ``None`` when no memory pre-roll was used.
89
  """
90
 
91
  scenario: str
 
97
  turns: list[TurnTrace] = Field(default_factory=list)
98
  outcome: Literal["survived", "eliminated"]
99
  metrics: dict[str, float] = Field(default_factory=dict)
100
+ # CP7: path/ref of the memory checkpoint shown at handover (None if unused).
101
+ memory_ref: str | None = None
tests/runtime/test_session_memory.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from proteus.runtime.trace import SessionTrace
2
+
3
+
4
+ def test_session_trace_memory_ref_defaults_none_and_round_trips():
5
+ t = SessionTrace(
6
+ scenario="predator_evade", motive_category="survival", seed=42,
7
+ difficulty="easy", model="demo", outcome="survived",
8
+ )
9
+ assert t.memory_ref is None
10
+ t2 = SessionTrace.model_validate_json(t.model_dump_json())
11
+ assert t2.memory_ref is None
12
+
13
+ t3 = SessionTrace(
14
+ scenario="predator_evade", motive_category="survival", seed=42,
15
+ difficulty="easy", model="demo", outcome="survived",
16
+ memory_ref="demo@FIXED",
17
+ )
18
+ assert SessionTrace.model_validate_json(t3.model_dump_json()).memory_ref == "demo@FIXED"