Files
oto-enterprise-os-dtp/README.md
T
Claude Code DTP Worker de837fae00 [DTP-Worker] audit préalable V18 · OTO_V18_MIGRATION_ARCHITECTURE_AUDIT (V12→V18 avant tout code)
PREMIÈRE ACTION OBLIGATOIRE de la directive V18 (« NE PAS coder avant l'audit »),
absente du repo malgré le GO signal. Cartographie le V12 lisible (2 modules
faisabilite/ : generator 4 volets + bancable) vers la cible V18 (18 sections ·
15 moteurs · 7 checkpoints · 3 sorties · Master Intake A1-A20).

Verdict mapping 18 sections : 2  · 7 amorcées · 9 à construire — extension, pas
rebuild ; aucun des 10 non-négociables CLAUDE.md menacé si canoniques restent
imposés-générateur. Écart le plus technique = DCF/ratios bancaires (DSCR/LTV/LTC)
absents de finance.py → moteur Financial/Bankability à bloquer sur formules Michel
(risque d'invention). Sourçage honnête : docs deep 57-chapitres root-owned illisibles
(#8), couverture = structure lisible, aucun contenu deviné.

Aucun code moteur V18 produit (séquence : audit → validation Michel → Phase 1).
CI 33 PASS · 0 FAIL · 0 SKIP inchangé. Aucune commande VPS, aucune API externe.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-11 02:34:45 +00:00

99 lines
8.6 KiB
Markdown

# 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`](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`](CLAUDE.md) | Vision · 10 contraintes NON-NÉGOCIABLES · entités · projets · VPS |
| [`04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md`](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`](AGENTS_EXISTING_ASSETS.md) | Modules OTOV7 réutilisés par agent (source des refactorings) |
| [`PORTAIL_BANCABLES_4BIG.md`](PORTAIL_BANCABLES_4BIG.md) | Cadre de bancabilité 4Big |
| [`DIRECTIVE_*.md`](#directives-michel-input-specs-datés) | Input-specs datés de Michel (snapshots) qui pilotent les modules — spec commitée = autorité |
| [`02_master_prompt/`](02_master_prompt) | Prompt maître du mandat |
| [`03_agents/`](03_agents) | Fiches des **13 agents** (rôle · livrables · coordination) |
| [`05_deliverables_mvp/`](05_deliverables_mvp) | Livrables (générateurs déterministes + hand-off `out/`) |
| [`05_deliverables_mvp/GAP_ANALYSIS_SPRINT1.md`](05_deliverables_mvp/GAP_ANALYSIS_SPRINT1.md) | Audit d'assets + gap analysis (Sprint 1) |
| [`05_deliverables_mvp/OPEN_DECISIONS_REGISTER.md`](05_deliverables_mvp/OPEN_DECISIONS_REGISTER.md) | Punch-list *launch-readiness* : décisions produit ouvertes qui appartiennent à Michel (arbitrages de périmètre · dépendances hors dépôt) — sourcée, ne tranche pas |
| [`05_activity_log/`](05_activity_log) | Journal de session horodaté |
| [`.gitea/workflows/ci.yml`](.gitea/workflows/ci.yml) · [`ci/`](ci/README.md) | Gate CI Gitea Actions + guards locaux |
| [`run_ci.sh`](run_ci.sh) | Miroir **local** du gate : rejoue tout `gate.needs` (dérivé de ci.yml, sans liste en dur) |
| [`tests/`](tests) | Baseline E2E Playwright |
## Les 13 agents
Faisabilité & 3D : [`bim`](03_agents/bim/AGENT.md) · [`ifc_speckle`](03_agents/ifc_speckle/AGENT.md) ·
[`rendu`](03_agents/rendu/AGENT.md) · [`faisabilite`](03_agents/faisabilite/AGENT.md) ·
[`publiciste`](03_agents/publiciste/AGENT.md)
Plateforme : [`erpnext_backend`](03_agents/erpnext_backend/AGENT.md) ·
[`frontend_console`](03_agents/frontend_console/AGENT.md) · [`crm`](03_agents/crm/AGENT.md) ·
[`onapi_legal`](03_agents/onapi_legal/AGENT.md) · [`seo`](03_agents/seo/AGENT.md) ·
[`mobile`](03_agents/mobile/AGENT.md)
Transverses : [`devops`](03_agents/devops/AGENT.md) · [`qa`](03_agents/qa/AGENT.md)
## État courant (sourcé)
- **Qualité 4Big** : **24/24 modules gated à 100/100** (seuil 95 · `CLAUDE.md` #5), verdict `PASS`
— source [`qa/audit_4big/out/quality_report.json`](05_deliverables_mvp/qa/audit_4big/out/quality_report.json).
- **Régression** : **24 suites gated** couvertes bijectivement vs CI. Le **compte de tests
agrégé faisant autorité** vit dans [`qa/regression/out/regression_run.json`](05_deliverables_mvp/qa/regression/out/regression_run.json),
artefact **commité et byte-gaté** : `ci/check_regression.sh` régénère un `run` frais et exige
l'identité **byte-for-byte** avec la baseline commitée (verdict `PASS`). Recensement déterministe
des suites : [`qa/regression/out/regression_plan.json`](05_deliverables_mvp/qa/regression/out/regression_plan.json).
- **Recette roadmap** : **15 promesses** (8 livrables sprint + 7 métriques MVP), **15 `in_repo`
prouvées** (chacune traçant ses items hors-périmètre worker · #8 · ex. M5 « app publiée 2 stores »),
verdict `true` — source [`qa/acceptance/out/acceptance_matrix.json`](05_deliverables_mvp/qa/acceptance/out/acceptance_matrix.json).
- **Guards** : [`ci/guard_constraints.sh`](ci/guard_constraints.sh) + [`ci/check_docs.sh`](ci/check_docs.sh) verts.
- **Décisions produit ouvertes** : la CI dépôt verte n'implique pas *zéro décision en attente*.
Les arbitrages de **périmètre produit** et les **dépendances runtime hors dépôt** (VPS · #8) qui
appartiennent à Michel sont consolidés, sourcés `file:line`, dans
[`05_deliverables_mvp/OPEN_DECISIONS_REGISTER.md`](05_deliverables_mvp/OPEN_DECISIONS_REGISTER.md)
— le worker les **surface**, ne les **tranche pas**.
## 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`](05_deliverables_mvp/devops/deploy_runbook/README.md).
## Directives Michel (input-specs datés)
Les fichiers `DIRECTIVE_*.md` à la racine sont les **input-specs formels et datés de
Michel** : des snapshots de gouvernance (au même titre que les `daily_reports`) qui
pilotent les modules. Ce README n'y introduit aucune donnée ; la **spec commitée du
module reste l'autorité** (`spec = authority`), les chiffres faisant foi via les artefacts
byte-gatés. Ils sont exclus de [`ci/guard_constraints.sh`](ci/guard_constraints.sh) (prose de
gouvernance énumérant règles et autorisations, pouvant citer des URLs/chemins interdits
ailleurs).
**Pilotent un module byte-gaté** (audité *directive → implémentation*, `CLAUDE.md` #5) :
- [`DIRECTIVE_FINANCEMENT_BANCAIRE_COMPLET`](DIRECTIVE_FINANCEMENT_BANCAIRE_COMPLET_20260803.md) → [`crm/financement_bancaire`](05_deliverables_mvp/crm/financement_bancaire/README.md)
- [`DIRECTIVE_MOBILE_STORES`](DIRECTIVE_MOBILE_STORES_20260803.md) → [`mobile/app_config`](05_deliverables_mvp/mobile/app_config/README.md)
- [`DIRECTIVE_PIE_PROJECT_IDENTITY_ENGINE`](DIRECTIVE_PIE_PROJECT_IDENTITY_ENGINE_20260803.md) → [`pie/manifest`](05_deliverables_mvp/pie/manifest/README.md)
**Contexte · inventaire · workflow · gouvernance** (pas de module byte-gaté dédié 1:1 ;
exécution runtime/VPS hors périmètre worker · `CLAUDE.md` #8) :
- [`DIRECTIVE_V18_MASTER_FEASIBILITY_ENGINE`](DIRECTIVE_V18_MASTER_FEASIBILITY_ENGINE_20260810.md) — directive **active** du moteur de faisabilité (Master Institutional Feasibility & Bankability Engine · 18 sections · REMPLACE V12). Le versionnage du workflow faisabilité (ex-directives V10/V11/V12, `2026-08-03``08-10`) est **déprécié/archivé** au profit de V18 (cf. `_archived_versions/`).
- [`OTO_V18_MIGRATION_ARCHITECTURE_AUDIT`](OTO_V18_MIGRATION_ARCHITECTURE_AUDIT_20260810.md) — **livrable préalable obligatoire** exigé par la directive V18 (« NE PAS coder avant l'audit »). Cartographie le V12 lisible (2 modules `faisabilite/` : `generator/` 4 volets + `bancable/`) vers la cible V18 (18 sections · 15 moteurs · 7 checkpoints CP0-CP6 · 3 sorties · Master Intake A1-A20). Verdict : 2 sections ✅ · 7 amorcées · 9 à construire — **extension, pas rebuild** ; aucun non-négociable menacé si les canoniques restent imposés-générateur. **En attente de validation Michel** avant Phase 1 (aucun code moteur produit).
- [`DIRECTIVE_ARCHIVES_DEBLOCAGE`](DIRECTIVE_ARCHIVES_DEBLOCAGE_20260803.md) — inventaire IFC/plans déjà aux archives (réutiliser l'existant avant de commander).
- [`DIRECTIVE_RENDUS_EXISTANTS`](DIRECTIVE_RENDUS_EXISTANTS_20260803.md) — inventaire des rendus existants (priorité avant regénération Flux).
- [`DIRECTIVE_PLANPOINT_STYLE`](DIRECTIVE_PLANPOINT_STYLE_20260803.md) → [`specs/CHOISIR_MON_UNITE_SPEC`](05_deliverables_mvp/specs/CHOISIR_MON_UNITE_SPEC.md) — exigence UI du configurateur « choisir-mon-unite » (niveau PlanPoint.io). Snapshot postérieur (2026-08-03) qui **rouvre 2 arbitrages** de la spec (signature DocuSign ↔ OTO Sign™ · comparateur) sans les trancher ; la **spec reste l'autorité** (cf. son encart *Arbitrage*). La spec n'est pas byte-gatée, d'où le classement ici plutôt qu'au bloc byte-gaté.
- [`DIRECTIVE_UNBLOCK_NOW`](DIRECTIVE_UNBLOCK_NOW_20260803.md) — autorisations 24/7 (contrainte #8 levée · cf. [`AUTORISATIONS_MICHEL_20260803.md`](AUTORISATIONS_MICHEL_20260803.md)).
## 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`).