revert: drop the stale-base un-park recovery (#7602) - #7640
Conversation
Reverts #7602. The Fleet Shepherd (qwen-fleet-shepherd.yml) now keeps the bot fleet within 25 commits of main by proactively update-branching, and #7595 already retries a stale-base gate rejection at ANY behind distance instead of parking — so a PR no longer parks because its base went stale. That leaves #7602 firing only on a PR parked by a GENUINE failure that later drifted behind main, where re-arming it just re-runs a real failure on a fresh base — speculative, near-zero value, and it carried its own autofix-handoff marker plus scan/report logic and tests. The retroactive cases it was built for (PRs parked before #7595) were already recovered by hand. Keeps #7595 (reactive stale-base gate recovery below the shepherd's threshold) and #7554 (check-driven stale-base sync) — both cover the sub-25-behind window and triggers the shepherd does not.
|
@qwen-code /takeover |
|
🤝 Takeover engaged: the autofix loop now manages this PR — it will address new review feedback and resolve base conflicts until the label is removed or the round cap is reached. Remove the 中文说明🤝 已接管:autofix 循环现在管理此 PR —— 将持续处理新的评审反馈与 base 冲突,直到移除标签或达到轮次上限。移除 |
|
Thanks for the PR! Template looks good ✓ — all required sections are present with thorough content. Problem: This is a revert of the author's own recent addition (#7602), not a theoretical fix. The Fleet Shepherd workflow that landed on main proactively Direction: CI automation cleanup — removing a now-dead recovery path from the autofix workflow. Squarely within scope. No auth/sandbox/model/telemetry/public-contract concerns. Size: Not applicable — no core paths touched. 0 additions, 245 deletions across 2 files ( Approach: Pure revert — the most minimal change possible. Removes exactly the #7602 surface: the Moving on to code review. 🔍 中文说明感谢贡献! 模板完整 ✓ —— 所有必需章节齐全,内容详实。 问题: 这是作者回退自己近期添加的 #7602,而非理论性修复。合入 main 的 Fleet Shepherd 工作流会主动对落后 main 超过 25 个 commit 的 bot PR 执行 方向: CI 自动化清理——从 autofix 工作流中移除一条已死的恢复路径。完全在范围内。无 auth/sandbox/model/telemetry/公共契约方面的顾虑。 规模: 不适用——未触及核心路径。0 行新增,245 行删除,涉及 2 个文件( 方案: 纯回退——最精简的改动。精确移除 #7602 的表面积: 进入代码审查 🔍 — Qwen Code · qwen3.8-max-preview Reviewed at |
Code ReviewIndependent proposal: For a revert of #7602, I'd Comparison with the diff: The PR matches this exactly. Four removal sites in the workflow file, three test blocks in the test file — all surgically clean:
No critical blockers. No AGENTS.md violations. No orphaned references anywhere in the codebase. The diff carries zero unrelated changes. Verification98 tests pass (down from 101 — the 3 removed #7602 tests). No regressions. 中文说明代码审查独立方案: 回退 #7602,我会 与 diff 对比: PR 完全匹配。工作流文件四处移除、测试文件三个测试块——全部精确干净:
无关键阻塞。无 AGENTS.md 违规。代码库中无孤立引用。diff 不含任何无关改动。 验证符号验证:#7602 符号全部为 0,#7595/#7554 符号完整保留(STALE_BASE_RETRY ×4、updated a stale base ×2、STALE_BASE_REDS ×5)。YAML 有效,37 个 — Qwen Code · qwen3.8-max-preview Reviewed at |
|
Confidence: 5/5 — Clean revert of genuinely redundant code; would merge without hesitation. This is a maintainer reverting their own recent addition after the Fleet Shepherd landed and made it redundant. The motivation is honest and well-evidenced — the mechanism-overlap table in the PR body makes the redundancy obvious: #7595 prevents stale-base parking at the source, the shepherd proactively updates stale bases, and #7602's retroactive un-park fires only on a PR that was genuinely parked (up to date) and then drifted behind, where re-arming just re-runs a real failure on a fresh base. The execution is surgical — 0 additions, 245 deletions, four clean removal sites in the workflow and three test blocks. Every #7602 symbol is gone, every #7595/#7554 symbol is intact, the YAML parses, all 37 If I had to maintain this in six months, I'd thank the author for removing dead code before it became confusing. The worst case (a genuinely parked PR that drifts far behind) falls back to the pre-#7602 behavior — a human 中文说明置信度:5/5 —— 干净地回退了确实冗余的代码;毫不犹豫地合并。 这是一位维护者在 Fleet Shepherd 落地后回退自己近期的添加。动机诚实、证据充分——PR 正文中的机制重叠表格清楚地说明了冗余性:#7595 从源头阻止 stale-base 搁置,shepherd 主动更新陈旧 base,而 #7602 的回溯式 un-park 只会在一个确实被搁置(当时是最新的)后又漂移落后的 PR 上触发——此时 re-arm 只是把真失败在新 base 上再跑一遍。 执行精确——0 行新增,245 行删除,工作流四处干净移除、三个测试块。所有 #7602 符号已清除,所有 #7595/#7554 符号完好,YAML 可解析,37 个 如果六个月后我来维护,我会感谢作者在死代码变得令人困惑之前将其移除。最坏情况(一个确实被搁置又漂移很远的 PR)回退到 #7602 之前的行为——人工 — Qwen Code · qwen3.8-max-preview Reviewed at |
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
LGTM, looks ready to ship. ✅
Code Coverage Summary
CLI Package - Full Text ReportCore Package - Full Text ReportFor detailed HTML reports, please see the 'coverage-reports-22.x-ubuntu-latest' artifact from the main CI run. |
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
No issues found. LGTM! ✅
— qwen3.7-max via Qwen Code /review
Review + verification report (Linux, surgical-revert audit + suite comparison at merge-base)Verdict: the revert is surgical (every fingerprint count reproduces exactly), the redundancy argument holds up against the code actually on this tree, and no test failure is attributable to the revert. Support merging. Surgical-revert audit (commit 01a65d7)Reproduced the PR's own verification numbers independently against
YAML parses cleanly with The redundancy argument, checked against the tree
Test suite — failures are environmental, none from the revertThe suite is not green in my environment (22/98 fail on this PR), but the decisive comparison is against the PR's merge-base with identical setup: 20 fail there, with the same failure names everywhere both trees have the test — all of the One appreciationThe PR reverts the author's own recent work with a clear mechanism table and an honest "a step too far" — this is what keeping the recovery-lever inventory minimal looks like in practice. The removed 245 lines were not just redundant; they were a competing writer in the same park/re-arm state machine. |
|
🤖 Reviewed the latest feedback — no changes needed. Why, point by point: · 已审阅最新反馈——无需改动。逐点说明原因如下: Autofix review triage — no action neededI triaged every feedback point newer than the last evaluation on PR #7640. None is actionable, so no code change was made and the head branch is unchanged. Feedback classification
DecisionNo required fix, no optional suggestion, and no maintainer decision surfaced this round. The PR is a pure revert (245 deletions across 中文说明Autofix 评审分诊 — 无需处理我对 PR #7640 上自上次评估以来的所有反馈点进行了分诊。没有任何一项是可执行的,因此未做代码改动,head 分支保持不变。 反馈分类
决定本轮没有出现任何必须修复的问题、可选建议或需要维护者决策的事项。该 PR 是一个纯粹的回退(在 Base-conflict check · 基分支冲突检查: no conflict with main. · 与 main 无冲突。 🧠 Handled by Qwen Code · model/模型 |
Independent local verification report (head
|
|
🤖 Reviewed the latest feedback — no changes needed. Why, point by point: · 已审阅最新反馈——无需改动。逐点说明原因如下: No action requiredThe only feedback on this PR is an independent local verification report from @gwinthis confirming the revert is byte-exact, the marker audit matches, the subsumption argument holds against the live code, and the test failure set-difference shows no regressions beyond the intentionally deleted test. The report concludes with LGTM. There are no inline comments, no change-requested reviews, and no failed or still-red CI checks to address. 中文说明无需操作本 PR 收到的唯一反馈是 @gwinthis 的独立本地验证报告,确认该 revert 与机械 没有行内评论、没有要求修改的 review、也没有失败或持续红色的 CI 检查需要处理。 Base-conflict check · 基分支冲突检查: no conflict with main. · 与 main 无冲突。 🧠 Handled by Qwen Code · model/模型 |
yiliang114
left a comment
There was a problem hiding this comment.
Approve ✅
Clean revert of #7602's retroactive stale-base un-park recovery. The Fleet Shepherd's proactive update-branch for bot PRs 25+ commits behind main makes this scan-side recovery redundant.
The in-round stale-base update (in the report step) is preserved — only the retroactive path for already-parked PRs is removed. The latency tradeoff (Fleet Shepherd runs on its own schedule vs. the old per-scan check) is acceptable since stale-base failures are uncommon and self-resolving.
No code concerns — pure deletion, no logic changes to the remaining paths.
|
Released in v0.21.1. |
What this PR does
Reverts #7602 (the retroactive "un-park a PR parked on a stale base" recovery). Keeps #7595 and #7554. Removes an
autofix-handoffmarker, the scan-side un-park logic, and its two tests — 245 lines of now-redundant surface.Why — the assessment
The
Fleet Shepherd(qwen-fleet-shepherd.yml) that landed on main changes the picture. Its stale-base lever proactivelyupdate-branches any bot PR more than 25 commits behind main, so the fleet is kept fresh upstream. Combined with #7595, the case #7602 was built for no longer arises:behind_by > 25→ update-branch (never re-arms)Honestly: this reverts one of my own recent additions. Building #7595 (reactive) then #7602 (retroactive) before the shepherd's proactive approach landed was a step too far — the shepherd is the right primary solution and #7602 is the redundant tail. Removing it is the minimal-change correction.
Reviewer Test Plan
git revertof feat(autofix): auto-recover a PR parked on a stale base #7602's squash commit applied with no conflict; verified surgically:autofix-handoff,PARKED_STALE_CANDIDATE,HANDOFF_HEADare gone (0), while feat(autofix): update a stale base when the gate rejects a behind-main fix #7595 (STALE_BASE_RETRY×4,updated a stale base×2) and feat(autofix): auto-update a PR red only from a stale, since-fixed base #7554 (STALE_BASE_REDS×5) are untouched. feat(autofix): auto-recover a PR parked on a stale base #7602's two tests are removed; feat(autofix): update a stale base when the gate rejects a behind-main fix #7595'sstaleBehindcases remain.eligibility recheck,takeover-command toggle,permanent API failures terminal— a different subset fails each run and each passes in isolation).js-yamlparses; all 37run:blocks passbash -n; actionlint 1.7.12 clean; prettier clean.Risk & Scope
@qwen-code /retry(or the shepherd's sync leaving a fresh base for a manual re-arm) covers that rare case, which is the pre-feat(autofix): auto-recover a PR parked on a stale base #7602 behaviour.Linked Issues
Reverts #7602. Follow-up to the Fleet Shepherd landing, which made the retroactive un-park redundant.
中文说明
本 PR 做了什么
回退 #7602(回溯式"un-park 因 stale-base 而搁置的 PR")。保留 #7595 和 #7554。移除一个
autofix-handoffmarker、扫描侧 un-park 逻辑及其两个测试 —— 245 行如今冗余的表面积。为什么 —— 评估结论
合入 main 的
Fleet Shepherd(qwen-fleet-shepherd.yml)改变了格局。它的 stale-base lever 对任何落后 main 超过 25 个 commit 的 bot PR 主动update-branch,从上游保持车队新鲜。结合 #7595,#7602 当初要解决的情形不再出现:坦白:这回退的是我自己近期的添加。在维护者的主动式 shepherd 落地之前先建 #7595(反应式)、再建 #7602(回溯式),多走了一步 —— shepherd 才是对的主方案,#7602 是冗余的尾巴。移除它是"最小修改"的纠偏。
评审验证
git revertfeat(autofix): auto-recover a PR parked on a stale base #7602 的 squash commit 无冲突;精确核对:autofix-handoff/PARKED_STALE_CANDIDATE/HANDOFF_HEAD全 0,而 feat(autofix): update a stale base when the gate rejects a behind-main fix #7595(STALE_BASE_RETRY×4、updated a stale base×2)和 feat(autofix): auto-update a PR red only from a stale, since-fixed base #7554(STALE_BASE_REDS×5)原封不动;feat(autofix): auto-recover a PR parked on a stale base #7602 两个测试移除,feat(autofix): update a stale base when the gate rejects a behind-main fix #7595 的staleBehind保留。eligibility recheck、takeover-command toggle、permanent API failures terminal—— 每次失败子集不同、各自隔离下通过)。run:块过bash -n;actionlint 1.7.12 clean;prettier clean。风险与范围
@qwen-code /retry(或 shepherd 同步留下新 base 后手动 re-arm)覆盖这一稀有情形,即 feat(autofix): auto-recover a PR parked on a stale base #7602 之前的行为。关联 Issue
回退 #7602。Fleet Shepherd 落地后的跟进,使回溯 un-park 变得冗余。