Skip to content

fix: the bug reproduced from #726 - #730

Draft
dilux-bot[bot] wants to merge 1 commit into
mainfrom
fix/728-the-bug-reproduced-from-726
Draft

dilux-bot[bot] wants to merge 1 commit into
mainfrom
fix/728-the-bug-reproduced-from-726

Conversation

@dilux-bot

@dilux-bot dilux-bot Bot commented Nov 11, 2026

Copy link
Copy Markdown
Contributor

📝 What changes

The reproduction test plays one issue scenario through release-scenarios.py play with a fake gh, counts the gh calls between two sleep(POLL), and requires that every scenario of tests/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, the run list of its head, run list), every POLL = 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 until sees its state, and so how long the release lane's scenarios take):

  • A (recommended): 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, the land pull requests) and room for new scenarios. Every until sees 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.
  • B: 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: set POLL; add a pure poll_budget(scenarios) (each scenario's calls a poll, 2 for an issue and 3 for a pull request, the same as observe, × 3600 / POLL, summed) with a RATE_LIMIT = 5000 it must stay under, and report it in timing (so release-scenarios.py plan and coverage refuse a plan that polls past the limit, the next time a scenario is added); backoff keeps its min(POLL * 2 ** tries, 120). Update the --test checks that name 15 seconds (C3: the real plan, the until sleeps, "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's poll_budget is under RATE_LIMIT, and a plan of many scenarios is refused by timing. Then the wording that says "every 15 seconds": the module docstring, the comment in tests/release/scenarios.yml (core-one-at-a-time), and docs/versioning.md's Scenarios paragraph, which also names the rate limit each scenario shares. Add tests/repro/test_issue_726.py exactly as written on test/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

  • C1 Given the reproduction test tests/repro/test_issue_726.py exactly as written, when it runs on the fix, then it passes, where it failed on b25a3cf.
    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)

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)
@dilux-bot dilux-bot Bot added autopilot Opened by the autopilot from an accepted issue autopilot:run-1 The autopilot's runs on this pull request labels Nov 11, 2026
@dilux-bot

dilux-bot Bot commented Nov 11, 2026

Copy link
Copy Markdown
Contributor Author

@soydiloreto: accept it (the accepted label) or say why not #730

🤖 AI-generated · Claude Opus 5.5 (Anthropic)

@dilux-bot

dilux-bot Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor Author

The pull request's board

State
Waits on soydiloreto: answer the autopilot's question (link)

🤖 AI-generated · Claude Opus 5.5 (Anthropic)

@dilux-bot dilux-bot Bot mentioned this pull request Nov 11, 2026
@dilux-bot

dilux-bot Bot commented Nov 11, 2026

Copy link
Copy Markdown
Contributor Author

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 (autopilot:waiting).

🤖 AI-generated · Claude Opus 5.5 (Anthropic)

@dilux-bot

dilux-bot Bot commented Nov 11, 2026

Copy link
Copy Markdown
Contributor Author

@soydiloreto: answer the autopilot's question #730

🤖 AI-generated · Claude Opus 5.5 (Anthropic)

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autopilot:run-1 The autopilot's runs on this pull request autopilot Opened by the autopilot from an accepted issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The bug reproduced from #726

0 participants