diff --git a/05_activity_log/2026-07-31.md b/05_activity_log/2026-07-31.md index 7738418..0dfe0b8 100644 --- a/05_activity_log/2026-07-31.md +++ b/05_activity_log/2026-07-31.md @@ -1,5 +1,50 @@ # Activity Log · 2026-07-31 · Claude Code DTP +## Session `20260731_210134` · Buffer S8 · **CI ROUGE sur `main` — régression réelle réparée** : le gate `guard_constraints.sh` (lancé par `ci.yml:28`) échouait au `HEAD` `0790fa7`, alors que le message de commit précédent affirmait « 7 gates re-verts ». + +**Tâche** : **Sprint 8 · buffer** (DevOps CI/CD · QA). Contrairement aux sessions +précédentes (ajout de gates anti-dérive sur des surfaces *vertes*), celle-ci répare +un **défaut concret déjà présent** : un gate de CI ROUGE sur la branche principale — +priorité maximale. + +**Diagnostic** : `guard_constraints.sh` détecte l'USAGE (pas la simple mention) de +termes interdits par CLAUDE.md #2/#3/#10 + interdits absolus. Une ligne portant un +marqueur de prohibition (`JAMAIS`, `❌`, `pas de`…) ou `ci-allow` est ignorée comme +« rappel de règle ». Deux lignes de la prose du log `2026-07-31.md` (session +`203134`) tripaient le gate SANS marqueur : +- L17 citait la contrainte #10 sans marqueur ; la formule « pas » + terme capitalisé + ne matche pas le marqueur `pas de|pas d`, donc flaggé à tort (citation exacte du + texte incriminé volontairement omise ici pour ne pas re-tripper le gate). `ci-allow` +- L43 « Working tree byte-restauré (git clean) » — mention de l'interdit absolu + `git clean`, **et prose inexacte** : cet interdit n'a PAS été exécuté (restauration + par `git checkout --`). + +**Pourquoi c'est arrivé** : la vérification « 7 gates » du commit `0790fa7` n'a pas +été relancée contre l'arbre COMMITÉ (log neuf inclus) → la CI Gitea serait partie +rouge au premier push. Le byte-restore des artefacts `out/` du deliverable était +correct ; c'est la prose du log lui-même qui a introduit la violation. + +**Correctif** (chirurgical, honnête, sans angle mort) : reformulation des 2 lignes +avec un cadrage de prohibition EXACT plutôt qu'une exclusion globale de +`05_activity_log/` (qui aveuglerait le gate à une VRAIE violation confessée un jour) : +- L17 → « Cardnet = paiement carte, **JAMAIS** Stripe » (marqueur `JAMAIS`, et plus + fidèle à #10). +- L43 → « byte-restauré (`git checkout --`, **JAMAIS** `git clean`) » (marqueur + `JAMAIS`, et désormais EXACT — l'interdit absolu n'a jamais été lancé). +Le gate garde intacte sa capacité à mordre un usage réel : chaque mention légitime +doit porter son propre marqueur, ligne par ligne. + +**Vérifié** : les **7 gates** (`check_artifacts`, `check_readme_claims`, +`check_docs`, `guard_constraints`, `check_regression`, `check_ci_integrity`, +`validate_json`) passent au vert. `git status` propre hormis ce log. + +- **Discipline durable** : toute prose future décrivant ce travail anti-dérive (qui + cite fatalement les termes interdits) doit porter `JAMAIS`/`ci-allow` sur la ligne — + d'où le soin apporté à CE log. Pas d'affaiblissement du gate (l'exclusion large + serait un angle mort pire que le faux positif). +- **Hors périmètre worker (VPS · #8)** : néant (édition prose en-repo, zéro réseau). +- **Auto-score 4Big** : 96/100. + ## 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 @@ -14,7 +59,7 @@ la 2e surface data-derived du README `fiscal/ecf_dgii`, jamais gatée. `{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). + CLAUDE.md #10 — Cardnet = paiement carte, JAMAIS 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 @@ -40,7 +85,7 @@ artefact ajoute l'évènement `devis` (états ET base_field mordus, absents=[dev 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**. +Working tree byte-restauré (`git checkout --`, JAMAIS `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