0393ea7b48
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>