---
name: orchestrate
description: 'Coordinate several workers: what idle agents do next, which finished work gets checked first, how to recover a dead one. Use when: managing multiple agents.'
practices: [team-topologies, evidence-based-engineering]
hexagonal_role: supporting
consumes: [accepted-intent, native-work-state, candidate-evidence]
produces: [native-handoffs, reconciled-feedback]
context_rel: []
skill_api_version: 1
user-invocable: true
metadata:
  graph_root: true
  tier: execution
  dependencies: []
  capabilities: [coordinate_native_work, recover_assignments, reconcile_feedback]
  effects: [dispatch_authorized_workers, update_native_handoffs]
  canonical_status: canonical
  disposition: keep
output_contract: observed native assignments, exact candidate and judgment references, affected-work handoffs and explicit remaining gaps
---

# Orchestrate

Coordinate caller-authorized work through its existing tracker and runtime; a
clear task needs zero mandatory skills. The tracker owns assignments and
dependencies, the runtime owns running contexts and bounds, and repository
policy owns integration and delivery. Orchestrate decides what each worker does
next. [Agent Native](../agent-native/SKILL.md) launches and observes workers;
[Navigate](../navigate/SKILL.md) picks the wave on a bead graph toward frozen
acceptance and records verdicts.

## Before any dispatch

- **Finished is not done.** Exit 0, a pushed branch, a closed tracker item or a
  worker saying "done" makes a candidate. It still owes its checks, integration
  and, when one is owed, a fresh judgment.
- **Drain before starting.** While candidates wait on checks, repair,
  integration or an owed judgment, free capacity goes there first: candidates
  that unblock held dependents, then the oldest. A free slot alone is not a
  dispatch reason; start new implementation with what is left.
- **Judges did not author.** Review or validation of a candidate goes to a
  context that did not write it.
- **Readiness is content.** A prerequisite counts only when its bytes are in
  the intended checkout. A closed item whose change is missing, stale or
  unavailable there is not ready: hold its dependents, keep its native status,
  and report the gap.
- **Reconcile before resuming.** Match tracker assignments against observed
  runtime state, validators included, before dispatching. Never duplicate an
  assignment because this conversation lacks it.
