You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Verify gate failed: verify_command exited with status 1
19
10%
Provider proxy 502/503 (auth_unavailable, unknown provider for model)
~19
10%
Claude Agent SDK is not installed (SDK runtime selected, SDK absent)
15
8%
Codex configuration drift, misc
~5
3%
Of 57 distinct ACs rejected by the verifier, only 13 ever completed on a later attempt (avg 2.4 attempts) — the rejection is systematic, not a phrasing problem.
codex_cli persists 0execution.tool.completed events against 6,830 execution.tool.started, so a rejected leaf cannot be audited after the fact.
A leaf whose transcript shows Edit hello.py and /bin/zsh -lc 'python3 -m pytest --doctest-modules -q hello.py' (real July case exec_33b50bc500a8) is rejected when:
the file was written through a shell command (cat > f <<EOF, sed -i, scaffolding, git apply) — no file_change item, no authenticated Bash lease → files_touched unsupported;
the Codex completion carries no exit_code, or an empty/truncated aggregated_output → tests_passed unsupported even with 1 passed in the output;
task_cwd differs from the worktree the runtime reports → files_touched unsupported.
Root cause: the verifier's ground truth is the shape of the transcript, not the workspace or the harness's own observation. Each runtime encodes tools differently, so every new host needs another matcher (#2245 is one such patch).
Levers
L1a ground files_touched in a before/after workspace snapshot the dispatcher takes itself (unforgeable, runtime-independent; unchanged files still rejected).
L1c persist codex tool completions for diagnosability.
L2 preflight the selected runtime (SDK importable, backend reachable) before dispatching any AC, and stop classifying proxy auth_unavailable/unknown provider as transient.
L3 verify_command exit≠0 — needs per-case data; out of scope here.
Removing 70% of the L1+L2 failure families lifts 59% → ~85%. Measured by 10 live ouroboros run executions of a fixed cli-todo seed before and after, with an independent product smoke as ground truth.
Each lever lands as its own single-subsystem PR referencing this issue.
Measurement (local event store, 2026-07-01 → 08-04,
~/.ouroboros/ouroboros.db)Fat-harness verifier failed (unsupported evidence claims: files_touched/tests_passed …)Verify gate failed: verify_command exited with status 1auth_unavailable,unknown provider for model)Claude Agent SDK is not installed(SDK runtime selected, SDK absent)codex_clipersists 0execution.tool.completedevents against 6,830execution.tool.started, so a rejected leaf cannot be audited after the fact.Reproduced false negatives (deterministic,
_verify_atomic_evidence_against_runtime_messagesfed codex-shapeditem.started/item.completedevents)A leaf whose transcript shows
Edit hello.pyand/bin/zsh -lc 'python3 -m pytest --doctest-modules -q hello.py'(real July caseexec_33b50bc500a8) is rejected when:cat > f <<EOF,sed -i, scaffolding,git apply) — nofile_changeitem, no authenticated Bash lease →files_touchedunsupported;exit_code, or an empty/truncatedaggregated_output→tests_passedunsupported even with1 passedin the output;task_cwddiffers from the worktree the runtime reports →files_touchedunsupported.Root cause: the verifier's ground truth is the shape of the transcript, not the workspace or the harness's own observation. Each runtime encodes tools differently, so every new host needs another matcher (#2245 is one such patch).
Levers
files_touchedin a before/after workspace snapshot the dispatcher takes itself (unforgeable, runtime-independent; unchanged files still rejected).tests_passed, the harness re-runs the claimed test command with a bounded timeout and uses its own exit code (extends fix(orchestrator): normalize paths and unwrap shell wrappers in fat-harness evidence matching (release blocker) #1591).auth_unavailable/unknown provideras transient.Removing 70% of the L1+L2 failure families lifts 59% → ~85%. Measured by 10 live
ouroboros runexecutions of a fixed cli-todo seed before and after, with an independent product smoke as ground truth.Each lever lands as its own single-subsystem PR referencing this issue.