diff --git a/05_activity_log/2026-08-06.md b/05_activity_log/2026-08-06.md index 54c8c5f..2ba778b 100644 --- a/05_activity_log/2026-08-06.md +++ b/05_activity_log/2026-08-06.md @@ -1,5 +1,17 @@ # Activity Log · 2026-08-06 · Claude Code DTP Worker +## Session `20260806_174619` — VÉRIF · axe NEUF « intégrité des ancres-fragment Markdown `](#slug)` : résolvent-elles vers un titre réel ? » → CLEAN · 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 (prod VPS / builds EAS / dépôts ONAPI hors périmètre worker · #8), `OPEN_DECISIONS_REGISTER.md` = arbitrages produit de Michel (non éditables). Les 7+ derniers commits sont des sweeps vérification-only à rendement décroissant ; `daily_reports` n'a pas de vrai snapshot stakeholder à ajouter. Objectif : un **axe teeth encore jamais balayé**. + +**Axe NEUF (absent de la mémoire).** Toutes les classes de liens gatées/balayées portent sur la **cible-FICHIER** d'un lien Markdown (`check_docs` §1 = « la cible existe ? », `link-label-target-mismatch` = « le label nomme-t-il la cible ? », `backtick-path-escapes-check-docs` = phantom en code-span). **Aucune** ne valide la **partie fragment** `#slug` : `check_docs.sh` la RETIRE explicitement (`link="${link%%#*}"`) et ignore les ancres pures (`\#*) continue`). Donc un lien `[label](#titre)` — ou `[label](fichier.md#titre)` — dont le titre a été renommé/mal-orthographié **passe au vert** : la cible-fichier existe, seul le saut d'ancre est mort (aveugle au rendu, silencieux). Sœur-FRAGMENT de la classe cible-fichier. + +**Détecteur (stdlib, `/tmp`, read-only).** Algorithme de slug GitHub/Gitea (minuscule · ponctuation retirée · accents conservés · espaces→tirets · doublons suffixés `-1`) ; code-spans neutralisés d'abord (comme `check_docs`, sinon faux-positifs) ; toute ancre `](#…)`/`](*.md#…)` résolue contre l'ensemble des slugs-titres du fichier-cible (fichier absent = hors axe, c'est le job de `check_docs`). + +**Résultat → CLEAN.** Sur les 379 `.md` trackés, **1** seul lien-ancre réel non-code-span : `README.md:20 [`DIRECTIVE_*.md`](#directives-michel-input-specs-datés)` → résout exactement vers le titre `## Directives Michel (input-specs datés)` (slug avec `é` accentué préservé). **0 ancre pendante.** Faux-positifs correctement écartés = les 2 `` `](#frag)` `` en code-span dans ce même log (prose méta décrivant ce candidat, occurrence-zéro). Détecteur teeth-prouvé bout-en-bout : l'ancre valide résout (True), un mutant-typo `…-date` (sans `s`) NE résout PAS (False = mordrait). + +**Périmètre / décision.** VÉRIF pure : **0 fichier de production modifié** · **0 chiffre inventé** (#6) · **0 commande VPS** (#8) · **aucun gate ajouté** (#5 — axe CLEAN, 1 seule occurrence réelle, détecteur rejouable, comme les précédents sweeps occurrence-zéro). `./run_ci.sh` **33 PASS · 0 FAIL · 0 SKIP** inchangé. Mémoire : `markdown-anchor-fragment-integrity`. + ## Session `20260806_171614` — VÉRIF · axe NEUF « intégrité référentielle artefact → FICHIER (les chaînes-chemin des out/*.json résolvent-elles sur disque ?) » → CLEAN 0 pendante · 0 édition de production **Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS · 0 FAIL · 0 SKIP**, arbre propre, roadmap