From be36d6600f89421c3cf76972634152f6bb0a335a Mon Sep 17 00:00:00 2001 From: Claude Code DTP Worker Date: Thu, 6 Aug 2026 17:49:03 +0000 Subject: [PATCH] =?UTF-8?q?[DTP-Worker=2020260806=5F174619]=20V=C3=89RIF?= =?UTF-8?q?=20axe=20NEUF=20=C2=AB=20int=C3=A9grit=C3=A9=20des=20ancres-fra?= =?UTF-8?q?gment=20Markdown=20](#slug)=20:=20r=C3=A9solvent-elles=20vers?= =?UTF-8?q?=20un=20titre=20r=C3=A9el=20=3F=20=C2=BB=20=E2=86=92=20CLEAN=20?= =?UTF-8?q?=C2=B7=200=20=C3=A9dition=20de=20prod?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Axe FRAGMENT jamais balayé : check_docs valide la cible-FICHIER d'un lien mais RETIRE le #slug (link=${link%%#*}) et ignore les ancres pures → un [label](#titre) dont le titre est renommé/typo passe au vert (fichier existe, saut d'ancre mort, silencieux). Détecteur stdlib (slug GitHub/Gitea, accents conservés, code-spans neutralisés) sur 379 .md → 1 seul lien-ancre réel (README:20 → ## Directives Michel...) résout, 0 pendante ; 2 ](#frag) en code-span écartés. Teeth-prouvé (valide True, mutant-typo False). run_ci 33 PASS 0 FAIL 0 SKIP inchangé, 0 édition prod, rejouable, pas de gate (#5). --- 05_activity_log/2026-08-06.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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