From 6c05538efb8c77d6273bd61ceb14394056785e2b Mon Sep 17 00:00:00 2001 From: Claude Code DTP Worker Date: Thu, 6 Aug 2026 11:52:13 +0000 Subject: [PATCH] =?UTF-8?q?[DTP-Worker=2020260806=5F114542]=20V=C3=89RIF?= =?UTF-8?q?=20axe=20neuf=20=C2=AB=20le=20skip=20python=20-S=20de=20l'oracl?= =?UTF-8?q?e=20jsonschema=20masque-t-il=20un=20=C3=A9cart=20enum/const/sch?= =?UTF-8?q?=C3=A9ma=20=3F=20=C2=BB=20=E2=86=92=20CLEAN=20(7=20suites=20d?= =?UTF-8?q?=C3=A9-skipp=C3=A9es=20OK,=20rbac=200=20err,=20seul=20phantom?= =?UTF-8?q?=20enum=20{WAG}=3DNON-D=C3=89FAUT),=20d=C3=A9tecteurs=20enum+co?= =?UTF-8?q?nst=20maison=20teeth-prouv=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- 05_activity_log/2026-08-06.md | 45 +++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/05_activity_log/2026-08-06.md b/05_activity_log/2026-08-06.md index b1f265c..1f7a90e 100644 --- a/05_activity_log/2026-08-06.md +++ b/05_activity_log/2026-08-06.md @@ -995,3 +995,48 @@ ajouté** (#5 — occurrence-zéro, rejouable à la demande comme les autres bal saisi en dur** · **0 commande VPS** (#8). `./run_ci.sh` inchangé = **33 PASS · 0 FAIL · 0 SKIP**. Fichiers touchés : ce journal + 1 entrée mémoire (`schema-oracle-ref-integrity`). Le résolveur est consigné ci-dessus, rejouable tel quel (stdlib pur, sans réseau). + +--- + +## Session `20260806_114542` — VÉRIF · axe NEUF « le skip `python -S` de l'oracle jsonschema masque-t-il un écart enum/const/schéma vivant ? » + reverse-check membres d'enum fantômes → CLEAN (1 phantom {WAG} = NON-DÉFAUT) · 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` = 3 arbitrages produit appartenant à +Michel (non éditables). Objectif anti-churn : **5ᵉ axe teeth schéma jamais balayé**, complémentaire des +4 précédents (non-vacuité · fermeture/complétude · wiring · intégrité des `$ref`). + +**Le soupçon.** Le gate exécute les suites sous **`python -S`** → l'import du tiers `jsonschema` +échoue → les **7 tests-oracle** `@skipUnless(_HAS_JSONSCHEMA)` (Draft-07 complet) comptent parmi les +**17 skips by-design** (cf. baseline régression 624 ran / 607 passed / 17 skipped). **Question** : ce +neutralisation masque-t-elle un écart **enum / const / type / required / $ref** réellement présent +dans les artefacts committés ? Et un `enum` de schéma **sur-énumère-t-il** vs les données (membre +fantôme = contrat partiellement aveugle sur la forme) ? + +**Méthode & résultat — CLEAN.** +1. **Ré-exécution des 7 suites porteuses d'oracle avec `python3` nu** (vrai jsonschema 3.2.0, donc les + `skipUnless` **s'exécutent réellement**) → **skipped=0, toutes OK** : + dossier_vente 31 · workflow_vente 25 · commissions 25 · seo 36 · ecf_dgii 39 · confotur 44 · + apply_plan 16. L'oracle Draft-07 dé-skippé valide le bundle **correctement assemblé** de chaque + module (assemblage propre au module, pas une reconstruction) → **0 divergence**. +2. **Validation jsonschema réelle** de `rbac/rbac_50_roles.json` vs `rbac/rbac.schema.json` → + **0 erreur** (l'oracle « neutralisé » passe pour de vrai sur le contrat RBAC phare). +3. **Reverse-check membres d'enum fantômes** sur les enums de rôle : data ⊆ enum pour + `famille` (9=9) · `portail` (6=6) · `scope_donnees` (4=4) ; `entite_principale` enum(9) ⊋ data(8), + **seul fantôme = {WAG}**. `used-not-in-enum = ∅` partout (une valeur produite hors-enum casserait la + validation → serait déjà attrapée). **{WAG} = NON-DÉFAUT** : WAG est une **entité canonique** + CLAUDE.md §Entités (Helios RD sous WAG) ; l'`enum` est le **domaine autorisé**, pas l'ensemble + observé — un enum-surset est correct (breadth de contrat), comme l'axe fermeture/`financement`. +4. **Teeth** — les détecteurs enum+const du validateur maison `publiciste/lib/validator.py:76-81` + **MORDENT** : `portail='PHANTOM_PORTAIL'` hors-enum → flaggé (message exact) ; const + `cible_rbac_roles` 50→999 → flaggé ; data propre → 0 erreur. Détecteur prouvé non-toothless. + +Les 19 autres schémas voient leur `enum/const` **enforced par le validateur maison** (gère +enum/const/type/required/additionalProperties/pattern/$ref) contre le bundle in-memory == `out/` +committé (check_artifacts), wiring déjà prouvé par l'axe « wiring ». **Conclusion : le skip `-S` de +jsonschema ne masque AUCUN écart enum/const/schéma.** + +**Périmètre.** VÉRIF pure : **0 fichier de production modifié** · **0 chiffre inventé** · **0 commande +VPS** (#8). `./run_ci.sh` inchangé = **33 PASS · 0 FAIL · 0 SKIP**. Fichiers touchés : ce journal + +1 entrée mémoire (`schema-oracle-enum-const-vs-S-skip`). Sweep rejouable tel quel (jsonschema 3.2.0 +local ; stdlib pur sinon ; sans réseau) — **NON promu en gate** (#5, occurrence-zéro).