Closureruntime-owned
Lineageroot contract
JudgeArbiter
Recoveryblocked or remediate
Closure & Recovery

Backlog drain is not completion.

Millrace does not treat empty queues as done. It preserves closure state, records root work lineage, and waits for an Arbiter closure pass before the runtime stamps success.

The operating rule is simple: backlog drain is not completion. Completion has to survive comparison against the root contract, not just the absence of claimable work.

Signalbacklog drained
Readinessno open lineage work
JudgeArbiter closure pass
Outcomecomplete, remediate, or blocked
Closure pass 01

Completion is judged against the root contract.

Millrace records root work lineage, preserves closure state, and uses an Arbiter closure pass to compare actual evidence against the root contract. If that evidence is weak, the runtime routes remediation instead of silently declaring success.

Root lineage

The closure target carries root spec and root idea identity, giving Arbiter a stable contract to judge after planning and execution have moved through many files.

Arbiter judgment

Arbiter runs as a real planning-stage closure pass. It reviews canonical contract copies, evidence, reports, and rubric state before emitting a terminal result.

Blocked/recovery routing

Remediation becomes accountable planning work. Blocked closure stays explicit. The runtime owns the state mutation either way.

Inspect it 02

Follow the recovery route instead of trusting silence.

Closure targets, Arbiter verdicts, run reports, and incident routing all stay available to the operator. Empty queues are only one signal; the runtime waits for evidence before it closes the root lineage.