Codex/swe bench pro prod multiagent eval - #4
Merged
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Summary
multiagent_frameworkEvaluation Boundary
The supported benchmark entrypoint is
python3 -m evaluation.swe_bench_pro. It bakes the production repository into each task image, changes to/opt/multiagent, and launches:That package calls the same
launch.shorchestrator/worker/verifier workflow used outside evaluation. EvalScope receives clean accepted patches normally. A final production gate rejection is scoreable only when the framework publishes the versionedsubmission_gate_rejectionterminal artifact and dedicated exit code3; the runner then discards the rejected diff and scores a clean no-submission workspace. Legacyrc=2, timeouts, malformed signals, and runner/infrastructure failures remain fail-closed.The historical first-50 page records a cumulative best-known
36/50aggregate assembled across focused reruns. It is not a single held-out run from commit66638d2, and this PR does not claim that it is.docs/benchmark.mdrecords the recovered historical provenance, missing raw artifacts, and exact fresh-run command. A new score is publication-ready only when the provenance capture and validation commands succeed: they bind clean solver/EvalScope/verifier commits, dataset hash, effective configuration, official report, native event log, actual in-container Codex/Node versions, and content-addressed base/derived image identities. The derived image itself carries the full solver-source digest label.Framework Refactor
The former monolithic native solver is split by responsibility:
solve_swe_prod.py: 157-line packaged entrypoint and compatibility facadeswe_prod_lifecycle.py: lifecycle coordinationmultiagent_framework/coding/contracts.py: framework-neutral public requirement extraction, issue-coverage gating, provenance/history contracts, and contract-ledger renderingmultiagent_framework/{snapshot,verification,state,gate}.py: exact-diff identity, structured evidence, atomic state, and final submission gatemultiagent_framework/provenance.py: reusable clean-Git identity and relocatable SHA-256 artifact-bundle primitives; the SWE semantic adapter remains under 300 linesAll repeated
try/except ImportErrorimport fallbacks and wildcard imports are removed fromevaluation/native_solver. Import-time dependency failures now preserve the original traceback. The legacy entrypoint helper surface remains enumerable for existing named, wildcard,dir(), andmodule.__dict__consumers without using wildcard imports internally.SWE-specific code retains only public metadata sanitization, prompt-envelope handling, adapter paths, and rendering. Framework boundary tests reject SWE Bench, EvalScope, hidden-test, benchmark-row, and
EVAL_*dependencies.System Diagram
flowchart TD User["User task"] --> Launch["./launch.sh"] Eval["Optional SWE Bench Pro adapter"] --> Bake["Bake production repo into task image"] Bake --> Module["python3 -m evaluation.native_solver.solve_swe_prod"] Module --> Launch subgraph Framework["General multiagent framework"] Launch --> Tmux["tmux orchestrator session"] Tmux --> Orchestrator["Orchestrator CLI"] Orchestrator --> Helper["bin/subagent.sh control plane"] Helper --> Scouts["Contract and scope scouts"] Helper --> Workers["Path-owned workers"] Helper --> Verifiers["Build and behavior verifiers"] Scouts --> State[("Findings and contracts")] Workers --> Repo[("Target Git repository")] Verifiers --> State Repo --> Snapshot["Exact binary Git diff + SHA-256"] Snapshot --> Verifiers State --> Todos["Blocking findings become repair todos"] Todos --> Orchestrator Verifiers --> Gate{"No blockers and evidence matches final diff?"} Gate -- "No: repair and reverify" --> Orchestrator end Gate -- "Yes" --> Accepted["Accepted final patch"] Accepted --> Official["Evaluation only: official scorer"]multiagent_frameworkis a short-lived Python standard-library control plane, not a daemon. The long-lived processes are the existing CLI agents in tmux.Public Entry Path
./scripts/demo.shruns a deterministic reject -> repair -> accept -> stale-diff reject flow in seconds without a model or API key.README.mdis reduced from more than 1,100 lines to 134 lines; the detailed operations reference moved todocs/getting-started.md.docs/technical-note.mdexplains the Codex/Claude worker/verifier composition and its limitations.examples/internal-pilot/runs paired baseline/orchestrated cells against 5-10 pinned real tasks and requires independent human review.docs/internal-pilot-request.mdprovides the evidence-bounded one-page internal ask and names the artifacts required before presentation, commitment, or results TODOs can close.TODO.mdkeeps the real internal pilot open; local presentation drafts are not counted as completed external evidence.Validation
bash tests/run.shpassed with Git signing disabled only for temporary fixture commitspython:3.8-slimpython:3.8-slim./scripts/demo.shpassedshellcheckandbash -npassed for new shell entrypointsgit diff --checkpassedThe Python 3.8 container run also found and fixed an existing runtime type-alias incompatibility in
multiagent_framework/gate.py; compatibility is now exercised by CI rather than inferred from syntax parsing alone.