MZP · Empfehlungen · Claude Opus 5.5 · 2026-09-23

Konsolidieren, dann erweitern

Zwölf Empfehlungen für den mzone-publisher. Jede hat einen Beleg aus der Fähigkeitsanalyse, einen ersten Schritt und ein Abnahmekriterium. Dazu kommt, was ich ausdrücklich nicht empfehle.

Grundlage
mzp-faehigkeitsanalyse-opus-5-5 (Befunde B1–B13) und playground-opus-5-5
Vorläufer
Top-3 vom 2026-09-19: Volltextsuche umgesetzt (V28), STATELESS und axe-core offen und hier wieder aufgenommen
Vorbehalt
Aufwand in Personentagen (PT) und Nutzen sind Einschätzungen. Code-Anker sind geprüft, Ursachen nur dort, wo es dabeisteht.

Leitlinie

MZP hat in sieben Wochen 72 Tickets geschlossen und ist in der Breite fertig genug. Den nächsten Schritt bringt die Verlässlichkeit dessen, was schon da ist, nicht die nächste Fähigkeit. Ein Agent muss sich auf drei Dinge verlassen können: dass ok auch ok heißt, dass ein Diagramm ohne Koordinaten im ersten Anlauf gültig ist, und dass das Wiki nicht auf Seiten verweist, die es nicht gibt.

1 · Wahrheit
Prüfaussagen, die ein Agent ungelesen übernehmen darf.
2 · Erstanlauf
Die häufigsten Aufgaben gelingen mit einem Aufruf.
3 · Pflege
Der Bestand wird nicht schneller alt, als er wächst.
4 · Messen
Ergonomie ist eine Zahl, kein Gefühl.

Aufwand gegen Nutzen

Quadrant: Links oben (billig, hoher Nutzen) E1 Ehrliches ok, E2 STATELESS, E5 Wiki-Hygiene, E7 Kleine Ecken. Rechts oben (teuer, hoher Nutzen) E4 Agent-Evals hervorgehoben, E3 Transit-Routing, E6 Eine Suche, E9 axe-Gate, E11 Living Reports, E12 Spec und Cluster. Unten links E8 Tool-Diät, E10 Versionen.
Abb. 1 · Einschätzung, nicht gemessen. Gerendert von MZP (Diagrammtyp quadrant, Playground v4). Die Achsen heißen „billig/teuer“, weil längere Achsentexte aus dem Bild laufen (Befund B3).
#EmpfehlungBefundAufwandNutzen
E1Ehrliches okB10,5 PThoch
E2MCP STATELESSB50,5 PThoch
E3Transit-freies Auto-LayoutB22–4 PThoch
E4Agenten-Evals als Qualitätsmaßalle3 PTsehr hoch
E5Wiki-Hygiene mit ReparaturvorschlägenB4—zurückgestellt — Wiki deprecated
E6Eine Suche für Seiten und TicketsB102 PTmittel
E7Kleine EckenB3, B6–B9je < 0,5 PTmittel
E8Tool-DiätB120,5 PTgering
E9axe-core im Render-Check—2 PTmittel
E10Versionen ausdünnen statt kappenB111 PTgering
E11Lebende Reports—4–6 PTmittel
E12MCP-Spec 2026-07-28 und Mehr-InstanzB55+ PTspäter

Sofort: drei Dinge für zusammen etwa einen Tag

E1 · 0,5 PT
ok heißt ok. Heute publiziert ein Agent, der nur ok liest, Seiten mit JS-Ausnahmen.
E2 · 0,5 PT
STATELESS. Seit dem 2026-08-05 freigegeben, zweimal als erster Schritt empfohlen, eine Zeile Rollback.
E7 · Stunden
MZP-106, externe Fonts, Slug-Notice. Drei Fixes mit hohem Verhältnis von Ärger zu Aufwand.

Alle zwölf im Einzelnen

E1 · Ehrliches ok hoch0,5 PT

Beleg
ArtifactValidator.Report.ok() gibt errors.isEmpty() zurück. Die Befunde des Browser-Checks landen nur in notices und render.clean. Im Playground: ok:true neben PAGE_EXCEPTION, CONSOLE_ERROR und RESOURCE_FAILED, alle mit severity ERROR.
Vorschlag
Eine Notice mit severity ERROR macht ok falsch, egal aus welcher Stufe sie kommt. Wer eine Kunst-Seite mit bekanntem Konsolenrauschen publizieren will, setzt ausdrücklich renderStrict=false. Dasselbe Ergebnisschema {ok, blocking[], advisory[]} für alle validate-/publish-Tools.
Abnahme
Test: Bundle mit undefinedFn() ergibt ok:false, mit renderStrict=false dagegen ok:true plus Notice.

