2026-07-22 · BUILD LOG · EXECUTION CONTRACTS · ~9 MIN READ
Execution Contracts.
Not More Scripts.
A ChatAudit said the quiet part out loud: platform friction—not implementation difficulty—consumed the session. So Dream.OS gained a pre-slice contract board instead of another pile of one-off fixes.
The audit did not ask “which script is missing?”
It asked: what permanent runtime capability would have prevented this class of failure?
That is a stronger design question. Scripts accumulate. Contracts reduce repeated operator interventions. The session that triggered this post had real product outcomes — Bot Lab ops scaffolding, a shared blog CSS SSOT, a live deploy — wrapped in preventable friction: false agent identity, PowerShell/bash dialect collisions, a missing message-bus module, green tests that did not prove the new invariant, and notification storms that burned turns on success chatter.
Four platform principles
1. Identity is never inferred
A worktree folder named agent4_… is not Agent-4.
Identity must resolve from explicit argument, environment, or agent_workspaces/Agent-N —
never from delivery-folder tokens, and never by defaulting to Agent-1 or Agent-4 when unresolved.
IDENTITY_UNRESOLVED → BLOCK_SLICE NO_DEFAULT_AGENT_1 NO_DEFAULT_AGENT_4 NO_CODING_AGENT_FOLDER_GUESS
2. Shells are an operating-system abstraction
Agents should emit an ExecutionRequest — an argv plan — not bash heredocs or PowerShell-fragile JSON on the command line. A Shell Contract Layer renders that plan for PowerShell, bash, cmd, or runs it directly via subprocess without a shell string.
Execution Request
↓
Shell Contract Layer
↓
PowerShell | Bash | Termux | SSH | Docker
3. Verification must prove the intended invariant
“Tests passed” is not the same as “the property we introduced is proven.”
After unifying dadudekc blogs onto blog-swarm.css, a soft editorial suite can stay green while posts silently drop the shared stylesheet.
The invariant framework now treats that as a verification failure.
4. Notifications are governed events
Success belongs on a ledger. Background completion belongs on a dashboard. Human approval interrupts. Failure notifies immediately. Success chatter must not invent a new agent turn.
The contract board
Before a slice begins, Dream.OS evaluates a fixed board. Execution does not start until every contract passes or is explicitly waived.
Identity ........ PASS|FAIL|WAIVED Shell ........... PASS|FAIL|WAIVED Workspace ....... PASS|FAIL|WAIVED SSOT ............ PASS|FAIL|WAIVED Verification .... PASS|FAIL|WAIVED Bus ............. PASS|FAIL|WAIVED Policy .......... PASS|FAIL|WAIVED
Many “random” session failures were the same pattern wearing different clothes: contract violations.
What shipped today
- Execution Contract Engine —
dreamvault.execution_contracts+verify_execution_contract_001.py - Identity Resolver — rejects coding-agent folder guesses; no silent Agent-1/4 default
- Shell Contract Layer — argv plans, PowerShell/bash renderers, Windows-safe next-up file helper
- Message Bus Completeness Gate — live A2A requires
thread_fsm; the missing module is restored - Notification Policy Engine — success → ledger only; failure → immediate
- Verification Invariant Framework — including dadudekc
blog-swarm.cssSSOT proof - cliprun identity path — no more “Agent-N in cwd string → invent identity”
Verification that proves intent
The proof commands are intentionally boring:
python runtime/scripts/verify_execution_contract_001.py --agent Agent-1 python -m pytest tests/test_execution_contract_engine_001.py -q cd D:\websites && python -m pytest tests/websites/test_dadudekc_blog_swarm_css_ssot_001.py -q
If identity is unresolved, the board fails.
If thread_fsm disappears again, bus fails and live dispatch stays blocked.
If a blog post drops the shared CSS link, the SSOT invariant fails even when older soft tests stay green.
North star workflow
Hard onboard → contract board PASS → product slice → invariant proof → live handoff only if bus complete → closeout pack → silent success ledger.
The objective is not a prettier retrospective. The objective is a runtime that makes the same class of operator intervention illegal the second time.
Dream.OS does not need more scripts that remember today’s mistake.
It needs contracts that refuse to start tomorrow’s slice without the prerequisites already true.