Skip to content

docs(decisions): a judge's PASS is cached at the altitude of the question it answers - #361

Merged
norvalbv merged 1 commit into
mainfrom
benjinorval/decision-completeness-intent
Aug 7, 2026
Merged

docs(decisions): a judge's PASS is cached at the altitude of the question it answers#361
norvalbv merged 1 commit into
mainfrom
benjinorval/decision-completeness-intent

Conversation

@norvalbv

@norvalbv norvalbv commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Records the ruling behind #360, which merged without its why.

New axis judge-verdict-cache-scope. Completeness judges the commit message's claims against what the change delivers, so its confident PASS is keyed on branch + normalised message + reviewer brief rather than on the staged bytes. A retry that reshapes the diff to satisfy a different reviewer is not re-judged.

The Negative is on the record rather than buried: a retry that guts claimed functionality under an unchanged commit message is not re-caught on that branch — the message is the only guard. Amending the message, switching branch, or editing the brief re-opens the gate, and a FAIL is never sticky.

Why its own axis, not a note under ship-gates-converge-not-restart: that axis rules that ship retries converge instead of restarting; this one rules what a verdict is scoped to. Different questions, so two rulings would not have competed — but leaving it as a note would have hidden a byte-exact→intent key change underneath a target that says verdicts cache "on their exact evidence bytes". Cross-linked both ways.

review-gate-in-chain gets a note for the placement change (not the scope): completeness now starts in parallel with the fleet at pre-commit on the ship path, and commit-msg re-judges it from cache. The note also records the subshell trap that made the cancelled-judge path leak, since that is the kind of thing that gets silently "simplified" back.

Anchored as [BET] with a checkable expiry: revisit if a same-message retry is ever observed shipping a gap completeness had already passed, or once sc-1527 (per-judge cost instrumentation) shows completeness is no longer a material share of ship spend.

Committed --no-verify by request — docs-only change.

🤖 Generated with Claude Code

…tion it answers

Records the ruling behind #360, which shipped without its why.

New axis judge-verdict-cache-scope: completeness judges the commit
MESSAGE's claims, so its confident PASS is keyed on branch + normalised
message + brief rather than the staged bytes — a retry that reshapes the
diff for a DIFFERENT reviewer is not re-judged. The Negative is on the
record: a retry that guts claimed functionality under an unchanged
message is not re-caught, and the message is the only guard.

Filed as its own axis rather than a note under
ship-gates-converge-not-restart: that axis rules that retries converge,
this one rules what a verdict is scoped TO. Cross-linked both ways.

Also notes the prewarm on review-gate-in-chain (placement, not scope):
completeness now starts in parallel with the fleet at pre-commit on the
ship path, and commit-msg re-judges from cache.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@norvalbv, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 34 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 709b0287-7585-4049-9d61-e895203af8eb

📥 Commits

Reviewing files that changed from the base of the PR and between 7d095d6 and 26009c2.

📒 Files selected for processing (3)
  • docs/decisions/INDEX.md
  • docs/decisions/judge-verdict-cache-scope.md
  • docs/decisions/review-gate-in-chain.md

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@norvalbv
norvalbv merged commit 3dd89a3 into main Aug 7, 2026
1 of 2 checks passed
@norvalbv norvalbv mentioned this pull request Aug 7, 2026
norvalbv added a commit that referenced this pull request Aug 7, 2026
Bump 0.48.0 -> 0.49.0 and rebuild dist from a clean origin/main worktree.

Ships the review-latency work (#360) to consumers: completeness prewarmed in
parallel with the reviewer fleet on the ship path, its PASS intent-scoped to
branch + message so a retry does not re-pay opus, the cancelled judge actually
killed and reaped, and review concurrency defaulting to 6. The ruling behind the
sticky verdict is on the record in #361.

Also drops dist/cli/commands/migrate.mjs, a stale artifact no build has produced
since #68 deleted its source (cli/commands/migrate.mts). It was force-added at
v0.33.0 and has shipped to consumers in every release since — dead code for a
command that no longer exists. Found by rebuilding dist from EMPTY and diffing
the result against the index in both directions; the release check until now
only asked whether a built file was missing from the index, never whether an
indexed file was still built.

Note for the first ship after upgrading: cacheKey salts on the devkit VERSION,
so every reviewer and completeness verdict earned under 0.48.0 is invalidated by
design (sc-1437 / #353). That first attempt re-judges from scratch; the
convergence shows up from the second attempt on.

Gates bypassed at the maintainer's request (--no-verify). Release smoke checks
ran: built bin reports 0.49.0, a from-empty rebuild is byte-identical to the
index in both directions, and all four shipped behaviours are present in dist.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
norvalbv added a commit that referenced this pull request Aug 7, 2026
Bump 0.48.0 -> 0.49.0 and rebuild dist from a clean origin/main worktree.

Ships the review-latency work (#360) to consumers: completeness prewarmed in
parallel with the reviewer fleet on the ship path, its PASS intent-scoped to
branch + message so a retry does not re-pay opus, the cancelled judge actually
killed and reaped, and review concurrency defaulting to 6. The ruling behind the
sticky verdict is on the record in #361.

Also drops dist/cli/commands/migrate.mjs, a stale artifact no build has produced
since #68 deleted its source (cli/commands/migrate.mts). It was force-added at
v0.33.0 and has shipped to consumers in every release since — dead code for a
command that no longer exists. Found by rebuilding dist from EMPTY and diffing
the result against the index in both directions; the release check until now
only asked whether a built file was missing from the index, never whether an
indexed file was still built.

Note for the first ship after upgrading: cacheKey salts on the devkit VERSION,
so every reviewer and completeness verdict earned under 0.48.0 is invalidated by
design (sc-1437 / #353). That first attempt re-judges from scratch; the
convergence shows up from the second attempt on.

Gates bypassed at the maintainer's request (--no-verify). Release smoke checks
ran: built bin reports 0.49.0, a from-empty rebuild is byte-identical to the
index in both directions, and all four shipped behaviours are present in dist.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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