Abgleich Quelltext · Band 7
Band 7: offene Funde gegen den MZP-Code
Jede Empfehlung aus Band 7 wurde gegen den Quelltext des Publishers geprüft. Hier stehen nur die Punkte, die im Code noch fehlen. Was schon umgesetzt ist, fehlt bewusst. Wo ein Fund nur zum Teil umgesetzt ist, steht nur der Restpunkt.
Kurzfassung
- Von 44 Funden ist keiner vollständig umgesetzt. Fünf sind teilweise umgesetzt; bei ihnen steht nur der offene Rest.
- Die größten offenen Hebel sind die Einbett-Route mit oEmbed, die Markdown-Auslieferung per Accept-Header und die Feed-Autodiscovery mit IndexNow.
- Die Tool-Oberfläche hat noch keine MCP-Annotationen (readOnly, idempotent, destructive). Das betrifft V7 und A5.
- Bibliotheken fehlen fast alle: KaTeX, JSXGraph, Observable Plot, Arquero, model-viewer, asciinema-player, MapLibre, PMTiles, web-vitals, OSV-Wächter und SBOM.
Restpunkte bei teilweise Umgesetztem
| Fund | Was schon da ist | Was noch fehlt |
|---|---|---|
| V2 Markdown per Accept | /llms.txt wird erzeugt | Auslieferung als text/markdown bei Accept-Header. Der Server kennt nur text/html. |
| V3 Feed | /feed.xml als Atom | Feed-Autodiscovery im HTML-Kopf, Limit auf die neuesten 50 Einträge, IndexNow-Ping beim Publish. |
| D1 Handbuch-PDF | PDF-Export über den Render-Dienst (MZP-142) | Paged Media: Seite X von Y, Kopf- und Fußzeilen, Lesezeichen (outline) und getaggtes PDF. BrowserPdfExporter setzt davon nichts. |
| A1 ADR nach MADR 4 | Seitenstatus mit supersededBy (V11) | Vorlage mit Status, Entscheidern, Considered Options und Consequences. ADR-Index und Lebenslauf fehlen. |
| B9 model-viewer | glb und gltf als MIME-Typen | Die Bibliothek unter /lib/ und die Gattung 3D-Objekt. |
Offene Funde
Nach Band-7-Kennung. Urteile wie in Band 7: übernehmen, Spike, lernen, beobachten.
Verbreitung
- V1 Einbett-Route mit oEmbed (übernehmen, 2–3 PT). Fehlt: /embed/{slug}, /oembed, Discovery-Links im Kopf. frame-ancestors bleibt für alle anderen Pfade gesperrt. Anschluss an MZP-56 (og:image) und MZP-167.
- V4 WebSub (beobachten).
- V5 Bridgy Fed (Spike, 0,5 PT). Braucht die Feed-Autodiscovery aus V3.
- V6 standard.site (Spike, 1,5–2 PT).
- V7 MCP-Spec 2026-07-28 (übernehmen, 2–4 PT, zusammen mit MZP-179). oneOf-Schema je Diagrammtyp, cachebare tools/list, Rate-Limit je Tool über Mcp-Method und Mcp-Name.
- V8 CIMD (Spike, 0,5–1 PT). Keycloak als Auth-Server ist nicht im Projekt.
- V9 MCP Server Card (Spike, 0,5 PT). /mcp/server-card fehlt.
Druck und Daten
- D1 Handbuch-PDF, Paged Media (übernehmen, Restpunkt siehe oben, 1–1,5 PT).
- D2 Vivliostyle.js (Spike, 2 PT). Inhaltsverzeichnis mit Seitenzahlen, Fußnoten. AGPL-3.0 vorher prüfen.
- D3 Observable Plot und Arquero (übernehmen, 1 PT). Beide fehlen unter /lib/.
- D4 DuckDB-WASM und Mosaic (Spike, 2–3 PT).
- D5 marimo (Spike, 1 PT, +2 PT für Export).
- D6 citeproc-java mit DOI und Zotero (übernehmen, 2–3 PT).
- D7 Sidenotes und Bibliographie (übernehmen, 1,5–2 PT). Vorbilder Tufte CSS und littlefoot.
Bildsprache
- B1 Iconify in der Diagramm-Engine (übernehmen, 2–3 PT). Die Engine kennt nur die eigenen 20 Knoten-Icons in diagram/icons.json. Lizenzfilter nach SPDX.
- B2 KaTeX 0.19 (übernehmen, 0,5 PT). Fehlt unter /lib/.
- B3 Temml (Spike, 2 PT). Formeln als MathML vorrendern.
- B4 JSXGraph (übernehmen, 1 PT). Fehlt unter /lib/.
- B5 MapLibre 6 und PMTiles (Spike, 2–3 PT). Endungen pmtiles fehlen in ArtifactMimeTypes.
- B6 sigma.js 4 mit graphology (Spike, 2–3 PT).
- B7 Backlinks je Seite (übernehmen, 1 PT). Komponente in mzone-ui, kein Lib-Import nötig.
- B8 Mediabunny (Spike, 2 PT).
- B10 @hpcc-js/wasm-graphviz (lernen).
- B11 Spark (Gaussian Splats) (beobachten).
Leser und Betrieb
- L1 OSV-Wächter und CycloneDX-SBOM (übernehmen, ca. 2 PT). Täglicher Job über api.osv.dev/v1/querybatch, Meldung LIB_VULNERABLE, _sbom.cdx.json je Artefakt.
- L2 Hash-CSP und Trusted Types (Spike, 2–3 PT).
- L3 Header-Hygiene (übernehmen, 0,25 PT). nginx setzt X-Frame-Options SAMEORIGIN, HSTS mit preload und nosniff. Spring Security setzt eigene Header dazu. Ziel: je Header nur eine Quelle.
- L4 Chrome Built-in AI (Spike, 3 PT).
- L5 web-vitals mit eigenem Beacon (übernehmen, 2–3 PT). Kein Beacon im Code.
- L6 asciinema-player (übernehmen, 1–1,5 PT). Endung cast fehlt in ArtifactMimeTypes.
- L7 vhs (lernen).
- L8 Expressive Code (lernen, 1 PT). Vokabular für mz-code-*.
- L9 transformers.js v4 (beobachten).
Architektur und Server
- A1 ADR-Vorlage nach MADR 4 (übernehmen, Restpunkt siehe oben, 2–3 PT).
- A2 Reladraw (Spike, 2–3 PT). Relative Platzierung als Eingabedialekt.
- A3 drawio-mcp (lernen, 2 PT). "In draw.io bearbeiten" als Rundreise.
- A4 Belegte Kanten (lernen, 1,5–2 PT). Feld evidence je Kante, Meldung "Kante ohne Beleg". Ticket 176.
- A5 Spring AI 2.0 mit @McpTool (übernehmen, 2–4 PT). Im Code fehlen readOnly-, destructive- und idempotent-Hints und Output-Schemas. Im pom steht nur der DeepSeek-Starter.
- A6 mcp-security (Spike, 1 PT). API-Keys, Origin-Prüfung, CIMD.
- A7 ask-Block (lernen, 1–2 PT).
- A8 A2UI und json-render (beobachten).
Live-Befund: offene Punkte
| Pfad oder Merkmal | Befund |
|---|---|
| Feed-Autodiscovery | Kein link rel="alternate" type="application/atom+xml" im HTML-Kopf. |
| og:image | fehlt; Share-Card gehört zu MZP-56. |
| Accept: text/markdown | wird ignoriert, es kommt text/html. |
| /lib/ und CORS | Kein Access-Control-Allow-Origin im Nginx. Nötig, sobald Seiten eingebettet oder aus fremder Origin geladen werden. |
| X-Frame-Options und HSTS | nginx und Spring setzen beide Header; siehe L3. |
| Gepinnte Libs | chart.js 4.4.6 und three 0.170.0 sind im Code. Neuere Versionen: chart.js 4.5.1, three 0.186.1. |
Reihenfolge
- Schnell, unter einem Tag: Header-Hygiene (L3), Feed-Autodiscovery mit Limit und IndexNow (V3), KaTeX unter /lib/ (B2), CORS für /lib/.
- Danach: oEmbed-Route (V1), Markdown per Accept (V2), Iconify in der Engine (B1).
- Mit MZP-179: MCP-Spec 2026-07-28 und @McpTool-Hints (V7, A5). Erst messen, wie viel das oneOf-Schema in tools/list kostet.
- Gattungen: MADR-Vorlage (A1), 3D-Objekt (B9), JSXGraph, Plot und Arquero (B4, D3), asciinema (L6), OSV-Wächter (L1), web-vitals (L5).
- Spikes nach Bedarf: Vivliostyle, MapLibre und PMTiles, DuckDB und Mosaic, marimo, Chrome Built-in AI, Mediabunny, sigma, Reladraw, standard.site, Bridgy Fed, CIMD.
Geprüft und nicht empfohlen
- Neue Dienste
- NLWeb, Plausible CE, Umami als Container, WeasyPrint, eigener ActivityPub-Server, Yjs und Automerge.
- Lizenz oder Pflege
- EventCatalog 5, Rive, Theatre.js, log4brains, adr-tools, Context Mapper, Paged.js, Mafs, gsplat.
- Zu groß für das Bundle-Limit
- WebLLM, Perspective, JupyterLite, dotLottie-web, Citation.js im Browser, MathJax 4.
- Doppelt zu Vorhandenem
- Cytoscape.js und cosmos.gl (sigma reicht), Hypothesis, giscus, Code Hike und Twoslash, Observable Framework und Evidence, docToolchain und Backstage TechDocs, Quarto.
- Falscher Zuschnitt
- A2A und AG-UI, eigene OpenAI-Apps-SDK-Integration, Embabel und Koog, KubeDiagrams, AsyncAPI, MCP-Sampling.