fix: scope a session's "her notes" to its own time window

The HUD's notes list filtered journal/note entries by `created_at >= started_at`
with no upper bound, so a *closed* session kept absorbing every note she wrote
afterward — a session from last Saturday would show a note jotted 25 minutes ago.

Cap the window at `ended_at` for closed sessions; live sessions (no end yet) stay
open-ended as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-03 19:35:15 +00:00
parent a4412aa023
commit 71bbe07220
2 changed files with 27 additions and 1 deletions
+21
View File
@@ -18,6 +18,27 @@ def lyra(tmp_path, monkeypatch):
return poker
def test_hud_notes_scoped_to_session_window(lyra):
poker = lyra
from lyra import memory
sid = poker.start_session(venue="Meadows", stakes="1/3", buy_in=300)
s = poker.get_session(sid)
started = s["started_at"]
# A note written mid-session (>= started, before it ends) belongs to it.
conn = memory._connection()
with conn:
conn.execute("INSERT INTO journal (created_at, kind, content) VALUES (?,?,?)",
(started, "note", "villain 3 overfolds turn"))
poker.end_session(cash_out=540, session_id=sid)
# A note written well after the session closed must NOT show up on it.
with conn:
conn.execute("INSERT INTO journal (created_at, kind, content) VALUES (?,?,?)",
("2999-01-01T00:00:00+00:00", "note", "thought from the far future"))
contents = [n["content"] for n in poker.hud(sid)["notes"]]
assert "villain 3 overfolds turn" in contents # inside the window
assert "thought from the far future" not in contents # after ended_at
def test_session_lifecycle_and_net(lyra):
poker = lyra
sid = poker.start_session(venue="Meadows", stakes="1/3", buy_in=400)