CVN-N001-EI-S12 — Economic observability : keyed-config + cost-validated ground-truth substrate · hub Story¶
Hub documentaire de la Story S12 — le prérequis-gate de toute la direction Tier-2 économique. Partie du programme CVN-N001-EI. État live = OpenProject (wp#246, GH #1109, ADR-76).
En une phrase¶
Le programme mesure son éco (table finetune_results) mais ces nombres sont inutilisables comme vérité-terrain : découplés de la config déployée (clés de join mortes) et calculés sous coûts assumés non-validés. S12 construit le substrat keyé ET coût-validé.
D'où ça vient (la reconnaissance)¶
Une sonde PG read-only (2026-06-05) sur finetune_results (9216 lignes) a trouvé :
| Critère §0bis | Verdict |
|---|---|
| 1. Peuplé | ✅ distributions éco réelles — mais 99,7 % pré-S19 (fiable ≈ 27 lignes) |
| 2. Keyé-config | ❌ model_hyperparams 0/9216, optuna_trial_id 0/9216, feature_hash constant → aucune jointure vers la config déployée |
| 3. Deux côtés | ⚠️ fenêtres train/val/test présentes, mais pas de paires val↔OOS stockées |
| 4. Coût-validé | ❌ éco backtestée sous coûts assumés (sweep ≠ validation) — existe + joignable ≠ vrai |
Les documents (ordre de lecture)¶
| # | Document | Quoi |
|---|---|---|
| 1 | Fiche de décision (S11 §8) | le pourquoi — sonde, 4 critères, Option C tranchée, garde intérimaire, raffinement coût-validité. Comité Meeting #250. |
| 2 | Plan dossier (incréments 1a-4) | le quoi & comment — root cause localisé, décomposition incrémentale, risques, critères de succès, questions résiduelles. |
Périmètre (keyé ET coût-validé — deux prérequis co-égaux constitutifs)¶
| # | Incrément | Statut |
|---|---|---|
| 1a | model_hyperparams (identité de config) propagé caller→writer |
✅ fait (branche feat/CVN-N001-EI-S12-economic-observability, 7/7 tests) |
| 1b | optuna_trial_id |
à faire |
| 1c | vrai feature_hash (remplace "unknown") |
à faire |
| 2 | peupler finetune_baselines (ADR-29) |
à faire |
| 3 | paires val/OOS (critère 3) | design |
| 4 | coût-validité : ancrer sur fills réalisés ou étiqueter cost_basis='backtested_assumed' — jamais certifier l'hypothèse |
design |
État¶
In progress (impl démarrée). Incrément 1a livré sur branche : la colonne model_hyperparams était totalement absente de l'INSERT (NULL pour 9216 lignes) → maintenant propagée depuis VariantResult.hpo_params, JSON-sérialisée, NULL (jamais {}) quand absente (ADR-25). Test de contrat : parité 68 colonnes + valeur JSON au bon index + NULL-si-absent.
RCA¶
- RCA — run de validation
cost_scenariovide (no_data) : le run de validation de l'incrément 2 (2026-06-07) est revenu vide. Cause = bug de code pré-existant (#491) dans la récupération du base-model runtime, dormant (facteurs runtime = Phase 6). #1117 exonéré ; Story resteIn testing. Cause GH #1133 · observabilité GH #1134. - Plan de fix — runtime base-model (#1133/#1134) : dossier de plan (pour
plan_review) — Option 1 (exposer le modèle surVariantResult) + suppression du fallback mort + test d'intégration ADR-58 ; fix observabilité #1134 ; analyse d'impact + critères de succès.
Blocked-by¶
- CVN-N001-EI-S13 (OP wp#257, GH #1133) — fix du chemin runtime base-model. La validation système de S12 (re-run
cost_scenario→ preuve per-cost) ne peut aboutir qu'une fois S13 livrée. S12 resteIn testingd'ici là. (Le dossier de fix est lié dans cette nav S12 — analyse-de-record — mais l'implémentation est l'entité EI-S13.)