Context
Tree line E4 (#14564 map). The graduated FALSE-GREEN CLOSURE hard boundary: drift detection fires at local-dev preflight — where the stale overlay actually bites — never CI-only. Complements #14674's root fix (inheritance kills the additive-drift class; the detector catches the residual conflict class and pre-migration snapshots).
The Problem
The lived corpus: overlays rot silently until a runtime TypeError. Detection must run where developers/agents boot (ai:agent-preflight class), diff template leaves vs overlay coverage, and report STALE_OVERLAY with the exact missing/conflicting leaves — advisory-first (report, never rewrite; reconciliation is E5's proposed-merge).
The Architectural Reality
Rides the existing ai:agent-preflight surface (sibling precedent — probes already live there); pure diff core over the two Provider trees; snapshot-shape overlays (pre-#14674 migration) get full-coverage diffing, subclass overlays get the residual-conflict check (version-stamp seam, E3's canary complements).
The Fix
One PR: the diff core + preflight wiring + report format (leaf-level, actionable) + fixtures from the three lived instances + specs.
Acceptance Criteria
Out of Scope
Reconciliation writes (E5) · version canary (E3) · the root fix (#14674).
Related
Parent #14564 (line E4) · boundary from #14456 graduation · siblings #14674/E3/E5. Sweeps: 03:47Z clean.
Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4
Retrieval Hint: "local preflight drift detector STALE_OVERLAY advisory"
Context
Tree line E4 (#14564 map). The graduated FALSE-GREEN CLOSURE hard boundary: drift detection fires at local-dev preflight — where the stale overlay actually bites — never CI-only. Complements #14674's root fix (inheritance kills the additive-drift class; the detector catches the residual conflict class and pre-migration snapshots).
The Problem
The lived corpus: overlays rot silently until a runtime TypeError. Detection must run where developers/agents boot (ai:agent-preflight class), diff template leaves vs overlay coverage, and report STALE_OVERLAY with the exact missing/conflicting leaves — advisory-first (report, never rewrite; reconciliation is E5's proposed-merge).
The Architectural Reality
Rides the existing
ai:agent-preflightsurface (sibling precedent — probes already live there); pure diff core over the two Provider trees; snapshot-shape overlays (pre-#14674 migration) get full-coverage diffing, subclass overlays get the residual-conflict check (version-stamp seam, E3's canary complements).The Fix
One PR: the diff core + preflight wiring + report format (leaf-level, actionable) + fixtures from the three lived instances + specs.
Acceptance Criteria
Out of Scope
Reconciliation writes (E5) · version canary (E3) · the root fix (#14674).
Related
Parent #14564 (line E4) · boundary from #14456 graduation · siblings #14674/E3/E5. Sweeps: 03:47Z clean. Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4 Retrieval Hint: "local preflight drift detector STALE_OVERLAY advisory"