Context
Phase-6 leaf of epic #15798 (Discussion #15595, OQ9 as scoped by the fold: CI owns topology + mock-embedding contract only; real-model behavior validation stays with local dogfood + deployment smoke — never CI). Today the docker-based integration lane is docker-availability-gated (best-effort); parity makes it the single-reality witness, so it flips to mandatory.
The Problem
A parity stack that CI only tests when docker happens to be available is a parity claim without a witness: topology regressions (compose completeness, plane binding, served identity, transport handshakes) land silently and surface as seat-boot failures days later. The immune-system argument from the sweep's rationale-4 rewrite: CI's job here is the SHAPE (does the declared topology boot, bind, and serve identity correctly with mock embeddings), not model behavior.
The Architectural Reality
- 21 docker-native integration specs exist (the sweep's point-8 inventory) — the lane's substance predates this leaf; the flip is about gating, not authoring a suite from scratch.
- The lane consumes phase-3's completed compose (completeness assertion, served-identity probe) and the mock-embedding contract (the existing mock-openai-embedding-server in
ai/deploy/).
- Unit-isolation constraint
#15576 binds the harness-cutover interplay (fold-1 carry).
The Fix (one PR)
Flip the docker integration lane to required for PRs touching the parity surface set (path-filtered: ai/deploy/**, the plane subtree, transport/server seams); the lane boots the phase-3 compose against an overlay planeId, runs the topology + mock-embedding specs, and fails closed on completeness/served-identity violations. Runner docker availability becomes a provisioning requirement for the lane, not a skip condition.
Acceptance Criteria
Out of Scope
Real-model validation (dogfood/smoke territory, never CI); making the lane mandatory repo-wide (parity path-filter only); runner provisioning itself (infra follow-up if the fleet's runners lack docker).
Related
Epic #15798 · blocked_by #15803 · D#15595 OQ9 (scoped) + rationale-4 rewrite + #15576 constraint · #15783 (CI measurement discipline precedent) · borrowed-authority caveat as in #15799.
Origin Session ID: 758f110e-a429-4597-beb0-5fd3ec7d1bfc
Retrieval Hint: query_raw_memories("CI docker lane mandatory topology mock embedding contract parity path filter")
Context
Phase-6 leaf of epic #15798 (Discussion #15595, OQ9 as scoped by the fold: CI owns topology + mock-embedding contract only; real-model behavior validation stays with local dogfood + deployment smoke — never CI). Today the docker-based integration lane is docker-availability-gated (best-effort); parity makes it the single-reality witness, so it flips to mandatory.
The Problem
A parity stack that CI only tests when docker happens to be available is a parity claim without a witness: topology regressions (compose completeness, plane binding, served identity, transport handshakes) land silently and surface as seat-boot failures days later. The immune-system argument from the sweep's rationale-4 rewrite: CI's job here is the SHAPE (does the declared topology boot, bind, and serve identity correctly with mock embeddings), not model behavior.
The Architectural Reality
ai/deploy/).#15576binds the harness-cutover interplay (fold-1 carry).The Fix (one PR)
Flip the docker integration lane to required for PRs touching the parity surface set (path-filtered:
ai/deploy/**, the plane subtree, transport/server seams); the lane boots the phase-3 compose against an overlayplaneId, runs the topology + mock-embedding specs, and fails closed on completeness/served-identity violations. Runner docker availability becomes a provisioning requirement for the lane, not a skip condition.Acceptance Criteria
#15783-class measurement receipts in the PR).Out of Scope
Real-model validation (dogfood/smoke territory, never CI); making the lane mandatory repo-wide (parity path-filter only); runner provisioning itself (infra follow-up if the fleet's runners lack docker).
Related
Epic #15798 · blocked_by #15803 · D#15595 OQ9 (scoped) + rationale-4 rewrite +
#15576constraint ·#15783(CI measurement discipline precedent) · borrowed-authority caveat as in #15799.Origin Session ID: 758f110e-a429-4597-beb0-5fd3ec7d1bfc Retrieval Hint:
query_raw_memories("CI docker lane mandatory topology mock embedding contract parity path filter")