fix(argus): /tmp verdict files, tolerant parsing, inline security scrutiny#2350
Merged
Merged
Conversation
…ine security scrutiny Follow-up to #2349 (arbiter split). Addresses four review findings where a recorded `request-changes` could silently degrade to a non-blocking COMMENT: 1. Verdict/body files moved from ${{ runner.temp }} to /tmp — the path proven writable by the reviewer's Write tool in this harness. Added a probe that warns when neither file was written. (4 paths + POST_FILE for consistency.) 2. Reworded the two surviving "Consult security-reviewer" prompt references to inline security-grade scrutiny — the Task subagent tool was removed in #2349. 3. Tolerant verdict parsing: match request-changes synonyms first (fail closed), bounded read via head -c 200 instead of exact bare-token match. 4. Valid verdict + empty body now posts under the verdict with a placeholder body instead of dropping to a COMMENT; tier-2 preamble distinguishes "no verdict recorded" from "verdict recorded but post failed". .github/ only (dev tooling) — no changeset needed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
benminer
approved these changes
Jul 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #2349 (arbiter split). Fixes four review findings — common thread: several degrade paths failed open, letting a recorded
request-changessilently become a non-blocking COMMENT (re-creating the stall #2349 fixed)..github/only (dev tooling) — no changeset needed. Because this PR modifies the review workflow, Argus won't auto-review it (paths-ignore + workflow-mod gate); a human merges it.Findings addressed
${{ runner.temp }}(outsideGITHUB_WORKSPACE, never validated as writable by the reviewer'sWritetool) to/tmp— the path the old prompt proved works. IfWritehad refusedrunner.temp, arbiter tier 1 would always fail → every PR degrades to COMMENT → Argus never approves. Added a log-visible probe when neither file is written. (POST_FILEalso moved to/tmpfor consistency; it's bash-written so it was never at risk.)security-reviewer" in MUST-FIX Fix Fly.io deployment timeout issues #2 and Set up conductor.json #9 after ci(argus): post via a deterministic arbiter; review inline #2349 removed theTasktool. Reworded both to inline security-grade scrutiny so the agent doesn't burn turns trying to spawn a subagent it can no longer create.request-changes(backticks,request changes, trailing punctuation) matched no exact token →EVENT=""→ posted as a non-blocking COMMENT. Now matches request-changes synonyms first (*request*chang*|*reject*|*block*→ fail closed), with a boundedhead -c 200read.--max-turns, a realrequest-changeswas degraded. Now posts under the verdict with a placeholder body; the tier-2 preamble distinguishes "no verdict recorded" from "verdict recorded but the post failed."Verification
npm run lint:workflows→ passed (16 files)js-yamlparse ofai-review.yml→ okbash -non the extracted arbiter script → okConsult|Delegate|-reviewer|-expert; allgh pr review/Taskhits are prohibitions/tmpThe real proof (reviewer no longer stalls, arbiter posts the right verdict) only comes from a live CI run on a source-code PR after this merges —
pull_request_targetruns the reviewer/prompt from the base SHA.🤖 Generated with Claude Code