Skip to content

Structural INCONCLUSIVE detection, Stop-hook integration, 1.8.0 - #9

Merged
andreidavid merged 1 commit into
mainfrom
inconclusive-structural
Jul 28, 2026
Merged

Structural INCONCLUSIVE detection, Stop-hook integration, 1.8.0#9
andreidavid merged 1 commit into
mainfrom
inconclusive-structural

Conversation

@andreidavid

Copy link
Copy Markdown
Owner

Follow-up to #8, closing the three integration gaps from its review and reworking the phantom-pass detector.

Detector. #8's prose regex misfired on reviews that merely discuss sandbox failures — which every review of this repo does. Detection is now structural and deliberately minimal: INCONCLUSIVE fires only when the review's event stream shows no successful execution activity at all — no command_execution that exited 0, no completed mcp_tool_call. Those are the activity types codex's exec JSONL serializer actually emits (verified against codex-rs/exec/src/event_processor_with_jsonl_output.rs; code-mode nested tool calls are dropped by that serializer, so a code-mode-only review reads INCONCLUSIVE — a documented, safe-direction residual until codex serializes those events). Verifying that activity actually read the repository is explicitly out of scope: shell output under-determines it, and a seven-layer forensic version of this check built during review minted a new counterexample per layer before being retired in favor of this one.

Integration. The Stop hook clears INCONCLUSIVE like ERROR/TIMEOUT and the state GC sweeps aged entries (previously the unknown-verdict bucket preserved them forever). The guidance is remote-aware like the fix loop: unpushed commits pair /codex-review-sandbox-mode danger-full-access with a repo-anchored git commit --amend --no-edit (new sha → fresh review under the new mode); pushed commits are never amended and get a one-off elevated review command carrying the configured CODEX_BIN and a shell-quoted repo path.

Tests: 112/112 (stub events now structurally realistic, with fixtures for zero-activity, all-failed, declined, MCP-only, and incidental-command cases), shellcheck clean, claude plugin validate passing. Version 1.8.0 covering #8 plus this.

The dogfooding story for the curious: this commit survived twelve of its own post-commit reviews across two sagas — the first capped out at #2's round limit (working as designed), and the loop's findings drove the detector from prose regex → git-command forensics → the minimal activity check, including one round where the reviewer cited codex's own serializer internals, which we verified against upstream source before acting.

🤖 Generated with Claude Code

Follow-up to #8's phantom-pass detection, fixing the integration gaps
found in review:

The detector is now structural instead of prose matching, and
deliberately minimal: INCONCLUSIVE fires only when the review's event
stream shows no successful execution activity at all -- no
command_execution item that exited 0 and no code-mode
dynamic_tool_call item. That is the one empirically observed failure
shape (a nested sandbox that refuses to initialize, so the review runs
nothing) and the only fact the stream states reliably. Verifying that
activity actually READ the repository is explicitly not attempted:
shell output under-determines it (compounds, pipelines, || fallbacks,
quoting, error-like content), and a far stricter seven-layer version
of this check minted a new counterexample per layer before being
retired. Partial sandboxes that permit some execution while denying
repo reads are a documented accepted residual. The prose regex the
detector replaces matched reviews that merely DISCUSS sandbox failures
-- which every review of this repo does. Legacy text-parser mode is
exempt (no event stream).

The Stop hook clears INCONCLUSIVE state like ERROR/TIMEOUT, and the GC
recognizes it as a known verdict and sweeps aged entries -- previously
it fell into the unknown-verdict bucket, which is preserved
indefinitely as corruption evidence, so abandoned INCONCLUSIVE state
was immortal.

The guidance message is remote-aware like the fix loop: an unpushed
commit pairs /codex-review-sandbox-mode danger-full-access with a
repo-anchored git commit --amend --no-edit (new sha, fresh review
under the new mode; a same-sha re-run is dedup-skipped); a pushed
commit is never amended and gets a one-off elevated review command
carrying the configured CODEX_BIN and shell-quoted repo path.

Stub modes emit realistic command_execution events; no_inspection,
failed_inspection, unrelated_command_pass (documented residual), and
dynamic_tool_pass cover the detector from all directions. README
documents the verdict. Version 1.8.0 covering #8 plus this hardening.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@andreidavid
andreidavid merged commit d680144 into main Jul 28, 2026
2 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