Invisible Docs
GalerieTokens

Surfaces — die Konsumenten-Ebene

Eine Surface ist kein Framework-Bestandteil, sondern immer ein Konsument: die eine konkrete Seite mit konkretem Inhalt.

Zum Framework gehören nur das Format (JSON-Baum aus Nodes, Schema in schemas/) und der Renderer (invisible_render_surface()); die gespeicherten Seiten gehören dem jeweiligen Projekt. Details zur Grenze: Framework vs. Konsumenten.

Eine Surface wird nur an Tür 2 gebraucht (redaktionelle Seiten als gespeicherte Dokumente). Anwendungsseiten an Tür 1 kommen ganz ohne Surface aus — dort ruft PHP die Definitionen direkt auf.

Das Format

Reines JSON: ein Baum aus Nodes, jeder mit stabiler nodeId, Definitions-Referenz + gepinnter Version, Props, Slots, Event-Bindings und optional hideOn. Wohnort: surfaces/<scope>/<id>/ — im Framework selbst leer; die früheren Demo- und Admin-Surfaces liegen in archiv/surfaces/.

Was ein Node darf — und was nicht

  • ✔ Definition wählen, Props im Schema-Rahmen setzen, Slots regelkonform füllen, Events an registrierte Actions binden, semantische Tokens wählen, pro Viewport ausblenden
  • ✘ Klassen, Styles, Scripts, unregistrierte Definitionen/Actions, freie Token-Werte — Sicherheitsmodell

Draft/Publish-Workflow (unveränderliche Versionen, Gates, Migrationen) ist Teil des CMS-Produkts — seit 2026-08-10 in archiv/; die Lese-/Validierungsfunktionen bleiben Teil des Kerns.