[DTP-Worker] Sprint 8 · buffer · CI ROUGE sur main réparée : le gate guard_constraints.sh (lancé par ci.yml:28) échouait au HEAD 0790fa7 alors que le commit précédent affirmait « 7 gates re-verts » — vérification jamais relancée contre l'arbre COMMITÉ (log neuf inclus), donc la CI Gitea serait partie ROUGE au premier push.

Cause : guard_constraints détecte l'USAGE (pas la simple mention) de termes interdits (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 prose du log 2026-07-31.md (session 203134) tripaient le gate SANS marqueur : (L17) « Cardnet = paiement carte, pas Stripe » — restatement de #10, mais « pas » + terme capitalisé ne matche pas le marqueur « pas de|pas d » → faux positif ; (L43) « Working tree byte-restauré (git clean) » — mention de l'interdit absolu ET prose INEXACTE : cet interdit n'a JAMAIS été exécuté (restauration par git checkout --).

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 + plus fidèle à #10) ; L43 → « byte-restauré (git checkout --, JAMAIS git clean) » (marqueur JAMAIS + désormais EXACT). Le gate garde intacte sa capacité à mordre un usage réel — chaque mention légitime porte 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. Nouveau log de session 210134 rédigé avec discipline (marqueurs JAMAIS/ci-allow sur les lignes citant les termes interdits, sinon il re-tripperait le gate — d'où le soin apporté au log). Aucune modif VPS (#8), zéro réseau.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-31 21:07:12 +00:00
parent 0790fa7811
commit 6f2a3c57ae
+47 -2
View File
@@ -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