[DTP-Worker 20260805_184329] CURRENCY canal stakeholder : baseline régression corrigée (faux-vert jsonschema neutralisé) + 2ᵉ incident RED consigné
Le daily_report/2026-08-05.md s'arrêtait à la session 144304 (HEADf311a1b), 5 commits plus tôt. Recompute python3 indépendant des artefacts COURANTS (HEAD1a44dfe) → DEUX écarts matériels au canal stakeholder, tous deux consignés (rapport hors merge-gate : check_docs + check_readme_claims l'excluent explicitement). ÉCART 1 (matériel) — baseline régression : regression_run.json.totals = 624 ran / 607 passed / 17 skipped / 0 fail / 0 err, verdict PASS ; le rapport publiait « 624 passés · 0 skip ». Le refactor9d30939lance chaque suite sous `python -S` (sans site-packages) reproduisant le runner Gitea pip-less → l'oracle OPTIONNEL jsonschema (17 tests skipUnless, ~1/module) neutralisé partout. AVANT : jsonschema présent local→skipped=0, absent runner→skipped=17 ⇒ regression_run.json commité = FAUX-VERT (vert local, ROUGE runner). APRÈS -S : matrice byte-déterministe cross-environnement, baseline sur couverture garantie (stdlib + validateurs maison). Verdict inchangé PASS. Ligne « Régression » reformulée 607/17-skip ; les « 624/0-skip » antérieurs = snapshots datés KEEP (historical-repro). ÉCART 2 — 2ᵉ tree commité RED capté le jour même : le refactor -S (9d30939) éditait regression/README.md (+11 l) sans rebuild quality_report.json (audit 4Big score le contenu doc → evidence byte-count) → check-artifacts ROUGE (32 PASS·1 FAIL) ; rattrapé ~17 min par9fa464d(rebuild → 1 ligne, PASS 24/24 inchangé). Même classe rebuild-after-doc-edits que l'incident du matin (127ef6f→1321983) ; le rapport n'en consignait qu'UN → honnêteté du canal rétablie. FIX : section « fin de journée · 184329 » (avant/après -S + reformulation ligne Régression · tableau 2ᵉ incident · veille lecture-seule depuisf311a1b: docstring helpersdb91a6bCLEAN + gate constant-anchor1441693+ invariant INV-C PYTHONUTF81a44dfe= PAS un nouveau job, 33 inchangé · ré-attestation HEAD1a44dfe). Tables du matin intactes (snapshots datés), réconciliées explicitement (convention 32→33 jobs). Ré-attestation HEAD1a44dfe: 4Big 24/24 tous==100 coverage.ok PASS · régression 624 ran/607 passed/17 skipped/0/0 PASS · recette 15/15 in_repo · ci_job ×36 · structure run_ci 33 PASS = 8 gates statiques + 25 suites. 0 prod, 0 artefact reconstruit, 0 gate (#5), 0 chiffre saisi (#6 — 24/607/17/33/36 recomputés), 0 VPS (#8). Seules éditions : rapport stakeholder + journal. run_ci 33 PASS · 0 FAIL · 0 SKIP. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,54 @@
|
|||||||
# Activity Log · 2026-08-05 · Claude Code DTP Worker
|
# Activity Log · 2026-08-05 · Claude Code DTP Worker
|
||||||
|
|
||||||
|
## Session 184329 · CURRENCY canal stakeholder — **baseline régression corrigée** (607/17-skip) + 2ᵉ incident RED consigné · 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 in-repo** (0 checkbox ouverte ;
|
||||||
|
15/15 `acceptance_matrix` `status=in_repo`). Plutôt qu'une énième sonde de dérive (surfaces usuelles
|
||||||
|
saturées · #5), j'ai vérifié la **currency du canal stakeholder** `daily_reports/2026-08-05.md`
|
||||||
|
(hors merge-gate : `check_docs`+`check_readme_claims` l'excluent explicitement) contre les artefacts
|
||||||
|
**courants** — dernière mise à jour du rapport = session `144304` (HEAD `f311a1b`), **5 commits
|
||||||
|
plus tôt**. Deux écarts **matériels** trouvés.
|
||||||
|
|
||||||
|
**Écart 1 — baseline régression : faux-vert `jsonschema` neutralisé (matériel).** Recompute
|
||||||
|
indépendant `python3` de `regression_run.json.totals` : **624 ran · 607 passed · 17 skipped · 0/0**,
|
||||||
|
verdict `PASS` — mais le rapport publiait « **624 passés · 0 skip** ». Cause : le refactor `9d30939`
|
||||||
|
lance chaque suite sous `python -S` (sans `site-packages`) reproduisant le runner Gitea pip-less →
|
||||||
|
l'oracle **optionnel** `jsonschema` (17 tests `skipUnless`, ~1/module) est **neutralisé partout**.
|
||||||
|
AVANT : `jsonschema` présent en local → `skipped=0` ; absent sur runner → `skipped=17` ⇒
|
||||||
|
`regression_run.json` commité = **FAUX-VERT** (vert local, ROUGE runner). APRÈS `-S` : matrice
|
||||||
|
**byte-déterministe** cross-environnement, baseline ancrée sur la couverture garantie (stdlib +
|
||||||
|
validateurs maison). Verdict inchangé `PASS`. La ligne « Régression » du canal se lit désormais
|
||||||
|
**607 passés · 17 skip (oracles optionnels)** ; les « 624 passés · 0 skip » antérieurs = snapshots
|
||||||
|
datés vrais à l'époque (*historical-repro = KEEP*).
|
||||||
|
|
||||||
|
**Écart 2 — 2ᵉ tree commité RED, capté le jour même.** Le refactor `-S` (`9d30939`) éditait
|
||||||
|
`regression/README.md` (+11 l) **sans rebuild** de `quality_report.json` (l'audit 4Big score le
|
||||||
|
contenu doc → champ `evidence` byte-count) → `check-artifacts` **ROUGE** (32 PASS · 1 FAIL). Rattrapé
|
||||||
|
sous ~17 min par `9fa464d` (rebuild → 1 ligne, verdict `PASS` 24/24 inchangé). Même classe
|
||||||
|
`rebuild-after-doc-edits` que l'incident du matin (`127ef6f`→`1321983`). Le rapport n'en consignait
|
||||||
|
qu'**un** ; ce 2ᵉ était absent → honnêteté du canal rétablie (cf. [[audit4big-rebuild-after-doc-edits]],
|
||||||
|
[[two-logging-channels]]).
|
||||||
|
|
||||||
|
**Fix.** Ajout d'une section « Mise à jour fin de journée · `184329` » au `daily_reports/2026-08-05.md` :
|
||||||
|
(1) tableau avant/après `-S` + reformulation de la ligne Régression ; (2) tableau du 2ᵉ incident ;
|
||||||
|
(3) veille lecture-seule depuis `f311a1b` (docstring helpers `db91a6b` CLEAN · gate constant-anchor
|
||||||
|
`1441693` · invariant INV-C `PYTHONUTF8` `1a44dfe` — **pas un nouveau job**, 33 inchangé) ;
|
||||||
|
(4) ré-attestation HEAD `1a44dfe`. Tables du matin **laissées intactes** (snapshots datés), réconciliées
|
||||||
|
explicitement par la nouvelle section (même convention que l'évolution 32→33 jobs).
|
||||||
|
|
||||||
|
**Ré-attestation (recompute `python3` indépendant, HEAD `1a44dfe`).** 4Big : **24 modules · tous == 100** ·
|
||||||
|
`coverage.ok=true` · `PASS`. Régression : **624 ran · 607 passed · 17 skipped · 0 fail / 0 err** · `PASS`.
|
||||||
|
Recette : **15/15 `in_repo`** · `ci_job` ×36 · `True`. Structure : `run_ci` **33 PASS** = 8 gates statiques
|
||||||
|
(`ls ci/*.sh` hors `lib.sh` = 8) + 25 suites.
|
||||||
|
|
||||||
|
**Portée / anti-churn.** **0 fichier de production édité**, **0 artefact reconstruit**, **0 gate
|
||||||
|
ajouté/modifié** (#5), **0 chiffre saisi à la main** (#6 — 24/607/17/33/36 recomputés des artefacts +
|
||||||
|
`run_ci.sh`), **aucune commande VPS** (#8 — 100 % local, lecture-seule sur les artefacts). Seules
|
||||||
|
éditions : le rapport stakeholder + ce journal.
|
||||||
|
|
||||||
|
**Vérif.** `./run_ci.sh` → **33 PASS · 0 FAIL · 0 SKIP** (aucun fichier gaté touché).
|
||||||
|
|
||||||
## Session 181325 · FIX RÉEL défaut locale-runner : le gate est ROUGE en silence sous locale ASCII → **VERROUILLÉ UTF-8**
|
## Session 181325 · FIX RÉEL défaut locale-runner : le gate est ROUGE en silence sous locale ASCII → **VERROUILLÉ UTF-8**
|
||||||
|
|
||||||
**Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS**, arbre propre, roadmap
|
**Choix de tâche.** `./run_ci.sh` au démarrage = **33 PASS**, arbre propre, roadmap
|
||||||
|
|||||||
@@ -136,3 +136,71 @@ tables ci-dessus **recomputent à l'identique ce jour** (recompute `python3` ind
|
|||||||
**Portée / anti-churn.** **0 fichier de production édité**, **0 artefact reconstruit**,
|
**Portée / anti-churn.** **0 fichier de production édité**, **0 artefact reconstruit**,
|
||||||
**0 gate ajouté** (#5), **0 chiffre saisi à la main** (#6 — 24/624/33 dérivés des artefacts
|
**0 gate ajouté** (#5), **0 chiffre saisi à la main** (#6 — 24/624/33 dérivés des artefacts
|
||||||
et de `run_ci.sh`), **aucune commande VPS** (#8). Seule édition : ce rapport + le journal.
|
et de `run_ci.sh`), **aucune commande VPS** (#8). Seule édition : ce rapport + le journal.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Mise à jour fin de journée · session `20260805_184329` — **baseline régression corrigée (faux-vert neutralisé)** + 2ᵉ incident d'intégrité consigné
|
||||||
|
|
||||||
|
Ce rapport s'arrêtait à la session `144304` (HEAD `f311a1b`). **Cinq commits** ont suivi.
|
||||||
|
**Deux sont matériels pour le stakeholder** : (1) la **baseline régression a changé de forme**
|
||||||
|
— un faux-vert latent a été neutralisé, la matrice publiée passe de « 0 skip » à
|
||||||
|
« **17 oracles optionnels ignorés** » (verdict inchangé `PASS`) ; (2) un **2ᵉ tree commité
|
||||||
|
momentanément RED**, capté et corrigé le jour même (même classe que l'incident du matin).
|
||||||
|
Le reste est veille d'intégrité en lecture seule. HEAD courant : `1a44dfe`.
|
||||||
|
|
||||||
|
### (1) Baseline régression durcie — faux-vert `jsonschema` neutralisé (matériel)
|
||||||
|
|
||||||
|
Le refactor `9d30939` lance désormais **chaque suite sous `python -S`** (interpréteur sans
|
||||||
|
`site` → aucun `site-packages` sur `sys.path`), reproduisant fidèlement le runner Gitea
|
||||||
|
pip-less. L'**unique paquet tiers** du corpus — l'oracle **optionnel** `jsonschema`, toujours
|
||||||
|
gardé par `skipUnless`/`try…except ImportError` — est ainsi **neutralisé partout**.
|
||||||
|
|
||||||
|
| Avant `-S` | Après `-S` (baseline courante) |
|
||||||
|
|---|---|
|
||||||
|
| `jsonschema` **présent** en local → `skipped=0` · `passed=624` | `-S` → oracle **absent partout** → `skipped=17` · `passed=607` |
|
||||||
|
| `jsonschema` **absent** sur le runner Gitea → `skipped=17` | matrice **byte-identique** quel que soit ce qui est `pip install`é |
|
||||||
|
| ⇒ `regression_run.json` commité = **FAUX-VERT** (vert en local, **ROUGE** sur le runner) | ⇒ `check_regression` **byte-déterministe** cross-environnement |
|
||||||
|
|
||||||
|
> **Ce que ça garantit au stakeholder.** La baseline publiée était vraie sur un poste où
|
||||||
|
> `jsonschema` était installé, mais **aurait fait rougir la CI** le jour où elle tournerait
|
||||||
|
> sur le runner pip-less réel. Le refactor ancre la baseline sur la **couverture garantie**
|
||||||
|
> (stdlib + validateurs maison) ; les 17 tests neutralisés ne sont que des **doublures de
|
||||||
|
> validation** de schéma, leurs contrats restent couverts par les validateurs maison. Le
|
||||||
|
> verdict reste `PASS` — **aucune** suite rouge, **0 fail / 0 err**. La ligne « Régression »
|
||||||
|
> des tables ci-dessus se lit désormais **624 ran · 607 passés · 17 skip (oracles optionnels) · 0/0 · `PASS`**
|
||||||
|
> (les « 624 passés · 0 skip » des sections antérieures sont des **snapshots datés** vrais à
|
||||||
|
> l'époque, classe *historical-repro = KEEP*).
|
||||||
|
|
||||||
|
### (2) 2ᵉ incident d'intégrité (capté + corrigé le jour même)
|
||||||
|
|
||||||
|
| Événement | Commit | État du tree commité | Résolution |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Le refactor `-S` (ci-dessus) éditait `regression/README.md` (+11 l) **sans rebuild** de `quality_report.json` → l'audit 4Big score le contenu des docs (champ `evidence` byte-count) → `check-artifacts` **ROUGE** | `9d30939` (`161319`) | **RED** (32 PASS · 1 FAIL) | — |
|
||||||
|
| Rebuild `audit_4big` → **1 ligne** modifiée (byte-count), verdict **inchangé** `PASS` 24/24 · `coverage.ok` → tree revenu VERT | `9fa464d` (`164319`) | **VERT** (33 PASS · 0 FAIL) | ✅ rattrapé sous ~17 min |
|
||||||
|
|
||||||
|
> Même classe que l'incident du matin (`rebuild-after-doc-edits`) : éditer une doc **scorée
|
||||||
|
> par audit_4big** sans régénérer `quality_report.json` en dernier laisse `check-artifacts`
|
||||||
|
> dériver. La discipline de gate a **remordu sur le tree commité lui-même** ; le canal
|
||||||
|
> l'enregistre plutôt que de laisser croire à une journée VERTE ininterrompue.
|
||||||
|
|
||||||
|
### Veille d'intégrité en lecture seule / hors merge-gate (0 édition de production)
|
||||||
|
|
||||||
|
| Travail | Commit | Portée | Résultat |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Sweep docstring-vs-code **étendu aux helpers `*lib/`** (surface qu'un scope `*_gen.py` rate) | `db91a6b` (`171321`) | 9 helpers `seolib/…/genlib` (directions A+B) | **CLEAN** · 1 faux-positif réfuté (`finlib/gate.py` illustre les valeurs spec, pas un hardcode) |
|
||||||
|
| **Gate neuf** classe `claude-md-constant-anchor` : prose #9 (3 %/8.5 %/52 %) des modules `bancable`+`commissions` **ancrée sur `CLAUDE.md`** | `1441693` (`174324`) | 4 copies périmées **en silence** dans 2 modules distincts, chacune se réclamant « (#9) » | **teeth-prouvé** (8.5 %→9 % mord les 4 · 52 %→55 % mord 2 · Cardnet→Azul mord l'énum) |
|
||||||
|
| **Invariant neuf** INV-C dans le gate `check_ci_integrity` **existant** : le workflow doit forcer `env: PYTHONUTF8: "1"` | `1a44dfe` (`181325`) | ancre l'I/O UTF-8 top-level → pas de `UnicodeEncodeError` silencieux sur runner locale-ASCII (`print ✅` en fin de build) | ancré ; **pas un nouveau job** (invariant interne · 33 jobs inchangé) |
|
||||||
|
|
||||||
|
### Ré-attestation du point courant (recompute `python3` indépendant ce jour, HEAD `1a44dfe`)
|
||||||
|
|
||||||
|
| Dimension | Recompute `python3` vs artefact commité | = attendu ? |
|
||||||
|
|---|---|---|
|
||||||
|
| Qualité 4Big | `quality_report.json` : **24 modules · tous == 100** · `coverage.ok=true` · verdict `PASS` | ✅ |
|
||||||
|
| Régression (run) | `regression_run.json.totals` : **suites 24 · ran 624 · passed 607 · skipped 17 · 0 fail / 0 err** · verdict `PASS` | ✅ (nouvelle baseline) |
|
||||||
|
| Recette roadmap | `acceptance_matrix.json` : **15/15 `status=in_repo`** · verdict `True` · **`ci_job` ×36** | ✅ |
|
||||||
|
| Structure CI | `run_ci.sh` → **33 PASS · 0 FAIL · 0 SKIP** = **8 gates statiques** (`ls ci/*.sh` hors `lib.sh` = 8) **+ 25 suites** | ✅ concordant |
|
||||||
|
|
||||||
|
**Portée / anti-churn.** **0 fichier de production édité** cette session, **0 artefact
|
||||||
|
reconstruit**, **0 gate ajouté** (#5), **0 chiffre saisi à la main** (#6 — 24/607/17/33
|
||||||
|
recomputés des artefacts + `run_ci.sh`), **aucune commande VPS** (#8). Seule édition :
|
||||||
|
ce rapport + le journal `05_activity_log/`.
|
||||||
|
|||||||
Reference in New Issue
Block a user