Address review on the Claude session-resume spec:
- Make the live history epoch agent-scoped via a new
conversation_agent_epoch table keyed on (conversationId, agentId)
instead of a conversation-wide conversations.history_epoch column, so
editing a Codex-only turn no longer invalidates Claude's pinned
session. Update Design Decision #3, pseudocode, change scope, web bump
bullet, and the epoch-guard test case.
- Persist a runtimeId runtime-identity fingerprint alongside the session
pointer and add a same-runtime guard to resolveResumeDecision(), the
true OD analog of multica's "same runtime" guard, so a mid-conversation
bin/fork swap (e.g. openclaude) falls back to a transcript spawn
instead of resuming a foreign session. Add the matching test case.
Generated-By: looper 0.9.2 (runner=fixer, agent=claude-code)
Specify conversations.history_epoch as the live epoch source read at run
start, distinct from the pinned conversation_agent_session.historyEpoch, so
resolveResumeDecision has a defined currentHistoryEpoch. Make workDir an
explicit cwd-scope resume guard (pseudocode check, Architecture Overview, and
a Test Strategy case) rather than write-only state.
Generated-By: looper 0.9.2 (runner=fixer, agent=claude-code)
Address review: keying skipTranscript on the static resumesSessionViaCli
flag would skip the transcript on guard-fail turns (force-fresh, history
edit, no --resume capability) even though --resume is omitted, producing
a cold spawn with neither resume nor history and breaking the
non-regression guarantee. Derive both --resume and skipTranscript from
the single per-run resumeSessionId; add supportsSessionResume capability
distinct from the per-turn decision; and assert full-transcript presence
in every guard-fail test.
Add a change proposal for an opt-in, Claude-first, best-effort session
resume path that passes --resume <session_id> and sends only the latest
turn on qualifying follow-ups, falling back to the full-transcript spawn
whenever a guard fails. Borrows multica's resume + runtime-match /
force-fresh / poisoned-session guards and adds an OD-specific history
epoch guard for editable history.
Spec only; implementation lands in follow-up PRs per the plan.