[DTP-Worker 20260806_101528] VÉRIF axe neuf « fermeture & complétude des 26 oracles-schémas » → 1 anomalie (financement) investiguée = NON-DÉFAUT

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) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-08-06 10:24:32 +00:00
parent e87f5f56af
commit d9668d6079
+52
View File
@@ -1,5 +1,57 @@
# Activity Log · 2026-08-06 · Claude Code DTP Worker # 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 ## 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, **Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS · 0 FAIL · 0 SKIP**, arbre propre,