diff --git a/03_agents/crm/AGENT.md b/03_agents/crm/AGENT.md index 266cf5c..c4764f4 100644 --- a/03_agents/crm/AGENT.md +++ b/03_agents/crm/AGENT.md @@ -29,7 +29,32 @@ AVANT le Workflow** qui le cible. doublons) : le nom du DocType, son champ d'état, ses valeurs de statut et son caractère *submittable* sont **dérivés** de `workflow_vente_spec.json` (anti-dérive) ; les rôles sont **résolus** depuis `rbac/rbac_50_roles.json` — jamais un nom Frappe -en dur. Total CRM : **81 tests** (25 + 31 + 25), tous gated dans le CI. +en dur. Total CRM : **81 tests** (25 + 31 + 25), tous gated dans le CI — c'est le +total du **trio pipeline** ; le module financement bancaire ci-dessous porte ses +**35 tests** à part (source distincte). + +## Module CRM additionnel · financement bancaire hypothécaire (piloté par directive) + +Un **quatrième** livrable CRM vit sous `05_deliverables_mvp/crm/` **hors du trio +pipeline** — piloté non par `workflow_vente_spec.json` mais par une directive datée +de Michel, d'où son suivi séparé (il ne partage pas la source unique du trio) : + +| Module | Sprint | Rôle | Entrée CLI | Job CI | Tests | +|---|---|---|---|---|---| +| [`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 +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). + +**Décision produit ouverte** — la condition #4 du gate teste encore une validation +**humaine** (`wag_validated_by`), alors que la couche `## PRÉCISION` de la directive +la supersède par un **audit IA signé** ; producteur d'audit hors dépôt → arbitrage +de séquencement, **surfacé non tranché** dans +[`OPEN_DECISIONS_REGISTER.md` D-02](../../05_deliverables_mvp/OPEN_DECISIONS_REGISTER.md) +(ne pas re-litiger · #5). ## Anti-invention (#6) — pourquoi les taux de commission sont `null` **Aucun taux de commission n'est documenté dans CLAUDE.md.** Les taux du barème diff --git a/05_activity_log/2026-08-05.md b/05_activity_log/2026-08-05.md index 8984209..d8d18e5 100644 --- a/05_activity_log/2026-08-05.md +++ b/05_activity_log/2026-08-05.md @@ -1,5 +1,52 @@ # Activity Log · 2026-08-05 · Claude Code DTP Worker +## Session 071201 · FIX de COUVERTURE doc — la fiche CRM omettait son **4e module livré** (`crm/financement_bancaire`) : ajout d'une sous-section dédiée + ligne de table **auto-gatée** (35 tests · job CI · verbes CLI) · 0 édition d'autorité + +**Contexte + choix de tâche.** `./run_ci.sh` au démarrage : **33 PASS · 0 FAIL · 0 SKIP**, arbre propre. +Roadmap `ROADMAP_8_WEEKS_OR_LESS.md` intégralement livrée/gatée (24/24 modules 4Big à 100/100, matrice +d'acceptance 15/15 `in_repo`) — **Sprint 8 · launch-readiness**. Les décisions ouvertes restantes sont +des **arbitrages produit de Michel** ([[open-decisions-register]], ne pas trancher · #5). Tâche retenue : +le **fallback explicite** de la mission (« améliorer la doc d'un AGENT.md ») appliqué à un **écart réel**, +pas cosmétique. + +**Le finding.** La fiche `03_agents/crm/AGENT.md` se présente comme le recensement des « **Livrables CRM +réellement produits** » mais n'en documentait que **3** (trio pipeline `workflow_vente`/`dossier_vente`/ +`commissions`). Or `05_deliverables_mvp/crm/` héberge un **4e module gaté** — `financement_bancaire` +(parcours hypothécaire RD · gate check 4 conditions · 35 tests · job `crm-financement-bancaire-tests`) — +**absent de TOUTES les 13 fiches agents** (grep confirmé), y compris de sa fiche propriétaire naturelle. +Ce n'était pas une *inexactitude* (les 3 lignes existantes sont justes, cf. [[fiche-accuracy-audit-closed]]) +mais une **incomplétude** : un livrable réel sans surface de doc côté agent. + +**Pourquoi il était hors du trio (et le reste).** Le trio partage **une source unique** +(`workflow_vente_spec.json` + `rbac_50_roles.json`) — c'est la propriété « cross-cohérents » que décrit la +prose du trio, et que le gate `check_readme_claims.sh:725` encode en figeant « Total CRM : 81 tests » aux +**3** suites du pipeline. `financement_bancaire` **ne partage pas** cette source (piloté par +`DIRECTIVE_FINANCEMENT_BANCAIRE_COMPLET_20260803.md`), donc l'ajouter comme 4e ligne du trio aurait été +faux sémantiquement **et** cassé le gate (regex `Total CRM : **N tests**`). D'où une **sous-section +séparée**, le trio et son agrégat gaté laissés **intacts**. + +**Sourcing (zéro invention · #6).** Sprint **4 · roadmap L52** lu dans l'autorité roadmap-globale +`qa/acceptance/acceptance_spec.json:71-84` (byte-gaté ; `evidence_modules` inclut `crm/financement_bancaire` +sous S4) — **pas** le « Sprint 5 » du README module, qui est le **cadre agent-interne** +([[agent-internal-vs-roadmap-sprint-frames]]). Nombre de tests **35** lu dans `regression_plan.json` +(`test_methods`, source faisant autorité). CLI `financement_bancaire_gen.py build|validate` vérifié depuis +les subparsers. + +**Auto-gatage confirmé — le finding devient opposable au merge.** La nouvelle ligne de table est captée +par **trois** gates indépendants de `check_readme_claims.sh` (résolution par **cible de lien**, +`crm/financement_bancaire ∈ auth`) : (a) cellule Tests `35 == source (35)`, (b) job CI +`crm-financement-bancaire-tests == ci.yml`, (c) verbes CLI `build|validate == subparsers`. Une future +dérive du compte/job/CLI **mordra** désormais. `./run_ci.sh` final : **33 PASS**. + +**SIGNAL (surfacé, non tranché · SURFACE don't rewrite).** Le README du module écrit « **Sprint 5** · +roadmap L52 » — pairing interne étrange (L52 est une ligne **Sprint 4**) : soit le cadre agent-interne, +soit une micro-dérive du label roadmap-global vs l'autorité `acceptance_spec` (S4). **Non édité** (le +module README n'est pas ma cible ; le piège des deux cadres de sprint exige une édition spec+regen +coordonnée, cf. [[agent-internal-vs-roadmap-sprint-frames]]) — consigné ici pour un passage ultérieur. + +**Bilan.** 1 fiche agent enrichie (sous-section + 1 ligne auto-gatée) · **0 édition d'autorité** · 0 gate +ajouté (surface déjà couverte par `row_re`/job/CLI · #5) · 0 chiffre inventé · CI **33 PASS**. + ## Session 051154 · Attestation des DENTS des **suites de MODULE** — BATCH 4 (FINAL) : les **7 dernières** suites → **25/25** prouvées · **7 BITES · 0 TOOTHLESS** · arbre byte-pristine · 0 édition de production **Contexte + choix de tâche.** `./run_ci.sh` au démarrage : **33 PASS · 0 FAIL · 0 SKIP**, arbre propre,