Phase 6: coordinator + ops (runbook §7) #10
No reviewers
Labels
No labels
agent
coordinate
agent
dev
agent
plan
agent
reflect
agent
test
agent
triage
ai/off
blocked
night
blocked
usage
loop
1
loop
2
loop
3
needs/approval
needs/human
needs/input
needs/review
plan/approved
run/night
state
blocked
state
building
state
passed
state
planning
state
testing
tier
fable
tier
haiku
tier
local
tier
opus
tier
sonnet
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
valssi-public/agent-workflows!10
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "phase6/coordinator-ops"
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?
Implements runbook §7 — the coordinator route and the tick daily digest.
coordinate.yaml(new route) — triggered byagent/coordinateon an epic invalssi/ops, APPROVER-only (enforced bylib/preflight), runs asCLAUDE_PLAN_PAT. Claude (sonnet, tier-aware viadispatch.resolve) breaks the epic goal into a structured children JSON; bash then creates child issues in the target valssi work repos withtier/*labels + acceptance criteria, mirrors the epic milestone into each work repo, and maintains an idempotent managed children block (<!-- agent-epic:children:* -->) in the epic body as the cross-repo task list. Optionally appliesagent/planon the first ready child (bot PAT ⇒ fires the plan route). Records an attempt vialib/state; failure →needs/human+ comment.dispatch.yaml—agent/coordinateadded to theresolvegate + role-default (coordinate= sonnet, §6); newcoordinatejob (needs: resolve, APPROVER-guarded, passes model/base-url,secrets: inherit). Thetickjob gains a daily epic digest step: once per UTC day (idempotent via a dated<!-- agent-digest -->marker), for each open epic inEPIC_REPO(new org var, defaults tovalssi/ops) it posts one comment — children grouped bystate/*, queue depth (blocked/*), last-24h attempts (summed from childlib/statecomments), and openneeds/*. Epics are discovered by the<!-- agent-epicmarker; child refs are read from the managed children block.Cost omitted by design — billing is fixed-subscription / local, not per-run metered, so the digest carries no cost line (resolves the
cost_usdcarry-over from Phase 5).agents/coordinate.md— statusplanned→active; digest note updated (attempts not cost; epic/children markers documented).Validated:
js-yamlparses both workflows;bash -npasses on everyrun:block.Note for the org owner: set org var
EPIC_REPO=valssi/ops(the digest falls back tovalssi/opsif unset, so this is optional).🤖 Generated with Claude Code
Per review: the coordinator now defaults to opus (higher-end model — epic→children breakdown needs it). Changed the
agent/coordinaterole default indispatch.resolve(sonnet→opus) and thecoordinate.yamlinput default to match. Atier/*label on the epic still overrides. Re-validated: js-yaml + bash -n clean.