feat(arch): Phase Q abgeschlossen — Plugin-Manifeste sind die einzige Frontend-Routen-Quelle

PROGRESS.md: Phase-Q-Section mit Live-Beweisen. PLATFORM_ROADMAP.md: Phase Q auf
ABGESCHLOSSEN (Q1-Q4 komplett, Commits 895f85d + b666fe5, deployed).
Nächster Schritt: Re-Audit durch den externen Prüfer.
This commit is contained in:
Agent Zero
2026-09-13 08:58:34 +02:00
parent b666fe5b4c
commit b58c96ff71
2 changed files with 52 additions and 3 deletions
+7 -2
View File
@@ -1786,7 +1786,12 @@ Der AI Assistent ist ein paralleles System das die Kommunikation-Plattform dupli
**Abhängigkeiten:** P4 benötigt M1 (Universal-Registry). P1-P3, P5 unabhängig startbar. **Abhängigkeiten:** P4 benötigt M1 (Universal-Registry). P1-P3, P5 unabhängig startbar.
## Phase Q — Frontend-Plugin-Architektur vollenden (geplant, 2026-09-13 aus externem Audit abgeleitet) ## Phase Q — Frontend-Plugin-Architektur ✓ ABGESCHLOSSEN (2026-09-13, Commits 895f85d + b666fe5, deployed, Health healthy)
> **Umgesetzt am selben Tag wie geplant.** Q3 (Generator + PluginLoader) + Q4 (MiniAppHost)
> in 895f85d; Q1 (statische Plugin-Routen entfernt) + Q2 (Settings-Routen + Renderer-Variante)
> in b666fe5. Details und Live-Beweise: PROGRESS.md Phase-Q-Section.
**Ziel:** Die letzten verbliebenen Plugin-Grenzverletzungen im Frontend beseitigen — ein Plugin soll sein Backend, Manifest UND React-Seite liefern können, ohne dass zentrale Frontend-Dateien angefasst werden müssen. Basis: externes Architektur-Audit (2026-09-13), dessen Backend-Punkte bereits gefixt sind (siehe PROGRESS.md „Externer Architektur-Audit"); die vier Frontend-Punkte sind bewusst als eigene Phase geplant, weil sie ein durchdachtes Build-Time-Discovery-Konzept erfordern (Vite kann dynamische Imports zur Laufzeit im Production-Bundle nicht zuverlässig auflösen). **Ziel:** Die letzten verbliebenen Plugin-Grenzverletzungen im Frontend beseitigen — ein Plugin soll sein Backend, Manifest UND React-Seite liefern können, ohne dass zentrale Frontend-Dateien angefasst werden müssen. Basis: externes Architektur-Audit (2026-09-13), dessen Backend-Punkte bereits gefixt sind (siehe PROGRESS.md „Externer Architektur-Audit"); die vier Frontend-Punkte sind bewusst als eigene Phase geplant, weil sie ein durchdachtes Build-Time-Discovery-Konzept erfordern (Vite kann dynamische Imports zur Laufzeit im Production-Bundle nicht zuverlässig auflösen).
@@ -1807,4 +1812,4 @@ Der AI Assistent ist ein paralleles System das die Kommunikation-Plattform dupli
- Status quo: 11 Widget-Komponenten sind zentral hardcodiert (RecentContactsWidget, TasksSummaryWidget, ...). - Status quo: 11 Widget-Komponenten sind zentral hardcodiert (RecentContactsWidget, TasksSummaryWidget, ...).
- Ziel: Q3-Mechanismus deckt auch dashboard_widgets/miniapps component-Pfade ab; MiniAppHost nutzt dieselbe generierte Import-Map. - Ziel: Q3-Mechanismus deckt auch dashboard_widgets/miniapps component-Pfade ab; MiniAppHost nutzt dieselbe generierte Import-Map.
**Reihenfolge:** Q3 zuerst (löst den Mechanismus), dann Q1/Q2 (Routen auf generierte Map umstellen), dann Q4. Jeder Schritt mit Vitest-Sicherung der betroffenen Seiten und Production-Build-Verifikation (Chunk-Existenz prüfen). **Reihenfolge (wie umgesetzt):** Q3 → Q1/Q2 → Q4 (Q4 fiel mit Q3 mit, da MiniAppHost dieselbe generierte Map nutzt). Jeder Schritt mit Vitest-Sicherung der betroffenen Seiten und Production-Build-Verifikation (Chunk-Existenz prüfen).
+45 -1
View File
@@ -35,11 +35,55 @@
- GET /roles/permissions: 141 Keys, 12/12 neue Keys sichtbar (erste Deploy-Runde nur 11/12 — system:read fehlte, weil der ursprüngliche Patch die permissions-Liste versehentlich in PluginRouteDef-kwargs platziert hatte; in 1b80090 korrekt auf Manifest-Ebene, Test f9 prüft jetzt echte Manifeste statt manueller Registrierung — Live-Check ist DoD-Pflicht) - GET /roles/permissions: 141 Keys, 12/12 neue Keys sichtbar (erste Deploy-Runde nur 11/12 — system:read fehlte, weil der ursprüngliche Patch die permissions-Liste versehentlich in PluginRouteDef-kwargs platziert hatte; in 1b80090 korrekt auf Manifest-Ebene, Test f9 prüft jetzt echte Manifeste statt manueller Registrierung — Live-Check ist DoD-Pflicht)
- field_definitions: contacts=39 (Plugin), users=4 (Core) — Ownership-Verschiebung live bestätigt - field_definitions: contacts=39 (Plugin), users=4 (Core) — Ownership-Verschiebung live bestätigt
## Phase Q — Frontend-Plugin-Architektur vollendet (2026-09-13) ✅ — PHASE Q KOMPLETT
**Ausgangslage:** Die 4 Frontend-Findings des externen Audits (Doppel-Architektur
Routen/Settings, STATIC_COMPONENT_MAP, widgetRegistry) wurden als Phase Q geplant
und jetzt vollständig umgesetzt. Ein Plugin meldet ab sofort Backend, Manifest
UND React-Komponenten über sein Manifest — keine zentrale Frontend-Datei muss
mehr angefasst werden.
**Q3+Q4 (Commit 895f85d) — Build-Time-Discovery statt Zentral-Listen:**
- `scripts/generate_component_map.py`: scannt alle builtin-Manifeste +
system_miniapps.py, generiert `frontend/src/generated/pluginComponents.generated.ts`
(37 Komponenten). Fail-Hard bei Ghost-Komponenten (bewiesen: exit 1), erkennt
default- vs. named-exports, deterministisch, `--check`-Modus für CI.
- PluginLoader.tsx: STATIC_COMPONENT_MAP (26 Einträge) GELÖSCHT → generierte Map.
- MiniAppHost.tsx: widgetRegistry (11 Einträge) GELÖSCHT → generierte Map (löst Q4 mit).
- Contacts-Manifest: DedupMergePage-Pfad-Alias auf echte Datei korrigiert.
**Q1+Q2 (Commit b666fe5) — Manifeste = einzige Routen-Quelle:**
- routes/index.tsx: 14 statische AppShell-Plugin-Routen + 9 statische
Settings-Routen + 20 tote Lazy-Imports entfernt. Nur noch Core-Routen + die
StartLayout-Hub-Bäume (/agents, /automation, /logs, /help — verschachtelte
Sub-Navigation) bleiben statisch (bewusste Entscheidung: Layout-Routen mit
Sub-Navigation werden von flachen Manifest-Einträgen nicht abgebildet).
- PluginRouteRenderer: neue `variant`-Prop — 'pages' (absolute Pfade, AppShell-
Catch-all) vs. 'settings' (bare Sub-Segmente, Descendant-Matching im
/settings-Subtree). Getrennte Entry-Listen verhindern Pfad-Kollisionen.
- Manifeste ergänzt: Calendar +/calendar/kanban, Tags +/tags (+ Menü-Item),
Automation: /workflows auf workflows:read (Parität zur ersetzten statischen
Route), tote flache /agents-+/automation-Einträge entfernt.
**Verifikation (jeder Schritt live gemessen):**
- tsc --noEmit exit 0 (nach Q3 und nach Q1/Q2) · production build exit 0 (2×)
- Ghost-Fail-Hard: Generator exit 1 mit Fehlermeldung bei eingepflanzter Ghost-Komponente
- Vitest: Dashboard + MiniAppWindow 17/17, pluginStore 18/18, kombiniert 35/35
- Backend-Regressionen: Route-Order, M5-MiniApps, N4-Scope, N3-Filtering 49/49
- compileall sauber · Cross-Plugin-Checker 497/0 · ruff clean
- Full Deploy SUCCESS · Health healthy · Live-Manifest-Checks: /calendar/kanban,
/tags, workflows:read, keine toten Einträge — alle OK · SPA-Routen 200
**Nächster Schritt (Roadmap):** Re-Audit durch den externen Prüfer — alle 17
Audit-Findings sind behoben (13 Backend + 4 Frontend). Danach Phase O UI-Overhaul,
Phase P Notizen-App oder UI-Backlog-Module 2-16.
## Weitermachen (2026-08-30, für das nächste Modell) ## Weitermachen (2026-08-30, für das nächste Modell)
**Produktion läuft stabil auf dem Phase-L-Deploy** (Commits b311ab7 + 559bba6, Health healthy, Alembic 0143, RLS 112 Tabellen). Alle Forgejo-Issues #351#358 geschlossen. Forgejo ist komplett aktuell (HEAD = origin/main, 0 ungepushte Commits). **Produktion läuft stabil auf dem Phase-L-Deploy** (Commits b311ab7 + 559bba6, Health healthy, Alembic 0143, RLS 112 Tabellen). Alle Forgejo-Issues #351#358 geschlossen. Forgejo ist komplett aktuell (HEAD = origin/main, 0 ungepushte Commits).
**Kürzlich abgeschlossen:** Externer Architektur-Audit verifiziert + 13 Backend-Fixes (2026-09-13, siehe Audit-Section oben). Phase L vollständig (L1-L5). UI-Backlog Modul 1 (Approvals) erledigt, Module 2-16 offen. **Kürzlich abgeschlossen:** PHASE Q KOMPLETT — Frontend-Plugin-Architektur (2026-09-13, Commits 895f85d + b666fe5): generierte Komponenten-Map statt STATIC_COMPONENT_MAP/widgetRegistry, Plugin-Routen nur noch aus Manifesten. Externer Architektur-Audit verifiziert + 13 Backend-Fixes (2026-09-13). UI-Backlog Modul 1 (Approvals) erledigt, Module 2-16 offen.
**Offene Roadmap-Phasen (user-abgestimmt, startklar):** **Offene Roadmap-Phasen (user-abgestimmt, startklar):**
- **Phase M** — MiniApp-Plattform & Dashboard-Builder (M1-M6). **M1 ✓** (Universal-Registry, `/api/v1/miniapps`), **M2 ✓** (persönliche Dashboards: Tabelle, CRUD, Seed, RLS), **M3 ✓** (Dashboard-Builder: Edit-Modus, Drag&Drop, Palette, Tabs), **M4 ✓** (System-Rückbau, Core = reiner Host), **M5 ✓** (Plugin-MiniApps), **M6 ✓ erledigt — PHASE M KOMPLETT** (Windows-Host + AI-Agenten-Tool send_miniapp — siehe Phase-M6-Section). - **Phase M** — MiniApp-Plattform & Dashboard-Builder (M1-M6). **M1 ✓** (Universal-Registry, `/api/v1/miniapps`), **M2 ✓** (persönliche Dashboards: Tabelle, CRUD, Seed, RLS), **M3 ✓** (Dashboard-Builder: Edit-Modus, Drag&Drop, Palette, Tabs), **M4 ✓** (System-Rückbau, Core = reiner Host), **M5 ✓** (Plugin-MiniApps), **M6 ✓ erledigt — PHASE M KOMPLETT** (Windows-Host + AI-Agenten-Tool send_miniapp — siehe Phase-M6-Section).