The per-event routing mode is documented as "per event a new session (session auto archived)". Nothing archives. Every request to a per-event service leaves a session behind permanently.
The archive primitive exists and works (construct archive <id> / the subagent + session archive MCP methods) — it terminates the adapter and hides the session while keeping its transcript and worktree. It is simply never called from the service path.
To decide:
- When. Immediately on turn completion is wrong if the caller has not yet polled
GET /svc/<name>/sessions/<id> for the result. Some grace period, or archive-on-result-read, is needed.
- Keyed routing too? Keyed sessions are meant to stay warm for the next event, so they need an idle policy rather than a per-turn one.
- Retention. The design accepts that service history accumulates and defers a retention policy; archiving does not delete, so accumulation on disk continues either way. That is accepted for now but should be stated where an operator will see it.
Related: without this, #1134 is worse, since unattributed sessions accumulate without bound.
The per-event routing mode is documented as "per event a new session (session auto archived)". Nothing archives. Every request to a per-event service leaves a session behind permanently.
The archive primitive exists and works (
construct archive <id>/ the subagent + session archive MCP methods) — it terminates the adapter and hides the session while keeping its transcript and worktree. It is simply never called from the service path.To decide:
GET /svc/<name>/sessions/<id>for the result. Some grace period, or archive-on-result-read, is needed.Related: without this, #1134 is worse, since unattributed sessions accumulate without bound.