- **Decisions are not build work.** A decision item goes to the resolver it
  names ([Navigate](../navigate/SKILL.md#foggy-epics)), never to an
  implementer; with BD, pull build work with `bd ready --exclude-type decision`.

## Recover the actual work

Read acceptance, examples, scope, settled choices and open questions from their
owner and the existing native handoff, without repeating settled interviews or
requiring the full transcript; a missing or contradictory pointer needs source
investigation, not a guess. For each task, check who holds it, its workspace and
starting content, the write scope it occupies, pending checks and review, the
current candidate, who integrates it, and whether each prerequisite's content
is present. An empty ready list does not prove completion.

## Choose the next useful dispatch

Concurrency follows the observed bottleneck. Reserve capacity for integration,
review and repair, and reduce new starts while candidates accumulate. Record only
the concrete constraint and next action in the existing native handoff, then
reassess when evidence changes. Do not add a capacity ledger or queue.

[Agent Native](../agent-native/SKILL.md#before-launch-and-while-running) owns
runtime mechanics, disjoint write scopes and isolation; one-shot headless runs
go through [Codex Exec](../codex-exec/SKILL.md),
[Claude Exec](../claude-exec/SKILL.md) or [AGY Native](../agy-native/SKILL.md).
Serialize shared paths, generated companions included. A worktree separates Git
edits; it does not enforce restricted-source or model-egress limits
([model dispatch](../agent-native/references/model-dispatch.md)).

Dispatch a genuinely fresh implementer for one coherent accepted task, without
the coordinator's transcript or unrelated research; a new goal, role label,
cleared summary or resumed author context is not fresh. Pass the accepted
examples, applicable constraints, exact starting content, usable prerequisites,
authorized write/output scope, source pointers, required checks, integration
responsibility and real remaining bounds; brevity cannot omit a constraint. A
pointer counts only if the worker can open it: a link relative to a skill's own
folder, or a file outside the worker's workspace, does not resolve there, so
pass a path it can read or paste the rule itself. Record the worker's observed
identity at startup through Agent Native's association procedure.

[Implement](../implement/SKILL.md) owns the complete change, meaningful checks
and direct repair; it is optional guidance for that worker, not a compulsory
stage. The handoff returns candidate identity, changed scope, check facts,
discoveries and gaps; prompt delivery proves neither engagement nor acceptance.

When several workers apply one set of decisions, such as a batch of review
findings or one rewrite that must read the same in many files, make each
decision once in one context and send workers only what was decided. A worker
returns an uncovered case, or a blocker with evidence the decider could not see,
instead of improvising or reopening the decision; the decider settles it and
never drops it. [Decide once, apply in parallel](references/decide-once-apply-in-parallel.md)
covers both shapes.

## Integrate and obtain judgment

Name the integration responsibility before launch, and decide then whether the
integrated candidate needs a fresh judgment at all. Follow the consumer
repository's integration policy, include all changed paths and generated
companions, and run affected checks on the actual integrated subject.
Acceptance of a leaf does not establish the combined release. Within that
policy, combine parallel results one at a time in dependency order and run the
affected checks after each, so a failure points at one result; a merge without
conflicts does not show that two changes work together. A result that
conflicts, or whose own changed paths or prerequisites changed on the target
after it started, goes back to its author through a follow-up that authorizes
that update ([Agent Native](../agent-native/SKILL.md#launch-and-observe)), or
is redone from the current target, and reruns its checks; it is not merged
blind. A write outside a worker's declared scope, or collisions that keep
recurring, show the scope split cannot be trusted for this change: finish the
rest serially.

For an ordinary candidate the integrated checks and CI are the gate. Assign one
fresh author-distinct judgment through
[Validate](../validate/SKILL.md#when-a-fresh-judgment-is-worth-it) only in the
costly cases it names: the caller asks, a mistake cannot be cheaply undone
after it lands, or no deterministic check covers the changed behavior. Validate
owns the single round, what counts as a finding, and when a repair needs only
its checks rerun. Preserve every explicitly required review leg; advisory
Review, Plan challenge and Council advice cannot stand in for a judgment the
caller requested.

## Reconcile feedback and resume

Preserve successful and failed evidence in the existing native task or handoff,
and update affected unfinished work's native dependencies or handoff within
authority. Stop or explicitly re-scope an affected active assignment before it
continues on a disproven premise; the revision takes effect only on observable
acknowledgment or stopped runtime state. Unaffected work continues unchanged;
reconciling unchanged facts creates no new artifact or dispatch.

[Plan](../plan/SKILL.md) owns consequential uncertainty and refining the next
slice. New evidence may change an approach within the accepted outcome; a
different promised outcome or authority choice returns to the caller, never to
agent advice. Do not reopen accepted work to fit a revised story.

Known failures return to the responsible task for direct repair. A genuine
causal stall is an unknown cause, a recurrence, no progress or a wrong
objective ([RPI](../rpi/SKILL.md#causal-stall-and-bounds)); it admits at most
one authorized bounded fresh helper for that incident within remaining bounds,
and an unhelpful answer ends that attempt. Cancellation, refusal or exhausted
bounds skip help. Replacement workers, retries, new subjects and compaction
never reset those bounds. Use native waits for unchanged pending state instead
of repeated analysis or probes.

To recover a dead worker, confirm its process stopped, not only its pane;
capture its state and preserve its partial work recoverably; move its tracker
assignment to the replacement rather than filing a duplicate; and start the
fresh worker from that branch as exact starting content while dependents hold.

When maintained context could change the next action, use
[Memory find/recall](../memory/references/recall.md).

A caller-selected external factory keeps its coordinator in control: hand it
source intent through its supported door, never run its sessions by hand or
mirror its work in a second tracker, and judge the returned content
independently; its completion neither authorizes delivery nor establishes
acceptance. For Gas City, follow [Using GC](../using-gc/SKILL.md).

## Status block

When the caller asks for coordination status, return this shape; answer a quick
question in prose. No other report or persisted artifact is required unless an
existing consumer needs one.

```text
assignments: <worker/context id> -> <task>, state as observed (how); last activity <time, kind> | unobserved
candidates:  <task> -> <exact ref>; checks <result>; judgment <ref | owed | not owed>
next:        <free capacity> -> <dispatch>, because <observed bottleneck>
held:        <task>, blocked by <prerequisite gap>
handoffs:    <affected work updated, and where>
gaps:        <unobserved state, unknown identities, unresolved dissent>
```
