(MOT-4229) feat(harness): max_fires fire budget + unbounded-cron advisory - #593
(MOT-4229) feat(harness): max_fires fire budget + unbounded-cron advisory#593andersonleal wants to merge 1 commit into
Conversation
rctest7 postmortem: an orchestrator's 10-second gate-check cron had no termination path. When its gate condition became unreachable it polled forever — 69 fires in 10 minutes until manually stopped. At 6 fires/min the fire-rate breaker (loop breaker #3) correctly never engages; nothing in the platform bounded the loop. - metadata.max_fires: N on react bindings — a lifetime budget of delivered fires. Every budgeted fire is stamped __fire_seq/__fire_budget; the Nth is stamped __final_fire + an explanatory note and retires the binding through the once teardown path. Fires past the budget are blocked and re-attempt teardown. Rejected on join predecessors and on once bindings with budget > 1. - Registering a standing cron binding (react or notify) without a termination path appends an advisory: fires FOREVER until unregistered; set max_fires and/or give the task a deadline escape. - E2E-010 fire-budget-retires-binding: standing budgeted call reaction, per-fire probe gating, removed:false retirement proof before a third fire is attempted.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
skill-check — worker0 verified, 48 skipped (no docs/).
Four for four. Nicely done. |
|
Warning Review limit reached
Next review available in: 16 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (7)
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
Why
rctest7 postmortem: an orchestrator registered a 10-second gate-check cron with no termination path. Its gate condition became unreachable (the reactor aggregated into mistyped tables — companion PR #592 guards that side), so the cron polled forever: 69 fires in 10 minutes until manually stopped. At 6 fires/min the fire-rate breaker (loop breaker #3) correctly never engages — this loop shape is slow, "legitimate" trigger traffic, and nothing in the platform bounded it.
What
1.
metadata.max_fires: Non react bindings — a caller-declared lifetime budget of delivered fires:__fire_seq/__fire_budget; the Nth also gets__final_fire: true+ a note explaining the binding is now retiredonceteardown path (fired records carryretired: true)oncebindings with budget > 12. Unbounded-cron advisory — registering a standing cron binding without a termination path appends a registration note: fires FOREVER until unregistered; set
max_fires(react) and/or give the task a deadline escape (both paths: react + notify).Tests
validate_specbudget rules, advisory variants, registry counter lifecycle (278 lib tests green)fire-budget-retires-binding: standing budgeted call-mode reaction; each fire gated on the previous call's evidence; turn 2 proves retirement viaremoved: falseon the captured sub id before a third write is attempted; whole-run call count pins exactly 2 firesFixes MOT-4229