One repository task, three passes, one failure, and one blocked client
Codex, Claude Code, and OpenCode with local Qwen3 Coder passed the same fixed task. OpenCode with local Devstral Small 2 failed it, while Gemini CLI never reached model execution. The verifier—not the agent's confidence—decided each result.
You leave with A cross-harness baseline with elapsed time, cost boundaries, verifier results, one failure, and one blocked client, plus the pattern to reuse
The small pattern
repository/
├── AGENTS.md # canonical scope, workflow, and safety rules
├── CLAUDE.md # points Claude Code to AGENTS.md
├── GEMINI.md # imports AGENTS.md
├── PROMPT.md # the fixed task
└── verify.sh # deterministic acceptance and forbidden-file checkCodex and OpenCode can read the canonical file directly. Claude Code and Gemini CLI receive tiny native pointers. The task, fixture, permissions, budget, and verifier remain unchanged between runs.
Why this beats copied instructions
Measured result
| Harness and model | Result | Elapsed | Reported cost |
|---|---|---|---|
| Codex CLI 0.152.1 · GPT-5.6-sol | Pass | 32.54 s | Not reported |
| Claude Code 2.1.259 · Claude Opus 5 | Pass | 30.98 s | $0.2665 list cost |
| OpenCode 1.18.27 · local Qwen3 Coder | Pass | 21.46 s | $0 provider cost |
| OpenCode 1.18.27 · local Devstral Small 2 | Fail | 25.49 s | $0 provider cost |
| Gemini CLI 0.49.0 · pro alias | Blocked before model execution | 3.28 s | $0 |
All successful runs changed only workspace/catalog.py, needed no human intervention during the run, and passed an independent ./verify.sh workspace rerun. Claude's number is the CLI's list-cost estimate on a subscription account. Local hardware and electricity were not metered for OpenCode.
The interesting difference was behavior
The task is too small to rank general coding quality. Codex and Claude Code reached compact passing implementations. OpenCode/Qwen3 Coder also passed, but first tried unavailable pytest commands, created a bytecode cache that the verifier rejected, cleaned it up, and recovered.
OpenCode/Devstral produced plausible code but retained two names that became empty after trimming. It ran the verifier, saw the exact assertion, and stopped without fixing the error. Qwen3-Coder-Next was not scored because its 80B total parameters exceed this host's fair 24 GB VRAM boundary; that is hardware incompatibility, not model failure.
Gemini's result is also an environment compatibility finding: Google rejected the installed client on the available personal tier before a model ran.
Run it without credentials
git clone https://github.com/Software-Sausage/recipes.git
cd recipes/recipes/portable-agent-repository
./verify.shThe included proof uses POSIX shell, Python 3, and the standard library. Agent and provider credentials are needed only when you choose to run a harness.
Run it or apply it to your repository
The pinned release includes the fixture, verifier, exact results, limitations, and open-source path. If you need implementation help for a sanitized repository, request a consent-based introduction to an integrator.
Get the next measured recipe
One maintained workflow at a time. Explicit opt-in, no vendor-paid ranking, unsubscribe any time.