5.0 KiB
V18 · Master Project Intake / Master Data Model (Phase 1)
Moteur : V18 · Phase 1/15 (première du plan « ORDRE DÉVELOPPEMENT » de la
directive V18).
Débloqué par : V18_GO_PHASE_1_20260812.md
(D-06 APPROVED) + V18_DECISIONS_D07_D08_20260812.md
(D-08 : sur-ensemble STRICT brief.json V12).
Fondé sur : OTO V18 · Migration & Architecture Audit
§4 (data model) · §5 (provenance) · §11 (séquence).
Statut : livrable prêt pour CP0 (Document Completeness) · en attente de la
validation Michel AVANT toute Phase 2 (séquence GO_PHASE_1 §Validation à chaque
étape). Auto-score 4Big cible : ≥ 95/100 (doc + contrat schéma + couverture
de tests + CLI reproductible), aligné CLAUDE.md #5.
Ce que livre la Phase 1 (et ce qu'elle NE livre PAS)
Phase 1 = le data model, pas un moteur métier. Conformément à l'audit §11 (« Zéro moteur métier tant que le data model n'est pas validé »), ce module ne calcule AUCUNE faisabilité, AUCUN DCF/IRR/DSCR (ceux-là arrivent aux moteurs 4/8, formules Big4 débloquées D-07), n'écrit rien sur le VPS (#8) et n'invente aucune donnée (#6).
Il fournit le contrat du Master Dataset — « One Master Dataset · Multiple Outputs » :
| Brique | Fichier | Rôle |
|---|---|---|
| Schéma maître | master_intake.schema.json |
Sur-ensemble strict de brief.schema.json V12, inclus via allOf/$ref ; ajoute dataset_version, les registres et les défs data_status/data_category/data_point. |
| Modèle de données | mdmlib/master_data_model.py |
Les 11 statuts + 5 catégories + DataPoint traçable + garde des canoniques #9/#10. |
| Evidence Register | mdmlib/evidence_register.py |
Registre documentaire (id · version · date) + liens donnée→pièce + détection de provenance pendouillante. |
| CLI | master_intake_gen.py |
validate (contrat + intégrité) et maturity (complétude honnête). |
| Fixture pilote | fixtures/intake_P01_coralis.json |
P01 Coralis · majoritairement PENDING (aucun chiffre inventé). |
| Tests | tests/test_master_intake.py |
32 tests · contrat, rétro-compat V12, garde canonique, intégrité preuves. |
Les 11 statuts de donnée (ordre canonique)
VERIFIED · CONFIRMED · SOURCE_BASED · CALCULATED · ESTIMATED ·
ASSUMPTION · TARGET · BANK_REQUIREMENT · PENDING · MISSING ·
NOT_APPLICABLE
Une donnée n'est jamais un chiffre nu : c'est un DataPoint portant sa
provenance (source_document · source_date · status · confidence ·
validated_by). C'est la généralisation du patron {formule + opérandes sourcés/null} déjà éprouvé dans banclib/finance.py (audit §5).
Les 5 catégories de séparation
INPUT · TARGET · ASSUMPTION · BANK_REQUIREMENT · CALCULATED — le RÔLE de
la donnée dans le modèle (distinct du statut, qui dit sa fiabilité).
Rétro-compatibilité V12 (D-08)
- Toute clé du
brief.jsonV12 conserve son nom exact (le parser Publiciste continue de lire les données V18, ignorant silencieusement les champs V18). brief.schema.jsonV12 est inclus (jamais recopié) viaallOf/$refsur son$idcanonique → source unique, zéro duplication.- Les champs V18 sont ajoutés en extension, jamais en remplacement (test
test_no_v12_key_shadowed_with_conflicting_type). dataset_versiondistingue V12 vs V18.
Utilisation
python3 master_intake_gen.py validate fixtures/intake_P01_coralis.json
python3 master_intake_gen.py maturity fixtures/intake_P01_coralis.json
python3 -m unittest discover -s tests -v
Les lacunes PENDING/MISSING ne sont pas des erreurs : elles mesurent la
complétude (audit §4 · « la fraction de champs absents explosera au démarrage…
ce n'est pas un bug »). validate ne sort en erreur que sur une violation de
contrat (statut/catégorie inconnu, canonique saisi, preuve pendouillante).
Anti-invention & angle mort déclaré (#6 · #8)
Les A1-A20 fins vivent dans la directive complète root-owned (57 chapitres),
illisible par le worker (audit §0). Ce module livre donc le cadre ouvert
(intake_sections clés A1..A20, contenu à confronter au CP0) — il ne fabrique
aucun champ A1-A20. Toute divergence avec la spec fine de Michel sera résolue à
la validation Phase 1.
Prochain incrément (post-CP0)
Après validation Michel du data model (CP0), le module sera câblé au gate CI
(.gitea/workflows/ci.yml + régénération des méta-artefacts régression/4Big) et
Phase 2 (Document / Evidence Engine · généralisation champs_manquants → gate
CP0 automatisé) pourra démarrer.