Repository navigation
docs(planning): describe the replay boundary instead of the first heartbeat - #246
bniladridas wants to merge 1 commit into
Conversation
…rtbeat The first-run backlog bullet said the catch-up ends at "the first heartbeat after replay". The client in Vycari#232 treats a ping as liveness only and ends replay at the cursor frame, or at a history_expired that reports the gap and advances to the floor. The sentence now names those boundaries and records that server-side emission of history_expired on an out-of-retention reconnect is still unverified, so the plan does not promise it. Refs Vycari#239. Signed-off-by: Niladri Das <125604915+bniladridas@users.noreply.github.com>
Vycari ReviewRound 1 on 6259202. The verdict is the Vycari Review check run, and each open finding is an inline thread. Reply on every P0 and P1 thread: Open: P0 0 · P1 0 · P2 1 · disputed 0 · confirmed fixed 0 · withdrawn 0 Hand-off: Greptile requested on 6259202. No open P0 or P1 findings this round. P2s, judge's notes and closed findingsOpen P2 findings
P2s with no reply yet
Judge's notes This PR only changes the planning doc. The one finding is a P2: the new wording describes the client in #232, not the one on main, so the plan is only wrong if it merges before #232. The PR's merge-order item already asks to land it after #232. |
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
@greptileai review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6259202f37
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Thank you for this, and for filing #239. Since a ping really is the end of replay (details on #232), the plan's current wording is correct, so we'll close this one. Thanks for pushing the docs and code to agree. Generated by Claude Code |
Human overview
The Claude Code channel plan still said a first run's catch-up ends at "the first heartbeat after replay", but a heartbeat is only liveness: the client ends replay at the cursor frame, or at a
history_expiredthat reports the gap and advances to the floor. This corrects that one bullet inplanning/claude-code-channel.mdso the plan matches the client being shipped in #232. Refs #239.Human required (optional)
main.AI reviewer
Details for agents: what the diff does, invariants, verification, checklist
What the diff does. One paragraph inside one bullet in
planning/claude-code-channel.md(design §7.4, the first-run backlog rule). No code, no other file.The bullet used to say: an event older than
started_at - 60sis consumed without a push, and "once the stream has caught up (the first heartbeat after replay)" onekind="backlog"control event is pushed. The heartbeat clause is the stale part. It is replaced with the real boundaries, and the bullet's frame is kept: the same age rule, the samebacklogcontrol event, the same "the skill tells the sponsor" ending.What replaced it.
history_expired, the client reports the gap and advances to the supplied floor before ending replay. That order is the implementation in fix(agents): clear the first-run flag when the catch-up completes (#122) #232:_gappushes the gap, advances, then calls_end_replay.history_expiredon an out-of-retention reconnect remains unverified. The plan says so rather than promising it.Invariants. The documented age rule (
started_at - 60s) and the backlog control event are unchanged; only the trigger that flushes it moves. First-runresyncsuppression is not discussed in this bullet and is untouched.Failure posture. Documentation only: nothing runs differently if this is wrong. The risk is the opposite one, a plan that describes a boundary the client does not use, which is what made #239 worth filing. If the wording still drifts from the code, the next reader trusts the plan over
claude_channel.py.Deferred work. None from this change. #239 closes when this merges.
Verification. macOS, on branch
docs/239-replay-boundaryat6259202, based onorigin/main0c96a69:npx --yes markdownlint-cli2@0.18.1: 17 files linted, 0 errors. Same command as thedocsCI job.git diff --stat origin/main: 1 file changed, 6 insertions, 3 deletions.ruff,tyandpytestare unaffected and were not re-run for this branch; thecijob will run them anyway.a50b391(fix(agents): clear the first-run flag when the catch-up completes (#122) #232), not againstmain, since fix(agents): clear the first-run flag when the catch-up completes (#122) #232 has not merged. See the merge-order item above.Checklist (repo-specific)
uv run ruff format --checkanduv run ruff checkclean: not applicable, no Python file changeduv run ty check src/pepper_cli/clean: not applicable, no Python file changeduv run pytestpasses; coverage floor in.claude/maintainerd.jsonnot lowered: not applicable, no code changed/api/v1usage, no# MIRROR:commentSKILL.mdupdated if commands or output changed: not applicable, no command or output changed; this edits the planning doc only

Confidence Score: 5/5
No actionable issue was found beyond the already stated requirement to merge after PR #232.Summary
Updates the replay description in
planning/claude-code-channel.md.bniladridas states that this wording targets pending PR #232 and should merge afterward. The pending implementation was unavailable for comparison; the known difference from the local client is not reported as a defect.
bniladridas also identifies server emission of
history_expiredas unverified. The changed paragraph preserves that caveat.Reviews (1) · Last reviewed commit: "docs(planning): describe the replay boun..." · Reviewed by Greptile