MZP · Fähigkeitsanalyse · Stichtag 2026-09-23
Was der mzone-publisher kann — und was noch nicht
Eine Bestandsaufnahme aus Agentensicht: nicht aus der Doku abgeschrieben, sondern am lebenden Server ausprobiert. Jede Einschränkung unten ist in dieser Sitzung reproduziert oder ausdrücklich als ungeprüft markiert.
1 · Kurzurteil
MZP ist kein Webspace mit MCP-Anschluss, sondern eine Qualitätsschleuse für agentengeschriebenes HTML. Die Kette aus Vorab-Prüfung, Browser-Blick, Staging-Token, Erreichbarkeits- und Render-Check nach dem Publish findet sich so bei keinem mir bekannten Publishing-Werkzeug.
radar, Playground v3), serverseitig per fromSlug übernommen.Artefakt-Pipeline und Agenten-Ergonomie. Ein Aufruf von getCapabilities reicht, um sauber zu publizieren, und die Fehlermeldungen sagen dem Agenten, was er ändern muss.
Wissen und Betrieb. Der Bestand wächst mit 59 Seiten pro Woche schneller als seine Pflege, und der MCP-Transport ist noch zustandsbehaftet, obwohl die Umstellung seit sieben Wochen freigegeben ist.
Diagramm-Engine. 45 Typen und ein starker Viewer, aber ihr Auto-Layout erzeugt bei langen Kanten Anordnungen, die ihr eigener Validator ablehnt.
ok heißt nicht immer ok. validateArtifact meldet ok:true, auch wenn der Browser-Check ERROR-Notices liefert (B1).
2 · Daten
Bestand auf dem Server (getPageStats, lintWiki, backlogQuery)
Codebasis (main, ca24574)
Harte Grenzen (getCapabilities, include=minimal)
| Grenze | Wert | Bedeutung |
|---|---|---|
| Bundle gesamt / Datei | 10 MB / 10 MB | dekomprimiert; br/gzip als Transportweg |
| Dateien je Bundle | 64 | genau eine index.html |
| Dateitypen | 34 Endungen | html … wasm, glb/gltf, mp4/webm, woff2 |
| Versionen je Slug | 5 | ältere fallen weg |
| Preview-TTL | 15 min / max. 7 Tage | Review-Links überstehen Neustart |
| Slug | ^[a-z0-9][a-z0-9-]{0,100}$ | kein Punkt: aus „playground-opus-5.5“ wurde „-5-5“ |
| Diagramm-Budget | 9 Knoten / 12 Kanten | je Typ, plus Extras (radar: 5 Achsen, 5 Serien) |
3 · Fähigkeiten
40 MCP-Tools in sieben Gruppen, dazu eine MCP-Resource (mzp://wiki/). Fett: die Tools, die ein Agent im Alltag braucht.
| Gruppe | Tools | Was es leistet |
|---|---|---|
| Entdecken · 6 | getCapabilities, listCapabilities, getCapabilityFor, lookupStyles, searchBranding, getDesignMdFor | Selbstbeschreibung: Limits, Slug-Regeln, gepinnte Libs, das ganze CSS-Vokabular, Budget und Schema je Diagrammtyp, Parameter-Schemas aller Tools, Icon-Katalog |
| Artefakte · 10 | validateArtifact, publishArtifact, publishAsset, getArtifactSource, revokePreview, exportFigurePng, listAssetUsage, deletePage, publishRawPage¹, publishRawPageCompressed¹ | Bundles mit Begleitdateien, Preview vor dem Speichern, Staging-Token, serverseitige Dateiübernahme (fromSlug), Patch-Modus, Asset-Bibliothek |
| Diagramme · 3 | validateDiagram, publishDiagram, diffDiagram | 45 Typen, Auto-Layout, Mermaid-Import, interaktiver Viewer, strukturelles Delta mit Quittung |
| Templates · 5 | listTemplates, getTemplate, renderPreview, publishPage, extractTemplate | 10 Freemarker-Templates (Post, Landing, Galerie, Timeline, Wiki, Gamma-Deck …) |
| Versionen · 5 | listVersions, diffVersions, rollbackArtifact, getPageHistory, setPageLifecycle | Snapshot je Overwrite, Unified-Diff, Rücksprung, Lebenszyklus draft→current→superseded→archived |
| Wissen · 8 | fullTextSearch, knowledgeQuery, getPageContext, mergePageContext, lintWiki, searchPages, listPublishedPages, getPageStats | Postgres-Volltext mit deutschen Wortformen, Link-Graph (inbound/outbound), Freshness-Linter, elementweises Mergen |
| Backlog · 3 | backlogQuery, backlogGet, backlogWrite | Ticket-Cockpit im selben Server, Tickets verweisen auf Wiki-Seiten |
¹ Alias-Pfade aus dem Bestand, ohne Overwrite-Schutz und ohne Versionen. Für Neues gilt publishArtifact.
Das eigentliche Produkt. Vor dem Speichern: Größen, Typen, kaputtes HTML, CDN-Verweise, tote relative Links, unbekannte CSS-Klassen, dann ein echter Browser (Konsolenfehler, Ausnahmen, 404). Nach dem Speichern: öffentliche Erreichbarkeit samt /lib/-Verweisen, erneuter Render-Check, bei Diagrammen die Nachzählung sichtbarer Formen (visualProof).
stagingToken publiziert ein bereits geprüftes Bundle, ohne es erneut zu senden. fromSlug kopiert Dateien serverseitig; das Radar in Abb. 1 kam so aus dem Playground in diesen Report, ohne durch den Kontext des Agenten zu laufen. Diese Seite selbst ist Version 3, zwei Patches auf Version 1.
45 Typen (architecture, sequence, c4, sankey, wardley, fishbone, db-schema …), 11 Skins, 135 Icons in 18 Kategorien, Handzeichen-Modus. Interaktiver Viewer mit Suche, Reach-Trace, Routen-Sonde, Linse, Radar-Minimap, Kapiteln, Präsentationsmodus, Fluss-Animation, Drill-down und Export als PNG, JPEG, WebP und SVG.
76 Klassen (davon 27 Transitions) und 48 Effekt-Module (Partikel, Flüssigkeit, Stoff, Glas, Glitch …), Hell/Dunkel automatisch. Dazu gepinnt: chart.js 4.4.6, d3 7.9.0, three 0.170.0, eigene Schriften. Vier Branding-Profile (nightline, ledger, monoblock, arcade).
Außerhalb von MCP
/published/llms.txt als Agentenindex, Doku-Export als PDF, DOCX und EPUB, OG-/Twitter-Tags, Wiki-API unter /api/wiki, private Seiten mit priv-, Hall of Fame, ein Admin-Wiki-Editor und Agent-Workflows als Dokumente (Code→Architektur, Gamma→MZP, Skizze→Figur).
4 · Playground-Protokoll
Alle Versionen liegen unter playground-opus-5-5. Die Tabelle nennt jeden Versuch mit seinem Ausgang, Fehlversuche eingeschlossen.
| # | Versuch | Ergebnis |
|---|---|---|
| 1 | Slug playground-opus-5.5 | abgelehnt Regel greift, aber als Exception-Text statt Notice mit Vorschlag |
| 2 | Mermaid-Flowchart + JSON-Overlay (Icons, Variante, Viewer) | ok 7 Knoten gelayoutet, Subgraph → Zone, Overlay gemergt; Icon an ovaler Form korrekt als Warnung gemeldet → v1 |
| 3 | architecture, 9 Knoten, ohne Koordinaten, LR | DIAGRAM_INVALID eigenes Auto-Layout führt Kante durch fremde Box |
| 4 | dasselbe in TB | 3 Fehler schlechter; zusätzlich zones[].nodes ignoriert (richtig ist node.zone) |
| 5 | LR mit node.zone | 2 Fehler lange Kanten über einen Rang hinweg |
| 6 | Kante diagram→artifact umgebogen, damit alle Backends auf einem Rang liegen | gültig aber LAYOUT_QUALITY: 10 Kreuzungen, 5 Überlappungen, 21 Knicke → v2 |
| 7 | diffDiagram v1→v2 | ok 19 Zugänge, 13 Abgänge, 2 Änderungen, Quittung mit SHA-256, Delta-Ansicht |
| 8 | validateArtifact mit CDN-Script, fehlendem Bild, erfundener Klasse, JS-Fehler | alles gefunden aber ok:true trotz drei ERROR-Notices |
| 9 | radar mit typeBlocks:{…} | EMPTY_RENDER gut abgefangen: Schlüssel gehören auf die oberste Ebene |
| 10 | radar korrigiert | ok → v3; SVG trägt keine Serienlegende |
| 11 | quadrant mit Achsen „kleiner/grosser Aufwand“ | abgeschnitten Achsentexte laufen aus dem Bild, visualProof meldet outsideViewBox 0 |
| 12 | quadrant mit kurzen Achsen | ok → v4 |
| 13 | renderPreview wiki-page mit renderedAt:1999-01-01 | MZP-106 bestätigt Fuß zeigt 1999-01-01 |
| 14 | fullTextSearch Diagramm -mermaid "Volltext" | ok Syntax greift; Mehrwortsuche ohne Operator liefert bei UND-Verknüpfung schnell 0 Treffer |
| 15 | searchBranding „ruhig, sachlich, report“ | kein Treffer Freitext trägt nur bei passenden vibe-Wörtern |
| 16 | Dieser Report: validate → stagingToken → publish, danach Patches | ok Render sauber; 6,4 KB per fromSlug nicht übertragen. Links in mz-meta kamen in Browser-Standardblau (mzone-ui setzt dort keine Linkfarbe) → im Patch behoben |
| 17 | Playground-Hub als Artefakt mit Screenshots | → v5 |
5 · Einschränkungen
Rot heißt, dass ein Agent falsch entscheiden kann. Gelb heißt Reibung oder Drift, blau eine Kleinigkeit.
- B1SemantikvalidateArtifact meldet ok:true trotz ERROR. PAGE_EXCEPTION, CONSOLE_ERROR und RESOURCE_FAILED tragen severity ERROR, das Gesamtfeld bleibt
ok:true(ArtifactValidator.Report.ok()prüft nurerrors.isEmpty()). Ein Agent, der nurokliest, publiziert eine kaputte Seite. - B2LayoutAuto-Layout verletzt die eigene Transit-Regel. Überspringt eine Kante einen Rang, führt der Router sie durch Boxen im Zwischenrang und der Validator lehnt ab (TRANSIT_NOT_DASHED). Vier Anläufe für ein 9-Knoten-Diagramm, danach immer noch 10 Kreuzungen. Vermutliche Ursache: Hilfsknoten für lange Kanten kommen in
diagram/layout/undEdgeRouternicht vor (Hypothese). - B3PrüflückevisualProof sieht keinen Text-Überlauf. Beim Quadranten standen die waagerechten Achsentexte (x=58, text-anchor end; x=902 start) sichtbar über dem Rand. Gemeldet wurde
outsideViewBox: 0. - B4WissenDas Wiki verfällt schneller, als es gepflegt wird. 21 von 61 Seiten sind veraltet, 45 haben keine crossRefs, 40 Links zeigen ins Leere. Es fehlen ADR-001 bis -005 und -007, obwohl AGENTS.md verlangt, vor dem Revidieren einer Entscheidung die ADR zu lesen.
- B5BetriebMCP läuft weiter STREAMABLE.
application.yml:39. ADR-008 Phase 1 (STATELESS) ist seit dem 2026-08-05 freigegeben und in der Top-3-Liste vom 2026-09-19 als erster Schritt genannt. Preview-Store im Heap (ADR-008 B1) verhindert zudem mehrere Instanzen. - B6BugMZP-106 reproduziert: ein mitgegebenes
renderedAtüberschreibt die echte Renderzeit im Fuß der Seite. - B7Konsistenz9 von 10 Templates laden Google Fonts von außen. Das sind post-single, landing-hero, gallery-wide, info-card, quote-feature, split-editorial, timeline-journey, wiki-page und gamma-deck (Migrationen V4, V5, V6, V17, V22, V25). Bei Agenten-Artefakten meldet MZP genau das als EXTERNAL_REFERENCE, und
fonts-maierzoneliegt gepinnt unter /lib/. - B8ExportRadar-SVG ohne Serienlegende und Titel. Die Seite zeigt beides, die exportierte diagram.svg nicht. Allein weitergegeben ist das Bild nicht lesbar (hier per HTML-Legende nachgetragen).
- B9ErgonomieDrei Stolpersteine beim ersten Versuch: ein Slug-Fehler als nackter Exception-Text statt Notice mit Vorschlag; „typeBlocks“ ist ein Begriff, kein Feld; Zonen werden über node.zone belegt, zones[].nodes wird ignoriert. Alle drei meldet MZP klar, der erste Versuch geht trotzdem daneben. Dazu kommen Links in
mz-metaundmz-leadohne Farbe aus mzone-ui. - B10SucheDie Suche endet an Seitengrenzen. fullTextSearch kennt keine Tickets und keine Trefferauszüge, und bei 0 Treffern kommt kein Fallback. searchBranding trifft mit Freitext selten.
- B11HistorieFünf Versionen je Slug. Lange lebende Seiten (ADRs, Wiki-Index) verlieren ihre frühe Historie ohne Ausnahme.
- B12Oberfläche40 Tools inklusive Alias-Pfade. Jede Tool-Beschreibung kostet Kontext bei jedem Agenten. publishRawPage überschreibt ohne Schutz und ohne Version.
- B13ungeprüftAus dem Backlog, hier nicht selbst getestet: MZP-103 (RENDER_UNAVAILABLE auf geschützten wiki-*-Seiten), MZP-67 (lastabhängiger Zeittest), MZP-68 (38 % der Suite-Laufzeit in einer Testklasse).
Was ausdrücklich gut war
- S1lehrtFehlermeldungen nennen die bekannten Schlüssel, den nötigen Wert („ab 72px Seitenlänge passen alle 4“) und den nächsten Schritt. Jeder Fehlversuch oben war in einem Aufruf korrigierbar.
- S2ehrlichEMPTY_RENDER, DRILLDOWN_TARGET_MISSING und ICON_SHAPE_IGNORED machen stille Fehler sichtbar. Ein leeres Diagramm geht nicht durch.
- S3diszipliniertAuf 38k Zeilen Code kommen 35k Zeilen Tests, dazu vier Ratschen gegen Verschlechterung, echte Postgres-Migrationen in der Suite und Schema-Validierung beim Start.
6 · Erweiterungsmöglichkeiten
Was im Backlog schon angelegt ist, und wo darüber hinaus Luft ist.
| Feld | Im Backlog | Darüber hinaus |
|---|---|---|
| Diagramme | MZP-85 Simulationsmodus, MZP-72 Linse nach Knotenart, MZP-56 Share-Card und WebM | Routing mit Rang-Hilfsknoten, Auto-Fix-Modus, Serienlegende im SVG |
| Artefakte | MZP-64 SRI-Hashes und Import-Map, MZP-79 Markdown → PPTX/PDF | axe-core im Render-Check, einheitliches Prüfergebnis über alle validate-Tools |
| Wissen | MZP-69 .md je Seite, MZP-65 Checker für externe Links, MZP-47/48 Obsidian-Schleuse | Suche über Seiten und Tickets, lintWiki mit Reparaturvorschlägen, ADR-Lücken schließen |
| Plattform | MZP-18 Public View mit Stimmen, MZP-35 Refine-Tool | STATELESS, Preview-Store in der DB, MCP-Spec 2026-07-28 sobald das Java-SDK nachzieht |
7 · Zukunftsaussichten
Die Richtung stimmt. MZP ist von einem Template-Renderer (April) über eine Artefakt-Pipeline (August) zu einem Arbeitsplatz für Agenten mit Gedächtnis geworden: Wiki-Graph, Backlog und Diagramme im selben Server. Der Markt bewegt sich dorthin, wo MZP heute schon steht, nämlich zu Agenten, die Seiten und Diagramme als Endprodukt abliefern. Den Unterschied macht dabei die Qualitätssicherung und nicht das Hosting.
Das Tempo ist zugleich das Risiko. 72 erledigte Tickets in sieben Wochen stehen einem Wiki mit 40 toten Links und fehlenden ADRs gegenüber. Neue Fähigkeiten entstehen schneller als die Pflege der alten. Dazu kommt: Die Entwicklung hängt an einer Person, und jede neue Tool-Beschreibung kostet jeden Agenten Kontext.
Die nächsten sechs Monate entscheiden sich an drei Stellen. Erstens an der Verlässlichkeit der Prüfaussage (ok muss ok heißen). Zweitens an der Layout-Qualität, denn die Engine hat Breite genug, ihr fehlt Ordnung. Drittens am Transport, weil STATELESS und die neue MCP-Spec aus einem Einzelserver einen belastbaren Dienst machen. Die konkreten Vorschläge stehen auf der Empfehlungsseite.
- 2026-04Template-Publisher: 7 Freemarker-Templates, publishPage
- 2026-08Artefakt-Pipeline, Prüfkette, mzone-ui, Wissensgraph, Backlog (ADR-006, -009)
- 2026-09Diagramm-Engine mit 45 Typen, Viewer, Mermaid, Drill-down, Postgres-Volltext
- Q4/2026Einschätzung: Konsolidierung, also Prüfsemantik, Layout, STATELESS und Wiki-Hygiene
- 2027Einschätzung: lebende Reports, Agenten-Evals als Qualitätsmaß, Mehr-Instanz-Betrieb