Repository navigation
Release 0.14.1: judge isolation, evidence shapes, gate and Stop-hook fixes - #219
Conversation
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_d84545f0-7b7a-4995-b22e-0a76e66133e0) |
|
Warning Review paused — included plan limit reachedKeep your review moving with free on-demand reviews.
On-demand reviews are free for the next 9 days.
Reviews can continue after your included limit without a manual trigger. An admin must approve usage-based billing. Promotion and pricing detailsOn-demand reviews are free for the next 9 days. After that, they cost $0.25 per reviewed file. Review limit detailsOr wait 14 minutes for your next included review. Limit details: You’ve used the included review currently available. Your 61 included PR review attempts over the past 7 days set your current allowance at 1 review per hour. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Essentials Run ID: 📒 Files selected for processing (19)
Comment |
Release 0.14.1 — patch release with four fixes merged since 0.14.0.
0.14.1 - 2026-10-01
Fixed
claude-cli/*judge runs without the user's hooks, and rejects a turn continued past itsverdict. The codex arm already ran with the user's hooks and plugins off (Codex judge reasoning is replaced by a metareview hook notice; adjudications are not auditable #193), but the claude
arm still loaded the user's settings, so a Stop hook could speak in the judge's session and the
recorded verdict could answer the hook instead of the finding. It now passes
--settings '{"disableAllHooks":true}'(--barewould skip the keychain and with it the OAuthsession this transport exists to use), and a turn that continues past the verdict is retried and
then failed closed — the
--output-format jsonenvelope exposes only the final result, so thereported turn count (
num_turns) is the continuation signature. Reported in Codex judge reasoning is replaced by a metareview hook notice; adjudications are not auditable #193 (beadmr-bq4).phrase and any failure shape the reader did not enumerate read as passing — pytest
no tests ran(exit 5),
make: *** No rule to make target, Gopanic:/WARNING: DATA RACE, a shell'scommand not found/Permission denied/Aborted/Killed,N offenses detected, and more.The reader now matches a second, line-anchored set of shapes: each must start the line in a
fixed tool format, with a fixed token before the phrase where the phrase could otherwise appear in
prose, so prose that merely names a phrase never reads as a failure. A shape that cannot be pinned
that tightly is deliberately not a pattern — prefer an evidence receipt. Tracked as bead
mr-b08.pr-readyclears a committed review log only when the ledger vouches for every ID under its## Blocking Findingssection. The gate used a lenient reading that skipped finding IDs theledger did not know, so resolving the IDs a local ledger happened to hold retired a log that also
listed a blocker nobody's ledger ever held — while
statusstill reported it blocking. The gatenow uses a strict, blocker-only predicate (an unknown blocking ID is unvouched; the run's
BlockingFindingCountis the tripwire against a pruned or unknown blocker), and is deliberatelynot strict about the advisory or quoted IDs that would otherwise pin a log unresolved forever.
Tracked as bead
mr-ik7.stop_hook_active.Codex reports that flag
falseduring hook-driven continuations, so a session blocked onsomething it could not clear was refused on every turn — a hang, which teaches operators to remove
the hook. The hook now counts consecutive refusals per session — a small limit on the same
blocker set, and a larger session-wide cap for a set that keeps changing — and stands down loudly
at either, exactly as the host-driven second pass does, clearing the record on a pass or a
stand-down. Its state lives in a private, ownership-checked cache directory and is best-effort: it
fails toward blocking, never toward a silent pass. Tracked as bead
mr-j30.Changed
.pi/(pi subagent scratch) is gitignored, and the.claude/settings.jsonreview-gate note namesthe post-Move the FSM run store and materialized git hooks into git's common directory, with migration #173 user-level hook directory rather than the old per-checkout path.
Note
Medium Risk
The release changes judge sessions, evidence parsing, pr-ready blocker reconciliation, and Stop-hook behavior—areas that affect whether gates pass or block correctly.
Overview
Release 0.14.1 bumps the version across npm/plugin manifests,
internal/version, and documents four patch fixes inCHANGELOG.md.The release carries judge isolation for
claude-cli/*(disableAllHooks, fail-closed on post-verdict continuations), line-anchored freeform evidence failure detection, stricterpr-readyclearing of committed logs (every blocking finding ID must be ledger-vouched), and Stop-hook refusal caps so Codex hook continuations cannot hang forever. A minor Changed note covers.pi/gitignore and updated hook-path documentation.This diff also adds metareview gate artifacts (pr-ready context, FSM review-loop export) and granted process overrides in
FINDINGS.mdfor stale blockers from an earlier pr-ready run on the release branch.Reviewed by Cursor Bugbot for commit 6e406e7. Bugbot is set up for automated code reviews on this repo. Configure here.