diff --git a/05_activity_log/2026-08-06.md b/05_activity_log/2026-08-06.md index 9da06b8..cf79cfa 100644 --- a/05_activity_log/2026-08-06.md +++ b/05_activity_log/2026-08-06.md @@ -1,5 +1,49 @@ # Activity Log · 2026-08-06 · Claude Code DTP Worker +## Session `20260806_141554` — VÉRIF · axe NEUF « accord numérique INTER-artefacts d'un concept-singleton partagé » → CLEAN · 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 de Michel +(non éditables). Objectif : un **axe teeth encore jamais balayé**. + +**Axe NEUF (absent de la mémoire).** Les axes numériques existants sont soit **intra-artefact** +(`[[manifest-count-field-payload-rederivation]]` : chaque `MANIFEST.nb_*` re-calculé depuis SON payload +voisin), soit **code/prose ↔ artefact** (`[[doc-numeric-claims-gate]]`, `[[prose-facts-vs-numeric-drift]]`). +Angle orthogonal jamais couvert : **artefact ↔ artefact** — quand un même *concept-singleton* plateforme +apparaît comme scalaire dans **deux `out/*.json` indépendants**, les deux valeurs s'accordent-elles ? +Une divergence silencieuse (un manifest dit 50, un autre 44) *ship* verte car aucun gate ne compare deux +artefacts entre eux. + +**Détecteur (teeth-prouvé).** Balayage des **57 `out/*.json`** : collecte des clés-scalaires int en +**position GLOBALE** (chemin sans indice de liste `[i]` = concept singleton, ≠ position PER-ROW dans un +`[i]` = compte-de-ligne légitimement variable). Une clé globale partagée par >1 fichier avec valeurs +divergentes = candidat-conflation. **Preuve de dents** : mutation `cible_rbac_roles` 50→49 dans un seul +manifest en mémoire → le détecteur **signale** aussitôt la divergence (BITES). + +**Résultat empirique → CLEAN.** Les concepts-singletons plateforme s'accordent tous cross-fichier : +`cible_rbac_roles`=50 (4 fichiers), `ci_modules_count`/`modules`/`suites`=24 (3), `portails`=5, +`doctypes_uniques`=45, `custom_docperm`=116, `user_permission_templates`=28, `role_profiles`=6, +`min_score`=100, `pass_score`=95 — zéro divergence. + +**TRAP documenté (comme les KEY-traps de `[[manifest-count-field-payload-rederivation]]`).** L'heuristique +naïve « même nom de clé = même concept » **sur-signale** : `fields`/`data_fields`/`permissions`/`roles`/ +`sections`/`pass` divergent entre modules (`dossier_vente` 30 fields vs `confotur` 18 ; `audit_4big` +pass=24 vs `audit_5d` pass=13) — mais chacun décrit **son propre DocType/suite** = per-module-local, PAS +un singleton plateforme. Le seul **nom SURCHARGÉ** portant deux sens cross-famille est `roles_couverts` +(**50** dans `rbac/roleprofile_gen` vs **44** dans `frontend/portails`, `frontend/chat_otoia`, +`mobile/app_config`) — et c'est **by-design**, les DEUX re-dérivés du canonique `rbac_50_roles.json` : +- **50** = tous les rôles reçoivent un role-profile (`len(roles)`=50) ; +- **44** = rôles surfacés dans les **5 portails business** (ventes 12 · construction 10 · compta 8 · + direction 9 · achat 5) = 50 − **6** rôles `plateforme` (`devops`, `rbac-admin`, `qa`, `otoia`, + `mobile`, `bi`) sans portail business. Cohérent avec `[[role-portail-referential-integrity-sweep]]`, + `[[roles-couverts-transitively-single-sourced]]`, `[[roadmap-7-dashboards-not-drift]]` (les 6 `plateforme`). + +**Décision.** **Aucune édition de production** (l'axe est CLEAN) · **aucun gate ajouté** (#5 — +occurrence-zéro d'une vraie conflation ; détecteur rejouable, non-déterministe-safe) · aucune commande +VPS (#8). `run_ci.sh` = **33 PASS · 0 FAIL · 0 SKIP**. Canal stakeholder `daily_reports/2026-08-06.md` +porté au HEAD (currency `3710253`→`04f4c21` + cette session). + ## 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 diff --git a/05_deliverables_mvp/daily_reports/2026-08-06.md b/05_deliverables_mvp/daily_reports/2026-08-06.md index b8495d6..a77ad91 100644 --- a/05_deliverables_mvp/daily_reports/2026-08-06.md +++ b/05_deliverables_mvp/daily_reports/2026-08-06.md @@ -197,3 +197,29 @@ sémantique (prix→placeholders). Confirmé par les **deux** validateurs (maiso `regression_run.json`, `regression/out/MANIFEST.json`, `audit_4big/out/quality_report.json`. **Prose gatée réalignée** : README module (`17 tests`), fiches `03_agents/{faisabilite,qa,erpnext_backend}`. `run_ci.sh` = **33 PASS · 0 FAIL · 0 SKIP** · **0 gate ajouté** (#5) · **aucune commande VPS** (#8). + +--- + +## Currency canal stakeholder — `3710253` → HEAD `04f4c21` (+ session `141554`) + +Depuis le jalon *brief.schema* ci-dessus, **six sessions lecture-seule** ont ajouté chacune un **axe +de vérification objectif encore jamais balayé** — toutes **CLEAN, 0 édition de production, 0 gate +ajouté** (#5). La **structure du gate de merge reste inchangée** : `run_ci.sh` = **33 PASS · 0 FAIL · +0 SKIP** (8 gates statiques + 25 suites) à chaque commit. Aucune n'est opposable au merge — seul le +journal `05_activity_log/` est touché — sauf **un durcissement de test** (session `124544`). + +| Commit (session) | Axe NEUF vérifié | Résultat | +|---|---|---| +| `27cfe2f` (`111534`) | Intégrité référentielle interne des `$ref` des 26 oracles-schémas | CLEAN 108/108 refs | +| `6c05538` (`114542`) | Le skip `python -S` de l'oracle jsonschema masque-t-il un écart enum/const ? | CLEAN (1 phantom `{WAG}` = by-design) | +| `4aea5bd` (`121542`) | Cohérence interne des 26 oracles (required-vacuité + auto-contradiction const/enum/default) | CLEAN 26/26 (1405 nœuds) | +| `bea5d49` (`124544`) | Atteignabilité transitive d'une assertion (aucun test run-only faux-vert) | CLEAN 0/651 **+ 1 durcissement** (implicite→explicite) | +| `1839f52` (`131551`) | Cohérence draft/keyword des 26 oracles-schémas (`$schema` vs idiomes cross-draft) | CLEAN 26/26 (tous draft-07) | +| `04f4c21` (`134554`) | L'artefact **commité sur disque** conforme à son schéma (≠ objet en-mémoire) | CLEAN 57/57 | + +**Session courante `141554` — axe NEUF « accord numérique INTER-artefacts »** (`out/*.json` ↔ `out/*.json`, +distinct de l'intra-artefact et du code/prose↔artefact). Les concepts-singletons plateforme s'accordent +tous cross-fichier (`cible_rbac_roles`=50, `ci_modules_count`/`modules`/`suites`=24, `portails`=5…). Seul +nom **surchargé** divergent = `roles_couverts` **50** (tous les role-profiles) vs **44** (rôles des 5 +portails business = 50 − 6 `plateforme`) — **by-design, les deux re-dérivés de `rbac_50_roles.json`**. +**CLEAN · 0 édition de production · 0 gate** (#5) · `run_ci.sh` = **33 PASS · 0 FAIL · 0 SKIP**.