diff --git a/05_activity_log/2026-08-06.md b/05_activity_log/2026-08-06.md index 0ca4588..ef76458 100644 --- a/05_activity_log/2026-08-06.md +++ b/05_activity_log/2026-08-06.md @@ -1,5 +1,51 @@ # Activity Log · 2026-08-06 · Claude Code DTP Worker +## Session `20260806_161610` — VÉRIF · axe NEUF « intégrité arithmétique des champs DÉRIVÉS des artefacts committés » (moyennes/taux/sommes-pondérées/écarts/verdicts-seuil + nombres dans la prose) → 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` = arbitrages produit de Michel (non +éditables). Objectif : un **axe teeth encore jamais balayé**. Candidat ancres intra-doc `](#frag)` +ré-écarté (occurrence-zéro, déjà noté). Retenu : la **valeur SÉMANTIQUE** d'un nombre DÉRIVÉ. + +**L'axe (distinct de tout ce qui existe).** Les balayages numériques passés couvrent la **cardinalité** +(`manifest-count-field-payload-rederivation` : `nb_*`/`_total` = len(payload)), l'**accord inter-artefacts** +d'un singleton (`cross-artifact-numeric-agreement`), et les **doublons d'ensemble** (`artifact-internal-set-semantics`). +Aucun ne recalcule une **DÉRIVATION arithmétique** — un nombre stocké = *fonction* d'autres nombres stockés +(moyenne, taux %, somme pondérée, écart, verdict-seuil). C'est aveugle au byte-repro **d'une façon subtile** : +`check_artifacts` (et le test `test_build_egale_commite` du module financement) comparent la sortie du +générateur au **golden committé** — donc ils attrapent la *dérive* (code changé sans régénérer) mais **PAS** +un bug de formule **régénéré en même temps** (code + golden bougent ensemble → toujours vert). Un +`overall_percent` faux montré au **banquier** (roadmap « P07 pitch banquier ») serait un faux-vert vs #6. +Cet axe **recalcule depuis les entrées brutes**, indépendamment du générateur. + +**Faux-piste corrigée en cours de route (honnêteté).** J'avais d'abord supposé `overall_percent` non-testé +(grep : 0 assert). Mutation-test de `finlib/gate.py` (mean `/len→/3.0`, doc pct `*100→*90`, f-string +`paid/required` inversé, chacun in-place puis `git checkout`) → **chaque mutant FAIL** via +`test_build_egale_commite` (rebuild == golden byte-à-byte). Donc l'arithmétique **est** protégée-dérive. +La vraie lacune résiduelle = le bug-de-formule-avec-régén, que **seul un recalcul premier-principe** ferme. + +**Recalcul premier-principe → CLEAN partout :** +- **financement `gate_status_example.json`** : `overall_percent` = moyenne(4 %) = **39.1** ✓ ; 3 % par + condition (`paid/required`, `validated/total`, `signed/total`, arrondis `_round1`) ✓ ; `remaining` = + `required−paid` = 14000 ✓ ; les **5 nombres embarqués dans la prose `reasons`** (`29500/43500`, reste + `14000`, `67.8%`, `5/13`, `2/4`) miroir des champs structurés ✓. +- **audit_4big `quality_report.json`** : pour les **24 modules** `applicable_weight` = Σ(poids checks), + `earned_weight` = Σ(poids passés), `score` = round(earned/applicable×100), `verdict` = PASS ssi score≥95 ✓ ; + `totals` (pass/fail/min/max/`pass_rate_pct` = round(pass/modules×100)) ✓. +- **financement `banques.json`** : 6× ordre LTV `0≤ltv_min≤ltv_max≤100` ✓. +- **commissions** : bornes de taux `[0,100]` ✓. + +**Dents prouvées bout-en-bout.** Détecteurs de recalcul mordent sur mutants injectés dans une **copie** +de l'artefact : `overall_percent 39.1→52.1` **MORD**, prose `paid 29500→99999` **MORD**, audit_4big +`score→77` **MORD** ; l'artefact réel passe. Détecteurs stdlib pur (`json`), sans réseau, rejouables. + +**Décision.** **NON promu en gate** (#5) : les nombres dérivés sont déjà protégés-dérive par +`build==committed`/`check_artifacts` ; cet axe ferme la classe résiduelle (formule-avec-régén) par un +sweep **rejouable**, occurrence-zéro. **0 édition de production** (mutations `gate.py` toutes restaurées +par `git checkout` — arbre propre), **0 commande VPS** (#8). `run_ci` inchangé 33/0/0. + + ## Session `20260806_151604` — VÉRIF · axe NEUF « intégrité référentielle projet-code ↔ projet-nom canonique dans les artefacts » → CLEAN 128/128 · 0 édition de production **Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS · 0 FAIL · 0 SKIP**, arbre propre, roadmap