# 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). - [`V18_GO_SIGNAL_DEVELOPMENT`](V18_GO_SIGNAL_DEVELOPMENT_20260810.md) — signal GO de Michel (2026-08-10) qui **n'active pas le code direct** mais la séquence obligatoire *audit → validation Michel → Phase 1 (Master Project Intake / Data Model) → validation → Phases 2-15*. Fixe le projet pilote **P01 Coralis** (référence pour P02 Coral del Sur puis P03 Nakua) et rappelle les interdictions structurantes (pas de 2ᵉ base · One Master Dataset · ne pas inventer/cacher les hypothèses · ne pas écraser la baseline avec l'actual). C'est la **source du blocage gouvernance** : rien côté moteur n'est légitime tant que l'audit n'est pas approuvé. - [`V18_ADDENDUM_SECTION_60_DOCUMENT_INTEGRITY`](V18_ADDENDUM_SECTION_60_DOCUMENT_INTEGRITY_20260810.md) — addendum Section 60 (35 sous-sections 60.1→60.35) · *Document Integrity, Identification & Signature System* de niveau institutionnel : Document ID unique · QR + hash SHA-256 · Master Document Register · 10 statuts de document · matrices de signature (loi 126-02 RD) · Baseline & Bank Package Certificates. **Règle absolue 60.31** = seul « HELIOS RD SRL » est visible comme préparateur en publication externe — origine du filtre anti-fuite vocabulaire de l'audit §9 et arrière-plan de l'arbitrage périmètre juridique (`OPEN_DECISIONS_REGISTER` D-01). - [`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`).