[DTP-Worker 20260805_151312] SWEEP neuf déterminisme hash-seed : les 21 générateurs build (57 artefacts) rejoués sous 5 PYTHONHASHSEED (1/7/42/1000/random) + regression_run.json sous 6 rejeux → diff vs commité = CLEAN 57 byte-identiques, 0 dépendance à l'ordre d'itération set/dict.
Classe absente de la mémoire, orthogonale aux axes teeth ET au sweep forward-compat warnings : même famille faux-vert FORWARD, cause différente (ordre de hash vs API dépréciée). check_artifacts/check_regression prouvent le rebuild byte-identique MAIS ne tournent QU'UNE fois, sous LE seed que le runner Gitea donne (randomisé par défaut depuis Python 3.3). Un seul générateur sérialisant un set/dict en ordre d'itération → gate VERT aujourd'hui, ROUGE au hasard demain sur le runner. Sweep prouve : aucun ne le fait → les deux gates de reproductibilité sont robustes au hash-seed randomisé. Harnais auto-vérifié (57 comparés · 1 skip = regression_run.json sous la passe build-only = l'exclusion documentée de check_artifacts, pas un skip silencieux). 0 fichier de prod édité (rebuilds → /tmp), 0 artefact reconstruit, 0 gate ajouté (#5 · propriété re-jouable via commande, pas classe de dérive), 0 chiffre saisi (#6 · 21/57 dérivés de find+décompte), 0 VPS (#8 · 100% local lecture seule). run_ci 33 PASS. Éditions : activity_log + daily_report (table veille) + mémoire neuve. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,49 @@
|
||||
# Activity Log · 2026-08-05 · Claude Code DTP Worker
|
||||
|
||||
## Session 151312 · SWEEP neuf : déterminisme sous hash-seed aléatoire des gates de reproductibilité → **CLEAN**
|
||||
|
||||
**Contexte + 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 (restes
|
||||
S3/S5/S6 = refactor BIM / builds EAS / dépôts ONAPI / déploiement prod = **hors périmètre worker**,
|
||||
#8). Sept sweeps déjà consignés ce jour (docstring-vs-code, forward-compat warnings, roadmap↔repo,
|
||||
ré-attestation canal…). Choix d'un axe d'intégrité **absent de la mémoire et orthogonal** à tous
|
||||
les précédents.
|
||||
|
||||
**Constat — la fragilité ciblée.** Les gates `check_artifacts` et `check_regression` prouvent que
|
||||
chaque `out/*.json` versionné se régénère **byte-identique** depuis son générateur. MAIS ils ne
|
||||
tournent **qu'une fois**, sous **le** `PYTHONHASHSEED` que le runner Gitea leur donne — et depuis
|
||||
Python 3.3 ce seed est **randomisé par défaut**. Si **un seul** générateur sérialise un `set`/`dict`
|
||||
en **ordre d'itération** (au lieu de trier), sa sortie varierait d'un seed à l'autre : le gate
|
||||
serait alors **VERT aujourd'hui, ROUGE au hasard demain** sur le runner — un faux-vert
|
||||
*forward-looking* qu'aucun rejeu à seed fixe n'attrape. C'est le pendant « déterminisme » du sweep
|
||||
`-W error` (forward-compat interpréteur) : même famille, cause différente (ordre de hash vs API
|
||||
dépréciée).
|
||||
|
||||
**Méthode (lecture seule · 0 édition de prod).** Rejeu de **tous** les générateurs `build` des
|
||||
**21** répertoires `out/` vers un `mktemp -d`, sous **5 seeds** (`1 7 42 1000` + `random`), chaque
|
||||
fichier produit `diff`-é contre son jumeau commité. Puis `regression_run.json` (artefact d'**exécution**,
|
||||
produit par `run` — hors périmètre `check_artifacts` mais **dans** celui de `check_regression`) rejoué
|
||||
séparément sous `1 7 42 999 random random`. Harnais auto-vérifié : **57 fichiers effectivement
|
||||
comparés**, **1 seul skip** = `qa/regression/regression_run.json` (artefact `run`, exactement
|
||||
l'exclusion documentée de `check_artifacts`) — donc zéro faux-vert par skip silencieux.
|
||||
|
||||
**Résultat — CLEAN.** **57 artefacts `build` byte-identiques sous les 5 seeds** + `regression_run.json`
|
||||
**byte-identique sous 6 rejeux dont 2 `random`**. **Aucun** générateur ne dépend de l'ordre d'itération
|
||||
d'un `set`/`dict` pour sa sérialisation → les deux gates de reproductibilité sont **robustes au
|
||||
hash-seed**, ils ne peuvent pas flaper ROUGE sur le runner à cause de la randomisation. Le corpus
|
||||
est prêt à un runner à seed non contrôlé sans régression aléatoire.
|
||||
|
||||
**Portée / anti-churn.** **0 fichier de production édité** (`git status --short` vide avant/après le
|
||||
sweep), **0 artefact reconstruit** (les rebuilds vont en `/tmp`, jamais dans `out/` → pas de rebuild
|
||||
`quality_report`, cf. [[audit4big-rebuild-after-doc-edits]]), **0 gate ajouté** (#5 — c'est une
|
||||
**propriété re-jouable** via la commande, pas une *classe de dérive* : attester ≠ multiplier les
|
||||
gates, cf. le sweep forward-compat), **0 chiffre saisi à la main** (#6 — 21/57 dérivés de
|
||||
`find … -name out` et du décompte de comparaisons), **aucune commande VPS** (#8 — 100 % local &
|
||||
lecture seule). Éditions : ce journal + une ligne dans la table *veille d'intégrité* du daily_report
|
||||
+ une mémoire neuve. `./run_ci.sh` après → **33 PASS · 0 FAIL · 0 SKIP**.
|
||||
|
||||
---
|
||||
|
||||
## Session 114227 · AUDIT read-only roadmap↔repo (cross-refs numériques + liens) → **CLEAN** · clôture d'un **faux-positif « 7 dashboards vs 6 »**
|
||||
|
||||
**Contexte + choix de tâche.** `./run_ci.sh` au démarrage : **33 PASS · 0 FAIL · 0 SKIP**, arbre propre,
|
||||
|
||||
@@ -122,6 +122,7 @@ tables ci-dessus **recomputent à l'identique ce jour** (recompute `python3` ind
|
||||
|---|---|---|---|
|
||||
| Docstring-vs-code | `48b19b9` (`134254`) | 26 modules (docstrings ↔ comportement réel du code) | **CLEAN** |
|
||||
| Forward-compat warnings | `f311a1b` (`141301`) | 25 suites de `gate.needs` rejouées sous `-W error` (Deprecation/Syntax/Pending/Resource) sous Python 3.10.12 | **CLEAN 25/25 · 624 tests · 0 warning latent** |
|
||||
| Déterminisme hash-seed | `151312` | Tous les générateurs `build` (57 artefacts) rejoués sous 5 `PYTHONHASHSEED` (`1/7/42/1000/random`) + `regression_run.json` sous 6 rejeux → `diff` vs commité | **CLEAN · 57 byte-identiques · 0 dépendance à l'ordre de hash** → gates `check_artifacts`/`check_regression` robustes au seed randomisé du runner |
|
||||
|
||||
### Ré-attestation du point courant (recompute indépendant ce jour, HEAD `f311a1b`)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user