[DTP-Worker 20260806_134554] VÉRIF axe NEUF « l'artefact COMMITÉ sur disque conforme à son schéma ? » (fichier réel vs oracle, pas l'objet en-mémoire reconstruit) → CLEAN 57/57

8e axe-schéma : les 7 axes existants examinent LE SCHÉMA ; celui-ci examine LE FICHIER LIVRÉ. La mémoire notait le trou « jsonschema valide un objet en-mémoire, pas le flat out/ commité » — refermé ici. Chaîne de garde traçable pour les 57 payloads : schéma-whole · schéma-prop+byte-repro · wrap/split byte-repro d'un objet validé · ré-run byte-compare (regression_run via check_regression.sh l.53-70). Les 4 « no-fit » tous by-design (workflow.json wrap-liste fixtures Frappe · acceptance_matrix bundle moins manifest · run_sheet vue rendue · regression_run snapshot d'exécution). 0 fichier livré à forme non-gardée.

Détecteur jsonschema 3.2.0 teeth-prouvé (clé-parasite additionalProperties:false → no-fit ; scalaire → no-fit, 2/2 MORDENT), rejouable /tmp hors réseau, 0 édition de production, 0 artefact touché, run_ci 33 PASS 0 FAIL 0 SKIP, pas de gate (#5, occurrence-zéro)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-08-06 13:53:07 +00:00
parent 1839f521aa
commit 04f4c21778
+46
View File
@@ -1,5 +1,51 @@
# Activity Log · 2026-08-06 · Claude Code DTP Worker # Activity Log · 2026-08-06 · Claude Code DTP Worker
## Session `20260806_134554` — VÉRIF · axe NEUF « l'artefact COMMITÉ sur disque conforme à son schéma ? » (fichier réel vs oracle, pas l'objet en-mémoire) → CLEAN 57/57 · 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 : un **axe teeth encore jamais balayé**.
**Axe NEUF (absent de la mémoire).** Les 7 axes-schéma existants (non-vacuité, closedness, wiring, `$ref`,
enum/const, cohérence interne, draft/keyword) examinent tous **le schéma**. La mémoire note un angle
jamais fermé : « *jsonschema oracles validate in-memory objects not flat out/ (no flat pair = 0-err,
by-design)* ». Question NEUVE et orthogonale : le **fichier `out/*.json` réellement commité et livré**
est-il conforme à son schéma — ou une régression de forme peut-elle *ship* verte parce que l'oracle ne
valide qu'un objet reconstruit en mémoire de forme différente ? Détecteur (jsonschema 3.2.0) : pour
chacun des **57 `out/*.json`**, valider le fichier sur disque contre le schéma du module — soit comme
objet-entier, soit comme **valeur d'une propriété top-level** du bundle validé.
**Résultat empirique.** 5 fichiers valident **WHOLE** (pie_manifest, quality_report, audit_report,
regression_plan, + MANIFEST-scénario) ; la majorité valident comme **propriété de bundle** (le générateur
valide le bundle entier en mémoire puis écrit `bundle["<prop>"]` dans un fichier split). **4 « no-fit »**
investigués un par un — **tous by-design & couverts transitivement** :
- `crm/workflow_vente/out/workflow.json` : le générateur écrit `[bundle["workflow"]]` (l.192) — **wrap
liste 1-élément = convention fixtures Frappe** ; l'objet interne EST validé (prop `workflow`) et le
wrapper est byte-repro-épinglé (check_artifacts).
- `qa/acceptance/out/acceptance_matrix.json` = bundle `{matrix,verdict}` **moins** `manifest` (extrait
vers MANIFEST.json) ; sous-parties validées en mémoire + byte-repro.
- `demo/scenarios/out/run_sheet.json` : vue rendue distincte (`scenario.schema.json` garde en fait
**MANIFEST.json**) ; sortie `build` déterministe byte-repro'd + structure assertée par
`check_invariants` (lit `run_sheet["scenarios"]`, `sc["id"]`…).
- `qa/regression/out/regression_run.json` : snapshot d'EXÉCUTION (sous-ensemble du schéma-plan) — **seul
artefact hors byte-repro de check_artifacts**, MAIS forme épinglée autrement : `ci/check_regression.sh`
**ré-exécute `run` et byte-compare** au fichier commité (l.53-70). Aucune dérive de forme ne passe.
**Chaîne de garde fermée.** Tout payload commité livré a sa forme gardée par une chaîne traçable :
`schéma-whole` · `schéma-prop + byte-repro` · `wrap/split byte-repro d'un objet schéma-validé` ·
`ré-run byte-compare`. **0 fichier livré à forme non-gardée.** Le trou « in-memory vs commité » noté en
mémoire est comblé par byte-repro / ré-exécution, vérifié sur les 57.
**Dents prouvées.** Sur un fichier qui matche une prop (`workflow_state.json``workflow_state`) : mutation
clé-parasite (props en `additionalProperties:false`) → **no-fit** ; mutation type-scalaire → **no-fit**
(2/2 MORDENT). Le détecteur discrimine une divergence de forme réelle.
**Conclusion.** **CLEAN 57/57.** Axe teeth-prouvé, **rejouable** (`/tmp` jsonschema pur, hors réseau,
hors prod · #8). **0 édition de production**, 0 artefact touché, `./run_ci.sh` inchangé = **33 PASS ·
0 FAIL · 0 SKIP**. **NON promu en gate** (#5, occurrence-zéro ; la chaîne byte-repro/ré-run garde déjà
la forme). Fichiers touchés : ce journal + 1 entrée mémoire (`committed-artifact-conforms-to-schema`).
## 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 ## 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, **Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS · 0 FAIL · 0 SKIP**, arbre propre,