Skip to content

CVN-N001-EI-S09 — Détection indépendante de la divergence replay (déterminisme s18) · hub Story

Hub documentaire de la Story S09 (garde de validité du substrat diagnostique). Partie du programme CVN-N001-EI. État live = OpenProject (wp#237, GH #1099, ADR-76).

En une phrase

Quand nos diagnostics « rejouent » un entraînement prod (le replay s18), est-ce déterministe, et fidèle au baseline prod ? — détection indépendante (hors run) du non-déterminisme et de la divergence canonique (action item A6 du RCA s42).

Pourquoi ça compte

diagnostic__s42 (S04) est sorti s18_status=FAIL sur 5/5 cellules (observed_f1 0.36–0.47). Tant que cette divergence n'est pas détectée indépendamment et expliquée, elle borne le claim « fidèle au baseline prod » de tout diagnostic basé s18 — dont le s43 de S05, en run en ce moment. S09 livre le check + classe la cause (instable vs gap de fidélité), et conditionne le droit de faire de skip_phase_a=true un défaut.

Les documents (dans l'ordre de lecture)

# Document Quoi Pour qui État
1 Plan dossier (r4, EN) le quoi & pourquoi — problem statement, user stories, hypotheses (H1 déterminisme cross-process / H2 fidélité), state of the art, règle de décision pré-enregistrée (config déterministe ADR-0096, P0 parité env, epsilon gelé, truth table), §0-§7 décideur, quant, relecteur plan_review PASSED·OK (Meeting 268)
2 Architecture (r2) le comment c'est construit — Hamilton-native 2-couches, graphe nommé (H1 canonical-independent), P0 tri-state + gate INFEASIBLE-until-schema, D0/ε_prod cadence séparée (SHA-keyed), §3.C spawn-time/worker-time, vues déploiement + séquence, schéma Verdict auto-auditable ingénieur, archi pour revue (r2)
3 Runbook opérateur (r1) déclencher (2 DAGs : D0 ε_prod + verdict job), lire le verdict + désambiguïsation cause, troubleshooting opérateur pour revue
4 Stratégie de tests (r1) table de décision exhaustive 5-voies (H1×P0×H2×canonical×ε_prod → un verdict), invariants I1–I8, 3 niveaux, validation système dev, QA pour revue
5 MLOps readiness à remplir au merge (ADR-70) DRI

État

Specified (OP wp#237) — committee plan_review ✅ PASSED·OK (session f5fdbf8d, Meeting 268, 5 experts, strong consensus, 0 blocker/0 dissent ; 3 recos cheap foldées en r4, reste = follow-ups). Transition New → Specified faite 2026-06-09 (forcée, plan dossier + plan_review remplis — CLAUDE.md §0). Les 4 artefacts de conception sont prêts pour revue (plan r4 + archi r2 + runbook r1 + test-strategy r1) ; la branche feat/CVN-N001-EI-S09-replay-divergence-detection existe. Prochaine étape : revue des docs → impl (Specified → In progress au démarrage, single-WIP à vérifier ; scaffold /diagnostic-scaffold). MLOps readiness (artefact 5) au merge (ADR-70).

Travail parallélisé : dev1 sur S09 (substrat s18) pendant que dev2 avance sur l'Epic CVN-N001-EK (protocole de décision de tradabilité). S09 est un feeder de la pré-étude D2 d'EK (« substrat à fidélité validée »).

Règle de décision (pré-enregistrée — résumé)

Ordre parité env (P0) → déterminisme (H1) → divergence (H2). H1 = cross-process sous config déterministe épinglée (threads cappés ADR-0096 + LightGBM deterministic). La prod tourne non-cappéeε = max(0.005, ε_prod), ε_prod = enveloppe de reproductibilité du chemin prod mesurée sous la config réelle prod (borne de tolérance conservatrice, N≥10, gatée). P0 = parité image SHA + instance (ADR-92) : sans elle, FIDELITY_OK non posable et la divergence est classée env/version gap, pas fidelity gap :

Verdict Condition Action aval
FIDELITY_OK P0 parité + H1 PASS (bit-identique cross-process) + \|replay−canonique\| ≤ ε lever A6 pour la surface couverte ; autoriser skip_phase_a=true par défaut seulement sur cette surface
NON_DETERMINISTIC H1 FAIL (replay diverge entre process) — cause routée : numeric_residue vs real_instability corriger seed/ordre/fenêtre/threads avant tout claim de fidélité
CANONICAL_DIVERGENCE H1 PASS + \|replay−canonique\| > ε — cause logic_fidelity_gap (P0 OK) ou env_parity_gap (P0 KO) si logic : diagnostiquer la cause, borne les verdicts s18 (dont S05) ; si env : re-générer le canonique sous image parité
INCONCLUSIVE_TOOLING erreur / NaN / canonique absent / ε_prod non mesuré / parité non vérifiée corriger + relancer (no-crash, ADR-25)

Carte de traçabilité

problématisation (plan §1) → user stories (§2) → hypothèses H1/H2 (§3) → état de l'art (§4) → consolidation + decision routing (§5) → sections techniques §0-§7. Matrice complète : plan §5.