Claude Code DTP Worker 342b571b29 [DTP-Worker] Sprint 8 · buffer · Faisabilité/generator : les PARAMÈTRES CANONIQUES du générateur 4 volets (« 3 % édition · 8.5 % marketing · 52 % point d'équilibre · USD+DOP · Cardnet · Letter US ») — la garantie anti-invention (#6) imposée à CHAQUE faisabilité — étaient RECOPIÉS dans genlib/model.py::CANONICAL (le dict émis dans chaque rendu, HORS out/ donc invisible à check_artifacts) ET dans la prose README:28, sans AUCUN ancrage à leur source faisant autorité : les contraintes NON-NÉGOCIABLES #9/#10 de CLAUDE.md. Preuve reproduite : changer CLAUDE.md #9 « Point équilibre 52% → 55% » laisse model.py, le test tests/ ET le README à « 52 % » — tous internement cohérents, TOUS contredisant CLAUDE.md → le générateur émettrait 52 % dans chaque faisabilité alors que le mandat dit 55 %, une invention silencieuse de la classe même que #6 interdit. PIÈGE : model.py n'est pas un out/*.json (check_artifacts aveugle) et le SEUL contrôle existant (test_generator.py::test_canonical_params_always_present) assert que le RENDU contient « 3 % »/« 52 % »… mais ces marqueurs sont HARDCODÉS DANS le test — une copie de plus, JAMAIS comparée à CLAUDE.md → aucune suite tests/ (qui teste des FONCTIONS, pas l'ancrage) n'attrape la dérive. Même esprit que le catalogue projets dossier_vente et le roadmap-anchor (INV11) : on ANCRE les consommateurs à leur source. Nouveau bloc dans ci/check_readme_claims.sh : RECOMPUTE les 6 valeurs depuis les lignes #9/#10 de CLAUDE.md (zéro duplication · source unique) et exige qu'elles égalent EXACTEMENT (1) model.py::CANONICAL (% par valeur numérique · textes accent/espace-insensibles via NFKD) et (2) l'énumération de la prose README (set-diff absent ET en trop). Sanity CLAUDE.md en bonus (3 pcts + 3 valeurs en gras lisibles). Un claim absent échoue AUSSI. 7 morsures vérifiées : CLAUDE.md #9 52 %→55 % (model + README stale · model.py DÉRIVE point_equilibre) · model.py marketing 8.5 %→9 % · CLAUDE.md #10 Cardnet→Azul (model stale · paiement) · README retire Letter US (absents=[letterus]) · README ajoute token IBAN (en trop=[iban]) · énumération README supprimée (INTROUVABLE) · model.py USD + DOP → USD (devises) ; restauré = green : CLAUDE.md #9/#10 == model.py CANONICAL (6 valeurs) == prose README · exit 0. État courant : aucune valeur périmée (anti-invention #6, rien à réécrire) — le défaut est la surface ungated. ci/README.md (table + détail « paramètres canoniques ancrés sur CLAUDE.md #9/#10 ») mis à jour · 7 gates re-verts.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 20:08:05 +00:00
[DTP-Worker] Sprint 8 · buffer · Faisabilité/generator : les PARAMÈTRES CANONIQUES du générateur 4 volets (« 3 % édition · 8.5 % marketing · 52 % point d'équilibre · USD+DOP · Cardnet · Letter US ») — la garantie anti-invention (#6) imposée à CHAQUE faisabilité — étaient RECOPIÉS dans genlib/model.py::CANONICAL (le dict émis dans chaque rendu, HORS out/ donc invisible à check_artifacts) ET dans la prose README:28, sans AUCUN ancrage à leur source faisant autorité : les contraintes NON-NÉGOCIABLES #9/#10 de CLAUDE.md. Preuve reproduite : changer CLAUDE.md #9 « Point équilibre 52% → 55% » laisse model.py, le test tests/ ET le README à « 52 % » — tous internement cohérents, TOUS contredisant CLAUDE.md → le générateur émettrait 52 % dans chaque faisabilité alors que le mandat dit 55 %, une invention silencieuse de la classe même que #6 interdit. PIÈGE : model.py n'est pas un out/*.json (check_artifacts aveugle) et le SEUL contrôle existant (test_generator.py::test_canonical_params_always_present) assert que le RENDU contient « 3 % »/« 52 % »… mais ces marqueurs sont HARDCODÉS DANS le test — une copie de plus, JAMAIS comparée à CLAUDE.md → aucune suite tests/ (qui teste des FONCTIONS, pas l'ancrage) n'attrape la dérive. Même esprit que le catalogue projets dossier_vente et le roadmap-anchor (INV11) : on ANCRE les consommateurs à leur source. Nouveau bloc dans ci/check_readme_claims.sh : RECOMPUTE les 6 valeurs depuis les lignes #9/#10 de CLAUDE.md (zéro duplication · source unique) et exige qu'elles égalent EXACTEMENT (1) model.py::CANONICAL (% par valeur numérique · textes accent/espace-insensibles via NFKD) et (2) l'énumération de la prose README (set-diff absent ET en trop). Sanity CLAUDE.md en bonus (3 pcts + 3 valeurs en gras lisibles). Un claim absent échoue AUSSI. 7 morsures vérifiées : CLAUDE.md #9 52 %→55 % (model + README stale · model.py DÉRIVE point_equilibre) · model.py marketing 8.5 %→9 % · CLAUDE.md #10 Cardnet→Azul (model stale · paiement) · README retire Letter US (absents=[letterus]) · README ajoute token IBAN (en trop=[iban]) · énumération README supprimée (INTROUVABLE) · model.py USD + DOP → USD (devises) ; restauré = green : CLAUDE.md #9/#10 == model.py CANONICAL (6 valeurs) == prose README · exit 0. État courant : aucune valeur périmée (anti-invention #6, rien à réécrire) — le défaut est la surface ungated. ci/README.md (table + détail « paramètres canoniques ancrés sur CLAUDE.md #9/#10 ») mis à jour · 7 gates re-verts.
2026-07-31 20:08:05 +00:00
[DTP-Worker] Sprint 8 · buffer · Faisabilité/generator : les PARAMÈTRES CANONIQUES du générateur 4 volets (« 3 % édition · 8.5 % marketing · 52 % point d'équilibre · USD+DOP · Cardnet · Letter US ») — la garantie anti-invention (#6) imposée à CHAQUE faisabilité — étaient RECOPIÉS dans genlib/model.py::CANONICAL (le dict émis dans chaque rendu, HORS out/ donc invisible à check_artifacts) ET dans la prose README:28, sans AUCUN ancrage à leur source faisant autorité : les contraintes NON-NÉGOCIABLES #9/#10 de CLAUDE.md. Preuve reproduite : changer CLAUDE.md #9 « Point équilibre 52% → 55% » laisse model.py, le test tests/ ET le README à « 52 % » — tous internement cohérents, TOUS contredisant CLAUDE.md → le générateur émettrait 52 % dans chaque faisabilité alors que le mandat dit 55 %, une invention silencieuse de la classe même que #6 interdit. PIÈGE : model.py n'est pas un out/*.json (check_artifacts aveugle) et le SEUL contrôle existant (test_generator.py::test_canonical_params_always_present) assert que le RENDU contient « 3 % »/« 52 % »… mais ces marqueurs sont HARDCODÉS DANS le test — une copie de plus, JAMAIS comparée à CLAUDE.md → aucune suite tests/ (qui teste des FONCTIONS, pas l'ancrage) n'attrape la dérive. Même esprit que le catalogue projets dossier_vente et le roadmap-anchor (INV11) : on ANCRE les consommateurs à leur source. Nouveau bloc dans ci/check_readme_claims.sh : RECOMPUTE les 6 valeurs depuis les lignes #9/#10 de CLAUDE.md (zéro duplication · source unique) et exige qu'elles égalent EXACTEMENT (1) model.py::CANONICAL (% par valeur numérique · textes accent/espace-insensibles via NFKD) et (2) l'énumération de la prose README (set-diff absent ET en trop). Sanity CLAUDE.md en bonus (3 pcts + 3 valeurs en gras lisibles). Un claim absent échoue AUSSI. 7 morsures vérifiées : CLAUDE.md #9 52 %→55 % (model + README stale · model.py DÉRIVE point_equilibre) · model.py marketing 8.5 %→9 % · CLAUDE.md #10 Cardnet→Azul (model stale · paiement) · README retire Letter US (absents=[letterus]) · README ajoute token IBAN (en trop=[iban]) · énumération README supprimée (INTROUVABLE) · model.py USD + DOP → USD (devises) ; restauré = green : CLAUDE.md #9/#10 == model.py CANONICAL (6 valeurs) == prose README · exit 0. État courant : aucune valeur périmée (anti-invention #6, rien à réécrire) — le défaut est la surface ungated. ci/README.md (table + détail « paramètres canoniques ancrés sur CLAUDE.md #9/#10 ») mis à jour · 7 gates re-verts.
2026-07-31 20:08:05 +00:00

OTO Enterprise OS · Digital Twin Platform (DTP)

Mandat de refactoring 8 semaines ou moins : unifier BIM (Blender/Bonsai/IFC/Speckle), ERPNext v15 natif, la Console Helios (luxury dark+doré) et les faisabilités 4 volets niveau 4Big, pilotés par l'agent orchestrateur OTOIA. Vision et contraintes NON-NÉGOCIABLES : CLAUDE.md.

Point d'entrée de ce dépôt de mandat. Il indexe les artefacts et rapporte l'état courant. Chaque chiffre ci-dessous est sourcé vers un artefact commité (anti-invention CLAUDE.md #6) ; ce README n'introduit aucune donnée nouvelle.

Navigation

Zone Contenu
CLAUDE.md Vision · 10 contraintes NON-NÉGOCIABLES · entités · projets · VPS
04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md Plan 8 sprints · gains d'accélération (~47%) · métriques succès MVP
AGENTS_EXISTING_ASSETS.md Modules OTOV7 réutilisés par agent (source des refactorings)
PORTAIL_BANCABLES_4BIG.md Cadre de bancabilité 4Big
02_master_prompt/ Prompt maître du mandat
03_agents/ Fiches des 13 agents (rôle · livrables · coordination)
05_deliverables_mvp/ Livrables (générateurs déterministes + hand-off out/)
05_deliverables_mvp/GAP_ANALYSIS_SPRINT1.md Audit d'assets + gap analysis (Sprint 1)
05_activity_log/ Journal de session horodaté
.gitea/workflows/ci.yml · ci/ Gate CI Gitea Actions + guards locaux
tests/ Baseline E2E Playwright

Les 13 agents

Faisabilité & 3D : bim · ifc_speckle · rendu · faisabilite · publiciste Plateforme : erpnext_backend · frontend_console · crm · onapi_legal · seo · mobile Transverses : devops · qa

État courant (sourcé)

Périmètre worker (in-repo) vs VPS

Ce dépôt produit des générateurs déterministes et leurs hand-off out/, gatés en CI. Le déploiement réel (bench migrate, import fixtures, câblage nginx/systemd, builds stores, indexation, voix Amélie) s'exécute sur le VPS 153.75.250.214 et reste hors périmètre worker (CLAUDE.md #8). Le plan d'activation ordonné est le run-book devops/deploy_runbook.

Git — Gitea uniquement

Dépôt de mandat : michel/oto-enterprise-os-dtp sur Gitea (153.75.250.214:3015). JAMAIS GitHub / GitLab / Bitbucket (CLAUDE.md #2, garde ci/guard_constraints.sh).

S
Description
OTO Enterprise OS · Digital Twin Platform MVP · 8 semaines OU MOINS
Readme 8.1 MiB
Languages
Python 58.7%
Shell 40.5%
TypeScript 0.6%
Go Template 0.2%