Repository navigation
fix: the bug reproduced from #726 - #730
dilux-bot[bot] wants to merge 1 commit into
Conversation
Written by the reproduction job from the report in #726; it fails on main, which confirms the bug. The fix goes in on top of it. 🤖 AI-generated · claude-sonnet-5-5 (Anthropic)
|
@soydiloreto: accept it (the 🤖 AI-generated · Claude Opus 5.5 (Anthropic) |
|
The pull request's board
🤖 AI-generated · Claude Opus 5.5 (Anthropic) |
|
The autopilot has a question before it goes on. The Spec leaves the poll interval of scripts/release-scenarios.py to a maintainer (it names it 'a maintainer's choice'), and both options make tests/repro/test_issue_726.py pass (it needs POLL >= 35 seconds with 24 issue scenarios at 2 calls a poll). Which one? 1) POLL = 60 (recommended): the real plan's 55 calls a round make 3300 an hour, leaving about a third of the 5000 budget for the calls outside the polls (opening, steps, clear, cleanup, land) and room for new scenarios; each until sees its state up to 45 seconds later, and a 10 to 15 minute scenario limit is still 10 to 15 polls. 2) POLL = 45: 4400 an hour for the real plan, faster scenarios, but little headroom, so a few more scenarios bring the limit back. Either way I add poll_budget() with RATE_LIMIT = 5000 checked in timing, update the --test checks and the wording in the docstring, tests/release/scenarios.yml and docs/versioning.md, as the Spec says. Answer 1 or 2. Answer here in your own words; the autopilot goes on with your answer ( 🤖 AI-generated · Claude Opus 5.5 (Anthropic) |
|
@soydiloreto: answer the autopilot's question #730 🤖 AI-generated · Claude Opus 5.5 (Anthropic) |
📝 What changes
The reproduction test plays one issue scenario through
release-scenarios.py playwith a fakegh, counts theghcalls between twosleep(POLL), and requires that every scenario oftests/release/scenarios.yml(24 today) polling at once stays within the test identity's 5000 requests an hour. Today a poll of an issue makes 2 calls (issue view,run list) and one of a pull request 3 (pr view, therun listof its head,run list), everyPOLL= 15 seconds: 24 × 2 × 240 = 11520 an hour for issues alone, and 17 issues × 2 + 7 pull requests × 3 = 55 calls a round, 13200 an hour, in the real plan. No change to the calls alone fits at 15 seconds (even 1 call a poll is 5760 an hour), so the interval has to grow.Options (a maintainer's choice: how fast each
untilsees its state, and so how long the release lane's scenarios take):POLL = 60. The real plan's 55 calls a round make 3300 an hour, which leaves about a third of the budget for the calls each scenario makes outside its polls (opening, steps,clear,cleanup, thelandpull requests) and room for new scenarios. Everyuntilsees its state up to 45 seconds later than now; a scenario's limit (10 minutes, at most 15) is 10 to 15 polls, still enough for the triage, the seal and the autopilot's result, which take minutes each.POLL = 45, the smallest round number that fits: 4400 an hour for the real plan, the issue-only test at 24 × 2 × 80 = 3840, but little room for the other calls or for more scenarios, so a few more scenarios would bring the limit back.Either way, in
scripts/release-scenarios.py: setPOLL; add a purepoll_budget(scenarios)(each scenario's calls a poll, 2 for an issue and 3 for a pull request, the same asobserve, × 3600 / POLL, summed) with aRATE_LIMIT = 5000it must stay under, and report it intiming(sorelease-scenarios.py planandcoveragerefuse a plan that polls past the limit, the next time a scenario is added);backoffkeeps itsmin(POLL * 2 ** tries, 120). Update the--testchecks that name 15 seconds (C3: the real plan, theuntilsleeps, "2 minutes: 8 polls", which become 2 polls at 60, or 3 at 45; C9 the limits; #698 backoff's first back-off), and add one: the real plan'spoll_budgetis underRATE_LIMIT, and a plan of many scenarios is refused bytiming. Then the wording that says "every 15 seconds": the module docstring, the comment intests/release/scenarios.yml(core-one-at-a-time), and docs/versioning.md's Scenarios paragraph, which also names the rate limit each scenario shares. Addtests/repro/test_issue_726.pyexactly as written ontest/repro-issue-726.Nothing widens a permission, secret, lane or limit: the release lane only polls less often.
💡 Why
Closes #728. The autopilot works it here in the open: one commit per criterion, each box ticked once its commit is pushed.
🎯 Acceptance criteria
Test: tests/repro/test_issue_726.py
🧭 Decisions
None yet: how the agent settles what the PRD leaves open, one line each.
🙌 Credits
🧪 How I tested it
The autopilot fills this in when it marks the pull request ready.
🤖 AI-generated · Claude Opus 5.5 (Anthropic)