[DTP-Worker 20260805_011114] Double sweep read-only des 2 classes de dérive free-text ungated (docstring↔code des 22 générateurs · inventaire↔filesystem /opt/oto) → CLEAN · 0 édition prod · faux nouveau-finding projets_editor/chat.py écarté (déjà surfacés 2026-08-03, anti-invention #6) · 0 gate ajouté (#5)
This commit is contained in:
@@ -109,3 +109,63 @@ prose, hors `check_artifacts`/`audit_4big`). Liens Markdown du rapport résolus
|
||||
`daily_reports/` : `../qa/…` (artefacts), `../../run_ci.sh`, `../../.gitea/…`, `../../ci/…`
|
||||
→ `check_docs` VERT. **0 chiffre inventé (#6) · 0 édition de production · aucune commande
|
||||
VPS (#8) · aucun `git clean`.** <!-- ci-allow : mention de l'interdit, jamais exécuté -->
|
||||
|
||||
---
|
||||
|
||||
## Session 011114 · Double sweep read-only sur les DEUX classes de dérive free-text ungated (docstring↔code des 22 générateurs · inventaire↔filesystem) → CLEAN · 0 édition de production · faux « nouveau finding » écarté (anti-invention #6)
|
||||
|
||||
**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
|
||||
(8 sprints · 7 critères de succès ✅). Les deux sessions du jour ont déjà (a) ajouté le
|
||||
8ᵉ gate statique `check-mobile-workflow` (`001109`, 32→33 jobs) et (b) mis le canal
|
||||
stakeholder `daily_reports` au jalon 33 jobs avec réattestation des 4 chiffres (`004112`).
|
||||
Les surfaces d'audit inter-artefacts / dérive gatée / attestation sont **saturées**
|
||||
(re-scan = redondant #5). La valeur honnête restante : re-vérifier les **deux classes de
|
||||
dérive free-text NON gatées** que la mémoire marque comme récurrentes/non-fermées, avant
|
||||
d'envisager quoi que ce soit — discipline [[verify-uncovered-before-gating]] (prouver
|
||||
l'état AVANT d'agir) + anti-invention #6.
|
||||
|
||||
**Sweep 1 — docstring↔code des 22 générateurs ([[docstring-vs-code-drift]], classe
|
||||
RECURRING/not-closed).** Pour chacun des 22 `*_gen.py` de `05_deliverables_mvp/*` :
|
||||
comparaison du **docstring/en-tête** (inputs annoncés · fichiers `out/` produits ·
|
||||
fallbacks) au **code réel** (argparse · `open(...,"w")` / `json.dump` / `write_text` ·
|
||||
branches de fallback). Résultat : **22/22 CLEAN** — chaque docstring décrit exactement les
|
||||
sous-commandes, les inputs et les artefacts écrits. Spot-check manuel des deux générateurs
|
||||
multi-sorties les plus risqués (au-delà de la lecture agent) :
|
||||
- `demo/scenarios/demo_scenario_gen.py` — docstring l.20/l.32 annonce `run_sheet.json` +
|
||||
`run_sheet.md` + `MANIFEST.json` → code écrit bien les 3 (l.197-199 JSON, l.203-204 `.md`). ✓
|
||||
- `faisabilite/bancable/bancable_gen.py` — docstring `50_financier_bancable/{fr,en,es}.md`
|
||||
→ écrits l.171-173. ✓
|
||||
Aucune régression du type « fallback §5.3 fantôme » (publiciste) ni « output omis »
|
||||
(demo run_sheet.md) qui avaient été corrigés antérieurement : la classe reste propre.
|
||||
|
||||
**Sweep 2 — inventaire `AGENTS_EXISTING_ASSETS.md` ↔ filesystem `/opt/oto`
|
||||
([[inventory-vs-filesystem-drift]]).** Extraction de tous les chemins `/opt/oto/*` cités
|
||||
(38 uniques), classification **SRC-OK / PYC-ONLY / MISS** (avec check `__pycache__`) :
|
||||
- **8 PYC-ONLY** (`oto_agent_faisabilite`, `oto_orchestrateur_faisabilite`,
|
||||
`oto_module_{etudes_faisabilite_real,execution_faisabilite,faisabilites_pages,faisabilites_viewer,mobile_api,plans_ifc}`)
|
||||
→ **tous** déjà annotés « (compilé pyc) » dans le doc : convention interne **cohérente**,
|
||||
0 dérive.
|
||||
- **2 MISS** : `otoia/capabilities/chat.py` (absent vs CLAUDE.md §Architecture cible qui le
|
||||
liste) et `config/projets_editor.py` (§13, « API GET/POST déjà en place » — sibling
|
||||
`projets_config.json` présent, lui). **Vérification anti-invention #6 AVANT de flaguer :**
|
||||
`grep -rn` interne → **les deux MISS sont DÉJÀ surfacés à Michel** par la session `133718`
|
||||
du **2026-08-03** (log l.1245/1284/1289-1295 : claims VPS-externes / non-réfutables laissés
|
||||
ouverts, chat.py ≠ le module chatbot-lead distinct). Donc **PAS un nouveau finding** —
|
||||
re-signaler serait redondant (#5). Le reste (containers Docker, Speckle, systemd, GSC) est
|
||||
runtime, non réfutable depuis le dépôt → hors périmètre worker (#8). **SURFACE, don't
|
||||
rewrite** respecté : 0 édition de l'inventaire (le fichier peut viser un runtime
|
||||
container-side ; un « fix » unilatéral serait une invention).
|
||||
|
||||
**Conclusion honnête.** Les deux seules classes de dérive free-text ungated sont **stables
|
||||
et propres** à ce jalon ; la dimension chiffres-README est densément gatée (`check_readme_claims`
|
||||
= 27 claims / 16 modules + fiches). Rien à corriger, **aucun gate à ajouter** (ajouter serait
|
||||
un doublon #5 ; par ailleurs un gate lisant `/opt/oto` serait non-portable — le runner Gitea
|
||||
n'a pas ce filesystem, cf. [[ci-gate-verification-method]]). Session **read-only** volontaire,
|
||||
dans la lignée des attestations `234104`/`004112`, mais sur un **axe distinct** (les 2 classes
|
||||
free-text, pas les 4 chiffres stakeholder ni le cross-artefact).
|
||||
|
||||
**Vérifications.** `./run_ci.sh` → **33 PASS · 0 FAIL · 0 SKIP** (inchangé — aucun fichier
|
||||
gaté touché). **0 chiffre inventé (#6) · faux nouveau-finding écarté par grep interne · 0
|
||||
édition de production · 0 gate ajouté (anti-redondance #5) · aucune commande VPS (#8) · aucun
|
||||
`git clean`.** <!-- ci-allow : mention de l'interdit, jamais exécuté -->
|
||||
|
||||
Reference in New Issue
Block a user