E2 · MCP auf STATELESS hoch0,5 PT

Beleg
application.yml:39 steht auf STREAMABLE. ADR-008 Phase 1 ist freigegeben, und die Top-3 vom 2026-09-19 nennen sie als ersten Schritt.
Vorschlag
Umstellen und die Tool-Reihenfolge in McpToolCatalog festschreiben (SHOULD der Spec 2026-07-28, hilft Prompt-Caches). Vorher klären, ob angebundene Clients Keepalive-Pings senden.
Abnahme
Neustart des Servers mitten in einer Agenten-Sitzung, der nächste Tool-Aufruf gelingt ohne Re-Initialisierung.

E3 · Transit-freies Auto-Layout hoch2–4 PT

Beleg
Ein architecture-Diagramm mit 9 Knoten ohne Koordinaten brauchte vier Anläufe. Drei scheiterten an TRANSIT_NOT_DASHED, das der Server selbst verursacht hat, der vierte kam mit 10 Kreuzungen und 21 Knicken durch. In diagram/layout/ und EdgeRouter gibt es kein Konzept für Hilfsknoten langer Kanten.
Vorschlag
Das klassische Sugiyama-Verfahren nachziehen: Eine Kante über k Ränge bekommt k−1 Hilfsknoten, die OrderingPass mitsortiert und Coordinates mit platziert. Ihre Positionen gehen als Waypoints an den EdgeRouter. Dazu optional autoFix=true, das verbleibende Transits selbst auflöst und quittiert.
Abnahme
Property-Test über zufällige gerichtete Graphen mit höchstens 9 Knoten: Jedes vollständig auto-gelayoutete Diagramm ist frei von TRANSIT_NOT_DASHED. Die mittlere Zahl der LAYOUT_QUALITY-Kreuzungen über einen festen Korpus wird zur Ratsche.

E4 · Agenten-Evals als Qualitätsmaß sehr hochumgesetzt · MZP-113

Beleg
Jeder Befund dieser Analyse ist erst durch Ausprobieren sichtbar geworden, nicht durch die rund 1400 Tests der Suite. Die Tests prüfen, ob der Server seine Regeln einhält. Ob ein Agent mit diesen Regeln im ersten Anlauf zum Ziel kommt, prüfen sie nicht.
Zwei Stufen
Die deterministische Stufe schickt feste Eingaben an Produktion und ist das Gate (grün/gelb/rot). Sie beantwortet, ob ein Deploy etwas kaputt gemacht hat. Die LLM-Stufe gibt je Aufgabe nur den fachlichen Auftrag an einen frischen Agenten (Sonnet 5 und Haiku 4.5, je drei Läufe). Der Agent sieht ausschließlich die MZP-Tools. Diese Stufe misst Ergonomie und warnt nur, rot färbt sie nie. Bei einem Widerspruch zählt die deterministische Stufe.
Korpus
10 Aufgaben ohne Wiki: Diagramme, Artefakte und ein Grenzfall. Scheitert eine Aufgabe bekanntermaßen, trägt sie knownIssue und zählt gelb. Wird sie trotzdem grün, meldet der Lauf UNEXPECTED_PASS, und der Marker muss raus.
Messgrößen
Aufrufe bis zum gültigen Publish, Fehlversuche je Code, Server-Qualität und stille Fehler. Sie stehen nebeneinander und werden nie zu einer Zahl verrechnet. Stille Fehler prüft ein lokaler Browser, nicht der Server selbst.
Ablauf
Von Hand nach jedem Deploy über den Skill /mzp-eval. Jeder Lauf ergibt einen Report mzp-eval-JJJJ-MM-TT mit results.json und Protokoll, der vorige Report ist die Baseline. Der Vertrag steht im Repo unter docs/agent-workflows/evals/README.md.
Startwerte
Aus diesem Playground: architecture ohne Koordinaten 5 Aufrufe, radar 2, quadrant 2 plus ein unentdeckter Fehler, Report-Artefakt 2.
Baseline
mzp-eval-2026-09-23: Gate grün mit 5 × grün, 1 × gelb (E3, Auto-Layout), 4 × UNEXPECTED_PASS (E1 und E7 sind live) und 0 × rot.

