server: the per-turn checkpoint reuses the git index cache instead of re-hashing the whole checkout — upstream #10792 carried ahead - #944
Conversation
(cherry picked from commit e2e772fb55ca6c7ad57907000a90b2302c181fba) Co-Authored-By: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016MuXZq7e88R9sNjXDCj8Yx
(cherry picked from commit 8679610012cbdf40ad843fd12591053f108ccda9) Co-Authored-By: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016MuXZq7e88R9sNjXDCj8Yx
(cherry picked from commit 5d0afd8d6d554fceb2be896fbe8e64601a97624b) Co-Authored-By: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016MuXZq7e88R9sNjXDCj8Yx
…log line (#10792 upstream) Co-Authored-By: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016MuXZq7e88R9sNjXDCj8Yx
ECC Tools / Security EvidenceCommit: Security evidence gate passed (success) No security-sensitive scanner-evidence gap detected. Mode: enforce Scanned 4 changed file(s). No missing scanner-evidence signal was detected. Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / PR Risk TaxonomyCommit: PR taxonomy review recommended (neutral) Detected 1 PR taxonomy bucket(s): CI/CD Recommendation. Scanned 4 changed file(s). Roadmap taxonomy buckets: CI/CD RecommendationCI, dependency, coverage, and contract signals should be routed into follow-up checks or verification work. Signals:
Paths:
Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / Reference Set ReadinessCommit: Reference set readiness gaps detected (neutral) Reference evidence present for 0/7 areas (0%) across 4 changed file(s). This check is based on files changed in this PR. Repository-level readiness is still reported by
Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
ECC Tools / Hosted Promotion ReadinessCommit: Hosted promotion readiness passed (success) No hosted promotion evidence gaps detected across 4 changed file(s); 0 corpus scenarios had matching evidence. This check compares PR file changes against the evaluator/RAG promotion corpus in No evaluator corpus scenarios matched this PR. Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission. |
|
Warning Review limit reachedNext included review available in 53 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (4)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Every completed turn's checkpoint (
GitVcsDriver.checkpoints.captureCheckpoint) built its private index from scratch —read-tree HEADinto a tempGIT_INDEX_FILE, thengit add -A -- .— so git re-hashed every tracked file each time. On the user's banyan checkout (34k tracked files) that is 13 s on an idle machine and more under load;VcsProcesskills git at its 30 s default, and the turn ends with the red "Checkpoint capture failed — VCS process timed out … after 30000ms" rows the user reported. The turn itself completes; the CLI never checkpoints, so it never shows this. Upstream tracks it as pingdotgg/t3code#3646.This carries upstream's open fix pingdotgg/t3code#10792 ahead of the sync, its three commits cherry-picked with
-x: the capture seeds its private index from the workspace index and resets it to HEAD keeping matching stat metadata, soadd -Are-hashes only what changed; the source index's timestamp is restored conservatively so racy entries are still revalidated, filesystem-monitor state is discarded, and the fresh-index path stays as the fallback when the index is missing, corrupt, truncated or carries assume-unchanged / skip-worktree flags. The workspace index is never written. Measured on banyan with a throwaway index:git add -A13.1 s from a fresh index, 1.2 s from a copy of the real one.One conflict in
GitVcsDriver.test.ts(the fork's later "restores empty checkpoints" test sat where upstream inserted its fixture) resolved by keeping both. INFINITUS.md registers the file as a carried-ahead upstream fix — a sync conflict there is resolved toward upstream, and the entry goes when #10792 lands — and the changelog gets a Desktop line.Checks:
GitVcsDriver,VcsProcessand checkpoint tests 34 green, server typecheck 0 errors, lint andvp fmt --checkclean.Device check
After the next desktop install: run a few turns on the banyan thread. No "Checkpoint capture failed" rows appear, and
git for-each-ref refs/t3/checkpointsin that checkout lists a ref per turn. A repo whose index git cannot read still checkpoints through the old path.🤖 Generated with Claude Code