From d7dbda9e2b5e911fd5651c23bb816fb90546d4aa Mon Sep 17 00:00:00 2001 From: Claude Code DTP Worker Date: Wed, 5 Aug 2026 08:50:13 +0000 Subject: [PATCH] =?UTF-8?q?[DTP-Worker=2020260805=5F084202]=20FIX=20R?= =?UTF-8?q?=C3=89EL=20:=20=C2=AB=206=20sections=20=C2=BB=20p=C3=A9rim?= =?UTF-8?q?=C3=A9=20dans=20les=202=20docs=20d'IMPL=C3=89MENTATION=20de=20c?= =?UTF-8?q?rm/financement=5Fbancaire=20alors=20que=20le=20module=20en=20li?= =?UTF-8?q?vre=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Classe prose FACT count ungated (prose-facts-vs-numeric-drift). Défaut : README:9 « la structure des 6 sections » + fiche CRM AGENT.md:47 « cœur du gate + 6 sections » décrivaient le livrable avec un compte périmé. Le bon compte = 7 est triple-sourcé et byte-gaté : out/MANIFEST.json counts.sections=7 · financement_spec.json bloc sections=7 (apport_initial,info_achat,choix_banque,formulaires,exigences,autorisations,envoi) · et le README se contredisait lui-même (L49 énumère 7, L57 « 7 sections » annotée source=MANIFEST). Origine du 6 : la DIRECTIVE originale énumérait 6 sections non-gating puis fut amendée pour ajouter apport_initial (gating, pos.1) → 7 ; spec+module ont suivi, les 2 prose L9/L47 non. Correctif 6→7 sur les 2 SEULES surfaces d'implémentation. Les 4 « 6 sections » restantes sont des snapshots directive gelés (DIRECTIVE_FINANCEMENT L106/122/131 + DIRECTIVE_WORKFLOW_V10 L22/47) — input-specs datés de Michel, jamais réécrits (directive-vs-implementation · spec=authority) ; leur « 6 » est exact au cadre pré-amendement → INTACTS. 0 gate ajouté (#5 · un gate structuré ne mordrait pas la prose L9, hors-cible ; SIGNAL surfacé : financement seul module dont MANIFEST.counts n'est pas recompté par check_readme_claims). 0 chiffre inventé (#6). 0 production éditée. 0 commande VPS (#8). run_ci.sh 33 PASS 0 FAIL 0 SKIP. Co-Authored-By: Claude Opus 4.8 (1M context) --- 03_agents/crm/AGENT.md | 2 +- 05_activity_log/2026-08-05.md | 43 +++++++++++++++++++ .../crm/financement_bancaire/README.md | 2 +- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/03_agents/crm/AGENT.md b/03_agents/crm/AGENT.md index e9e7ae2..727a00d 100644 --- a/03_agents/crm/AGENT.md +++ b/03_agents/crm/AGENT.md @@ -44,7 +44,7 @@ de Michel, d'où son suivi séparé (il ne partage pas la source unique du trio) | [`financement_bancaire/`](../../05_deliverables_mvp/crm/financement_bancaire/README.md) | 4 (roadmap L52) | Parcours **hypothécaire RD** : cœur métier du **gate check 4 conditions** — aucun document n'est transmis à la banque tant que apport initial (20 % résident · 30 % étranger · Ley 189-11) + documents exigés + autorisations signées + validation référente ne sont pas réunis ; fonctions **pures** sans I/O | `financement_bancaire_gen.py build\|validate` | `crm-financement-bancaire-tests` | 35 | Matérialise [`DIRECTIVE_FINANCEMENT_BANCAIRE_COMPLET_20260803.md`](../../DIRECTIVE_FINANCEMENT_BANCAIRE_COMPLET_20260803.md) -(**Phase 1 · P0 · MVP** : contrat de données + cœur du gate + 6 sections + bannière +(**Phase 1 · P0 · MVP** : contrat de données + cœur du gate + 7 sections + bannière critique). La **Phase 2** (formulaires PDF officiels des 6 banques, endpoints runtime `/api/hypotheque/*`, `renderHypotheque`) attend les démarches relationship-manager de Michel et l'exécution VPS — **hors périmètre worker** (#8). diff --git a/05_activity_log/2026-08-05.md b/05_activity_log/2026-08-05.md index dfe64e7..44ab724 100644 --- a/05_activity_log/2026-08-05.md +++ b/05_activity_log/2026-08-05.md @@ -820,3 +820,46 @@ ajouté** (surface déjà couverte par le `row_re` générique des cellules Test Le trio CRM + « Total CRM 81 tests » + le financement laissés **INTACTS** (demo hors-trio, source distincte). **0 production éditée** (#5), **0 commande VPS** (#8), **aucun `git clean`**. `./run_ci.sh` → **33 PASS · 0 FAIL · 0 SKIP**. + +--- + +## Session 20260805_084202 · FIX RÉEL — « 6 sections » périmé dans les 2 docs d'implémentation du module `financement_bancaire` (le module en livre 7) + +**Classe** : prose FACT count périmée, ungated ([[prose-facts-vs-numeric-drift]] · +[[doc-numeric-claims-gate]]) — distincte des comptes gatés. + +**Défaut réel trouvé.** Deux surfaces d'implémentation décrivant le module livré +`crm/financement_bancaire` affirmaient **« 6 sections »** alors que le module en livre +**7** : +- `05_deliverables_mvp/crm/financement_bancaire/README.md:9` — « la structure des 6 sections » +- `03_agents/crm/AGENT.md:47` — « cœur du gate + 6 sections + bannière » + +**Preuve du bon compte = 7** (triple-sourcé, byte-gaté) : +- `out/MANIFEST.json` → `counts.sections = 7` (artefact byte-gaté par `check_regression`/`check_artifacts`). +- `financement_spec.json` → bloc `sections` = 7 (`apport_initial`, `info_achat`, + `choix_banque`, `formulaires`, `exigences`, `autorisations`, `envoi`). +- Le README **lui-même** se contredisait : ligne 49 énumère les **7** sections de + l'accordéon, ligne 57 « **7 sections** » (annotée « source de vérité = MANIFEST.json »). + Seule la ligne 9 (prose libre) était restée à « 6 ». + +**Origine du « 6 ».** La `DIRECTIVE_FINANCEMENT_BANCAIRE_COMPLET` originale (L106) +énumère exactement **6 sections non-gating** (`Info achat / Choix banque / Formulaires / +Exigences / Autorisations / Envoi`), **puis** a été **amendée** pour ajouter la section +gating `apport_initial` en position 1 → **7** au total. La spec + le module ont suivi (7), +mais les 2 phrases de prose d'implémentation avaient gardé le « 6 » d'avant l'amendement. + +**Correctif — 2 surfaces d'implémentation, 6→7. Directives laissées INTACTES.** +Les **4** occurrences « 6 sections » restantes vivent dans des **snapshots directive** +gelés (`DIRECTIVE_FINANCEMENT…` L106/L122/L131 + `DIRECTIVE_WORKFLOW_FAISABILITE_V10` +L22/L47) — **input-specs datés de Michel**, jamais réécrits ([[directive-vs-implementation]] · +`spec = authority, directive = snapshot`). Leur « 6 » est **historiquement exact** au +cadre pré-amendement (énumération des 6 aval). Seules les 2 surfaces décrivant le +**livrable** sont corrigées. + +**Aucun gate ajouté (#5).** Un gate structuré sur la ligne « Comptes courants » +recomputerait la ligne 57 (déjà correcte, adossée à MANIFEST) mais **ne mordrait pas** +la prose libre de la ligne 9 — la classe réelle du défaut. Financement reste le seul +module dont `MANIFEST.counts` n'est pas recompté dans `check_readme_claims` ; **SIGNAL +surfacé** (couverture prose ungated), pas d'ajout ce tour pour éviter un gate fragile + +hors-cible. **0 chiffre inventé** (#6 · 7 dérivé de MANIFEST/spec), **0 production éditée** +(#5), **0 commande VPS** (#8), **aucun `git clean`**. `./run_ci.sh` → **33 PASS · 0 FAIL · 0 SKIP**. diff --git a/05_deliverables_mvp/crm/financement_bancaire/README.md b/05_deliverables_mvp/crm/financement_bancaire/README.md index f25868a..5a9c8ed 100644 --- a/05_deliverables_mvp/crm/financement_bancaire/README.md +++ b/05_deliverables_mvp/crm/financement_bancaire/README.md @@ -6,7 +6,7 @@ financement).** Matérialise la (Michel, 2026-08-03) : un module **complet** de financement bancaire pour un vrai parcours hypothécaire dominicain, à la place du module « trop simpliste » antérieur. Livrable **Phase 1 (P0 · MVP)** : le contrat de données + le **cœur -métier du gate check** + la structure des 6 sections + la bannière critique. +métier du gate check** + la structure des 7 sections + la bannière critique. > Ce worker **n'écrit jamais sur le VPS** (contrainte #8). Il produit le contrat > et les artefacts en-repo ; le backend `/api/hypotheque/*` et le frontend