Le daily_report/2026-08-05.md s'arrêtait à la session 144304 (HEADf311a1b), 5 commits plus tôt. Recompute python3 indépendant des artefacts COURANTS (HEAD1a44dfe) → DEUX écarts matériels au canal stakeholder, tous deux consignés (rapport hors merge-gate : check_docs + check_readme_claims l'excluent explicitement). ÉCART 1 (matériel) — baseline régression : regression_run.json.totals = 624 ran / 607 passed / 17 skipped / 0 fail / 0 err, verdict PASS ; le rapport publiait « 624 passés · 0 skip ». Le refactor9d30939lance chaque suite sous `python -S` (sans site-packages) reproduisant le runner Gitea pip-less → l'oracle OPTIONNEL jsonschema (17 tests skipUnless, ~1/module) neutralisé partout. AVANT : jsonschema présent local→skipped=0, absent runner→skipped=17 ⇒ regression_run.json commité = FAUX-VERT (vert local, ROUGE runner). APRÈS -S : matrice byte-déterministe cross-environnement, baseline sur couverture garantie (stdlib + validateurs maison). Verdict inchangé PASS. Ligne « Régression » reformulée 607/17-skip ; les « 624/0-skip » antérieurs = snapshots datés KEEP (historical-repro). ÉCART 2 — 2ᵉ tree commité RED capté le jour même : le refactor -S (9d30939) éditait regression/README.md (+11 l) sans rebuild quality_report.json (audit 4Big score le contenu doc → evidence byte-count) → check-artifacts ROUGE (32 PASS·1 FAIL) ; rattrapé ~17 min par9fa464d(rebuild → 1 ligne, PASS 24/24 inchangé). Même classe rebuild-after-doc-edits que l'incident du matin (127ef6f→1321983) ; le rapport n'en consignait qu'UN → honnêteté du canal rétablie. FIX : section « fin de journée · 184329 » (avant/après -S + reformulation ligne Régression · tableau 2ᵉ incident · veille lecture-seule depuisf311a1b: docstring helpersdb91a6bCLEAN + gate constant-anchor1441693+ invariant INV-C PYTHONUTF81a44dfe= PAS un nouveau job, 33 inchangé · ré-attestation HEAD1a44dfe). Tables du matin intactes (snapshots datés), réconciliées explicitement (convention 32→33 jobs). Ré-attestation HEAD1a44dfe: 4Big 24/24 tous==100 coverage.ok PASS · régression 624 ran/607 passed/17 skipped/0/0 PASS · recette 15/15 in_repo · ci_job ×36 · structure run_ci 33 PASS = 8 gates statiques + 25 suites. 0 prod, 0 artefact reconstruit, 0 gate (#5), 0 chiffre saisi (#6 — 24/607/17/33/36 recomputés), 0 VPS (#8). Seules éditions : rapport stakeholder + journal. run_ci 33 PASS · 0 FAIL · 0 SKIP. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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 |
DIRECTIVE_*.md |
Input-specs datés de Michel (snapshots) qui pilotent les modules — spec commitée = autorité |
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_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/ |
Journal de session horodaté |
.gitea/workflows/ci.yml · ci/ |
Gate CI Gitea Actions + guards locaux |
run_ci.sh |
Miroir local du gate : rejoue tout gate.needs (dérivé de ci.yml, sans liste en dur) |
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é)
- Qualité 4Big : 24/24 modules gated à 100/100 (seuil 95 ·
CLAUDE.md#5), verdictPASS— sourceqa/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, artefact commité et byte-gaté :ci/check_regression.shrégénère unrunfrais et exige l'identité byte-for-byte avec la baseline commitée (verdictPASS). Recensement déterministe des suites :qa/regression/out/regression_plan.json. - Recette roadmap : 15 promesses (8 livrables sprint + 7 métriques MVP), 15
in_repoprouvées (chacune traçant ses items hors-périmètre worker · #8 · ex. M5 « app publiée 2 stores »), verdicttrue— sourceqa/acceptance/out/acceptance_matrix.json. - Guards :
ci/guard_constraints.sh+ci/check_docs.shverts. - 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, dans05_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.
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 (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→crm/financement_bancaireDIRECTIVE_MOBILE_STORES→mobile/app_configDIRECTIVE_PIE_PROJECT_IDENTITY_ENGINE→pie/manifest
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_WORKFLOW_FAISABILITE_V10— versionnage du workflow faisabilité + intégration des modules livrés (annexes nuit 2026-08-03).DIRECTIVE_ARCHIVES_DEBLOCAGE— inventaire IFC/plans déjà aux archives (réutiliser l'existant avant de commander).DIRECTIVE_RENDUS_EXISTANTS— inventaire des rendus existants (priorité avant regénération Flux).DIRECTIVE_PLANPOINT_STYLE→specs/CHOISIR_MON_UNITE_SPEC— 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— autorisations 24/7 (contrainte #8 levée · cf.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).