You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
loops/skills: self-paced /loop idles between non-empty cycles — cadence should be work-state-driven (no delay when queue non-empty), not a guessed clock #500
Lane: triage (applies to every self-paced /loop lane) · Category: operational (throughput) · Source: live triage loop, 2026-07-19, user course-correction.
Triggering example
Triage loop, dynamic (self-paced) mode. Two consecutive cycles ended with the queue non-empty (14 items, then 9 items) and each scheduled the next cycle with a 600s delay ("short delay when queue has items" + "let concurrent filings settle"). The operator flagged it: with real work already queued, the delay is pure idle latency — waiting never improves triage quality, and "let filings settle" is a rationalization (intake arrives continuously; there is no settled state to wait for).
Observed vs expected
Observed: the standing loop-prompt rule ("self-paced: short delay when queue has items, ~30 min when empty") and the /loop skill's dynamic-mode guidance ("lean 1200–1800s fallback") push the lane to insert a non-zero wall-clock delay between cycles even when the queue is non-empty. Cycle boundaries exist to refresh context (avoid degradation) — not to burn wall-clock. A delay-when-work-exists adds latency with zero quality benefit.
Expected: loop cadence keys to work state, not a guessed clock. Queue non-empty → start the next cycle immediately (delay ≈ 0; the cap-per-cycle + fresh-context-per-cycle already bound each cycle's size — see loops/skills: orchestrator context economy — subagent return-payload contracts + GitHub-externalized state #496). Delay applies only when the queue is empty (idle poll, ~30 min) or when genuinely gated on an external event (CI, a Monitor). "Short delay when queue has items" should read "no delay when queue non-empty."
Category
operational (throughput). Every idle delay between non-empty cycles is dead time on a lane whose whole value is turning intake around.
Lane: triage (applies to every self-paced
/looplane) · Category: operational (throughput) · Source: live triage loop, 2026-07-19, user course-correction.Triggering example
Triage loop, dynamic (self-paced) mode. Two consecutive cycles ended with the queue non-empty (14 items, then 9 items) and each scheduled the next cycle with a 600s delay ("short delay when queue has items" + "let concurrent filings settle"). The operator flagged it: with real work already queued, the delay is pure idle latency — waiting never improves triage quality, and "let filings settle" is a rationalization (intake arrives continuously; there is no settled state to wait for).
Observed vs expected
/loopskill's dynamic-mode guidance ("lean 1200–1800s fallback") push the lane to insert a non-zero wall-clock delay between cycles even when the queue is non-empty. Cycle boundaries exist to refresh context (avoid degradation) — not to burn wall-clock. A delay-when-work-exists adds latency with zero quality benefit.Category
operational (throughput). Every idle delay between non-empty cycles is dead time on a lane whose whole value is turning intake around.
Related
/loop 15m) whose interval is shorter than the cycle, causing overlap. Together these frame one principle: loop cadence must derive from queue/work state and cycle duration, not a fixed or guessed delay — too-short fixed intervals overlap (source-control:babysit-prs + loop: /loop 15m fires overlap in-flight fan-out cycles when batch-cap-10 dispatch runs long #472); too-long dynamic delays idle (this issue).