E5 · Wiki-Hygiene mit Reparaturvorschlägen zurückgestellt — Wiki deprecated

Status
Zurückgestellt. Der Wiki-Use-Case ist deprecated (Entscheidung vom 2026-09-23). Beleg und Vorschlag bleiben als Stand dieses Tages stehen.
Beleg
lintWiki: 21 von 61 Wiki-Seiten veraltet, 45 ohne crossRefs, 40 tote Links (davon rund 30 aus wiki-index). ADR-001 bis -005 und -007 werden verlinkt, existieren aber nicht, obwohl AGENTS.md vor jeder Revision das Lesen der ADR verlangt.
Vorschlag
(a) Einmalig aufräumen: tote Links aus wiki-index entfernen und die fehlenden ADRs rekonstruieren oder als archivierten Platzhalter mit „Begründung verloren“ anlegen. (b) lintWiki schlägt crossRefs aus vorhandenen, nicht gespiegelten page_link-Kanten vor und liefert einen fertigen mergePageContext-Aufruf als Vorschlag, ohne ihn selbst auszuführen.
Abnahme
0 tote Links, keine verlinkte ADR fehlt, lintWiki liefert für jede Seite ohne crossRefs mindestens einen Vorschlag, wo Kanten existieren.

E6 · Eine Suche für Seiten und Tickets mittel2 PT

Beleg
Die Ist-Analyse vom 2026-09-22 steht nur in Ticketrümpfen (MZP-109..112). fullTextSearch "Ist-Analyse" liefert 0 Treffer. Mehrwortsuchen ohne Operator enden schnell leer, und es gibt keine Trefferauszüge.
Vorschlag
scope=pages|tickets|all auf demselben tsvector-Muster wie V28. Dazu Auszüge über ts_headline (escaped, die Funktion ist nicht XSS-sicher) und bei 0 Treffern ein automatischer ODER-Fallback mit Notice. searchBranding bekommt Synonyme für die vier vibes.
Abnahme
„Ist-Analyse“ findet MZP-109..112. Eine Suche ohne Treffer liefert Vorschläge statt einer leeren Liste.

E7 · Kleine Ecken mittelje Stunden

EckeFix
MZP-106 renderedAt (B6)put statt putIfAbsent, Aufrufer-Wert vor dem Persistieren verwerfen
Google Fonts in Templates (B7)Breiter als gedacht: 9 von 10 Templates laden Google Fonts (post-single, landing-hero, gallery-wide, info-card, quote-feature, split-editorial, timeline-journey, wiki-page, gamma-deck). Eine Migration stellt sie auf /lib/fonts-maierzone@1.0.0/ um
visualProof blind für Text (B3)Im Render-Dienst getBBox() jedes <text> gegen die viewBox prüfen und als TEXT_CLIPPED melden. Im Quadranten-Renderer die Achsentexte einrücken oder umbrechen
Slug-Fehler (B9)strukturierte Notice INVALID_SLUG mit suggestion: "playground-opus-5-5"
zones[].nodes (B9)als Alias zu node.zone annehmen, weil es die naheliegende Schreibweise ist
typeBlocks (B9)ein Schlüssel typeBlocks wird entpackt oder mit „auf die oberste Ebene“ gemeldet
Radar/Pie-Legende (B8)Serienlegende und Titel ins SVG, damit der Export ohne Seite lesbar ist
Links in mz-metamzone-ui 1.8.1: Linkfarbe für .mz-meta, .mz-lead, .mz-prose und Tabellen in beiden Themes (auf dieser Seite per eigenem CSS nachgetragen)

E8 · Tool-Diät gering0,5 PT

Beleg
Die 40 Tool-Beschreibungen gehen in jeden Agenten-Kontext. publishRawPage und publishRawPageCompressed sind laut eigener Beschreibung Alias-Pfade, ohne Overwrite-Schutz und ohne Versionen. searchBranding liefert bei einem Treffer bereits das volle Profil von getDesignMdFor.
Vorschlag
Nutzung aus request_audit ziehen. Alias-Tools bekommen eine DEPRECATED-Notice und fallen nach 30 Tagen ohne Aufruf weg. getDesignMdFor geht in searchBranding auf. Die Bytes der tools/list-Antwort werden als Ratsche gemessen.
Abnahme
Die tools/list-Antwort wird kleiner und kann nicht unbemerkt wieder wachsen.

E9 · axe-core im Render-Check mittel2 PT

