Summary
The original projector-retirement work described by this issue was delivered by #630: events is now the full-content source, the mcp_open_* runtime tables are gone, and canonical open uses thin locator/navigation indexes.
One performance problem remains. open(session|turn|event) can scan the entire session navigation history to build a page, and continuation pages can repeat that narrow full-session scan. Large sessions therefore pay prior-history cost on each page even though the response is bounded.
This issue tracks only that residual problem. Do not restore a transcript cache, publication-head architecture, or the deleted projector.
Scope
- Seek directly to the requested session/turn/event page through content-free navigation data.
- Hydrate text and payloads only for events on the selected page.
- Avoid rereading the full session prefix on every continuation page.
- Preserve turn boundaries, summaries, neighbors, ordering, scope checks, event-version checks, and cursor/reopen behavior.
- Extend the existing content-free navigation index only if direct keyset predicates cannot preserve current behavior.
- Keep
open(event) isolated to its locator seek and owning session.
Acceptance criteria
Chain
Summary
The original projector-retirement work described by this issue was delivered by #630:
eventsis now the full-content source, themcp_open_*runtime tables are gone, and canonical open uses thin locator/navigation indexes.One performance problem remains.
open(session|turn|event)can scan the entire session navigation history to build a page, and continuation pages can repeat that narrow full-session scan. Large sessions therefore pay prior-history cost on each page even though the response is bounded.This issue tracks only that residual problem. Do not restore a transcript cache, publication-head architecture, or the deleted projector.
Scope
open(event)isolated to its locator seek and owning session.Acceptance criteria
open(event)does not scan unrelated sessions.Chain