03_agents/onapi_legal/AGENT.md:43-45 — la MÊME table role→portail→actions que le README du module (ventes-confotur (Ventes)→read/write/create/print · legal-onapi (Direction)→read/write/create · legal-directeur (Direction)→read/write/**submit**/report), annoncée « **mot pour mot** les permissions_cibles RBAC des 3 rôles », mais sous une convention DIFFÉRENTE ( / espacé · **submit** en gras) et gatée par RIEN. Le bloc « Legal confotur perms · cross-cohérence » existant ne gate QUE la §Permissions du README du MODULE (legal/confotur/README.md), AVEUGLE à la fiche. Piège #6 : PROMOUVOIR ventes-confotur à submit (élévation de privilège · casse la séparation des pouvoirs dont is_submittable est déduit), RETIRER une action, RÉAFFECTER un portail, RENOMMER un rôle ou AJOUTER une ligne fantôme dans la FICHE la laisse périmée pendant que l'artefact (et le README, lui gaté) disent autre chose → l'agent ONAPI/Legal lirait sa PROPRE doc d'identité mentant sur le jeu de permissions qu'il porte (le risque même que « mot pour mot » promet d'écarter) — « vert trompeur » qu'aucune suite tests/ (FONCTIONS de mapping RBAC, jamais la prose de fiche) n'attrape. Classe explicitement notée en mémoire (agent-fiche-role-attrs-ungated) : une fiche peut restituer la MÊME donnée data-derived qu'un README déjà gaté, sur une surface distincte. Gate ajouté (bloc « cross-cohérence PERMISSIONS répliquée dans la FICHE AGENT ») : RÉUTILISE conf_perm_by_id/conf_portail_by_id déjà dérivés du MANIFEST par le bloc README (ZÉRO duplication du contrat #6) ; regex tolérant / et ** ; par rôle portail (casse normalisée) ET jeu d'actions exigés EXACTS (set-diff absent ET en trop) ; identité d'ensemble fiche⇔MANIFEST (aucun rôle fantôme/manquant). 6 morsures vérifiées (fiche promeut ventes-confotur→submit · fiche retire create de legal-onapi · fiche réaffecte portail Ventes→Direction · fiche renomme legal-directeur→legal-boss ligne INTROUVABLE+fantôme · sous-liste entière supprimée · artefact promeut submit fiche stale = le vrai silent green), restauré vert, 7 gates re-verts.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
03_agents/onapi_legal/AGENT.md:43-45 — la MÊME table role→portail→actions que le README du module (ventes-confotur (Ventes)→read/write/create/print · legal-onapi (Direction)→read/write/create · legal-directeur (Direction)→read/write/**submit**/report), annoncée « **mot pour mot** les permissions_cibles RBAC des 3 rôles », mais sous une convention DIFFÉRENTE ( / espacé · **submit** en gras) et gatée par RIEN. Le bloc « Legal confotur perms · cross-cohérence » existant ne gate QUE la §Permissions du README du MODULE (legal/confotur/README.md), AVEUGLE à la fiche. Piège #6 : PROMOUVOIR ventes-confotur à submit (élévation de privilège · casse la séparation des pouvoirs dont is_submittable est déduit), RETIRER une action, RÉAFFECTER un portail, RENOMMER un rôle ou AJOUTER une ligne fantôme dans la FICHE la laisse périmée pendant que l'artefact (et le README, lui gaté) disent autre chose → l'agent ONAPI/Legal lirait sa PROPRE doc d'identité mentant sur le jeu de permissions qu'il porte (le risque même que « mot pour mot » promet d'écarter) — « vert trompeur » qu'aucune suite tests/ (FONCTIONS de mapping RBAC, jamais la prose de fiche) n'attrape. Classe explicitement notée en mémoire (agent-fiche-role-attrs-ungated) : une fiche peut restituer la MÊME donnée data-derived qu'un README déjà gaté, sur une surface distincte. Gate ajouté (bloc « cross-cohérence PERMISSIONS répliquée dans la FICHE AGENT ») : RÉUTILISE conf_perm_by_id/conf_portail_by_id déjà dérivés du MANIFEST par le bloc README (ZÉRO duplication du contrat #6) ; regex tolérant / et ** ; par rôle portail (casse normalisée) ET jeu d'actions exigés EXACTS (set-diff absent ET en trop) ; identité d'ensemble fiche⇔MANIFEST (aucun rôle fantôme/manquant). 6 morsures vérifiées (fiche promeut ventes-confotur→submit · fiche retire create de legal-onapi · fiche réaffecte portail Ventes→Direction · fiche renomme legal-directeur→legal-boss ligne INTROUVABLE+fantôme · sous-liste entière supprimée · artefact promeut submit fiche stale = le vrai silent green), restauré vert, 7 gates re-verts.
03_agents/onapi_legal/AGENT.md:43-45 — la MÊME table role→portail→actions que le README du module (ventes-confotur (Ventes)→read/write/create/print · legal-onapi (Direction)→read/write/create · legal-directeur (Direction)→read/write/**submit**/report), annoncée « **mot pour mot** les permissions_cibles RBAC des 3 rôles », mais sous une convention DIFFÉRENTE ( / espacé · **submit** en gras) et gatée par RIEN. Le bloc « Legal confotur perms · cross-cohérence » existant ne gate QUE la §Permissions du README du MODULE (legal/confotur/README.md), AVEUGLE à la fiche. Piège #6 : PROMOUVOIR ventes-confotur à submit (élévation de privilège · casse la séparation des pouvoirs dont is_submittable est déduit), RETIRER une action, RÉAFFECTER un portail, RENOMMER un rôle ou AJOUTER une ligne fantôme dans la FICHE la laisse périmée pendant que l'artefact (et le README, lui gaté) disent autre chose → l'agent ONAPI/Legal lirait sa PROPRE doc d'identité mentant sur le jeu de permissions qu'il porte (le risque même que « mot pour mot » promet d'écarter) — « vert trompeur » qu'aucune suite tests/ (FONCTIONS de mapping RBAC, jamais la prose de fiche) n'attrape. Classe explicitement notée en mémoire (agent-fiche-role-attrs-ungated) : une fiche peut restituer la MÊME donnée data-derived qu'un README déjà gaté, sur une surface distincte. Gate ajouté (bloc « cross-cohérence PERMISSIONS répliquée dans la FICHE AGENT ») : RÉUTILISE conf_perm_by_id/conf_portail_by_id déjà dérivés du MANIFEST par le bloc README (ZÉRO duplication du contrat #6) ; regex tolérant / et ** ; par rôle portail (casse normalisée) ET jeu d'actions exigés EXACTS (set-diff absent ET en trop) ; identité d'ensemble fiche⇔MANIFEST (aucun rôle fantôme/manquant). 6 morsures vérifiées (fiche promeut ventes-confotur→submit · fiche retire create de legal-onapi · fiche réaffecte portail Ventes→Direction · fiche renomme legal-directeur→legal-boss ligne INTROUVABLE+fantôme · sous-liste entière supprimée · artefact promeut submit fiche stale = le vrai silent green), restauré vert, 7 gates re-verts.
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é)
- Qualité 4Big : 22/22 modules gated à 100/100 (seuil 95 ·
CLAUDE.md#5), verdictPASS— sourceqa/audit_4big/out/quality_report.json. - Régression : 22 suites gated couvertes bijectivement vs CI ; le compte de tests
agrégé faisant autorité est produit par
qa/regression run(non commité par design) — planqa/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.
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).