From d9668d607962e0404b04db90c0d828f088878ac8 Mon Sep 17 00:00:00 2001 From: Claude Code DTP Worker Date: Thu, 6 Aug 2026 10:24:32 +0000 Subject: [PATCH] =?UTF-8?q?[DTP-Worker=2020260806=5F101528]=20V=C3=89RIF?= =?UTF-8?q?=20axe=20neuf=20=C2=AB=20fermeture=20&=20compl=C3=A9tude=20des?= =?UTF-8?q?=2026=20oracles-sch=C3=A9mas=20=C2=BB=20=E2=86=92=201=20anomali?= =?UTF-8?q?e=20(financement)=20investigu=C3=A9e=20=3D=20NON-D=C3=89FAUT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Complémentaire de schema-oracle-teeth-audit (non-vacuité) : audite la FERMETURE (additionalProperties:false) + la COMPLÉTUDE (properties ⊇ clés émises) des 26 *.schema.json. 23/26 entièrement fermés (convention). Seule anomalie réelle : financement.schema.json — top `additionalProperties:true` explicite (3 pairs CRM fermés) + 8 nœuds sous-énumérés (note/resume/titre/endpoint/couleurs/source_*). Le validateur maison honore pourtant additionalProperties. Verdict NON-DÉFAUT : souplesse DÉLIBÉRÉE (structure validée serré via pattern/enum/ counts min-max ; seuls champs DESCRIPTIFS libres — même motif que seo @graph[] JSON-LD + brief=schéma d'ENTRÉE) ET transitivement couverte par test_build_egale_ commite (byte-repro out/ == build frais → toute dérive nom/présence RED via check_artifacts). Fermer = churn (#5) à risque de faux-rejet, 0 dent nette gagnée. Faux positif écarté : mobile top = additionalProperties:false (fermé) ; les 4 « under-spec » = artefacts de reconstruction plate (objets imbriqués). Vérif authoritative = build_bundle réel, pas une reconstruction depuis out/*.json. 0 prod édité · 0 schéma modifié · 0 artefact reconstruit · 0 gate (#5) · 0 chiffre saisi main (#6) · 0 commande VPS (#8). run_ci 33 PASS 0 FAIL 0 SKIP (inchangé). Éditions : journal + mémoire schema-oracle-closedness-not-defect (hors repo). Co-Authored-By: Claude Opus 4.8 (1M context) --- 05_activity_log/2026-08-06.md | 52 +++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/05_activity_log/2026-08-06.md b/05_activity_log/2026-08-06.md index 93d1d0c..435e35b 100644 --- a/05_activity_log/2026-08-06.md +++ b/05_activity_log/2026-08-06.md @@ -1,5 +1,57 @@ # Activity Log · 2026-08-06 · Claude Code DTP Worker +## 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, +roadmap `ROADMAP_8_WEEKS_OR_LESS.md` intégralement livrée/gatée (repo Sprints 1→7 ; prod VPS / builds +EAS / dépôts ONAPI hors périmètre worker · #8). Registre `OPEN_DECISIONS_REGISTER.md` = 3 arbitrages +produit **appartenant à Michel** (D-01 PIE `contrats` · D-02/V10 financement audit IA · D-03 chat.py), +non éditables par le worker. Objectif anti-churn : un **axe teeth encore jamais balayé**. + +**Axe NEUF (absent de la mémoire) → « fermeture (`additionalProperties:false`) & complétude des +`properties` » des 26 oracles.** Distinct de `schema-oracle-teeth-audit` (qui prouvait la +**non-vacuité** : required + ≥2 mots-clés de contrainte). Ici la question est **complémentaire** : +un schéma non-vacuous mais **ouvert** (`additionalProperties` ≠ `false`) OU dont les `properties` +n'énumèrent qu'un **sous-ensemble** des clés réellement produites laisse passer des clés +**fantômes/renommées/droppées** — l'oracle serait alors partiellement aveugle sur la *forme*. + +**Méthode.** (1) Balayage des 26 schémas : à chaque nœud-objet, `additionalProperties is False` ? → +**23/26 entièrement fermés** (convention dominante). (2) Pour les modules reconstructibles, diff +`clés du bundle réel` ⊆ `properties déclarées`. Confirmation authoritative pour financement via +`build_bundle(spec, RoleResolver.from_path())` (le vrai bundle, pas une reconstruction). + +**Résultat — 1 seule anomalie réelle : `crm/financement_bancaire/financement.schema.json`.** +- Top porte `"additionalProperties": true` **écrit explicitement** (les 3 pairs CRM — + `commissions`/`dossier_vente`/`workflow_vente` — sont 100 % fermés). +- Les `properties` n'énumèrent qu'un sous-ensemble : **8 nœuds** émettent des clés non déclarées + (`manifest.titre/source_version/source_directive/rbac_source`, `counts.documents_requis_*`, + `banques[].note`, `sections[].resume`, `gate_spec.endpoint/submit_endpoint/banniere.couleurs`, + `gate_status_example.projet/unite/banque_choisie`). Le validateur **maison** + (`publiciste/lib/validator.py`) honore pourtant `additionalProperties` (support confirmé). + +**Verdict : NON-DÉFAUT — souplesse délibérée + transitivement couverte.** (a) Le schéma valide +**serré** les champs structurels (ids `pattern ^[a-z0-9_]+$`, `enum` catégories/applies_to, `counts` +`minimum/maximum`, tableaux `minItems/maxItems 4`) et laisse **libres** les seuls champs +**descriptifs** (`note`, `resume`, `titre`, `endpoint`, `couleurs`) — **même motif que `seo`** +(`schema_org.@graph[]` JSON-LD intrinsèquement variable + `manifest` descriptif ouverts par design ; +`brief.schema.json` ouvert = schéma d'**ENTRÉE**). (b) Ces 8 champs sont **épinglés au byte près** par +`test_build_egale_commite` (l'artefact `out/` commité == build frais) : toute dérive de nom/présence +sur la spec fixe est déjà **RED** via `check_artifacts`, indépendamment de la souplesse de l'oracle. +→ Fermer/compléter le schéma serait un **churn** sur un fichier au choix explicite (#5), à risque de +faux-rejet mal typé, sans dents nettes gagnées (spec figée + byte-repro). + +**Faux positif écarté (mobile).** `mobile/app_config/mobile.schema.json` top = `additionalProperties: +false` (fermé) ; les 4 « under-spec » signalés par le proxy = artefacts de ma **reconstruction plate** +(objets descriptifs imbriqués `store_listing`/`app_config` que le vrai bundle nidifie autrement). +Balayage `additionalProperties` confirmait déjà `open_with_props=0` → mobile **entièrement fermé**. + +**Portée / anti-churn.** **0 fichier de production édité**, **0 schéma modifié**, **0 artefact +reconstruit**, **0 gate ajouté** (#5), **0 chiffre saisi à la main** (#6 — `26`/`23`/`8` recomputés +par balayage), **0 commande VPS** (#8). Balayage lecture-seule, occurrence-zéro de défaut, rejouable +→ **pas un gate**, sibling de `schema-oracle-teeth-audit` / `verify-non-defects-reconciliation-traps`. +`./run_ci.sh` = **33 PASS · 0 FAIL · 0 SKIP** (inchangé, aucune édition de code). Seules éditions : +ce journal + mémoire `schema-oracle-closedness-not-defect` (+ pointeur `MEMORY.md`). + ## Session `20260806_094524` — VÉRIF indépendante · NOUVEL axe teeth « tests silencieusement fantômes (shadowing) » → CLEAN 25/25 · 0 édition de production **Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS · 0 FAIL · 0 SKIP**, arbre propre,