diff --git a/docs/scheduler/coordinator.md b/docs/scheduler/coordinator.md index 1402f7d3..b4e38c6f 100644 --- a/docs/scheduler/coordinator.md +++ b/docs/scheduler/coordinator.md @@ -19,8 +19,8 @@ changes) to the global job-DAG queue (`hive-c0re/src/job_queue/`) as a **DAG of primitive nodes**. One scheduler task drives all DAGs; concurrency comes from the resource classes below, not from multiple workers. Special cases like graceful stop, deferred starts, and the meta-update -cascade need no bespoke code paths — each is expressed as a DAG _shape_ -built from the same primitive nodes. +cascade need no bespoke code paths — each takes the shape of a DAG built +from the same primitive nodes. ### Two levels: DAG and node @@ -34,9 +34,9 @@ never from edges between DAGs. A DAG is **declared, not described**: a template builds it through `hive_jobq::JobBuilder`, naming each node it depends on via the handle `b.node(kind)` handed back, and the builder inserts the nodes itself. A handle -only exists for a node already declared, so every edge points backwards and a -cycle can't be written down — there is no submit-time validation pass, because -there is no malformed spec to reject. +only exists for a node already declared, so every edge points backwards and +nothing can write a cycle down — there is no submit-time validation pass, +because there is no malformed spec to reject. ### Node inventory (primitives) @@ -340,8 +340,8 @@ live-log panel off the running node. The event carries no payload by design: shipping a typed projection of the whole queue in the event itself would be a second rendering of the -same graph that has to be kept in agreement by hand with the endpoint -every consumer actually reads. Telling a client _when_ to refetch is +same graph that someone has to keep in agreement by hand with the +endpoint every consumer actually reads. Telling a client _when_ to refetch is the event's whole job. --- @@ -473,7 +473,7 @@ fallback. ### Spawn path (new container) For a first-time `create`, `nixos-container create` is atomic: if the build fails, -no container record is left to clean up. A separate prebuild would just duplicate +it leaves no container record to clean up. A separate prebuild would just duplicate the eval, so it's skipped. Sequence: `create --flake meta#` → write nspawn flags → `systemctl daemon-reload` → `start`. @@ -555,7 +555,7 @@ trade-off: - **On** (recommended for x86_64 hosts that care about first-spawn latency): the first `nixos-container start` for any new agent - completes in seconds because nothing is left to fetch. Cost: + completes in seconds because nothing remains to fetch. Cost: `preBuildAgentTemplates` adds the full nixpkgs runtime closure + claude-code + the harness binary to the host system closure (low single-digit GB additional).