[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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user