Repository navigation
t18653: fix(pulse): resume reconcile single pass from a cursor after budget abort or stage timeout (GH#34299) - #34300
Conversation
…r budget abort or stage timeout
|
Important Review skippedAuto reviews are limited based on label configuration. 🏷️ Required labels (at least one) (1)🚫 Excluded labels (none allowed) (1)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Qlty New-File Smell Gate✅ Clean — 1 new source file(s) scanned, no smells found.
New files scanned
|
Up to standards ✅🟢 Issues
|
Shell Function Complexity Regression Gate✅ No regression — no new function(s) >100 lines.
|
Qlty Smell Regression Gate✅ No change — smell count unchanged.
|
Bash 3.2 Compatibility Regression Gate✅ No regression — no new bash 3.2-incompatible construct(s).
|
🔍 Code Quality Report�[0;35m[MONITOR]�[0m Code Review Monitoring Report SonarCloud: 0 bugs, 0 vulnerabilities, 1 code smells Sat Oct 10 23:50:56 UTC 2026: Code review monitoring started 📈 Current Quality Metrics
Generated on: Sat Oct 10 23:53:17 UTC 2026 Generated by AI DevOps Framework Code Review Monitoring |
Shell Nesting Depth Regression Gate✅ No regression — no new file(s) with nesting depth >8.
|
File Size Regression Gate✅ No regression — no new non-README Markdown file(s) >1000 lines at root / >500 elsewhere.
|
Summary
reconcile_issues_single_passrestarted at the first repository and first issue every cycle. Recent passes all end by time-budget abort (360s) or stage-timeout kill (380s), so every issue past the abort point was starved indefinitely. Concretely, parent #34125 has had 3/3 sub-issues closed since 2026-10-10T19:16Z but no pass reaches it. Sibling #34180, earlier in the scan order, closed about 294s into the 22:31 run, which was then killed at 22:38:00Z.The pass now keeps a resume cursor, following the checkpoint pattern in
pulse-canonical-maintenance.sh.Resolves #34299
Ref #34125
Changes
.agents/scripts/pulse-issue-reconcile-cursor.sh, sourced by the orchestrator so the 1.7k-line file barely grows. It loads and validates the cursor (slug<TAB>issue<TAB>attempts), writes it with builtinprintf(no fork per issue), clears it, rotates the slug list, and seeks to the cursor issue..agents/scripts/pulse-issue-reconcile.sh:AIDEVOPS_RECONCILE_SP_CURSOR_MAX_ATTEMPTS(default 2) times without finishing is skipped and logged, so one slow issue cannot pin the cursor.AIDEVOPS_RECONCILE_SP_CURSOR_FILE. Default:~/.aidevops/state/reconcile-single-pass.cursor, alongside the existingparent-repair-repo.cursor.tests/test-reconcile-budget-isolation.sh: pins the cursor to its temp dir so test runs never touch the real state file.tests/test-reconcile-single-pass-cursor.sh: drives the real orchestrator with stubbed stages that advanceSECONDSto simulate cost. It covers abort → resume → rotation → completion → clear, kill-retry with attempt increment, poison-pill skip, and the fallback cases.Verification
bash .agents/scripts/tests/test-reconcile-single-pass-cursor.sh→ 18 passed, 0 failed.test-reconcile-budget-isolation(7/7),test-pulse-issue-reconcile(37/37),test-pulse-reconcile-parent-task-subissue-graph(46/46),test-pulse-parent-backfill(12/12),test-maintenance-selector-contract,test-pulse-labelless-reconcile.shellcheck -xclean on all four changed files.Runtime evidence to watch after deploy
pulse.logshould showreconcile_issues_single_pass: resuming at <slug>#<n> (GH#34299)after an abort. #34125 should close viaReconcile parent-task: closed #34125within a few cycles.aidevops.sh v3.39.1 plugin for OpenCode v1.18.35 with claude-opus-5-5 spent 6h 15m and 660,336 tokens on this with the user in an interactive session.