ReadonlyengineFired each time a dispatch job settles — the completion trigger.
ReadonlysourceOperator force-drain (#150): SIGKILL every live harness process group.
Aborted dispatches resolve through the normal failure path — closing
commits land and tasks are freed for retry — so drain() completes
shortly after. Returns how many groups were signalled.
What the last tick held back and why, for the heartbeat (#97).
Await every in-flight job (their closing commits included).
What is currently dispatched, for drain reporting (#150).
Fast-forward local run branches from origin before deriving (#104). A standalone orchestrator has no co-located server fetch loop to lean on, and an engine reading a materialized local branch never sees remote decisions otherwise — it re-derives yesterday's state forever. ff-only and idempotent (LocalGitSource.syncFromRemote): a diverged branch is refused and left for a human, never resolved silently. Failure is tolerated — a clone with no origin is a legal dev/test topology.
Callers choose when: the run loop syncs on heartbeat/startup ticks only, because our own fetch touches FETCH_HEAD under the watched .git dir and a sync inside every refs-triggered tick would re-trigger itself.
One reconcile pass over every active run. Idempotent to re-run.
This process, as the ledger names it (#349) — see
EngineConfig.engineId.