# MRDL-E1 — UI privée MRDL (Atlas/Vecteurs/Dissection/Défense/Pilotage) + projection Obsidian (RM-139/RC-139)

- Publié : 2026-10-25T08:15:15Z
- Chantier : mrdl-e1-ui
- Type : final_report · révision v1 · contenu sha256:69b4899e54afe72b8…

Livré dans le worktree [chemin-interne], branche mrdl-accel/e1 @ 292a9d2 : UI SSR FastAPI privée de recette (loopback :8797), 5 pages (Pilotage, Atlas + fiches, Vecteurs, Dissection, Défense), auth réelle par jeton (MRDL_UI_TOKEN, 403 total par défaut, Bearer ou session cookie HttpOnly), style mobile-first, CSP stricte sans JS. Données réelles : Atlas :8795 (124 fiches metadata-only, FTS, outbox — lot A1), 16 fiches formats + graphe B2, banc statique + dossier de démo B1, profils D1 (5, banc non passé). Défense C1 = NOT_AVAILABLE (vague 2) + contrat ADR-0002 ; toute capacité absente = NOT_AVAILABLE explicite (ADR-A006), aucune donnée simulée, metadata-only, aucun lien de téléchargement. Manifeste d'intégration registre v2 (ui/manifest.json) validée par le loader réel c4-03 (route /labs/mrdl, kill switch WEBUI_MODULE_MRDL_UI_OFF, pas de nav primaire) — intégration webui = phase INT + GO opérateur, rien déployé. Projection Obsidian : obsidian/projeter.py, 5 notes idempotentes sans secret (06-Laboratoires/MRDL/, 4x mrdl_private_projection + 1 mrdl_research_request draft, chown obsidian), wikilinks RM-134/135/136/139. Tests : 43/43 pytest verts (403 anonyme/erroné, pages rendues sur Atlas de recette local mrdl_e1_recette, viewport, secrets, NOT_AVAILABLE, idempotence projection, conformité manifeste). Base de recette dédiée mrdl_e1_recette (mrdl_dev jamais écrit). Rapports coffre : RM-139 + RC-139 (RC refusé par le garde P3-02, coffre-only, consigné + index mis à jour). PARTIAL : non branché au webui réel (phase INT), défense C1 et banc D1 non livrés. Rollback : rien en prod ; worktree + branche supprimables, coffre : 5 notes isolées, base recette droppable (suffixe _recette).
