2026-07-22 · EXECUTION SUBSTRATE · DREAM.OS · ~9 MIN READ
Stop Asking Humans to Be
the Integration Layer
The product work was fine. The control plane kept consuming operator attention because Dream.OS could not tell done, dry-run, assigned, and live apart without a referee.
A ChatAudit of a real Dream.OS session produced a line that should not be ignorable:
Dream.OS cannot distinguish done, dry-run, assigned, and live without a human referee.
That is not a messaging bug. It means several runtime components were overloading the same mental state. Agents inferred progress. Policies existed as documents. Green tests proved code contracts while the intended invariant—“partner actually received the handoff”—went unverified. The operator became the integration layer.
The Diagnosis Across Audits
Four audits converged on the same substrate gaps:
- Identity — agents inferred who they were instead of resolving it.
- Policy — rules existed but were not executable at the seam.
- Delivery — dry-run, dispatch, deliver, and claim collapsed into “sent.”
- Verification — suite green ≠ invariant proved.
- Planning — known duplicates were rediscovered for hours.
- Runtime — the human filled every missing semantic.
The wrong response is another agent or another workflow. The right response is strengthening the execution substrate.
Progress Is a State Machine
Instead of Task → Done, Dream.OS now models:
Requested → Planned → Executing → Verified
→ DryRun → Dispatched → Delivered → Claimed
→ Completed → Closed
Adjacent transitions only. No jumping from DryRun to Delivered because a CLI exited zero. No claiming “assigned” because a message body was constructible.
Evidence Engine
Every transition carries proof: artifact, receipt, timestamp, verifier.
Delivery requires success_true. Claims are checked against minimum state.
A dry-run receipt can never satisfy a delivered or claimed assertion.
state: DISPATCHED proof: artifact: coordination/handoff.json receipt: bus_dispatch_20260722.json timestamp: 2026-07-22T21:00:00Z verifier: evidence_engine_001
If the evidence is missing, the transition fails. Agents stop “honestly” claiming progress they cannot prove.
Mission Compiler
Planning should not start from a free-form goal. A Mission Compiler turns operator intent into constraints before the planner proposes work:
Operator goal: Get Bot Lab to first payment. Primary objective: Revenue Success metric: First payment Allowed branches: Marketing, Website, Stripe Forbidden branches: Infrastructure, Architecture, Cleanup Maximum parallel slices: 2
Under that mission, a trading-inventory scanner task is not “maybe useful.” It is a scope violation. The router marks execute false without asking a human to explain why Agent-2 should ignore it again.
Planner Memory
Observation → Planner → Outcome → Planner Memory.
If a route fingerprint is already proven duplicate, blocked, or stale, sticky suppression stops re-offering it until the fingerprint changes or an operator forces a recheck. Rediscovery is not a fresh insight. It is amnesia.
One Mission. Sealed.
Productive drift is how sessions die: every decision is locally reasonable, and the primary objective disappears. The session objective ledger formalizes:
Mission → Objective → Slice → Task → Action
One active mission unless the operator explicitly authorizes multiple. Parallel slices are capped by the compiled mission. Scope expansion becomes a deliberate act, not an accident of enthusiasm.
What Shipped
This is not a manifesto-only post. The substrate landed as:
src/dreamvault/execution/— states, Evidence Engine, Mission Compiler, ledger, planner memory- CLIs for transition, compile/seal, receipt verify, suppress, ledger slices
- Wiring into
get_next_task_001.pyafter the freshness gate - Policy + task artifact under
execution_substrate_evidence_engine_001 - Unit tests for illegal transitions, mission scope, sticky suppress, receipt semantics
Delivery receipt verification encodes the Captain ruling that should never need repeating: assignment validity is not A2A delivery.
North Star Workflow
Ideal path from first prompt to seal:
- Identity gate passes — no bootstrap drama mid-session.
- Mission Compiler seals a constrained objective.
- Planner proposes only allowed branches; memory mutes known duplicates.
- Slices execute with evidence-backed transitions.
- Handoffs require live delivery receipts before any “assigned” claim.
- Closeout is task-local; foreign poison cannot block unrelated seals.
When the substrate works, the operator stops refereeing semantics and starts authorizing outcomes.