diff --git a/05_activity_log/2026-08-06.md b/05_activity_log/2026-08-06.md index 1f7a90e..af392d7 100644 --- a/05_activity_log/2026-08-06.md +++ b/05_activity_log/2026-08-06.md @@ -1,5 +1,44 @@ # Activity Log · 2026-08-06 · Claude Code DTP Worker +## Session `20260806_121542` — VÉRIF · axe NEUF « cohérence interne des 26 oracles-schémas » (required-vacuité + auto-contradiction const/enum/default) → 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 (Sprints 1→7 dans le repo ; prod VPS / +builds EAS / dépôts ONAPI hors périmètre worker · #8). `OPEN_DECISIONS_REGISTER.md` = 3 arbitrages +**produit appartenant à Michel** (non éditables). Objectif anti-churn : un axe teeth des oracles-schémas +encore **jamais balayé**. + +**Axe NEUF (absent de la mémoire).** Les 5 axes-schémas déjà en mémoire vérifient : (1) non-vacuité +(`schema-oracle-teeth-audit`) · (2) fermeture/complétude (`schema-oracle-closedness-not-defect`) · +(3) câblage à un test (`schema-oracle-wiring-axis`) · (4) résolution des `$ref` +(`schema-oracle-ref-integrity`) · (5) enum/const vs skip `python -S` (`schema-oracle-enum-const-vs-S-skip`). +Aucun ne vérifie la **cohérence LOGIQUE INTERNE d'un nœud** : un schéma peut être clos, non-vacuous en +surface, `$ref`-sain ET pourtant contenir un nœud **impossible à satisfaire** (donc faux-vert : le test +qui valide un objet construit en mémoire ne le remarque jamais si l'objet n'exerce pas ce nœud). + +**Deux détecteurs maison (stdlib pur, marchent partout, sans réseau ni jsonschema).** +1. **required-vacuité** — un nœud objet avec `additionalProperties:false` ET une clé `required` **absente + de `properties`/`patternProperties`** est **inatteignable** (aucun objet ne peut valider). Marche + récursif sur tous les mots-clés porteurs de sous-schéma (`properties`, `items`, `$defs`, `allOf`, + `anyOf`, `oneOf`, `if/then/else`, `additionalProperties`-objet, …). `additionalProperties`-objet + ou absent (défaut `true`) ⇒ **non** signalé (la clé peut se satisfaire hors `properties`) = conservateur. + → **1405 nœuds balayés · 0 vacuité.** +2. **auto-contradiction** — `const`, chaque membre `enum`, et `default` sont confrontés à leurs + contraintes **sœurs** (`type`, bornes numériques `minimum`/`maximum`/`exclusive*`, `pattern`, + `min/maxLength`) ; plus les plages absurdes (`minimum>maximum`, `minItems>maxItems`). Un `const` qui + viole son propre `type`, un `default` hors `pattern`, un membre d'enum sous le `minimum` = données + invalides latentes / nœud mort. → **317 constraint-checks · 0 contradiction.** + +**Dents prouvées.** Copies-mutant dans `/tmp` : `required:["ghost"]`+`additionalProperties:false` → +détecteur 1 **MORD** ; `const:"notint"` sous `type:integer`, membre enum `5` sous `minimum:10`, +`default:"abc"` hors `pattern:^[0-9]+$`, `minimum:100/maximum:1` → détecteur 2 **MORD** (4/4). Les vrais +26 schémas restent CLEAN sur les deux → ce n'est pas un détecteur inerte. + +**Conclusion.** **CLEAN 26/26** sur deux sous-axes de cohérence interne jamais couverts. Aucun faux-vert +d'oracle de ce type. **0 édition de production** (#8), `./run_ci.sh` inchangé = **33 PASS · 0 FAIL · +0 SKIP**. Fichiers touchés : ce journal + 1 entrée mémoire (`schema-oracle-internal-consistency`). Sweep +**rejouable tel quel** (stdlib pur) — **NON promu en gate** (#5, occurrence-zéro). + ## Session `20260806_101528` — VÉRIF · axe NEUF « fermeture & complétude des 26 oracles-schémas » → 1 anomalie investiguée (financement) = NON-DÉFAUT (choix explicite + couverture transitive byte-repro) · 0 édition de production **Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS · 0 FAIL · 0 SKIP**, arbre propre,