Skip to content

Fix compaction replay dropping history on missing firstKeptEntryId#8

Merged
QiaolongLi1201 merged 1 commit into
mainfrom
codex/agent-capability-gap-fixes
Jun 13, 2026
Merged

Fix compaction replay dropping history on missing firstKeptEntryId#8
QiaolongLi1201 merged 1 commit into
mainfrom
codex/agent-capability-gap-fixes

Conversation

@QiaolongLi1201

Copy link
Copy Markdown
Collaborator

buildSessionContext silently dropped all pre-compaction entries when compaction.firstKeptEntryId was missing from the path (the codec only warns on load). Now keeps them. Red-before-green spec; verify green (agent 190).

🤖 Generated with Claude Code

…stKeptEntryId

buildSessionContext walked entries [0, compactionIdx) and only began appending
once it saw compaction.firstKeptEntryId. If that id was missing from the path
(corruption/race — the JSONL codec only warns on load, it does not repair),
foundFirstKept never flipped, so EVERY pre-compaction entry was dropped on
replay — losing recent history the compaction summary does not cover.

Fix: when firstKeptEntryId is absent, keep all pre-compaction entries instead of
dropping them (preserve data over the kept-tail optimization). Normal replays,
where the id exists, are unchanged.

Verified red-before-green (a session with a bogus firstKeptEntryId loses
PRECOMP messages before, keeps them after) and npm run verify green (agent 190).
The other dry-run-blocked candidate (ROS_DOMAIN_ID NaN) was a false positive —
device-ssh.ts already guards with Number.isInteger && >= 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@QiaolongLi1201 QiaolongLi1201 merged commit 9dddb33 into main Jun 13, 2026
1 of 3 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