Repository navigation
landscape-sweep: treat Codex's 429 report as a limit; retain the 2026-09-29 run's cost and GPT-6 job outcomes - #513
Merged
seathatflowsinourveins merged 2 commits intoSep 29, 2026
Conversation
…-09-29 run's cost and GPT-6 job outcomes Codex retries no 429 (rust-v0.157.1: retry_429 is false for every provider, and api_bridge.rs builds RetryLimit in its 429 arm), so a pooled route's 429 ends a job at once with "exceeded retry limit, last status: 429 Too Many Requests". codex_job.py now treats that report as a limit: exit 3, LIMIT holding a reason and no reset time, later starts refused. The README, the recipe's cost class and a decision record say what the report can and cannot tell. Retains the run's spend scan (executor + advisor, by round and role, wall clock) and its GPT-6 job outcomes as sanitized records, and corrects the recipe's cost class (the facts refuters were Opus, not Sonnet). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
…ulation The completed-job duration statistics in gpt6-job-outcomes.json cover the 44 jobs with a completed turn (43 sweep jobs and one probe); say so in the record. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
seathatflowsinourveins
deleted the
claude/sweep-gateway-429-limit-20260929
branch
September 29, 2026 16:48
4 tasks done
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.
Scope
codex_job.py) treats Codex's report of an HTTP 429 that carries no usage-limit body as a limit: the job ends with exit 3,<work-dir>/LIMITholds a reason and no reset time, and later starts are refused. It adds tests for it, corrects the harness README bullet and the recipe's cost class, retains two sanitized records of the 2026-09-29 run (its spend scan and its GPT-6 job outcomes) and adds a decision record. It changes no selection, pin, winner, verdict or sealed artifact.be97e882lane:foundation(tools/,recipes/,tests/,docs/, and new files underevidence/artifacts/landscape-sweep-20260929-attempts/;manifests/evidence.jsonchanges only file registrations, whichdocs/lanes.mddoes not treat as shared).tools/sota-convergence/landscape-sweep/codex_job.py,tools/sota-convergence/landscape-sweep/README.md,recipes/saturation-sweep.md,tests/test_landscape_sweep_harness.py,docs/decisions/2026-09-29-sweep-429-limit-marker.md(new),evidence/artifacts/landscape-sweep-20260929-attempts/spend-scan-wf_08a5b367-311.json(new),evidence/artifacts/landscape-sweep-20260929-attempts/gpt6-job-outcomes.json(new),manifests/evidence.json(registrations only).SOTA sources
rust-v0.157.1(https://github.com/openai/codex/tree/rust-v0.157.1), read throughgh apion 2026-09-29:codex-rs/model-provider-info/src/lib.rs:442-448(every provider's retry policy hasretry_429: false),codex-rs/codex-client/src/retry.rs:22-30(an HTTP status is retried only when that flag orretry_5xxallows it),codex-rs/codex-api/src/api_bridge.rs:159-207(a 429 whose body is notusage_limit_reached,usage_not_includedor a quota error becomesRetryLimitReachedError { status, request_id }, the only construction site a code search of the repository finds),codex-rs/protocol/src/error.rs:398and:650(RetryLimitis terminal inretry_delay; the Display text the runner matches),codex-rs/core/src/responses_retry.rs:64-66(no delay, so the error is returned),codex-rs/exec/src/event_processor_with_jsonl_output.rs:447-456and:544-556(theerrorandturn.failedevents the runner reads).tools/sota-convergence/landscape-sweep/README.md,recipes/saturation-sweep.md.evidence/artifacts/claude-spend-scan.py.txt(Spend attribution 2026-09-29: count-only scan, ccusage-reconciled receipt, run-shape section and decision record #500) for the run's cost, and the retained child-usage record of the run (Landscape sweep 2026-09-29 record: 20 foundation layers, 188 candidates, 37 survivors, manifest-20260929 (six layers reopened by Codex 429s) #506), which it reconciles with exactly.Evidence-class table
exceeded retry limit, last status: 429 ..., whether the pool is exhausted or briefly rate limited; the report cannot tell the two apartsource_reviewgh apilocal_integration(one-off read of the run's private job directories; the full output stays there)evidence/artifacts/landscape-sweep-20260929-attempts/gpt6-job-outcomes.jsonitem.*content, a stderr diagnostic and any other status are not limitslocal_integrationtests.test_landscape_sweep_harness: 126 tests OK. The other status cases (500, 502, 4290, 404) are synthetic pattern-boundary checks, since Codex builds this report for a 429 onlylocal_integration(mutation check, restored)codex_job.pyfromorigin/mainand this head's tests: FAILED (failures=2),test_gateway_429_sets_the_marker_with_a_reason_and_blocks_later_startsandtest_limit_detection_reads_only_codex_error_reportsnative_proven(list-price proxy from provider usage in the native transcripts)evidence/artifacts/landscape-sweep-20260929-attempts/spend-scan-wf_08a5b367-311.json(the retained scan run once per group over the transcripts of the agents the child-usage record lists;ccusageshows $398.35 for the run, Opus only)not_measurednative_proven(reads at the time)scripts/codex_quota.py --jsonreads 100% used on the 10080-minute windowLocal commands run
Decision record
docs/decisions/2026-09-29-sweep-429-limit-marker.md: the defect, the decision (one 429 stops the sweep), the upstream facts, alternatives (keep the old behavior; stop after two 429s; read the pool in the runner), the consequence, the residual and what would overturn it.An independent read-only Opus review of the first head found three fix-level defects and four notes, all repaired here: (1) the code, the
LIMITreason, the README and the tests said "after Codex's retries" and "exhaustion", but Codex retries no 429, so the report appears at the first one and cannot tell exhaustion from a brief limit; (2) the recipe called the facts refuters Sonnet, but the retained record shows all 29 requested Opus (the Sonnet children are the GPT-6 wrappers); (3) the cost, duration and job-count figures had no receipt in the repository, and the README's "$82" had no basis (both records are retained now, and the figure is gone); notes on a wrong incident date in the README, the "removeLIMITafter the reset" line for a path with no reset time, the recipe's "probe before the follow-up round" (the follow-up starts by itself after the critic), and the precedence comment (a usage-limit report wins within one source). This repaired head was not re-reviewed (one review, one repair round), and the cross-family Codex review was not run because Codex has no capacity.Flags for the owners:
flag(Codex capacity, unchanged): the six layers reopened by Landscape sweep 2026-09-29 record: 20 foundation layers, 188 candidates, 37 survivors, manifest-20260929 (six layers reopened by Codex 429s) #506 (document-retrieval,web-research,token-efficiency,ci-supply-chain,recovery-portability,observation-inference) need their GPT-6 follow-up votes; that needs a new Codex account or the reset at 2026-10-04T00:35Z.flag(child-usage.mjs): it does not count advisor iterations, which were 23.8% of this run's cost; the change is queued for after the Gate A window (agent-lab first).flag(convert.py): it keeps each GPT-6 job's status but not its error text, soreturns.jsoncannot show why a job failed; the job-outcome record here was read from the private work directory.Host evidence
Not applicable (no
evidence/hosts/files).Checklist
permissions: contents: read(none changed).🤖 Generated with Claude Code