diff --git a/docs/coordinator.md b/docs/coordinator.md index 23762e3e..03b64e04 100644 --- a/docs/coordinator.md +++ b/docs/coordinator.md @@ -18,7 +18,7 @@ fast-lane follow-up, the meta-update cascade pre-enqueue — are all just DAG ### Two levels: DAG and node -The **DAG** is the unit of dedup / cancel / approval-resolution and the +The **DAG** is the unit of cancel / approval-resolution and the dashboard group; the **node** is the unit of scheduling / execution / build-log / step label. Deps are intra-DAG edges only (`AfterOk` by default: the dep must succeed, a failed/cancelled dep cancels the dependent — @@ -154,8 +154,9 @@ The admin-socket responses carry the submitted DAG ids; `hivectl` polls `HostRequest::QueueDag` (~1s) and prints a progress line per DAG — roll-up glyph, template, agent, node chain with the running node's step label — so CLI verbs block until their jobs finish (`--no-wait` opts out; failures exit -non-zero). Fan-out children joining a polled parent show up in the same -loop. +non-zero). Nodes appended in-DAG (a `MetaLock` growing per-agent rebuild +subgraphs, a `Reconcile` fanning its `Start`/`Stop`) join the same DAG, so +they surface under that DAG's id in the same loop — no separate child DAGs. ### Scheduler semantics @@ -194,7 +195,7 @@ has no single agent to key a dedup on), so every submit enqueues a fresh DAG; whether any dedup needs reintroducing is tracked as a follow-up. Cancel only applies to still-fully-queued DAGs (an in-flight nix build isn't -interruptible); `cancel_children` cancels a parent's still-queued child DAGs. +interruptible) — each op is one DAG now, so there are no child DAGs to cascade to. Roll-up state: `Failed` if any node failed, else `Running` / `Queued` / `Cancelled` / `Done`. The snapshot retains the 5 most recent terminal DAGs per template.