[DTP-Worker] Sprint 8 · buffer · Fiscal/ecf_dgii (2e surface) : la CROSS-COHÉRENCE e-CF ↔ workflow ↔ DocType ↔ RBAC — le CŒUR du livrable — énumérait EN PROSE trois données data-derived (états qui ÉMETTENT un e-CF · champs Currency de base · FormaPago défaut ancrée sur CLAUDE.md #10/Cardnet) sans AUCUN gate d'IDENTITÉ. Le bloc e-NCF existant ne gate QUE le FORMAT de l'identifiant (E+tipo(2)+seq(10)=13) — jamais ces trois ensembles/valeur. Ils sont DATA-DERIVED de out/ecf_plan.json (byte-gaté par check_artifacts) : README:48 « seulement réservation et contrat » = {emission_events[].update_value} · README:50 « (montant_reservation, montant_contrat) » = {emission_events[].base_field} · README:59 « FormaPago défaut = 3 (Tarjeta) … via Cardnet (#10) » = forma_pago_defaut (ancré sur CLAUDE.md #10 : Cardnet = carte, pas Stripe). PIÈGE : check_artifacts ne prouve QUE ecf_plan==build (byte-for-byte) et le bloc racine ne gate QUE le compte de tests e-CF (« 39 ») → AJOUTER un évènement d'émission (facturer un devis) · en RETIRER un · RENOMMER un base_field · CHANGER forma_pago_defaut (Cardnet abandonné → code 2 Transfert) laissait la prose périmée pendant que l'artefact dit autre chose → l'agent ERPNext Backend câblerait le mauvais évènement / la mauvaise FormaPago (le risque même que la cross-cohérence veut prévenir) — « vert trompeur » qu'aucune suite tests/ (qui teste des FONCTIONS ncf/résolution, pas la prose) n'attrape. Même patron EXACT que la cross-cohérence CRM/Commissions déjà gatée (base_field + états soumis). Nouveau bloc « Fiscal cross-cohérence » dans ci/check_readme_claims.sh (après le bloc e-NCF) : (1) états émetteurs recomputés de emission_events[].update_value, prose exigée EXACTE (set-diff · accents NFKD) ; (2) champs de base recomputés de emission_events[].base_field, prose EXACTE ; (3) FormaPago défaut = forma_pago_defaut.code + libellé (⊆ catalogue) + ancrage Cardnet à proximité. Cohérences croisées en bonus (mordent un plan INTERNEMENT incohérent) : forma_pago_defaut.code ∈ catalogue formas_pago · libellé prose ⊆ libellé catalogue du code · ensembles NON VIDES. Un claim absent échoue AUSSI. 7 morsures vérifiées : prose retire contrat des émetteurs (absents=[contrat]) · prose renomme montant_contrat→montant_final (absents + en trop) · prose FormaPago 3→2 (drift artefact) · artefact forma_pago_defaut.code 3→2 (prose périmée) · artefact ajoute l'évènement devis (états ET base_field mordus · absents=[devis]) · FormaPago prose supprimée (INTROUVABLE) · artefact code→99 hors catalogue (incohérence interne) ; restauré = green : émetteurs [contrat,reservation] · base [montant_contrat,montant_reservation] · FormaPago 3 (Tarjeta) ancré Cardnet · exit 0. État courant : aucune valeur périmée (anti-invention #6, rien à réécrire) — le défaut est la surface ungated. ci/README.md (table + détail « 2e surface e-CF DGII ») mis à jour · working tree byte-restauré (git clean) · 7 gates re-verts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-31 20:38:52 +00:00
parent 342b571b29
commit 0790fa7811
3 changed files with 182 additions and 1 deletions
+48
View File
@@ -1,5 +1,53 @@
# Activity Log · 2026-07-31 · Claude Code DTP
## Session `20260731_203134` · Buffer S8 · Domaine Fiscal/ecf_dgii (2e surface) : la **CROSS-COHÉRENCE e-CF ↔ workflow ↔ DocType ↔ RBAC** — le CŒUR du livrable — énumère EN PROSE trois données data-derived (états qui émettent un e-CF, champs Currency de base, **FormaPago défaut** ancrée sur CLAUDE.md #10/Cardnet) **sans aucun gate d'IDENTITÉ**. Le bloc e-NCF existant ne gate QUE le FORMAT de l'identifiant.
**Tâche** : **Sprint 8 · buffer** (DevOps CI/CD · QA). Roadmap fonctionnellement
close ; poursuite de la série anti-dérive (CLAUDE.md #6). Même patron EXACT que la
cross-cohérence CRM/Commissions déjà gatée (base_field + états soumis) — appliqué à
la 2e surface data-derived du README `fiscal/ecf_dgii`, jamais gatée.
**Dérive silencieuse fermée** :
- Source faisant autorité : `05_deliverables_mvp/fiscal/ecf_dgii/out/ecf_plan.json`
(byte-gaté par `check_artifacts`). Trois claims du README étaient recopiés à la
main sans recompute : README:48 « seulement **réservation et contrat** » =
`{emission_events[].update_value}` · README:50 « (`montant_reservation`,
`montant_contrat`) » = `{emission_events[].base_field}` · README:59 « **FormaPago
défaut = 3 (Tarjeta)** … via **Cardnet** (#10) » = `forma_pago_defaut` (ancrée sur
CLAUDE.md #10 — Cardnet = paiement carte, pas Stripe).
- Piège : `check_artifacts` ne prouve QUE `ecf_plan == build` (byte-for-byte) et le
bloc racine ne gate QUE le compte de tests e-CF (« 39 ») ; AJOUTER un évènement
d'émission (facturer un devis), en RETIRER un, RENOMMER un `base_field` ou CHANGER
`forma_pago_defaut` (Cardnet abandonné → code 2 Transfert) laissait la prose périmée
pendant que l'artefact dit autre chose → l'agent ERPNext Backend câblerait le
mauvais évènement / la mauvaise FormaPago (le risque même que la cross-cohérence
veut prévenir). Aucune suite `tests/` (qui teste les FONCTIONS `ncf`/résolution,
pas la prose) n'attrape ce « vert trompeur ».
**Gate ajouté** (`ci/check_readme_claims.sh`, nouveau bloc « Fiscal cross-cohérence »
après le bloc e-NCF) : (1) états émetteurs recomputés de `emission_events[].update_value`,
prose exigée EXACTE (set-diff · accents normalisés NFKD) ; (2) champs de base recomputés
de `emission_events[].base_field`, prose exigée EXACTE ; (3) FormaPago défaut =
`forma_pago_defaut.code` + libellé (⊆ catalogue) + ancrage Cardnet exigé à proximité.
Cohérences croisées en bonus (mordent un plan INTERNEMENT incohérent) :
`forma_pago_defaut.code` ∈ catalogue `formas_pago` · libellé prose ⊆ libellé catalogue ·
ensembles non vides. Un claim absent échoue AUSSI (traçabilité).
**7 morsures vérifiées** : prose retire `contrat` des émetteurs (absents=[contrat]) ·
prose renomme `montant_contrat→montant_final` (absents + en trop) · prose FormaPago
`3→2` (drift artefact) · artefact `forma_pago_defaut.code 3→2` (prose périmée) ·
artefact ajoute l'évènement `devis` (états ET base_field mordus, absents=[devis]) ·
FormaPago prose supprimée (INTROUVABLE) · artefact `code→99` hors catalogue
(incohérence interne) ; restauré = green : émetteurs [contrat,reservation] · base
[montant_contrat,montant_reservation] · FormaPago 3 (Tarjeta) ancré Cardnet · exit 0.
Working tree byte-restauré (git clean) · **7 gates re-verts**.
- État courant : aucune valeur périmée (anti-invention #6, rien à réécrire) — le
défaut est la surface ungated. `ci/README.md` (table + détail « 2e surface e-CF
DGII ») mis à jour.
- **Hors périmètre worker (VPS · #8)** : néant (gate bash/python3 stdlib en-repo).
- **Auto-score 4Big** : 96/100.
## Session `20260731_200130` · Buffer S8 · Domaine Faisabilité/generator : les **paramètres canoniques** du générateur 4 volets (« `3 %` édition · `8.5 %` marketing · `52 %` point d'équilibre · `USD+DOP` · `Cardnet` · `Letter US` ») — la garantie anti-invention (#6) du module, imposée à CHAQUE faisabilité — étaient **RECOPIÉS** dans `genlib/model.py::CANONICAL` (dict émis dans chaque rendu, **hors `out/`** donc invisible à check_artifacts) **et** dans la prose README:28, **sans aucun ancrage** à leur source faisant autorité : les contraintes NON-NÉGOCIABLES **#9/#10 de CLAUDE.md**.
**Tâche** : **Sprint 8 · buffer** (DevOps CI/CD · QA). Roadmap fonctionnellement