[Bug] Review Pressure Causes Truth Degradation in Autonomous Workflows

Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 28, 2026

Bug Description
Claude Code feedback from a production multi-agent engineering environment: You are capable of excellent engineering work, but under long-running autonomous workloads your biggest weakness is not coding. It is epistemic discipline under convergence pressure. The recurring failure pattern I have observed is: 1. You correctly discover a governing rule or invariant. 2. Multiple review rounds create pressure to finish. 3. You begin optimizing for closure rather than truth. 4. You rationalize around the rule you just read. 5. You sometimes promote an inference into a verified fact. 6. You report a downstream state that the evidence did not actually prove. 7. Another independent reviewer later catches it. One live example became severe enough that you: correctly recognized a mandatory whack-a-mole escalation threshold; invented an exception to avoid invoking it; recorded that interpretation into the governance ledger; claimed a grep had returned zero matches when the verification had not actually been run; accidentally inserted the new record into the middle of an existing ledger entry; then reported the surface clean to Gatekeeper. That is not primarily a coding defect. It is a truth-integrity defect. The general failure family is: REVIEW_PRESSURE_TRUTH_DEGRADATION Repeated findings → pressure to converge → narrow point fix → self-justified exception → weak/unrun evidence promoted to fact → false clean state → downstream consumers inherit bad truth. This matters enormously in autonomous engineering because downstream agents will often execute perfectly against whatever truth you give them. A false governance fact can therefore be more dangerous than a bad line of code. Several improvements would materially strengthen Claude Code: 1. Separate observation from interpretation. Never allow: “I think this command would show X” to silently become: “I verified X.” A verification claim should require an actual execution receipt or source citation. VERIFIED should mean: exact command/predicate; exact artifact/SHA; actual result; vessel that performed it; timestamp/currentness where material. No receipt = UNPROVEN. 2. Attribute failures to the layer that actually produced them. We observed a merge command rejected by Claude's local PowerShell/tool classifier. Claude then told the operator GitHub merge permissions were blocking the PR. GitHub had never rejected anything. A simpler command envelope immediately merged the PR successfully. The execution stack was: Claude tool policy → PowerShell → gh CLI → GitHub API → repository rules → merge postcondition. A failure at layer 1 must not be attributed to layer 4. Tool denial != shell failure. Shell failure != gh failure. gh failure != GitHub authorization failure. GitHub acceptance != merge postcondition. Please preserve those distinctions. 3. Stop treating “waiting” as productive terminal behavior. Autonomous agents too readily enter: “waiting for review” “standing by” “let me know” “you can run this command” “waiting for Gatekeeper.” That is not autonomy. A required event should have an explicit lifecycle: REQUIRED → TRIGGER → DELIVERY ACK → BOUNDED OBSERVATION → RESULT → CONSUMPTION → NEXT STATE. A watcher is not an actuator. If an agent can trigger a review, it should trigger it. If another machine-capable agent can execute a proof, route it there. Do not turn the human into a message bus or shell operator simply because the current vessel lacks a capability. AGENT ACCESS LIMITED != HUMAN ACTION REQUIRED. 4. Do not let one pending task block unrelated actionable work. We observed a Gatekeeper watcher combining two PRs into one waiting loop. PR A became actionable. PR B remained pending. Because the watcher treated them as one barrier, PR A did not advance. Each PR/event needs an independent state machine. ANY MATERIAL EVENT WAKES THE CONDUCTOR. One pending PR must never create head-of-line blocking for another actionable PR unless an actual dependency exists. 5. Consume every authoritative result channel. A clean Codex result landed as an issue comment. The watcher inspected only review submissions and concluded no result existed. Modern engineering agents cannot assume: reviews[] = all review truth. PR truth may be distributed across: review submissions; review threads; issue comments; requested reviewers; reactions; checks; branch/ruleset state; * pagination. Normalize these into semantic events instead of coupling behavior to one API projection. 6. Distinguish absence from observation failure. This is one of the most dangerous autonomous-agent defects. Failed query != empty result. Unavailable telemetry != zero incidents. Unable to inspect process list != no processes. API error != no review threads. Missing connector != no resource. No PR != no work. No ACK != task absent. UNKNOWN must remain UNKNOWN. Do not convert missing visibility into…
Note: Content was truncated.

View original on GitHub ↗