[DTP-Worker 20260805_034144] Attestation des DENTS des suites de test de MODULE : mutation-test generator-logic sur 6 des 25 suites unittest (chacune doit sortir NONZERO sur une dérive de LOGIQUE de son générateur — commission base*taux, _statut gated/a_construire, e-NCF zfill(10), nb_roles, dédup SEO, séparateur options confotur — jamais un écho d'artefact) → 6 BITES · 0 TOOTHLESS · axe distinct des DENTS des 8 gates STATIQUES (031134, 8/8) : une suite qui rechargerait out/*.json contre lui-même serait édentée = faux vert Sprint 8 comme un gate édenté · les suites reconstruisent en mémoire depuis le contrat, prouvé qu'elles contraignent la LOGIQUE · portée honnête = 6/25 échantillonnées pour diversité, 19 restantes non-couvertes≠édentées (pas de plafond silencieux) · harnais /tmp read-only, restore byte-exact cp+cmp, jamais git clean, arbre pristine · 0 gate ajouté (#5) · 0 chiffre inventé (#6) · 0 édition prod · CI 33 PASS

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-08-05 03:50:47 +00:00
parent 9fe8bf1feb
commit 98f3f56c3a
+56
View File
@@ -1,5 +1,61 @@
# Activity Log · 2026-08-05 · Claude Code DTP Worker # Activity Log · 2026-08-05 · Claude Code DTP Worker
## Session 034144 · Attestation des DENTS des **suites de test de MODULE** — mutation-test *generator-logic* (6 suites échantillonnées, chacune doit sortir NONZERO sur une dérive de LOGIQUE de son générateur, pas d'écho d'artefact) → **6 BITES · 0 TOOTHLESS** · arbre byte-pristine · 0 édition de production
**Contexte + choix de tâche.** `./run_ci.sh` au démarrage : **33 PASS · 0 FAIL · 0 SKIP**, arbre
propre, roadmap `ROADMAP_8_WEEKS_OR_LESS.md` intégralement livrée/gatée. Vérifications
d'entrée : les 3 chiffres launch-readiness rechargent à l'identique depuis les artefacts commités
(recompute `python3` indépendant, aucune valeur saisie à la main) — `quality_report` **24 modules ·
tous == 100 · coverage.ok** · `regression_run` **suites 24 · ran 624 · passed 624 · 0/0/0** ·
`acceptance_matrix` **15/15 `in_repo` · verdict True · 36 `ci_job`** · `run_ci --list` **33 = 8 statiques + 25 suites**.
Un balayage read-only fan-out (README de module + docstrings des `*_gen.py`/`*lib` + DIRECTIVE↔module)
n'a **remonté aucune dérive prose** (surfaces contenu saturées, #5). **Axe distinct et jamais
couvert en suite** : hier (`031134`) a prouvé que les **8 gates STATIQUES** mordent (8/8) ; personne
n'a jamais prouvé que les **25 suites unittest de MODULE** mordent sur une dérive de **LOGIQUE de
générateur**. Une suite qui ne ferait que recharger `out/*.json` et l'asserter contre lui-même
serait **édentée** (faux vert Sprint 8 « regression tests exhaustifs ») exactement comme un gate
édenté. Constat encourageant préalable : les suites **reconstruisent en mémoire** depuis le contrat
(`builder.build_bundle(contract)`), donc elles *devraient* contraindre la logique — restait à le **prouver**.
**Méthode ([[verify-uncovered-before-gating]] appliquée à l'inverse — prouver que la protection MORD).**
Harnais unique hors dépôt (`/tmp`, jamais commité), par suite : `backup cp → mutation ciblée de la
LOGIQUE du générateur → run de la SEULE suite du module → assert exit≠0 → restore byte-exact cp →
cmp`. Trap `EXIT` restaurant **tout** même en cas d'échec. Chaque mutation = une vraie erreur de
calcul/structure que le générateur pourrait introduire (cible re-vérifiée unique sur l'arbre courant
AVANT via `grep -Fc`), **jamais** un octet d'artefact ni un commentaire :
| # | Suite (module) | Mutation *generator-logic* injectée | Verdict |
|---|---|---|---|
| 1 | `crm-commissions` | `finance.py` : commission `base * taux``base + taux` | **BITES** exit=1 |
| 2 | `pie-manifest` | `pielib/builder.py` : `_statut` inversé (`gated``a_construire`) → compteurs faussés | **BITES** exit=1 |
| 3 | `fiscal-ecf` | `ecflib/ncf.py` : e-NCF `zfill(10)``zfill(9)` (rompt le format 13 car. Ley 32-23) | **BITES** exit=1 |
| 4 | `rbac-roleprofile` | `profilelib/builder.py` : `nb_roles = len(role_names)``+ 1` | **BITES** exit=1 |
| 5 | `seo` | `seolib/keywords.py` : dédup neutralisée (`if key in seen and False:`) → doublons | **BITES** exit=1 |
| 6 | `legal/confotur` | `cflib/builder.py` : options `entites` jointes `"\n"``"|"` (mauvais séparateur Frappe) | **BITES** exit=1 |
**Résultat : 6 BITES · 0 TOOTHLESS.** Chaque suite échantillonnée oppose au merge une dérive réelle
de la **logique** de son générateur — aucune n'est un simple miroir d'artefact. Combiné à hier,
l'opposabilité au merge est prouvée sur **8 gates statiques + 6 suites de module**.
**Portée honnête (pas de plafond silencieux).** Échantillon de **6 des 25 suites** de module,
choisi pour la diversité des styles d'assertion (calcul monétaire · compteurs de statut · format
réglementaire · métadonnée de comptage · dédup · sérialisation d'options). Les **19 suites non
mutées ce jour** (`publiciste`, `rbac`(agrégée)/`fixtures`/`userperm`/`applyplan`, `faisabilite-gen`,
`bancable`, `workflow-vente`, `dossier-vente`, `financement-bancaire`, `portails`, `audit-5d`,
`chat-otoia`, `audit-4big`, `demo-scenario`, `regression`, `deploy-runbook`, `acceptance`, `mobile-app-config`)
restent à attester en session ultérieure — non couvertes ≠ édentées, juste non prouvées aujourd'hui.
**Discipline.** Attestation **read-only par conception** (harnais en `/tmp`, mutations restaurées
`cp` depuis backup + `cmp` byte-exact · **jamais `git clean`/`git checkout`** — cf. interdit
CLAUDE.md · [[ci-gate-verification-method]]). <!-- ci-allow : mention de l'interdit, jamais exécuté -->
**0 gate ajouté** (#5 — on ne teste pas, on *prouve les tests existants*) · **0 chiffre inventé**
(#6) · **0 édition de production** (seul ce journal change). Axe **dents des suites de module**,
distinct de l'axe **dents des gates** (`031134`) et des attestations de **contenu**.
**Vérifications.** `git status --porcelain` **vide** (arbre byte-pristine post-harnais) · `cmp`
backup↔restauré pour les 6 fichiers touchés = identiques · `./run_ci.sh` → **33 PASS · 0 FAIL · 0
SKIP** (inchangé). Aucune commande VPS (#8) · aucun `git clean`. <!-- ci-allow : mention de l'interdit, jamais exécuté -->
## Session 031134 · Attestation launch-readiness des DENTS du gate — mutation-test des **8 gates statiques** (chacun doit sortir NONZERO sur sa dérive) → **8 BITES · 0 TOOTHLESS** · arbre byte-pristine · 0 édition de production ## Session 031134 · Attestation launch-readiness des DENTS du gate — mutation-test des **8 gates statiques** (chacun doit sortir NONZERO sur sa dérive) → **8 BITES · 0 TOOTHLESS** · arbre byte-pristine · 0 édition de production
**Contexte + choix de tâche.** `./run_ci.sh` au démarrage : **33 PASS · 0 FAIL · 0 SKIP**, **Contexte + choix de tâche.** `./run_ci.sh` au démarrage : **33 PASS · 0 FAIL · 0 SKIP**,