Enforce blocked-on-dependency: classifier detection, pre-flight reasoning, auto-resume wake #282
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#282
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?
What
agentic-os#245 named
blocked-on-dependencyas a readiness state in the triage taxonomy (automation-mode-axis): an issue that is correctly scoped and intrinsicallyheadless-eligible, but not runnable now because its resolver is another repo's release/issue, not a human. That landed as doc-only - the vocabulary and the fail-closed semantics. This issue tracks the enforcing half: making the state actually do something.Scope
Three pieces, in dependency order:
goose-triagemode pass (and/or a readiness sub-pass) to recognize "blocked, auto-resumes on upstream" and apply theblocked-on-dependencylabel alongsideheadless, capturing the blocker pointer (the upstream issue whose close unblocks it).ward agent claude headlesspre-flight to distinguish "blocked, auto-resumes" from "consult, needs a human" in its NO-GO text, so a blocked-headless issue reads as a defer-and-wake, not a kick-to-human. (The original ward#124 NO-GO mislabeled it a cross-repo release-sequencing fork - the bug agentic-os#245 was filed against.)blocked-on-dependencyissue into theheadlessdispatch queue with no human re-triage. Needs a blocker->dependent index and a close-event trigger that crosses repos (the triggering case is a ward issue blocked on a cli-guard release).Why split from #245
#245 captured the distinction so the prioritization-doc refactor stays clean. The wake mechanism is a genuine cross-repo build (close-event plumbing into the dispatch queue) with a real design fork, not a headless doc burn. Naming the state first lets the classifier and wake work land against a settled vocabulary.
Related
blocked-on-dependencycontract: marker syntax, blocker pointer, and wake semantics #394blocked-on-dependencyin triage, pre-flight, and director auto-resume #872🔎 ward agent advisor - cross-repo fan-out
ward agent advisor --harness codexran a one-shot standard research pass on this question:Recommendation
Split this into 2 tracked issues, not 3:
agentic-osto freeze the contract and metadata shape forblocked-on-dependency.wardto implement detection, pre-flight wording, and auto-resume.The current evidence does not justify a separate
cli-guardissue yet. The enforcement points this issue names are all inward, andcli-guardhas no durable backlog/ledger/wake mechanism today.Findings
.agents/skills/tooling-issue-prioritization/references/automation-mode-axis.mdandreadiness-axis.mdin this repo.ward, notagentic-os:/substrate/ward/cmd/ward/agent_director_triage.goonly classifies tier + mode today.ward:/substrate/ward/cmd/ward/agent.go(preflightPrompt,runPreflight,preflightNoGoComment). Its only terminal verdicts today are effectivelyGO,NO-GO, andWRONG-REPO.ward: the director has a durable per-repo backlog ledger and already re-queues some machine-resolved states such as pre-launch death (prelaunch-death-requeued) in/substrate/ward/cmd/ward/agent_director.go. What it lacks is a readiness dimension plus a blocker pointer./substrate/cli-guard/cli/dispatch/dispatch.go,preflight.go). It does not own a durable queue or cross-repo wake loop.ward#124, is already closed as of 2026-07-09. That lowers urgency and means implementation should use a synthetic fixture or a new real blocker pair for tests, not the original live case.Advisory decisions
blocked-on-dependencyas readiness, not mode. The correct shape remainsheadless+blocked-on-dependency.wardcaching it into its backlog ledger for runtime efficiency. A host-local-only index would be fragile across restarts and directors.ward's director polling loop first, not as a webhook/event system. The director already polls, persists ledger state, and re-queues other machine-resolved cases. That is the lowest-risk place to add this behavior.cli-guardout of scope unless you later decide that non-ward dispatchers also need the same readiness/wake semantics.Options considered
enable_issue_dependencies; this research did not find an existing ward-owned read/write surface for per-issue dependency edges. Treat native deps as a later optimization, not the first contract.Open questions
<!-- ward-blocked-on: owner/repo#123 -->.mode=headless, but keep readiness separate so the director does not dispatch it while blocked.consultor plainheadlessand do not infer wake behavior.Main risks
Bottom line
This should be treated as one cross-repo feature with a 2-repo split:
agentic-osdefines the contract and marker syntax.wardimplements the behavior.I would not open a third
cli-guardissue unless the team explicitly wants readiness semantics to become a generic dispatch-engine concept instead of a ward-director concept.The work spans multiple repos, so it was filed as 2 tracked issue(s), in dependency order:
blocked-on-dependencycontract: marker syntax, blocker pointer, and wake semanticsblocked-on-dependencyin triage, pre-flight, and director auto-resumeResearched and posted automatically by
ward agent advisor --harness codex(ward#424). This is one-shot research, not a carried change - verify before acting on it.— Codex, via
ward agent