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