Beleg
Aus den Top-3 vom 2026-09-19 übernommen und weiter offen. Fast alle Seiten schreiben Agenten mit freiem HTML. Zugänglichkeit prüft niemand.
Vorschlag
Zuerst ein Pilot mit axe.run() gegen 20 bestehende Seiten, um das Rauschen zu messen. Danach Meldungen als advisory-Notices im Render-Dienst, anfangs ohne Blockade. Erster Prüfling ist der Diagramm-Viewer (Zielgröße und Fokus seiner Knöpfe).
Abnahme
Die Rauschquote je Seitentyp ist dokumentiert, und validateArtifact liefert A11Y_*-Notices.

E10 · Versionen ausdünnen statt kappen gering1 PT

Beleg
max-versions-per-slug: 5 (application.yml:115). Dieser Playground hat den Deckel in einer Stunde erreicht.
Vorschlag
Die letzten fünf behalten, dazu je Monat die letzte Version. wiki-adr-* behalten alles. Assets sind ohnehin inhaltsadressiert, der Speicher wächst also moderat (Einschätzung).

E11 · Lebende Reports mittel4–6 PT

Idee
Die Kacheln in der Fähigkeitsanalyse („40 tote Links“) sind ab morgen falsch. Ein Artefakt könnte in metadataJson eine Datenquelle deklarieren (stats, lint, backlog), und der Server legt beim Ausliefern eine aktuelle _data.json daneben. Weil /published/ schon mit no-store ausliefert, ist der Rest Lesecode.
Grenze
Nur öffentliche Aggregate, keine Ticketrümpfe und keine priv--Inhalte. Ein Snapshot bleibt als Datei im Bundle, damit Versionen reproduzierbar bleiben.

E12 · MCP-Spec 2026-07-28 und Mehr-Instanz später5+ PT

Stand
Blockiert im Java-SDK (kein server/discover in 2.0.1). Der Preview-Store im Heap (ADR-008 B1) bindet an eine Instanz, obwohl Review-Links schon in der Datenbank liegen.
Vorschlag
Als Watchlist-Eintrag führen, nicht als Vorhaben. Sobald das SDK nachzieht, zuerst den Preview-Store auf die Datenbank legen, dann die Spec angleichen.

Was ich ausdrücklich nicht empfehle

  1. N1Budget
    Das 9/12-Budget anheben. Drill-down (MZP-111) ist die bessere Antwort. Schon bei 9 Knoten ist das Layout der Engpass, größere Diagramme würden es verschärfen.
  2. N2Breite
    Weitere Diagrammtypen oder Skins vor E3. 45 Typen und 11 Skins sind genug Breite. Jeder weitere Typ vervielfacht die Layout-Fälle, die E3 erst beherrschbar macht.
  3. N3Effekte
    Weitere fx-Module in mzone-ui. 48 Module (Physik, Optik, Energie …) sind mehr, als Reports brauchen, und jedes will gepflegt sein. Eine Linkfarbe fehlt dagegen noch.
  4. N4Sync
    Zwei-Wege-Sync mit Obsidian. ADR-009 begründet das Nein, und MZP-47 hält sich zu Recht an „einbahnig“.
  5. N5Mermaid
    Mermaid sequenceDiagram nachrüsten. Der bewusste Ausschluss in MZP-110 stimmt, sequence ist über Lifelines sauberer.

Reihenfolge

  1. bis 2026-10-02
    E1, E2, E7: rund 2 PT, alles klein, alles mit sofortiger Wirkung für jeden Agenten.
  2. Oktober
    E4 zuerst (liefert die Messlatte), dann E3 dagegen gemessen.
  3. November
    E6, E8, E9-Pilot.
  4. Q1/2027
    E10, E11, dazu E12, sobald das Java-SDK die Spec trägt.

Woran man den Erfolg misst

MessgrößeHeuteZiel Q1/2027Quelle
Aufrufe bis gültiges architecture-Diagramm ohne Koordinaten51E4-Korpus
Auto-Layout mit Transit-Fehler3 von 4 Anläufen0Property-Test E3
validateArtifact ok:true trotz ERRORjanieTest E1
Templates mit externen Fonts9 / 100Migrations-SQL
MCP-TransportSTREAMABLESTATELESSapplication.yml
Alias-Tools in tools/list20getCapabilities

Die Werte aus diesem Report lassen sich mit denselben Aufrufen jederzeit nachmessen. Ein erneuter Lauf in drei Monaten zeigt, ob die Konsolidierung gegriffen hat. Das ist auch der Kern von E4.