Personalized content ranking database
deserialize_start_record now returns the full (session_id, user_id,
started_at_ns, metadata) tuple — the metadata bytes were already written
by serialize_start_record but silently discarded on read.
restore_session_wal_events looks up the persisted start record in storage
for each open session and uses the deserialized metadata instead of
HashMap::new(), so fields like {"tool":"planner"} survive a crash.
The signal replay loop no longer discards _annotation — annotations are
now pushed into state.annotations during WAL replay, restoring preference
hints like "more jazz today" so FOR SESSION ranking works post-restart.
Two new integration tests in session_durability.rs verify both fixes
against a real persistent store with simulated crash (drop without
close_session). session/serde.rs split into serde/mod.rs + serde/start_record.rs
to satisfy the 600-line limit.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||
|---|---|---|
| .agentive-remediation/establish-foundation-standards | ||
| .claude | ||
| ai-lookup | ||
| docs | ||
| site | ||
| tidal | ||
| tidalctl | ||
| .gitignore | ||
| API.md | ||
| ARCHITECTURE.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CLAUDE.md | ||
| CODING_GUIDELINES.md | ||
| CONTRIBUTING.md | ||
| package-lock.json | ||
| package.json | ||
| SEQUENCE.md | ||
| thoughts.md | ||
| USE_CASES.md | ||
| VISION.md | ||