Epic closure note — CVN-N014-ED · Inter-task data transport¶
Note de clôture de l'Epic CVN-N014-ED. Produite par le rituel
epic-close(CVN-N014-EC-S18) — résume et lie la rétrospective (input obligatoire), ne la remplace pas. Premier dogfood réel deepic-close.
Outcome¶
L'Epic est complet. Le bug fondateur — transport inter-tâches bricolé par-tâche (incident s43 : np.savez vers un /tmp pod-local → cohorte vide cross-pod → INCONCLUSIVE_TOOLING) — est corrigé (S01–S03) et structurellement dissuadé / review-gated (S04). Critère d'acceptance qualitatif atteint : le bug ne peut plus revenir silencieusement — un standard écrit + un gate de review couvrant la surface runtime réelle l'attrapent à la PR.
Scope delivered¶
Standard de transport object-storage XCom (S01) → validé in-vivo sur s43 cross-pod (S02) → inventaire des workarounds soldé, vide (S03) → guideline + gate de review anti-régression (S04).
Story-by-story closure table¶
| Story | wp / issue | Livré | Statut |
|---|---|---|---|
| S01 — flip global backend object-storage XCom (fondation) | wp#242 / #1105 | Route A recon-fondée ; Route Y numpy ; RCA section dottée (common.io→env underscore) + fix-forward (#1118/#1119) |
Closed |
| S02 — s43 cross-pod transport (1er bénéficiaire) | wp#243 / #1106 | pass-by-référence S3 (s43_io) ; smoke 5/5 pods, verdict science ≠ signature bug |
Closed |
| S03 — cleanup opportuniste borné | wp#244 / #1107 | inventaire vide publié ; lifecycle xcom/ 7 j appliqué ; enforcement transféré à S04 |
Closed |
| S04 — standard & review gate (fence) | wp#245 / #1108 | guideline DAG-author + gate CodeRabbit (dags/**+src/commun/finetune/**+scripts/**) + checklist comité ; plan_review a corrigé le périmètre du gate |
Closed |
Acceptance evidence¶
- Criterion : le bug « transport bricolé par-tâche cross-pod » est corrigé et structurellement empêché de revenir silencieusement (critère qualitatif de l'Epic).
- Evidence : S02 smoke 5/5 pods distincts (cross-pod prouvé) ; S03 inventaire vide ; S04 guideline live (HTTP 200) + gate live sur
mainsur les 3 globs runtime. - Source : PRs #1118/#1119 (S01), #1125/#1128 (S02), #1127/#1128 (S03), #1131 (S04) ; Meetings #249/#260/#262.
- Operator confirmation : clôture validée par l'opérateur via
epic-close(dogfood réel).
Retrospective summary¶
La rétrospective recense 5 hypothèses (3 infirmées de façon productive : numpy non-natif, inventaire vide, gate dags/**-only insuffisant), les garde-fous déclenchés (cut-over S01, plan_review S04), ce qui a marché (recon avant build, preuve in-vivo, fermer sur l'évidence, le plan_review comme filet de conception) et les enseignements durables (vérifier la résolution config ; un gate couvre la surface runtime). Voir la rétro pour le détail.
Decisions and trade-offs¶
- Route A (recon-fondée) plutôt que blue/green Tier-1 (S01) — parc near-inert prouvé.
- Route Y numpy (XCom = références, pas arrays bruts) après le finding « pas de sérialisation numpy native ».
- Gate à la review, pas runtime (S04) — seul endroit distinguant store bricolé cross-pod vs capture single-pod légitime.
- Périmètre du gate étendu à
src/(correctionplan_review) — le code de transport vit hors du fichier DAG.
Residual risks / follow-ups¶
- Fixture de régression du gate (S04 §4.5, P1).
- Step-script KPO via image custom hors globs : non couvert → check CI statique = extension future possible.
- Lifecycle S3 (
xcom-objectstorage-7d+s43-predictions-7d) actifs surcvntrade-artifacts.
Documentation and navigation links¶
- Epic hub · Retrospective
- Stories : S01 · S02 · S03 · S04
- Standard : INTER_TASK_DATA_TRANSPORT · ADR-0100
OpenProject / GitHub references¶
- OP Epic wp#205-family (CVN-N014-ED) · Stories wp#242–245 · Meetings #249/#260/#262.
- GitHub issues #1105–1108 (Closed) · PRs #1118/#1119/#1125/#1127/#1128/#1131.
Divergence waivers : aucun (toutes sources concordantes). Version-close : geste UI opérateur, vérifié post-hoc.