Skip to content

Index native history reads and incrementally persist JSONL checkpoints - #441

Merged
Brian Krabach (bkrabach) merged 2 commits into
mainfrom
codex/incremental-history
Oct 7, 2026
Merged

Brian Krabach (bkrabach) merged 2 commits into
mainfrom
codex/incremental-history

Conversation

@bkrabach

Copy link
Copy Markdown
Collaborator

Checkpoints currently reread and rewrite the complete transcript, and chat consumers must decode it again for small lookups. This adds opt-in incremental saves and a bounded, disposable index of row offsets, fingerprints, and small projections. Normal appends advance both the primary and previous-complete backup by their new tails; unchanged transcripts remain untouched. Edits and truncation retain atomic replacement.

A durable append intent makes updated readers recover the complete backup after an interrupted batch, including interruption between valid JSON lines. External replacement, in-place edits, and truncation invalidate indexes. Event association fingerprints avoid retaining full prompts. No event payloads or transcript messages are removed.

Validation in the owned spark-2 DTU: 406 session tests passed, Ruff check/format passed, and the built wheel passed an installed-package read/write smoke. Tests cover partial and valid-line crash boundaries, CLI changes, late invalid input, backup recovery, no-op saves, bounded caching, and association equivalence.

The API is opt-in. Writers retain the session ownership-lock requirement. Consumers enabling it must use intent-aware Foundation readers, including any CLI installation sharing those sessions; older writers remain supported. Full-list callers still serialize/hash their supplied prefix, so this does not remove every history-proportional CPU cost. CI-to-transcript reconstruction is a separate contract change.

@bkrabach
Brian Krabach (bkrabach) marked this pull request as ready for review October 7, 2026 00:23
@bkrabach
Brian Krabach (bkrabach) merged commit a34b770 into main Oct 7, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant