2026-07-22 · BUILD LOG · RESOLUTION LAYER · ~8 MIN READ
Resolution Integrity.
Before Planning.
A ChatAudit made the defect precise: Dream.OS did not consistently know which implementation, namespace, repository, or API contract it was executing against. Useful work still shipped. Authority was rediscovered every session.
IMPORT=PASS is not IMPLEMENTATION_AUTHORITY=KNOWN.
An import can succeed while resolving to the wrong tree. A command can resolve while belonging to the wrong checkout. A router call can look familiar while the producer no longer accepts the keyword the consumer still passes.
That is not a scripting problem. It is a control-plane defect: resolution integrity.
Dual dreamvault/ trees made planner shadowing possible. Desktop cliprun on PATH could disagree with the active repo.
A stop-hook died on claim=False because producer and consumer drifted without a gate.
Audit artifacts vanished into gitignored paths. Dreamclose failed because sibling tasks were in scope.
One defect, five costumes
The ChatAudit consolidation was blunt. Wrong module, wrong binary, wrong contract, missing proof path, and sibling closeout coupling are the same missing substrate:
- Identity resolution
- Repository resolution
- Namespace resolution
- Executable resolution
- API contract resolution
- Artifact persistence resolution
- Closeout-scope resolution
Without those checks, planning is improvisation with green checkmarks.
The Resolution and Contract Layer
Dream.OS now ships five P0 gates plus a unified preflight orchestrator — not another recovery script pile.
1. Import namespace probe
Prove the chain: module → resolved file → repo root → commit → expected authority.
Filesystem path-order probes (no hanging package __init__ execution).
Planner must resolve under src/. Divergent dual-tree modules are reported, not quietly trusted.
2. ClipRun PATH SSOT
PATH success only proves some executable exists. The gate maps executable → package/module → repo → commit → expected workspace.
Soft mode warns on stale PATH; mutation mode hard-blocks with --require-path-match.
3. Router API contract gate
Producer/consumer compatibility is checked from source signatures before session work.
The fetch_open_claim_task(..., claim=False) drift class becomes a blocked start, not a mid-fleet TypeError.
4. Artifact persistence policy
Proof destinations must sit under durable prefixes or an explicit force-add allowlist. Ignored scratch paths are rejected as sole evidence.
5. Task-local closeout boundary
Closeout scope is TASK_LOCAL. Sibling debt cannot invalidate an otherwise complete lane at preflight.
Marking done still uses closeout enforcement for the target task — without global sibling contamination at admit time.
Recommended preflight seal
IDENTITY_AUTHORITY=PASS
REPO_AUTHORITY=PASS
IMPORT_NAMESPACE=PASS
EXECUTABLE_AUTHORITY=PASS
ROUTER_API_CONTRACT=PASS
ARTIFACT_PERSISTENCE=PASS
CLOSEOUT_SCOPE=TASK_LOCAL
EXECUTION_ADMITTED=YES
Only after EXECUTION_ADMITTED=YES should the planner choose work.
What shipped today
src/dreamvault/resolution_layer/— models, probes, gates, sealpreflight_seal_orchestrator_001.py— unified admit board- Per-gate CLIs for import, router, cliprun, persistence, closeout scope
- Policies + task lane
resolution_and_contract_layer_001 - Tests:
tests/test_resolution_layer_001.py(5 passed)
Verify:
python runtime/scripts/preflight_seal_orchestrator_001.py --agent Agent-3
North star
Operator states intent. Preflight proves authority. Planner assigns only after admit. Agents implement in isolated worktrees. Contracts refuse rediscovery. ChatAudit stops finding “which code is active?” as a novel incident.
Dream.OS does not need more ad hoc recovery tools.
It needs a preflight contract substrate that establishes authority before any agent acts.