[DTP-Worker 20260803_123715] Log session · drift-hunt docstring-vs-CODE financement_bancaire

This commit is contained in:
Claude Code DTP Worker
2026-08-03 12:43:13 +00:00
parent 2e4ff2d728
commit f0827a7b6c
+39
View File
@@ -938,3 +938,42 @@ Aucun gate ne dépend du texte de ces commentaires (le code recompute depuis `re
**Réalisé / gate-vert.** 6 lignes de prose gate-doc éditées, prose only. `./run_ci.sh` en clôture = **Réalisé / gate-vert.** 6 lignes de prose gate-doc éditées, prose only. `./run_ci.sh` en clôture =
**32 PASS · 0 FAIL · 0 SKIP**. Commit à suivre. **32 PASS · 0 FAIL · 0 SKIP**. Commit à suivre.
---
## Session `20260803_123715` · QA drift-hunt — docstring-vs-CODE (`financement_bancaire`)
**État d'entrée.** Tous les sprints livrés ; `./run_ci.sh` = **32 PASS · 0 FAIL · 0 SKIP**. Mode
maintenance/anti-dérive. La classe *count-reconciliation* 22→24 a été vérifiée **propre à toutes
les surfaces au présent** : les seuls hits `22 suites`/`564 tests` résiduels vivent dans les
`daily_reports/` (instantanés **append-only historiquement exacts** au moment d'écriture — le dernier
addendum de `2026-08-03.md` porte bien `24 suites · 624`), donc **KEEP** (cf. [[two-logging-channels]],
[[prose-facts-vs-numeric-drift]] : historique ≠ dérive). Artefacts vivants confirmés :
`regression_run.json` = 24 suites / 624 ran · `quality_report.json` = 24 modules.
**Cible retenue — classe ouverte/récurrente [[docstring-vs-code-drift]].** Audit read-only (agent
Explore) des docstrings de générateurs `*_gen.py` (inputs/fallbacks/outputs annoncés vs code réel),
focalisé sur les modules **les plus neufs** (pie/manifest, financement_bancaire, mobile).
**Dérive confirmée (1).** `crm/financement_bancaire/financement_bancaire_gen.py` — le CODE lit **deux**
contrats d'entrée : `financement_spec.json` **et** `rbac/rbac_50_roles.json` (via
`RoleResolver.from_path()` L84 → `RBAC_CONTRACT_PATH` ; l'**invariant 4** L145 valide les rôles contre
RBAC). Or la docstring n'énumérait que `financement_spec.json` en input (L7) et se contentait de
« du contrat RBAC » **sans nommer le fichier**. **Convention des pairs vérifiée** : *tous* les
générateurs consommant RBAC citent explicitement le fichier — `commissions` L8
(`le contrat RBAC (`rbac_50_roles.json`)`), `workflow_vente` L11-12, `mobile/app_config` L9.
`financement_bancaire` était le **seul outlier**. Le README du module (L71) nommait déjà correctement
`rbac_50_roles.json` → **surface sœur non dérivée** (la docstring était l'unique surface fautive).
**Correctif (1 édition chirurgicale, docstring only).** L22-23 : « du contrat RBAC » →
« du contrat RBAC (`rbac_50_roles.json`, résolu par `RoleResolver.from_path`, invariant 4) ». Numéro
d'invariant vérifié exact (L145). Aligne la docstring sur la convention des pairs **et** sur le README
du module. **Zéro artefact / générateur logique touché** — `ci/` non concerné, aucun gate ne pin le
texte de cette docstring.
**Autres modules audités = propres** : `pie/manifest` (inputs/outputs cohérents), `mobile/app_config`
(4 inputs + 5 outputs documentés fidèlement), reste des générateurs échantillonnés sans dérive
input/output/fallback.
**Réalisé / gate-vert.** 1 ligne docstring alignée. `./run_ci.sh` en clôture = **32 PASS · 0 FAIL ·
0 SKIP**. Commit `2e4ff2d`.