[DTP-Worker 20260806_084514] VÉRIF axe neuf « dents de l'ORACLE jsonschema » (26 *.schema.json) → CLEAN 26/26, détecteurs à dents prouvées

Nouvel axe: la FORCE de la couche oracle elle-même (distinct des dents de logique-générateur). ~20 modules ont un test_schema_oracle qui valide le build-mémoire contre un *.schema.json commité; un schéma vide ({} / type:object sans required) ou malformé rendrait cet oracle faux-vert (accepte tout) — classe ungatée, byte-repro & suites aveugles à la force du schéma. Audit 26/26: tous valides Draft-N + non-vides (required+properties, kw 3..103). Détecteurs de l'audit prouvés: validité mord un schéma malformé, dents mord {} et {type:object}, 0 faux positif sur rbac.schema. Connexes CLEAN: role_id→erpnext_role_name = fonction sur 57 artefacts (0 conflit); oracle exécuté non-skippé sous run_ci (python3 nu, jsonschema 3.2.0); 0 TODO/stub prod. Lecture-seule, occurrence-zéro, rejouable → PAS un gate (#5). run_ci 33 PASS 0 FAIL 0 SKIP · 0 prod édité · 0 artefact reconstruit · 0 gate ajouté (#5)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-08-06 08:52:44 +00:00
parent 42d54b045f
commit 9acd8441dc
+45
View File
@@ -706,3 +706,48 @@ production.** Sweep lecture-seule, occurrence-zéro, rejouable → **pas un gate
(#5), **0 chiffre saisi à la main** (#6 — `57`/`6`/comptes distincts recomputés par balayage), **0
commande VPS** (#8). `./run_ci.sh` = **33 PASS · 0 FAIL · 0 SKIP** (inchangé). Seules éditions : ce
journal + mémoire `artifact-internal-set-semantics` (extension « no-recurrence sweep »).
## Session `20260806_084514` — VÉRIF axe neuf « dents de l'ORACLE jsonschema » (26 `*.schema.json`) → CLEAN 26/26, détecteurs à dents prouvées
**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** (8 sprints, 22 modules gatés, métriques MVP
atteintes) ; **0 marqueur `TODO`/`FIXME`/`NotImplemented`** en production (recompté — tous les hits
`placeholder` sont le motif de design #6 « jamais 0 inventé ») ; currency du canal stakeholder déjà
écartée par `def4706`/`081509` (commits depuis `e786c12` = doc/commentaire, 0 sortie changée). Plutôt
qu'un énième re-sweep déjà catalogué, **chasse d'un défaut RÉEL sur un axe non encore audité**.
**Axe neuf : les dents de la couche ORACLE elle-même.** ~20 modules embarquent un `test_schema_oracle`
qui fait `jsonschema.validate(<build en mémoire>, schema)`. Il valide le build **frais** (qui conforme
toujours par construction) contre un `*.schema.json` **commité**. Si un schéma était **vide**
(`{}` ou `{"type":"object"}` sans `required`/contrainte) ou **malformé**, cet oracle serait
**faux-vert** — acceptant tout, ne prouvant rien. Le byte-repro et les suites ne regardent jamais la
**force** du schéma → classe réellement ungatée. (NB l'oracle **tourne** sous `run_ci` en `python3`
nu, pas `-S` ; les 17 skips sont propres au harnais regression `python -S` — cf.
`regression-baseline-17-skips-by-design`.)
**Méthode.** Pour chacun des **26** `*.schema.json` : (1) `jsonschema.check_schema()` — est-il un
schéma Draft-N **valide** ? (2) heuristique de dents — déclare-t-il `required` OU (`properties` + ≥2
mots-clés de contrainte parmi required/enum/pattern/minItems/minimum/const/minLength/
additionalProperties) ? **Résultat : 26/26 valides, 0 WEAK.** Tous portent required+properties réels
(kw 3..103 ; le plus maigre `faisabilite/generator/brief.schema.json` req=1 props=10 kw=3 reste
non-vide).
**Dents de l'AUDIT prouvées** (une CLEAN d'un détecteur sans dents ne vaut rien) : le détecteur de
validité **mord** un schéma malformé (`required:"str"`, `properties.x:123`) ; le détecteur de dents
**mord** `{}` et `{"type":"object"}` ; aucun faux positif sur `rbac.schema.json` réel.
**Contrôles connexes (même session, tous CLEAN).**
- **Mapping `role_id → erpnext_role_name` = fonction** sur les 57 artefacts : **0 conflit** (un
`role_id` ne résout jamais deux libellés distincts — sinon ERPNext créerait deux rôles). Complète
`role-portail-referential-integrity-sweep` (qui résolvait les slugs, pas l'égalité des libellés).
- **Oracle jsonschema exécuté, pas skippé, sous `run_ci`** — vérifié sur `pie/manifest`
(`test_schema_oracle ... ok`), `jsonschema 3.2.0` importable en `python3` nu.
**Verdict.** Couche oracle **genuinely constraining** ; **aucun défaut de production**. Balayage
lecture-seule, occurrence-zéro, rejouable → **pas un gate** (#5), sibling de
`runtime-encoding-integrity-sweep` / `role-portail-referential-integrity-sweep`.
**Portée / anti-churn.** **0 fichier de production édité**, **0 artefact reconstruit**, **0 gate ajouté**
(#5), **0 chiffre saisi à la main** (#6 — `26`/`57` recomputés par balayage), **0 commande VPS** (#8).
`./run_ci.sh` = **33 PASS · 0 FAIL · 0 SKIP** (inchangé). Seules éditions : ce journal + mémoire
`schema-oracle-teeth-audit` (+ pointeur `MEMORY.md`).