Repository navigation
AI capture: durable checkpoints, persisted pause, optional AI packages - #442
Merged
guan4tou2 merged 2 commits intoOct 24, 2026
Merged
Conversation
…ackages Work from a stopped Codex session's working tree, built on 52b80c8 and carried onto the branch as it was left. See specs/062-recording-workflow-consolidation/ai-durability-and-session-boundaries.md. - Progress is a checkpoint beside each sidecar: source offset and saved bytes, written atomically after a unit is processed and appended. A failed write leaves the unit at the source, across a restart too. - Pause keeps no source bytes; the boundary is persisted, so a restart during a pause does not replay it. Sessions found after resume are bounded by it. - Per-session stop and reallow from the existing source rows. - The three AI adapters move to optional-plugins/ and are installed as managed packages, with tamper refusal and rollback. Merging it with #441 (already on this branch): tailer-host.ts takes this version, which supersedes #441's in-memory queue and filler newlines. bundle-export.ts goes back to before #441, since no pause-tail marker or filler exists any more. The #441 tests move to the new adapter path; the mock-based per-message suite and two tests of behaviour this design drops (give up after the retries; retry a pre-pause failure after a pause) go. Seven of the remaining #441 tests fail here; the next commit fixes them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…runing Four gaps in the checkpoint design, each found by a #441 test or a probe against it: - A waiting child whose flush failed was lost for good. Its parent was recorded, so the re-read skipped it, and the child's own line was already committed. Children now leave the queue only once written, and a re-read parent flushes whatever still waits on it. - A re-read child was queued again on every failed pass, and a re-read tool call was counted again. - A failure with no later file event (the last turn of a session) waited for a restart. A few backed-off passes (1 s to 16 s) now retry it; after those it waits for the next event or restart, the error in capture health. - Retention removes whole sidecars, and the checkpoint then refused the session as tampered, stopping its capture with only a DB error. A missing sidecar now resumes at the checkpoint; one that is present but short is still refused. Each fix is caught by at least one test when reverted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
guan4tou2
added a commit
that referenced
this pull request
Oct 24, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Targets
codex/recording-export-workflow(#437), notmain. This PR reachesmainonly through #437.What this is
A Codex session was rewriting
tailer-host.tsand stopped with its work uncommitted in the shared checkout, built on52b80c80. Meanwhile #441 landed on this branch and changed the same functions. This PR takes over that work and reconciles the two.7f3ea39c: the stopped session's work, unchanged, plus the merge with #441Design notes:
specs/062-recording-workflow-consolidation/ai-durability-and-session-boundaries.md.optional-plugins/and are installed as managed packages, with tamper refusal and rollback.tailer-host.tstakes this version. It supersedes fix: keep AI transcript capture honest across write failures and pauses #441's in-memory failed-turn queue and its newline filler.bundle-export.tsgoes back to its pre-fix: keep AI transcript capture honest across write failures and pauses #441 state.optional-plugins/.9932a31a: four gaps in the checkpoint designEach was found by a #441 test or a probe, and each fix makes at least one test fail when reverted.
Behaviour dropped relative to #441
capture_gap. It stays retryable, so nothing is skipped, but a unit that can never be written also blocks everything after it.Verification (local, macOS)
tailer-durability,tailer-jsonl-durability,tailer-pause-sidecar): 40/40 pass.command-io,managed-http-capture,terminal-session-rotation) are the same 3 that fail locally onmain.verify:package-resources, and no packaged or native acceptance. This PR changeselectron-builder.ymland the package verifier, and that check runs only on tag builds.🤖 Generated with Claude Code