Problem
Consumers can list recent events for an actor, but cannot retrieve an older actor-participated event by relevance. Long-running campaigns therefore lose episodic recall once a relevant event falls outside a fixed recent window, even when actor knowledge still points to that event.
The D&D long-term-memory integration reproduced this with one relevant event followed by 200 unrelated actor events: semantic knowledge was recalled, while the source episode was not.
Proposed scope
- Add deterministic lexical search to EventService for events explicitly indexed to one actor.
- Preserve branch resolution and participant-role filtering from list_for_actor.
- Rank relevance before recency and keep a bounded result limit.
- Add regression coverage for old-event recall and branch isolation.
No embedding service or persistence migration is required.
Problem
Consumers can list recent events for an actor, but cannot retrieve an older actor-participated event by relevance. Long-running campaigns therefore lose episodic recall once a relevant event falls outside a fixed recent window, even when actor knowledge still points to that event.
The D&D long-term-memory integration reproduced this with one relevant event followed by 200 unrelated actor events: semantic knowledge was recalled, while the source episode was not.
Proposed scope
No embedding service or persistence migration is required.