diff --git a/docs/superpowers/plans/2026-10-18-architektur-divi-faehigkeiten.architecture.json b/docs/superpowers/plans/2026-10-18-architektur-divi-faehigkeiten.architecture.json new file mode 100644 index 0000000..c85f23f --- /dev/null +++ b/docs/superpowers/plans/2026-10-18-architektur-divi-faehigkeiten.architecture.json @@ -0,0 +1,304 @@ +{ + "schema_version": 1, + "diagram_type": "architecture", + "meta": { + "title": "Zielarchitektur: Divi-Freigabe je Fähigkeit", + "output": "2026-10-18-architektur-divi-faehigkeiten.html", + "quality_profile": "showcase", + "legend": { + "mode": "hidden" + } + }, + "components": [ + { + "id": "client", + "type": "external", + "label": "MCP-Client", + "sublabel": "KI-Assistent", + "pos": [ + 40, + 190 + ], + "size": [ + 150, + 64 + ] + }, + { + "id": "registrar", + "type": "backend", + "label": "AbilityRegistrar", + "sublabel": "AbilityGuard-Liste", + "pos": [ + 250, + 350 + ], + "size": [ + 150, + 64 + ], + "tag": "kein Divi-Import" + }, + { + "id": "core_tools", + "type": "backend", + "label": "Kern-Tools", + "sublabel": "WordPress · Media · Core", + "pos": [ + 250, + 510 + ], + "size": [ + 150, + 64 + ] + }, + { + "id": "ports", + "type": "backend", + "label": "Ports", + "sublabel": "Builder · Logo · Status", + "pos": [ + 40, + 510 + ], + "size": [ + 150, + 64 + ], + "tag": "Divi implementiert" + }, + { + "id": "feature_gate", + "type": "security", + "label": "DiviFeatureGate", + "sublabel": "lehnt je Fähigkeit ab", + "pos": [ + 470, + 190 + ], + "size": [ + 150, + 64 + ] + }, + { + "id": "release_gate", + "type": "security", + "label": "ReleaseGate", + "sublabel": "Matrix je Fähigkeit", + "pos": [ + 690, + 190 + ], + "size": [ + 150, + 64 + ] + }, + { + "id": "resolver", + "type": "backend", + "label": "ReleaseResolver", + "sublabel": "Manifest · Fingerabdrücke", + "pos": [ + 910, + 190 + ], + "size": [ + 150, + 64 + ], + "tag": "Auto-Freigabe" + }, + { + "id": "status", + "type": "frontend", + "label": "Anzeige", + "sublabel": "site-status · Tab · CLI", + "pos": [ + 690, + 40 + ], + "size": [ + 150, + 64 + ] + }, + { + "id": "divi_tools", + "type": "backend", + "label": "Divi-Tools", + "sublabel": "erklären Fähigkeiten", + "pos": [ + 470, + 350 + ], + "size": [ + 150, + 64 + ] + }, + { + "id": "adapters", + "type": "backend", + "label": "Divi-Adapter", + "sublabel": "assertFeature()", + "pos": [ + 690, + 350 + ], + "size": [ + 150, + 64 + ], + "tag": "fail closed" + }, + { + "id": "divi", + "type": "external", + "label": "Divi 5", + "sublabel": "Theme-Code", + "pos": [ + 910, + 510 + ], + "size": [ + 150, + 64 + ] + } + ], + "boundaries": [ + { + "kind": "region", + "label": "Kern (ohne Divi-Import)", + "wraps": [ + "registrar", + "core_tools", + "ports" + ] + }, + { + "kind": "region", + "label": "Divi-Integration", + "wraps": [ + "feature_gate", + "release_gate", + "resolver", + "status", + "divi_tools", + "adapters" + ] + } + ], + "connections": [ + { + "id": "call", + "from": "client", + "to": "registrar", + "label": "Tool-Aufruf", + "variant": "emphasis" + }, + { + "id": "guard", + "from": "registrar", + "to": "feature_gate", + "label": "Guard", + "variant": "security", + "fromSide": "top", + "toSide": "left" + }, + { + "id": "ask", + "from": "feature_gate", + "to": "release_gate", + "label": "frei?", + "variant": "security" + }, + { + "id": "matrix", + "from": "resolver", + "to": "release_gate", + "label": "Matrix" + }, + { + "id": "probe", + "from": "resolver", + "to": "divi", + "label": "Signaturen", + "variant": "dashed", + "labelDy": 24 + }, + { + "id": "show", + "from": "status", + "to": "release_gate", + "label": "liest", + "labelDy": 24 + }, + { + "id": "run_divi", + "from": "registrar", + "to": "divi_tools", + "label": "führt aus" + }, + { + "id": "run_core", + "from": "registrar", + "to": "core_tools" + }, + { + "id": "use_ports", + "from": "core_tools", + "to": "ports" + }, + { + "id": "use_adapters", + "from": "divi_tools", + "to": "adapters" + }, + { + "id": "assert", + "from": "adapters", + "to": "release_gate", + "label": "assertFeature", + "variant": "security" + }, + { + "id": "divi_api", + "from": "adapters", + "to": "divi", + "label": "Divi-API" + } + ], + "cards": [ + { + "dot": "emerald", + "title": "Kern entkoppelt", + "items": [ + "Registrar kennt nur AbilityGuard und ToolRefusal", + "WordPress, Media, Core rufen Divi über Ports", + "CoreIndependenceTest verbietet Divi-Importe" + ] + }, + { + "dot": "cyan", + "title": "Fähigkeiten", + "items": [ + "Manifest-Einträge gehören zu Fähigkeiten", + "Signatur- und Mirror-Fingerabdrücke je Aufruf", + "Neue Divi-Version: Freigabe je Fähigkeit" + ] + }, + { + "dot": "rose", + "title": "Sperre", + "items": [ + "Gate lehnt nur Tools mit gesperrter Fähigkeit ab", + "Lesen wie Schreiben; Tools bleiben registriert", + "Adapter prüfen zusätzlich vor jedem Schreiben" + ] + } + ] +} diff --git a/docs/superpowers/plans/2026-10-18-plaene-uebersicht.html b/docs/superpowers/plans/2026-10-18-architektur-divi-faehigkeiten.html similarity index 97% rename from docs/superpowers/plans/2026-10-18-plaene-uebersicht.html rename to docs/superpowers/plans/2026-10-18-architektur-divi-faehigkeiten.html index 075a094..bbd25a9 100644 --- a/docs/superpowers/plans/2026-10-18-plaene-uebersicht.html +++ b/docs/superpowers/plans/2026-10-18-architektur-divi-faehigkeiten.html @@ -4,7 +4,7 @@ - Etappe 4 – Pläne im Überblick Diagram + Zielarchitektur: Divi-Freigabe je Fähigkeit Diagram