feat(backlog-loop): add a run supervisor verb + --max-inflight dispatch ceiling #276
Labels
No labels
burndown-2026-06
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/agentic-os#276
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The verbs are
select / dispatch / poll / unblock, but there is no driver that chains them - the thing literally named in "backlog-loop" is missing. Driving it by hand this session, I had to write a throwaway bash watcher to poll-on-a-timer.Add a
run(orwatch) verb that drives the supervised loop end to end:select->dispatchqueued headless issues up to a ceiling ->polluntil containers exit -> re-select-> repeat until the headless lane drains.--max-inflight N: count runningward-<repo>-issue-*containers viadocker psbefore each dispatch and never exceed N. This session I dispatched ward#269 + ward#270 blind while ward#320 + ward#322 were already running from explore - nothing enforced a cap. Honor the dispatch-ceiling concept (agentic-os#246).This deletes the hand-rolled watcher and makes the loop runnable unattended. It is also the surface that graduates into
ward agent backlog(ward tracking issue).this moved into ward (I'm pretty sure???)
🛫 ward pre-flight: NO-GO
ward agent engineer --driver clauderan a pre-flight feasibility read on this issue before detaching a fire-and-forget run, and the agent judged it NO-GO - it should not be carried unattended until a human weighs in.No container was launched. Review the issue (clarify the scope, resolve the unknown, or split it), then re-dispatch -
ward agent engineer --driver claude <ref> --no-preflightskips this gate once you've decided it's good to go.full pre-flight read
Pre-flight: agentic-os#276
Context to front-load: This work would touch the
backlog-loopverb surface (select / dispatch / poll / unblock), its command wiring (a.ward/ward.yamlverb declaration plus the underlying script/module implementing each verb), thedocker pscontainer-naming convention (ward-<repo>-issue-*), and theward agentheadless dispatch path that these verbs orchestrate. I'd read each of those in the clone before editing — but I can't confirm any of them even live in this repo, which is the crux.Main risk / unknown: The author's own latest comment — "this moved into ward (I'm pretty sure???)" — says the subject matter has migrated out of agentic-os, and everything the issue names (
ward agent backlog, theward-<repo>-issue-*containers, the dispatch-ceiling concept, theselect/dispatch/poll/unblocklane) is ward-domain, graduating intoward agent backlogper a ward tracking issue. That hedged "I'm pretty sure???" is genuine uncertainty from the person who filed it, and I can't resolve it from the issue text alone: I don't know whether thebacklog-loopverbs currently live in agentic-os or in ward, and I can't confidently name the ward repo's owner/slug to redirect. Because the author herself is unsure the issue even belongs in this repo, launching an unattended run risks implementing against a surface that isn't here.NO-GO: author's latest comment says this likely moved into the ward repo ("I'm pretty sure???") — a human should confirm the correct home before dispatch, since the whole verb surface is ward-domain and may not exist in agentic-os at all.
Posted automatically by
ward agent engineer --driver claudepre-flight (ward#147, ward#149).— Claude (she/her), via
ward agent🔒 Reserved by
ward agent --driver claude— containerengineer-claude-agentic-os-276on hostkais-macbook-pro-2.localis carrying this issue (reserved 2026-07-01T07:04:34Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (2h0m0s TTL);--forceoverrides.— Claude (she/her), via
ward agentWARD-OUTCOME: blocked - the surface this issue asks for lives in (and already shipped in) the
wardrepo asward agent director; there is nothing to implement in agentic-os, andwardis read-only substrate not granted to this container.Candid retrospective, she/her:
The work here fought back before the first edit, in the honest way: there was no edit to make. I went in expecting a
backlog-loopverb withselect / dispatch / poll / unblockliving somewhere underagentic_os/or.ward/ward.yaml, and it simply isn't in this repo.ward.yamlis only a per-repo command allowlist - it wraps existing commands, it doesn't host the supervised-loop implementation - so there was nobacklog-loop.pyto bolt arunverb onto.Tracing it into
/substrate/wardclosed the loop fast, and this is the part that surprised me: the feature is already built, end to end.ward agent director(ward#347, wasbacklog; ward#346 portedbacklog-loop.py; ward#351 made it an LLM-in-the-loop heartbeat) is exactly the requested supervisor: poll+reconcile -> refresh/rank into lanes -> decide -> dispatch -> sleep, looping until the headless lane drains. The--max-inflightceiling is there as--max-parallel N(default 2, "in-flight container cap"), enforced byavail := cfg.maxParallel - inflight. Transitions surface via the WARD-OUTCOME marker (ward#310) and the heartbeat reporter. That matches the issue's own closing line - "the surface that graduates intoward agent backlog" - and this issue is already closed as superseded.So confidence is high on the finding, zero on any deliverable: there is nothing correct to push to agentic-os
main. I deliberately did not fabricate arunverb inward.yamljust to have something to land - that would be a non-functional stub in the wrong repo. The June pre-flight NO-GO called this exactly right; the dispatch overrode it, but the wall is real -wardis/substrateread-only and not in this container's granted set, so I can't (and shouldn't) push the real fix there either.Follow-up worth filing: nothing code-wise. The one human decision is bookkeeping - confirm agentic-os#276 stays closed as superseded-by-
ward agent director, and optionally drop a cross-link from #276 to the ward director issues so the graduation is traceable. If any residual--max-inflightnaming or the agentic-os#246 dispatch-ceiling framing should be reconciled against ward's--max-parallel, that belongs as a fresh issue inward, not here.ward agent