[DTP-Worker 20260805_221354] SWEEP vérification — bijection INVERSE des artefacts out/ (0 fichier commité orphelin) · 0 édition de production
Repo VERT/convergé à l'ouverture (run_ci 33 PASS·0 FAIL·0 SKIP). Balayage lecture-seule multi-surface avant tout travail (anti-gate-N+1 #5) : 24/24 modules CI-câblés+régression-couverts+fiche-documentés ; docstring↔code CLEAN (3 classes, sous-agent Explore) ; registre décisions ouvertes D-01..D-05 encore ouverts + citations file:line encore exactes (re-vérifiées) ; publiciste build/ gitignore-d, fiche exacte ; sweep CWD-hétérogène écarté (faux positifs — gate exécute les gen depuis leur module par conception). FINDING — axe robustesse non couvert : check_artifacts prouve la direction AVANT (produit⊆commité, itère les fichiers produits l.71-93) mais JAMAIS l'INVERSE (un out/ commité orphelin, plus émis par build, passerait silencieusement). Sweep exécuté (lecture seule, rejouable) : 58 fichiers out/ commités, 57 reproduits par build. Le seul « orphelin » = qa/regression/out/regression_run.json, BY DESIGN artefact d'EXÉCUTION (run, pas build) exclu du contrat build (docstring check_artifacts l.21-24) et byte-gaté séparément par check_regression.sh → 0 orphelin réel, bijection inverse tient. PAS un gate (#5) : AVANT déjà gaté ; INVERSE empiriquement propre + transitivement attrapé (tout consommateur reproductible lisant un out/ périmé casse check_artifacts). Consigné comme sweep rejouable, sibling des sweeps hash-seed/locale-TZ/forward-compat. Portée : 0 prod, 0 artefact rebuild, 0 gate ajouté (#5), 0 chiffre saisi (#6 — 8/24/33/58/57 recomputés), 0 VPS (#8). Seule édition : le journal. run_ci 33 PASS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1945,3 +1945,61 @@ ajouté** (#5), **0 chiffre saisi à la main** (#6 — `8`/`33`/`258` recomputé
|
||||
+ ce journal.
|
||||
|
||||
**Vérif.** `./run_ci.sh` → **33 PASS · 0 FAIL · 0 SKIP** · `git status` propre après commit.
|
||||
|
||||
---
|
||||
|
||||
## Session `20260805_221354` · SWEEP de vérification — bijection INVERSE des artefacts `out/` (aucun fichier commité orphelin) · 0 édition de production
|
||||
|
||||
**Contexte.** Repo VERT à l'ouverture (`./run_ci.sh` → 33 PASS · 0 FAIL · 0 SKIP), très
|
||||
convergé. Balayage lecture-seule multi-surface préalable pour un finding **réel** avant tout
|
||||
travail (discipline anti-gate-N+1 · #5) :
|
||||
- **CI** : 8 gates statiques (`git ls-files 'ci/*.sh'` hors `lib.sh` = 8) + 25 suites = 33 jobs.
|
||||
- **Complétude modules** : **24/24** modules livrés (22 `*/*/tests` + `seo/tests` + `publiciste/tests`)
|
||||
CI-câblés (`gate.needs`), régression-couverts (`regression_plan.json` = 24 suites, `publiciste`
|
||||
inclus), fiche-documentés (≥1 `03_agents/*/AGENT.md`). **Aucun orphelin.**
|
||||
- **Dérive doc↔code** (sous-agent Explore, 3 classes : docstring-vs-code · prose-vs-numeric ·
|
||||
fiche-completeness) → **CLEAN**, 0 dérive présente-temps.
|
||||
- **Registre décisions ouvertes** (`OPEN_DECISIONS_REGISTER.md`) : les **5** items (D-01..D-05)
|
||||
re-vérifiés **encore ouverts**, chaque citation `file:line` **encore exacte** (D-01 `pie_spec.json:24`
|
||||
`contrats→legal/confotur` + 5 downstreams `null` · D-02 `gate.py:142` `_cond_validation_wag` +
|
||||
`financement_spec.json:157` · D-03 `chat.py` absent fs / `CLAUDE.md:28` le liste / footer L128
|
||||
l'omet · D-04 `projets_editor.py` absent fs · D-05 bundle `a_confirmer`/`null`). **Contenu à jour**
|
||||
(tampon de session en retard, mais bumper sans changement de contenu = churn cosmétique — écarté).
|
||||
- **publiciste** : `build/` **`.gitignore`-d** (artefacts reproductibles non commités · pattern
|
||||
`bancable-out-not-committed`), pas de sous-commande `build` ni de `out/` commité → `check_artifacts`
|
||||
le saute correctement ; fiche L105 « aucun `index.html` commité » **exacte**. **Pas un gap.**
|
||||
- **Sweep CWD-hétérogène écarté** : `check_artifacts` (l.62) exécute chaque générateur **depuis son
|
||||
propre répertoire module** ; un sweep « CWD différent » produirait des **faux positifs** (les
|
||||
générateurs résolvent leurs entrées relativement au module par conception) — piège de faux-positif
|
||||
signalé à répétition en mémoire, abandonné.
|
||||
|
||||
**Le finding — axe de robustesse génuinement NON couvert.** `check_artifacts.sh` prouve la
|
||||
direction **AVANT** : pour chaque fichier **produit** par `build` (`$tmp/*`), un jumeau commité
|
||||
**identique** existe (l.71-93 : itère sur les fichiers produits). Il ne vérifie **jamais l'INVERSE** :
|
||||
qu'un fichier `out/` **commité** est **toujours** produit par un `build` frais. Un fichier `out/`
|
||||
**orphelin** — émis par un ancien générateur, plus produit — passerait **silencieusement** (aucune
|
||||
boucle sur les fichiers commités). Sibling non-déterminisme des sweeps `hash-seed` / `locale-TZ` /
|
||||
`forward-compat` déjà en mémoire, mais sur une propriété **différente** (complétude/orphelins des
|
||||
artefacts commités, pas déterminisme).
|
||||
|
||||
**Sweep exécuté (lecture seule, rejouable).** Pour chaque `out/` (21 répertoires, tous avec un
|
||||
générateur `build`), `build` frais vers un `mktemp -d`, puis pour chaque fichier `git ls-files`
|
||||
du `out/` commité : exiger sa présence dans le build frais. Résultat :
|
||||
- **58** fichiers `out/` commités inspectés · **57 reproduits** par `build` (bijection inverse OK).
|
||||
- **1 seul « orphelin »** : `qa/regression/out/regression_run.json` — **BY DESIGN**, artefact
|
||||
d'**EXÉCUTION** (`run`, pas `build`) explicitement exclu du contrat `build` par la docstring de
|
||||
`check_artifacts` (l.21-24) et **byte-gaté séparément** par `check_regression.sh` (régénère un
|
||||
`run` frais, exige l'identité byte-for-byte · mémoire `regression-baseline-17-skips-by-design`).
|
||||
- → **0 orphelin réel.** La bijection inverse **tient** ; confiance durable ajoutée.
|
||||
|
||||
**Pourquoi PAS un gate (#5).** La direction AVANT est déjà gatée (`check_artifacts`) ; l'INVERSE
|
||||
est empiriquement **propre** et un orphelin réel serait de toute façon **transitivement attrapé**
|
||||
(tout consommateur à build reproductible lisant un `out/` périmé casserait sur `check_artifacts`).
|
||||
Ajouter un gate N+1 pour une propriété tenue = machinerie redondante. Consigné comme **sweep
|
||||
rejouable**, comme ses siblings déterministes — pas un `ci/*.sh`.
|
||||
|
||||
**Portée / anti-churn.** **0 fichier de production édité**, **0 artefact reconstruit**, **0 gate
|
||||
ajouté** (#5), **0 chiffre saisi à la main** (#6 — `8`/`24`/`33`/`58`/`57` recomputés en direct),
|
||||
**aucune commande VPS** (#8). Seule édition : ce journal (+ mémoire projet).
|
||||
|
||||
**Vérif.** `./run_ci.sh` → **33 PASS · 0 FAIL · 0 SKIP** · `git status` propre après commit.
|
||||
|
||||
Reference in New Issue
Block a user