diff --git a/05_activity_log/2026-08-06.md b/05_activity_log/2026-08-06.md index 2995c7a..de825ea 100644 --- a/05_activity_log/2026-08-06.md +++ b/05_activity_log/2026-08-06.md @@ -1,5 +1,52 @@ # Activity Log · 2026-08-06 · Claude Code DTP Worker +## Session `20260806_151604` — VÉRIF · axe NEUF « intégrité référentielle projet-code ↔ projet-nom canonique dans les artefacts » → CLEAN 128/128 · 0 édition de production + +**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 (Sprints 1→7 ; prod VPS / builds EAS / dépôts +ONAPI hors périmètre worker · #8). `OPEN_DECISIONS_REGISTER.md` = 3 arbitrages produit de Michel +(non éditables). Objectif : un **axe teeth encore jamais balayé**. + +**Axe NEUF (absent de la mémoire).** `role-portail-referential-integrity-sweep` prouve que tout **slug +de rôle/portail** des `out/*.json` résout vers `rbac_50_roles.json`. Le pendant jamais balayé sur la +**dimension PROJET/ENTITÉ** : tout **code-projet** (`P0[0-9]`) et **nom-projet** référencés dans les +artefacts résolvent-ils vers le canon `CLAUDE.md §Projets`, et quand un objet **apparie** un code et un +nom, l'appariement est-il le bon ? Distinct de `claude-md-constant-anchor-gate` (qui gate des **copies** +de la liste §Projets) : ici on chasse la **référence pendante / le mauvais appariement** (une invention +`P10`, ou `P02 « Nakua »` — P02 = Coral del Sur) — un faux-vert invisible à tous les gates et qui +contredirait directement la contrainte **#6 « Zéro invention »**. + +**Détecteur (stdlib pur, rejouable).** +- Canon : `{P01 Structure, P02 Coral del Sur, P03 Nakua, P04 Xamaná Cantiles, P05 Las Colinas Najayo + Arriba, P06 Coco Real, P07 Aqua Terra Las Terrenas, P08 Fasano Espirilla, P09 1069 Crisfer}`. +- **Invariant fort (appariement objet)** : pour chaque objet JSON dont les valeurs-chaînes contiennent + **exactement un** code ET **exactement un** nom canonique, le couple `(code, nom)` doit être + canonique. Le « exactement 1+1 » exclut proprement les blobs de prose (voir faux-positifs). +- **Chaîne-agrégat** : l'unique objet multi-codes (`dossier_vente.options` = les 9 paires inline + `"P0X "`) vérifié ligne à ligne = 9/9 canoniques (déjà gaté §Projets). +- **Pendantes** : aucun token `P[01][0-9]` hors `{P01..P09}`. +- **Entités** : les 8 de `§Entités` (WAF · WA SRL · AC Arias Cuevas · Consortium ECR DR · Helios RD · + WAG · Ploutos · 9060 QC) résolvent toutes (WA SRL 26× · Helios RD 23× · AC Arias Cuevas 21× · WAG 7× · + 9060 QC 6× · Ploutos 5× · Consortium ECR DR 5× · WAF 4×) — 0 entité inventée. + +**Dents prouvées (mutants sur copie temp, prod intouchée).** baseline `pie_manifest.json` = 0 mismatch ; +mutant `P02 ← Nakua` → **MORD** `[('P02','Nakua')]` ; mutant `P02 → P10` → pendante **flaguée** +`['P10']`. 3/3 discriminés. + +**Résultat.** Sur les 57 `out/*.json` : **128 objets 1:1 code+nom → 0 mismatch** · 1 agrégat (les 9 +paires inline) 9/9 canonique · **0 code pendant** · 8/8 entités résolvent. Faux-positifs écartés (par +construction du détecteur objet) : 5 adjacences **inline en prose** (`"P07 Aqua Terra — Pitch +banquier"`, `"P07 Aqua Terra faisabilité…"` dans `run_sheet`/`acceptance_matrix`/`MANIFEST`) utilisent +la **forme courte** « Aqua Terra » (abréviation de « Aqua Terra Las Terrenas ») ou **deux codes** dans +une phrase — pas un mauvais appariement, prose légitime que l'invariant « exactement 1 nom **complet** » +exclut correctement. + +**Conclusion.** **CLEAN 128/128** (+ agrégat 9/9 + 0 pendant + 8/8 entités). Axe teeth-prouvé, dimension +projet/entité jamais balayée (sœur de la dimension rôle/portail). **0 édition de production** (#8), +`./run_ci.sh` = **33 PASS · 0 FAIL · 0 SKIP**. Fichiers : ce journal + 1 entrée mémoire +(`project-entity-referential-integrity-sweep`). Sweep **rejouable** (stdlib pur, sans réseau) — **NON +promu en gate** (#5 : appariement partiellement déjà couvert §Projets, occurrence-zéro sur la pendance). + ## Session `20260806_144555` — VÉRIF · axe NEUF « forme de normalisation Unicode (NFC vs NFD) des sources committées » → CLEAN 387/387 · 0 édition de production **Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS · 0 FAIL · 0 SKIP**, arbre propre, roadmap