[DTP-Worker 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 prod

Classe NEUVE = traiter toute valeur-chaîne d'un out/*.json qui matche un motif nom-fichier
(.json/.md/.py/.sh) comme une RÉFÉRENCE DE FICHIER et vérifier qu'elle résout sur disque.
Distincte des axes référentiels existants qui résolvent des SLUGS (role/portail, projet/entité),
re-dérivent des COMPTES (manifest nb_*) ou comparent des VALEURS (cross-artifact). Aucun gate ne
parse une valeur JSON comme chemin : check_docs ne voit que les liens Markdown, check_artifacts
byte-repro rejoue une chaîne pendante à l'identique -> un generated_from/audited_artifacts/evidence/
roadmap_ref pointant un spec renommé ou déplacé = faux-vert invisible vs #6 Zéro invention.

Détecteur stdlib : résolution multi-bases (out/ · module · famille/grand-parent · deliverables ·
racine · rbac/) + fallback bare-basename cross-module. 124 valeurs nom-fichier -> 48 path-relatives
+ 27 bare-basename TOUTES résolvent · 49 conceptuelles/runtime exclues by-design (24 capabilities
OTOIA VPS dont chat.py absent-du-repo · 23 demo evidence relatives-au-module-cible · 2 PIE
storage_layout VPS) · 0 pendante. Dents prouvées bout-en-bout : baseline résout, 4 mutants
(spec renommé / directive typo / schéma fantôme / chemin inexistant) MORDENT tous.

VÉRIF pure : 0 fichier de prod modifié · 0 chiffre inventé (#6) · 0 commande VPS (#8) · aucun gate
ajouté (#5, occurrence-zéro, détecteur rejouable). run_ci 33 PASS 0 FAIL 0 SKIP inchangé.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-08-06 17:22:16 +00:00
parent 2ded65bbb4
commit 0393ea7b48
+47
View File
@@ -1,5 +1,52 @@
# Activity Log · 2026-08-06 · Claude Code DTP Worker # Activity Log · 2026-08-06 · Claude Code DTP Worker
## 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
`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` = arbitrages produit de Michel (non
éditables). Le canal `daily_reports` est en retard de 3 sessions **vérification-only** (0 édition prod) —
y ajouter des lignes « CLEAN, 0 édition » serait du churn stakeholder, pas un vrai snapshot. Objectif :
un **axe teeth encore jamais balayé** qui puisse réellement mordre un défaut.
**Axe NEUF (absent de la mémoire).** Toutes les classes référentielles existantes résolvent des **slugs**
(`role-portail-referential-integrity`, `project-entity-referential-integrity`) ou re-dérivent des
**comptes** (`manifest-count-field-payload-rederivation`) ou comparent des **valeurs** entre artefacts
(`cross-artifact-numeric-agreement`). **Aucune** ne traite une **valeur-chaîne d'un out/*.json comme une
RÉFÉRENCE DE FICHIER** et ne vérifie qu'elle **résout sur disque**. Or ces artefacts en portent 124 :
`generated_from`/`source_directive`/`rbac_source`/`workflow_source`/`doctype_source`,
`audited_artifacts[]` (audit_5d), `evidence` (schémas d'audit_4big), `roadmap_ref`, acceptance
`artifacts[].path`, apply_plan `doc`/`produces[]`, MANIFEST `artifacts[]`/`generator`. **Aucun gate ne
parse une valeur JSON comme chemin** (`check_docs` ne voit que les liens Markdown ; `check_artifacts` ne
voit que le byte-repro qui rejoue une chaîne pendante à l'identique). Un `generated_from` pointant un spec
**renommé**, un `audited_artifacts` vers un fichier **déplacé**, un `evidence` schéma **inexistant** =
faux-vert invisible, référence pendante qui contredit #6 « Zéro invention ».
**Détecteur (stdlib pur, rejouable).** Pour chaque valeur-chaîne matchant un motif nom-fichier
(`.json/.md/.py/.sh/…`) : tentative de résolution contre bases par ordre de spécificité — `out/` · dir
module (SRC) · **dir famille** (grand-parent, ex. `crm/`) · racine deliverables · racine dépôt · `rbac/` ;
plus un **fallback bare-basename cross-module** (un spec/schéma référencé par simple basename résout s'il
existe dans un module frère). **Classes conceptuelles/runtime exclues by-design** (n'ont pas à exister
comme fichiers du dépôt) : `capabilities` = noms de capacités OTOIA **VPS** (`aec.py`/`knowledge.py`/
`prompt_engine.py`/`chat.py` — cohérent avec `chat.py` absent du repo, cf. mémoire) · `storage_layout`
PIE = layout de stockage **VPS** (`master.json`/`manifest.json`) · demo `evidence[].file` = chemins
`out/…` **relatifs au module-cible** (pas à demo/scenarios).
**Résultat → CLEAN.** Sur les 57 out/*.json : **48** refs path-relatives + **27** bare-basename
cross-module → **toutes résolvent** vers un fichier trackés ; **49** refs conceptuelles/runtime exclues
(24 capabilities VPS + 23 demo-evidence target-relatives + 2 PIE storage) ; **0 référence pendante**.
**Dents prouvées bout-en-bout.** baseline `commissions/MANIFEST.json generated_from='bareme_spec.json'`
→ résout (non-pendant) ; 4 mutants injectés (`bareme_spec_RENAMED.json`, `DIRECTIVE_TYPO.md`,
`ghost.schema.json`, `crm/nonexist/x_spec.json`) → **les 4 MORDENT** (pendants). Détecteur non-inert.
Limite conservatrice documentée : une pendante par bare-basename **coïncidant** avec le nom d'un autre
fichier tracké serait manquée (accepté — occurrence-zéro).
**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, occurrence-zéro, détecteur rejouable
stdlib pur hors réseau). `./run_ci.sh` **33 PASS · 0 FAIL · 0 SKIP** inchangé (aucune édition de code).
Fichiers touchés : ce journal + 1 entrée mémoire (`artifact-file-reference-integrity`).
## Session `20260806_164612` — VÉRIF · axe NEUF « intégrité de la FORME scalaire JSON (type int-vs-float-vs-str), pas la valeur » des 57 out/*.json → CLEAN · 0 édition de production ## Session `20260806_164612` — VÉRIF · axe NEUF « intégrité de la FORME scalaire JSON (type int-vs-float-vs-str), pas la valeur » des 57 out/*.json → 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 6+ derniers commits sont des sweeps vérification-only à rendement décroissant. Objectif : un **axe objectif encore jamais balayé**. **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 6+ derniers commits sont des sweeps vérification-only à rendement décroissant. Objectif : un **axe objectif encore jamais balayé**.