[DTP-Worker 20260806_131551] VÉRIF axe NEUF « cohérence draft/keyword des 26 oracles-schémas » ($schema déclaré vs idiomes cross-draft) → CLEAN 26/26 (tous draft-07, 13/13 porteurs=definitions jamais $defs, 0 bool exclusiveMinimum draft-04, 0 mot-clé post-07 silencieusement ignoré) — 7e axe-schéma jamais couvert : un mot-clé mal-déclaré est ignoré/re-typé par le validateur = faux-vert invisible aux 6 axes existants ; détecteur maison stdlib teeth-prouvé 5/5 (mutants exclusiveMinimum:true/id/required:true/$defs/unevaluatedProperties MORDENT), 0 édition de prod, run_ci 33 PASS 0 FAIL 0 SKIP, pas de gate (#5)

This commit is contained in:
Claude Code DTP Worker
2026-08-06 13:19:45 +00:00
parent bea5d49aab
commit 1839f521aa
+36
View File
@@ -1,5 +1,41 @@
# Activity Log · 2026-08-06 · Claude Code DTP Worker # Activity Log · 2026-08-06 · Claude Code DTP Worker
## Session `20260806_131551` — VÉRIF · axe NEUF « cohérence draft/keyword des 26 oracles-schémas » (déclaration `$schema` vs idiomes cross-draft) → CLEAN 26/26 · 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 **7ᵉ axe teeth des
oracles-schémas encore jamais balayé**.
**Axe NEUF (absent de la mémoire).** Les 6 axes-schémas déjà en mémoire vérifient : (1) non-vacuité ·
(2) fermeture/complétude · (3) câblage à un test · (4) résolution des `$ref` · (5) enum/const vs skip
`python -S` · (6) satisfiabilité interne (required-vacuité + auto-contradiction). **Aucun** ne vérifie
la **cohérence entre le `$schema` déclaré et les mots-clés effectivement employés**. C'est un faux-vert
réel : un validateur JSON-Schema interprète chaque schéma **selon le draft déclaré**, et un mot-clé
d'un autre draft change de sémantique ou est **silencieusement ignoré** — l'oracle valide alors autre
chose que ce qu'il croit.
**Détecteur maison (stdlib pur, récursif).** Signale, sous une déclaration `draft-07` :
`exclusiveMinimum`/`exclusiveMaximum` **booléens** (idiome draft-04 → mal-typé et ignoré en draft-07) ·
`id` au lieu de `$id` (draft-04) · `required` **booléen** (draft-03) · `$defs` comme porteur de
définitions (mot-clé draft-2019, alors que draft-07 utilise `definitions`) · les mots-clés
**post-draft-07** (`unevaluatedProperties/Items`, `$dynamicRef`, `$anchor`, `prefixItems`,
`dependentRequired`, …) **silencieusement ignorés** par un validateur draft-07.
**Résultat.** **26/26 déclarent `draft-07`** (aucun `$schema` manquant) · **13/13** porteurs de
définitions utilisent `definitions` (jamais `$defs`) · **0 idiome booléen draft-04** · **0 mot-clé
post-draft-07**. → **CLEAN 26/26.**
**Dents prouvées.** Copies-mutant en mémoire de `rbac.schema.json` (réel = 0 hazard) : `exclusiveMinimum:true`,
`id:"http://…#"`, `required:true`, `$defs:{…}`, `unevaluatedProperties:false` → détecteur **MORD 5/5**.
Les 26 schémas réels restent CLEAN → détecteur non-inerte.
**Conclusion.** **CLEAN 26/26** sur un axe de cohérence draft/keyword jamais couvert par les 6 axes
existants. **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-draft-keyword-coherence`). Sweep
**rejouable tel quel** (stdlib pur, sans réseau ni jsonschema) — **NON promu en gate** (#5, occurrence-zéro).
## 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 ## 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, **Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS · 0 FAIL · 0 SKIP**, arbre propre,