TGV · Design-Kanon

⚡ Generative Seiten — wie TGV sich selbst baut

Neun Bau-Phasen, je ein verantwortliches Werkzeug — und der eine Kanon-Katalog, an den alles gebunden wird, damit nichts doppelt gebaut und jede Verbesserung maschinell gesichert wird. Neu verdrahtet: Screen-Factory-Vertrag, Propagation-Pfad sowie Icon- und Chart-Status als Taxonomie-Anschluss.

steht & angewandt Lücke — noch nicht kanonisch gebunden

BildDer Bau-Fluss

Von Sinn bis Deploy. Die orangen Phasen sind die Nahtstellen zum Kanon — genau dort fehlt heute die Bindung (Funktionen & Icons).

0
Sinn & ZeitgewinnSCREEN-COMPOSER · Gate Asteht

Dialog statt Ansage: KAI schlägt Zweck + Zeitgewinn vor → du validierst/korrigierst. Das Ergebnis ist eine Vertrags-Eigenschaft {intent · zeitgewinn} — verankert an mehreren Stellen, nicht nur im Hero.

Werkzeug: SCREEN-COMPOSER Gate A · heute Agent+JC im Chat · Ziel: in-app-Dialog
1
Wiederverwendung prüfenGate B → KatalogeLücke

Existiert der Baustein schon? Heute wird nur die Design-Seite durchsucht — der Funktionskatalog fehlt, also können Funktionen doch neu programmiert werden.

Werkzeug: katalog.html · regelwerk.html · Funktionskatalog = zu bauen
2
Bedarf & echte DatenGate C · MCP/Skillssteht

Kernfragen klären und einen echten Daten-Snapshot ziehen — nie Fantasiezahlen.

Werkzeug: MCP get_* · Skills-Registry
3
Screen-Typ & VorgabenGate D · Typ-Tabellesteht

Inbox · Pipeline · Dossier · Übersicht · Klärung — je Typ fest: Sortierung, Datums-Achse, Pflicht-Bausteine, Kern-Aktion.

Werkzeug: SCREEN_COMPOSER_SKILL.md
4
Anatomie & RegelnGate E · Regelwerksteht

Die 5-Zonen-Anatomie (Header · Hero · Main · Kai · Composer) und die R-V4-Regeln legen den Rahmen fest.

Werkzeug: regelwerk.html · foundation.css
5
Bau & Renderengine.js + FX + SkillsLücke

Der kanonische Renderer setzt die Seite aus Bausteinen zusammen — nie handgeschriebenes Markup. Heute drei Engine-Stände, nicht vereint (darum rendern die Icons nicht).

Werkzeug: engine.js · TGV_FX (fxRender/wire) · skillFetch
6
KonformitätassertConformanceLücke

Der Harness prüft bei jedem Laden jede Regel als echte Assertion (heute 20 Checks, „KONFORM") — aber er prüft weder Icons noch Funktions-Reuse, darum das falsche Grün.

Werkzeug: TGV_CONFORMANCE (core_shell) · katalog-Harness
7
Stadium & FreigabeV4-Cockpitsteht

Ehrlich sichtbar: Mockup · Staging · Live — pro Baustein. Du gibst frei.

Werkzeug: #/v4-cockpit
8
Deploydeploy.yml → nginxsteht

Ein Merge auf master liefert core_shell + CSS über den SSH-Wrapper an app.startact.ai.

Werkzeug: .github/workflows/deploy.yml

Sinn & Zeitgewinn ist eine Vertrags-Eigenschaft, nicht nur Hero-Text. Aus EINEM Feld {intent · zeitgewinn} gespeist und verankert an: Hero-Intro · Prompt-Chips (die Wege zum Zeitgewinn) · KAI-Initiative (proaktive Meldung mit konkreten Fällen) · Empty/Loading-States · und dem Harness-Check „liefert der Screen den erklärten Zeitgewinn?". So ist der Zweck prüfbar, nicht Dekoration. Und Phase 0 ist ein Dialog: KAI schlägt vor, du validierst — das ist zugleich der Einstieg in den in-app super_admin-Composer.

A–EDer Composer in Serie — Intention × Agent × Reuse für GANZ TGV

Tower-Strukturierung 13.07. (JC: „wir gewinnen an Strukturierung"): Jede Seite entsteht generativ durch die 5 Gates A–E des SCREEN-COMPOSER — und zwar in Serie über alle 26 Screens (Gesamt-Mapping). Phase 0 dieses Dokuments IST Gate A: die INTENTION (Muster: KAI_INTENTION_SSOT — eine Quelle speist System-Prompt · Hero · i18n). Fortschreibung 28.07. (JC-GO via Tower#28 — Namens-Kanon zwei Schichten): SCREEN-COMPOSER = der Skill/die Hand (die Methode: 5 Gates A–E + U0–U10 + 9-Phasen-Kanon — existiert als SSOT SCREEN_COMPOSER_SKILL.md, dort jetzt mit Intention-Prompt §🎯) · AGENT-ARCHITEKT#01 = das Gehirn (entscheidet die Komposition aus dem Intent; Name JC-bestätigt; heute KAI-Dirigent + UX-Agent, Vision = in-app via ADMIN#01). Zwei Modi KI/Manuell durch dieselben Gates; Gate-Output = Screen-DEFINITION, nie Markup (React-agnostisch); Bindung auf 4 Ebenen PROMPT·SCHEMA·GUARD·STADIUM. Ziel-Bild: die self-extending App.

GateFrageWerkzeug / Quelle
A · IntentionWOZU die Seite? Zweck + Zeitgewinn als Vertrag {intent, zeitgewinn} — KAI schlägt vor, JC validiert (Dialog, nie Ansage)KAI_INTENTION_SSOT.md (Muster) · User-Stories A–U
B · Reuse-CheckWas EXISTIERT? ✅/⚠️/❌ mit Datei:Zeile — „NIX bauen was wir haben" (R-V4-19)V3_INTENTION_AGENT_MAPPING.md · Katalog · Skills-Registry
C · Daten & AgentWelcher Agent + welche Skills liefern? (KAI = Konversation · ORCH = Router · RAG = Wissen · Skills = Hände)Agenten-Landschaft (Mapping §3) · MCP-Toolbelt
D · Screen-TypWelche Anatomie/Bausteine? (5 Zonen, Katalog-Komposition, nie frei). Screen-Template-Bindung (JC 28.07.): SCREEN_KANON trägt je Screen typ+bausteine aus der Screen-Typen-Taxonomie — Composer = EINE SSOT-Implementierung, Scope = Hero (K-11), Work-Mode-Bank = K-17. So bauen Screen-Composer + Architekt aus der INTENTION — der Weg RAUS aus dem Flicken.Komponenten-Landkarte · engine.js · Screen-Typen
E · U-RegelnVerhalten geprüft (U0–U10 + Harness KONFORM) — dann Stadium-Gate + JC-AbnahmeSCREEN_COMPOSER_SKILL.md · assertConformance

Erster kompletter A–E-Durchlauf: die Seite „Frage KAI" (Gate-Report liegt vor) — sie ist der Beweis, dass der Prozess trägt. Gesamt-Programm: das V3-Mapping ordnet ALLE 26 Screens (3 Ebenen: Nav-Gruppen · 12 native Sektionen · 26 Pipeline-Karten in den 5 Finanzen-Stufen) je mit Intention + Agent + Reuse-Stand + US-Thema — und empfiehlt die A–E-Reihenfolge nach Reuse-Clustern. Warum das nötig wurde: die Prozess-Wurzel-Analyse (SEITENBAU_PROZESS_WURZEL_UND_GARANTIE.md) zeigt, warum früher am Kanon vorbei gebaut wurde — die Staging-Garantie schließt das. Quellen: 01_ITERATIONS/CONTROL_TOWER_HANDOFF/V3_INTENTION_AGENT_MAPPING.md · GATE_REPORT_FRAGE_KAI.md · SEITENBAU_PROZESS_WURZEL_UND_GARANTIE.md · Anschluss: Chatbot First §4 (Intention-SSOT) · KI-First §4 (Agenten).

VertragScreen-Factory — was ein Screen liefern MUSS

Das ist der fehlende Baukasten-Vertrag zwischen deiner User-Intention und einer echten Seite. Eine Änderung ist erst sauber vorbereitet, wenn diese Felder ausgefüllt sind — sonst propagiert sie zufällig statt systematisch.

FeldPflichtStatusSSOT / Anwendung
intentZweck + Zeitgewinn in einem Satz; muss Hero, Empty-State und KAI-Initiative speisen.🟡KAI_INTENTION_SSOT.md · Gate A
screen_typeGenau ein Typ: dialog · inbox · klaerung · pipeline · uebersicht · dossier · formular · admin · system.🟡Taxonomie screen-typen · V3-Mapping §2
data_sourcesWelche MCP-/Skill-/View-Daten liefern Wahrheit; keine Fantasiezahlen, keine Frontend-Keys.✅Gate C · Skills-Register · RLS-Regeln
k_idsPflicht-Bausteine aus Komponenten-Katalog; neue Komponente nur mit K-ID und Regeln.✅komponenten_data.js · konzept_komponenten.html
fx_or_skillsFunktion nur aus FX/Skill-Katalog oder als neuer registrierter Vertrag; kein Screen-lokaler Sonderbau.🟡TGV_FX · 02_SKILLS/_registry.yaml · Funktionskatalog noch zu vereinen
icon_slugsNur Slugs aus dem Icon-Manifest; Emoji/SVG lokal nur begruendeter Fallback.✅Icon-Systematik · icons-global.json · Guard gegen unbekannte Slugs
chart_specsCharts nur über TGVRenderers.chart(spec, ctx); erlaubte Typen: line, area, bar, stacked-bar, pie.🟡tgv_renderers_chart.js · costs.html
workbench_zoneWo lebt das Ergebnis: sidebar, header, context, composer oder result_panel?🟡konzept_chatbot_first.html#workbench
module_packageWelches Produkt-/JC-Modul nutzt oder erzeugt der Screen: Dokumente, Buchhalterpaket, Reconciliation, RKA, Verträge, Projekt A/B?🟡screen_factory_contracts.json
menu_scopeWo erscheint der Screen im linken Menü/Rail, und für wen: User, Mandant, super_admin?🟡screen_factory_contracts.json
abnahmeGate A–E + Harness + Live-Link; Tower#29 nimmt zuerst den Vertrag, dann den Screen ab.📝Roadmap · Gate-Report · Guard noch zu formalisieren

Taxonomie-Anschluss: screen-typen · screen-template-vertraege · propagation-pfade · icons · chart-typen in taxonomie_data.js. Maschinenlesbarer Vertrag: screen_factory_contracts.json; Guard: 08_OPS/check_screen_factory_contracts.py. Damit ist der Vertrag nicht nur sichtbar, sondern erstmals pruefbar; Code-Enum und breitere Screen-Abdeckung sind die naechsten Root-Fixes.

Vertrag für VIER Gegenstandsarten — nicht nur für Screens E-69 · JC 07.08.

Der Screen-Vertrag oben ist der bewährte Fall — 12 Verträge, 22 Pflichtfelder, Guard grün seit 29.07. ⛔ Er wird nicht kopiert, er wird erweitert. Dieselbe Datei-Idee, dieselben Kernfelder, derselbe Prüfer-Ansatz.

GegenstandKernfelderStand
Screen22 Felder, intent zuerst · abnahme · next_guard✅ 12 Verträge · Guard grün
Skill / Agentintent · Zusagen (was ist danach immer wahr, inkl. Fehlverhalten) · Anschluss (rein/raus + was er anfassen darf) · next_guard🟡 Registry vorhanden, Zusagen fehlen
Promptwie Skill — ⛔ plus Abnahmetest: Fragen mit erwartetem Verhalten📝 nichts — siehe Kasten unten
AbsichtNummer · Zustand · Ergebnis · Spur · gedeckte Zusagen · Fertigungsgrad📝 Konzept §6 (E-67)
⛔ Die Prompt-Zeile ist die dringendste. KAIs wichtigste Regel — „meine/mein X ist immer eine DATEN-Frage" — lebt als Text in 08_OPS/chat_engine/grounding.py. Kürzt jemand diesen Absatz, gibt es keinen Fehler: KAI antwortet nur wieder mit der allgemeinen Anbieter-Beschreibung statt in den Unterlagen zu suchen — genau die Antwort, über die JC sich am 26.07. beschwert hat.
⭐ Ein Fehler im Code schreit. Ein Fehler in einem Prompt flüstert.

⛔ Und die Lösung ist NICHT „schreib die Regel in Code" — das wäre der Rückschritt weg von KI-First. Der Prompt wird ein Baustein wie jeder andere: mit Vertrag, Version und Abnahmetest. Das Muster ist live erprobt — Annas Kostja hält seinen Prompt als EINE Quelle mit Sofort-Wirkung ohne Deploy.
KI-First heißt nicht: alles in den Prompt. Es heißt: der Prompt ist ein Werkstück mit Schild — genau wie ein Skill.

Vier Zustände — „geprüft" ist nicht „sichtbar" E-69

geschrieben → verdrahtet → geprüft → ⭐ SICHTBAR.
⛔ Die ersten drei leben alle im Repo. Keiner heißt, dass der Mensch es sehen kann. Zwischen master und dem Live-Server liegt der Deploy — „es steht auf master" heißt nicht „du kannst es sehen".
⭐ Screens haben dieses Tor längst (Gate E: live + Voll-Shell-Bild-Beweis). Konzeptseiten haben keines — deshalb konnte am 07.08. ein Abschnitt über auffindbares Gedächtnis unauffindbar bleiben (404 auf einen Live-Link).
Regel: Eine Aussage ohne next_guard ist „geschrieben", nicht „fertig" — und eine, die nicht deployt ist, existiert für den Menschen nicht. Owner der Lücke: der VERDRAHTER.
⛔ Fortschreibung 16.08.2026 — „sichtbar" HAT eine Anzeige, und die Anzeige ist privat (Register #459).
Das Punkt-System im Shell-Menü ist das sichtbare Ende genau dieser Leiter (grün = geprüft · ★ = Design + Daten). JC am 16.08. wörtlich: „Werden die Punkt-Farben aktualisiert? Keiner sagt grün oder Stern!"
Gemessen: die Verdikte leben ausschliesslich im localStorage des jeweiligen Browsers — 06_DASHBOARD/core_shell.html:4779 (VKEY="tgv-conf-verdict") · :4780 (verdicts()) · geschrieben nur vom eigenen Rundgang (:4789).
⭐ Die Folge ist konzeptionell, nicht kosmetisch: der Zustand „geprüft" entsteht auf dem Server (Maschinen-Messung, eingeloggt), die Anzeige „sichtbar" liest ihn im Browser — dazwischen fehlt der Rückfluss. CANONs Messung „5/7 grün" konnte JCs Anzeige nie erreichen; auf einem Zweitrechner beginnt alles bei null. Das widerspricht #442a („die MASCHINE macht grün, nicht JC") und ist für ★ per Definition unmöglich, weil die Daten-Achse skill-seitig entsteht (#443).
Richtung — kein Neubau, die Senke existiert: Verdikt-Quelle = letzter Messlauf je Route (08_OPS/out/uxaudit/*.md · agent_events), der lokale Rundgang ÜBERLAGERT sie nur, wenn er frischer ist; Tooltip nennt Messzeit und Messenden. Bis dahin die ehrliche Zeile: „Punkt = dein Rundgang in diesem Browser". Owner: CANON-GARANTIE#01 (Welle E4/E5).
Verallgemeinert: Der vierte Zustand braucht nicht nur einen Deploy, sondern einen ANZEIGE-Kanal — und ein Kanal, der nur im Browser des Betrachters existiert, kann eine Maschinen-Wahrheit nie transportieren.
⭐ Was die vier Zustände erzwingt — die Frage des fehlenden Master-Prüfers (Hebel №1, Codex-Bericht 28).
Die Leiter ist als Maschinen-Konstante erfasst (08_OPS/build_konzept_index.py:51) und der Index vergibt jeder Aussage eine Adresse. Aber nichts hindert jemanden daran, „verdrahtet" hinzuschreiben. Der next_guard fast aller Aussagen zeigt auf 08_OPS/check_konzept_master_contract.py — eine Datei, die nicht existiert (im Verzeichnis-Listing von 08_OPS/ geprüft, 16.08.).
Gemessen am Bestand (KONZEPT#01, 16.08.): von den 63 Aussagen, die Codex einzeln durchsucht hat, tragen 34 einen Beleg — alle 34 lösen sich auf (Datei existiert, Zeile liegt im Bereich), 8 davon aber ohne Zeilennummer. ⛔ Nur 8 zeigten auf einen Guard, der als DATEI existiert; die übrigen next_guard-Einträge sind Wunsch-Namen („Datenfluss-Master-Guard", „Rollenmatrix-Guard"). Eine Aussage, deren Prüfer ein Name ist, ist nicht geprüft — sie ist geplant.
Die vier Fragen, die der Master-Prüfer stellen muss (Spezifikation an Tower, Bau ungeplant): ① Zustand gültig — nur die vier Wörter, kein „unbekannt" als Ausweiche ② „verdrahtet" ⇒ Datei:Zeile, die auflösbar ist (Datei existiert, Zeile im Bereich) ③ „geprüft" ⇒ next_guard ist ein PFAD auf eine existierende Datei, nicht ein Name ④ „geschrieben" ⇒ gesucht_in ist gefüllt — R-193 in Feldform: Abwesenheit gilt nur so weit, wie die Liste reicht, die sie geprüft hat.
⭐ Warum ③ und ④ das eigentliche Paar sind: ③ verhindert die geschönte Behauptung nach oben, ④ verhindert die faule Behauptung nach unten. Ohne ④ wird „geschrieben" zum bequemen Ablageort für alles, was niemand gesucht hat — und der Rückstand sieht ehrlich aus, ohne es zu sein.

PfadPropagation — wie deine Änderung überall ankommt

Der frühere Bruch war nicht die Idee, sondern die Weiterleitung: Festlegung im Chat → irgendwo dokumentiert → nicht zuverlässig im Screen. Der neue Pfad macht aus jeder Festlegung eine abnehmbare Kette.

SchrittWas passiertOwnerBeweis
1 · JC-IntentionÄnderung als Nutzermehrwert formulieren, nicht als isoliertes UI-Wort.JC + TowerRoadmap-Zeile / Gate-A-Notiz
2 · TaxonomieNeue Achse oder neuer Wert wird in der passenden Taxonomie sichtbar.TAXO#01taxonomie_data.js
3 · KatalogKomponente/Funktion/Icon/Chart erhält genau eine autoritative Quelle.DESIGN#01 / DATAVIZ#01 / PLAT#05K-ID · Skill · Icon-Slug · Chart-Whitelist
4 · Renderer/SkillDie Anwendung konsumiert den Katalog statt lokaler Kopie.Implementierungs-LaneCode-Call, z.B. safeIco oder TGVRenderers.chart
5 · ScreenScreen-Vertrag nennt Typ, Daten, Bausteine, Funktionen und Link.SCREEN#01Gate-Report / Screen-Kommentar
6 · HarnessRückfall wird rot: lokales Icon, direkter ECharts-Aufruf oder fehlender Vertrag darf nicht grün bleiben.AGENT-UX#01 / Tower#29Negativ-Test + CI/Guard

StatusIcons & eCharts — klar verdrahtet oder noch Lücke?

Beides existiert im Repo. Der Unterschied ist wichtig: vorhanden ist nicht automatisch angewandt und geprüft.

BausteinVorhandenAnwendungStatus bis Freitag
Icon-Generator96 Slugs, Manifest, Sprite, PNG/SVG, Contact-Sheet, Generator-Spec und Guard.Icon-Systematik zeigt Bedeutung, Kontext, Ersatzsymbol und Erweiterungsweg.✅ Menschlich sichtbar + Screen-Factory prueft unbekannte Slugs; flächiger Runtime-Emoji-Scan bleibt naechster Ausbau.
eChartsVendored /vendor/echarts.min.js plus TGVRenderers.chart().costs.html nutzt stacked-bar über Renderer; keine direkten ECharts-Calls im Screen.🟡 Repo-seitig verdrahtet; Live-Link/DNS hier nicht verifizierbar.
Chart-TypenWhitelist: line · area · bar · stacked-bar · pie.Spec muss Daten vom Aufrufer bekommen; Renderer holt nie selbst Daten.✅ Taxonomie aktualisiert; Guard blockt direkte ECharts-Nutzung ausserhalb Renderer.

Sichtbar verdrahtet: Icon-Systematik mit Katalog, Generator-Vertrag, Einsatzregeln und Projekt-Typ-B-Erweiterung; speziell: Serien / Projekt Typ B.

KernDer eine Kanon-Katalog

Zwei Regale, eine Quelle der Wahrheit. Der Composer wird gezwungen, hier zuerst zu suchen; der Harness sichert, dass alle es anwenden.

KANON-KATALOG (SSOT)Einmal registriert · überall gültig · maschinell gesichert

① Komponenten — was aussieht

Visuelle Bausteine mit ihrem Render-Vertrag. Existiert & funktioniert (katalog.html, Harness KONFORM).

klaerung_cardapproval_carddata-tablesteckbriefscope-framesrc-link

② Funktionen — was tut

FX (render+wire) · ~45 Skills · Agenten · Icons — je mit Vertrag. Heute fragmentiert, nicht EIN Katalog.

composerskillFetch·45detect-duplicaterag-searchIcon-Set (Waise)FX ↔ Skills getrennt
Der Zwang & die Sicherung: SCREEN-COMPOSER Gate B prüft ZWINGEND beide Regale · eine Konformitäts-Regel „keine screen-lokale Komponente/Funktion/Icon, wo ein Katalog-Eintrag existiert" lässt den Harness ROT werden, sobald jemand daran vorbei baut. So kann Neu-Programmierung nicht mehr still durchrutschen.
⭐ Der erste durchgezogene Beweis dieses Kapitels — Composer 11 → 1 (#442c, COMPOSER#01, 15.08.2026, PR #1769).
Die Bestandsaufnahme fand 11 Stellen, die Composer-MARKUP selbst emittierten (nicht 7 — ehrlich nachgemessen): engine.js · core_shell iaComposerBody · fragekai2 · rka2 · abgleich2 · inbox2 · verlauf2 · versand2 · projekt2 · rka_chat · dokumente2 mit eigenem .composer-Vokabular.
Die Wurzel war nicht Nachlässigkeit, sondern eine fehlende Hand: die Engine exportierte zwar den Renderer, aber keinen Bauer — Eigenbau war der Weg des geringsten Widerstands. Genau die Lücke, die dieses Kapitel „zwei Regale, eine Quelle" schliessen soll.
Der Fix ist das Muster, nicht der Einzelfall: EINE Engine-Heimat exportiert das Markup — 01_ITERATIONS/DESIGN_01_DESIGN_SYSTEM_OWNER/engine.js:2663 composerHtml(cfg) · :2690 mountComposer(host,cfg) · :3323 Export als K-16-Heimat; die Flächen deklarieren nur noch ihren Slot ([data-composer-mount], :2731). Der Renderer selbst wurde Konsument seiner eigenen Heimat (:961-962) — kein Sonderweg für den Erfinder.
⭐ Und erst der Ratchet macht es haltbar: 08_OPS/check_composer_heimat.py stellt EINE Frage — „emittiert irgendeine Fläche ausserhalb der Heimat Composer-Markup?" — mit vier benannten Emissions-Signaturen, benannter Reichweite (R-193) und Sabotage-Selbsttest je Lauf. Er fand beim Bau sofort zwei echte Dubletten. Ohne ihn wäre 11→1 eine Momentaufnahme; mit ihm ist es ein Zustand.
Merksatz für den nächsten Fall: Wo elf Kopien entstehen, fehlt kein Verbot — es fehlt ein Bauer im Katalog. Erst den Bauer exportieren, dann den Ratchet setzen. Baustein-Detail: K-16 Composer.

QuerVier Querschnitt-Anforderungen

Multimandant · Multilingua · Produkt/Version · Datenschutz sitzen NICHT in einer Phase — sie ziehen sich quer durch. Der saubere Weg: jede wird eine Vertrags-Achse im Katalog — jeder Baustein deklariert sie, der Composer (Gate B) prüft sie, der Harness sichert sie.

AnforderungGreift in PhaseBaustein · RegelSSOT
Multimandant2 · 4/5 · 6RLS-scoped Reads (mandant_id) · Scope-Frame-Komponente (R-88/90, „Wir schauen auf: {Mandant}") · Regel „jeder Read mandant-scoped, default-deny"Identity/RLS-SSOT · super_admin / mandant_admin / viewer
Multilingua4/5 · 6Kein hardcoded Text → t() / i18n-Keys · i18n-Katalog (7 Sprachen) · Regel „keine nackten Strings im DOM"DESIGN#04 · i18n/*.json
Produkt / Version0/3 · 7PRODUCTS-Registry (core · gabriel · klassik) · Stadium Mockup/Staging/Live — ehrlich pro BausteinV4-Cockpit · PRODUCTS
Datenschutz2 · 4/5 · 6Conf-Filter + Owner-Bypass (Rolle→conf_max) · 3-Achsen-Badge (Geheimhaltung 🔒) · Regel „Conf-Badge Pflicht + kein Scope-Leak" · Beleg-ID immer mit Drive-Link (R-91)KONZEPT_VERTRAULICHKEIT v1.1

Der Clou: Diese vier werden nicht „drangeklebt" — sie sind Spalten im Katalog-Vertrag. Jeder Skill/FX-Baustein deklariert seinen Scope, seine i18n-Keys, sein Produkt und seine Vertraulichkeit. So prüft der Composer sie automatisch mit und der Harness wird ROT, wenn eine fehlt — dieselbe Mechanik wie bei Komponenten & Funktionen.

DuDer Mensch im Prozess — sehen & Feedback

Wo du im Bau siehst und wie dein Feedback zurückfließt — gebaut, nicht angekündigt: der Feedback-Panel geht an die Lane, nicht in den Chat.

Phase 0Zweck-Dialog

KAI schlägt Zweck + Zeitgewinn vor → du validierst/korrigierst, BEVOR gebaut wird.

Phase 1Katalog-Review

Im Katalog: Freigeben · ✋ Änderung anfordern · „Senden" → 🟡-Eintrag mit Historie · Feedback exportieren.

Phase 6Harness-Beweis

Du siehst KONFORM / ROT — die maschinelle Prüfung statt Augenmaß.

Phase 7V4-Cockpit

Stadium sehen (Mockup · Staging · Live) + Freigeben, pro Baustein.

jeder ScreenFeedback-Panel 💬

Auf jedem live/staging-Screen: Feedback anklicken → direkt an die Lane (audit_events-Roundtrip, #921), nicht in den Chat.

Der Loop: sehen → Feedback-Panel / *-Präfix → LANE → Freigabe → Deploy.

Offen — deine Frage: Der SCREEN-COMPOSER ist heute ein Bau-Zeit-Playbook (der Bau-Agent nutzt es) — NICHT als super_admin-Werkzeug in der App verfügbar. Ziel (dein „sehr wichtig", geparkt): eine in-app super_admin-Fläche „Seiten & Bausteine" im Admin-Bereich, wo du Screens direkt in app.startact.ai komponierst/justierst — KI-First, voll chatbot-bedienbar. Status: 🔴 fehlt (Skill/Agent/Prompt-Admin-Lane). Sobald sie steht, wird der Composer selbst ein Baustein im Katalog — bedienbar von dir. Nachgemessen 25.09.2026 (ARCHITEKT#01, Register 3114): die Aussage gilt weiter — aber der Grund ist enger als „fehlt". Der Vertrag und sein Prüfer stehen (screen_factory_contracts.json mit 17 Verträgen, 22 Pflichtfeldern und dem Block agent_entscheidet; check_screen_factory_contracts.py läuft in konformitaets-guards.yml). Was fehlt, ist der Griff: kein Werkzeug mit dem Präfix screen_composer. in einem tool_scope — geprüft in staged/chat_instances.json (6 Instanzen), tools._TOOL_SCHEMAS (44 Werkzeuge), vollzug.VOLLZUG_REGISTER und über git log --all -S (3 Treffer, alle drei die Auftragsbriefe selbst).

GriffAus KAI heraus: der Werkzeug-Vertrag screen_composer.* Entwurf · ARCHITEKT#01 25.09.2026

Der Abschnitt darüber sagt, was fehlt. Dieser sagt, wie es aussieht, wenn es kommt — und er ist hier eingefaltet, nicht danebengelegt: derselbe Vertrag, dieselben Gates, dasselbe Kanon-Vokabular. ⛔ Der Agent wird hier nicht gebaut. Was hier steht, ist die Grenze, an der er später gebaut werden darf.

StufeWas entstehtWer darfModus im chat_engineWirkung
screen_composer.proposeEINE Screen-Definition nach den 22 Pflichtfeldern von screen_factory_contracts.json plus Gate-A–E-Report. Nie Markup, nie CSS, nie eine neue Fachaktion.Nutzer in seinem lesbaren Scoperead — muss ausdrücklich in tool_modes.read stehenkeine Änderung, kein Code
screen_composer.previewisolierte Vorschau aus einer freigegebenen Definition — Worktree/Preview, nie eine Produktivseite.super_admin, ausdrückliche Freigabe je Vorgangaction → Freigabekarte → VollzugVorschau; kein Merge, kein Deploy
screen_composer.uebergabevollständiges Tower-Paket (Definition · Gate-Report · Guards · Retests).super_adminactionTower entscheidet Bau, Merge und Release

Warum das keine freie Markup-Frage ist: das Modell liefert Intent, der Renderer macht daraus TGV-Komponenten. Die Grenze steht bereits maschinenlesbar — detail_view_contract.agent_entscheidet in screen_factory_contracts.json: der Agent wählt, ordnet und lässt weg, und er darf nicht neue Block-Typen oder CSS erfinden, den Rahmen ändern, Vokabeln erfinden, Aktionen ohne Skill-Naht scharf schalten oder Scope/RLS anfassen. ⇒ Der Werkzeug-Vertrag erfindet diese Grenze nicht neu — er macht sie zum Ausgabeformat.

Was den Vertrag heute schon trägt — gemessen, nicht angenommen

ZusicherungWer sie hält (Fundstelle)Gegenprobe
„ändert nie selbst"descriptor.ChatInstance.is_action_tool — ein Werkzeug ist nur read, wenn es ausdrücklich in tool_modes.read steht; alles andere → Freigabekarte. Default-Deny am Griff.erklärtes read-Werkzeug fällt gegenteilig aus
„der Loop kann es nicht fahren"tools.build_tool_defs hängt einem action-Werkzeug keinen Executor an.read-Werkzeug bekommt seinen Executor
„nichts ohne Klick"tools.make_approval_card — state=pending, approval_tier=jc_direct, reversible kommt aus dem Vollzug, nicht aus einer Behauptung.freigabe-erteilen meldet reversible=true
„merged und deployt nie"vollzug.VOLLZUG_REGISTER kennt kein Composer-Werkzeug ⇒ kein_weg_satz, ohne Zustandswechsel. Ein Werkzeug kommt dort erst hinein, wenn Schema und Endpunkt-Body gemessen zueinander passen und der Endpunkt die Rechte des Aufrufers prüft.das Register ist nicht leer
Scope & Default-DenyDer Scope kommt aus der Mitgliedschaft des Aufrufers (user_mandant_roles → _user_scope → apply_scope_to_tool_args), serverseitig nach der Werkzeugwahl injiziert; das entity-Enum im Schema trägt nur die erlaubten Entitäten (tools._scoped_parameters, #150). Eine fehlende Sichtbarkeitsdeklaration bleibt deny.leere Menge ⇒ entity entfällt, Executor filtert __scope_none__
screen_request_idKein neues Register. Der Vorgang ist bereits identifiziert: gespeicherter Envelope chat_messages.envelope_json + block_index — genau das Paar, mit dem vollzug heute eine bestätigte Karte wiederfindet, und die Werkzeug-Argumente des Turns fahren seit #1905 mit.Vollzug liest die Karte vom Server, nie vom Browser

⭐ Der Ertrag dieser Messung: die härteste Zusage des Vorhabens — der Agent ändert, merged und deployt nie selbst — ist keine neue Sicherung, sondern das vorhandene Default-Deny. ⛔ Und ihre Kehrseite steht im selben Satz: vergisst jemand die Zeile tool_modes.read für propose, wird aus dem Vorschlag eine Freigabekarte für einen Entwurf — die Stufe, die wirklich Freigabe braucht, verschwindet dann hinter einer, die keine braucht.

Guard und Retest — wo er läuft, und woran er rot wird

08_OPS/check_composer_vorschlag_trennt_die_stufen.py, eingehängt in .github/workflows/konformitaets-guards.yml (Schritt ㊽, Selbsttest + Lauf) — in beiden Pfad-Blöcken, push und pull_request. Ausgelöst wird er von 08_OPS/** und von staged/chat_instances.json: ohne die zweite Zeile wäre er blind für genau die Änderung, die er fangen soll. Netzfrei.

FrageAngriffspunkt heuteMutation, die ihn rot macht (Selbsttest)
Default-Deny stehtjaM6 — is_action_tool liefert immer False
kein Executor für actionjaM7 — Executor an ein action-Werkzeug gehängt
kein Vollzug ohne RegisterjaM5 — Composer-Werkzeug ins VOLLZUG_REGISTER eingetragen
Composer-Werkzeug trägt seinen Vertrag⛔ nein — heute ist keins deklariert. Der Guard meldet das als NOTIZ „ohne Angriffspunkt", nicht als Grün.M1 propose als action · M2 preview im Loop · M3 propose ohne eigenes Schema · M4 leerer Suchraum

Lauf am 25.09.2026: Guard grün (Fragen 1–3 gemessen, Frage 4 als ungeprüft ausgewiesen), Selbsttest 8/8 — M8 ist die Negativkontrolle: der unveränderte Bestand muss sauber sein, sonst wäre ein dauerrotes Werkzeug von einem scharfen nicht zu unterscheiden. ⛔ Was dieser Guard NICHT misst: die super_admin-Wand der Vorschau — sie sitzt an einem Dienst-Endpunkt, den es noch nicht gibt, und ist nur am angemeldeten Dienst mit getrennten Testidentitäten messbar. Kein Urteil, nicht grün. Retest, sobald die Vorschau-Stufe existiert: dieselbe Definition unter super_admin, mandant-admin und viewer, mit Positivkontrolle (super_admin bekommt die Vorschau) und Gegenbeweis (die beiden anderen bekommen sie nicht, und der Grund heißt Berechtigung, nicht „keine Daten").

∞Die Lernschleife — das System verbessert sich selbst

Die 9 Phasen bauen EINE Seite (innerer Kreis). Die Lernschleife macht den KATALOG selbst besser — aus jedem Vorfall, Feedback, Muster. So wächst der Kanon aus Erfahrung und vergisst nie („war vergessen" ist strukturell ausgeschlossen).

① Signaletwas passiert

Vorfall · Feedback-Panel · Eval-Befund · Muster (pattern-engine) · Telemetrie

② HypotheseLane verifiziert

Befund = Hypothese, nie auto-angewandt — die Lane prüft & darf widersprechen

③ WirkortFix wo Inhalt entsteht

Der Baustein/Skill trägt den Guard selbst — kein Merksatz im Handbuch

④ Binden4 Ebenen

Prompt · Schema · Guard · Stadium → neuer Katalog-Eintrag / R-V4-Regel

⑤ SichernGuard für immer

Harness wird ROT bei Rückfall — Anti-Amnesie, kein Reinvent

⑥ Feiernsichtbar für dich

„KAI hat X gelernt · eure Klärung leert sich schneller" — DSGVO-Transparenz + Nutzen

↺ zurück in den Katalog — die nächste Seite baut schon mit der Lehre.

⛔ GUARD-FIRST (JC-Direktive 17.07.) — die Schärfung der Schritte ⑤/Phase 6/Phase 8: „Eine Arbeit gilt erst als fertig, wenn ein Guard sie dauerhaft sichert. Und ein Guard, den niemand absichtlich gebrochen hat, ist kein Guard." Konkret: Phase 6 ist kein Report, sondern das Fertig-Kriterium (kein „done" ohne KONFORM) · Phase 8 koppelt den Deploy an den Audit · jeder NEUE Guard wird beim Bau einmal absichtlich verletzt (Negativ-Test), sonst ist er Behauptung. Und ehrlich: „Guard grün" heißt nur „Guard LIEF" — pfad-getriggerte Guards sind blind auf allem, was kein PR berührt; auch die Prüfer selbst werden geprüft (drei Prüfer-Bugs an einem Tag, 17.07.). → Beweislage + Guard-Spalte: Regelwerk · Guard-First.
① User — Arbeitsweise/Korrekturen → adaptive Persona (User-Scope)
② Mandant — Regeln/Lieferanten/Schubladen → Mandant-Konfig (Mandant-Scope)
③ TGV-gesamt — nur aggregiert + pseudonymisiert → Produkt-Verbesserung

20In zwanzig Sätzen

  1. Eine neue TGV-Seite entsteht nicht ad-hoc, sondern durchläuft feste Bau-Phasen mit je einem verantwortlichen Werkzeug.
  2. Phase 0 – Sinn: KAI schlägt Zweck + Zeitgewinn vor, du validierst — das Ergebnis ist eine Vertrags-Eigenschaft (Hero · Chips · KAI-Initiative · Empty-States), nicht nur Hero-Text.
  3. Phase 1 – Reuse: Gate B durchsucht die Kataloge, bevor eine Zeile Code entsteht — nichts wird doppelt gebaut.
  4. Heute prüft Gate B nur die Design-Seite — der Funktions-Teil fehlt, das ist die Wurzel des „immer wieder neu".
  5. Phase 2 – Daten: Gate C sammelt Kernfragen und einen echten Snapshot über MCP/Skills, nie Fantasiezahlen.
  6. Phase 3 – Typ: Gate D bestimmt den Screen-Typ (Inbox/Pipeline/Dossier/Übersicht/Klärung) mit festen Vorgaben.
  7. Phase 4 – Regeln: Gate E legt die 5-Zonen-Anatomie und die R-V4-Regeln aus dem Regelwerk fest.
  8. Phase 5 – Bau: Der kanonische Renderer engine.js setzt die Seite aus Bausteinen zusammen, nicht aus Markup.
  9. Frontend-Funktionen kommen als FX-Bausteine (fxRender/wire), Backend-Funktionen als Skills (skillFetch), Agenten über Render-Hints.
  10. Phase 6 – Konformität: Der assertConformance-Harness prüft jede Regel als echte Assertion bei jedem Laden.
  11. Phase 7 – Freigabe: Das V4-Cockpit zeigt ehrlich Mockup/Staging/Live pro Baustein — du gibst frei.
  12. Phase 8 – Deploy: Ein Push auf master (deploy.yml) liefert alles über nginx an app.startact.ai.
  13. Zwei Kataloge sind die SSOT: der Komponenten-Katalog (was aussieht) und — neu — der Funktionskatalog (was tut).
  14. Der Funktionskatalog bündelt EINMAL registriert: FX-Bausteine, ~45 Backend-Skills und Agenten, jeder mit Vertrag.
  15. Heute ist diese Funktions-Seite fragmentiert: FX im Shell, Skills in einer YAML, Agenten woanders — nicht EIN Ort.
  16. Der Zwang: SCREEN-COMPOSER Gate B muss Funktionen zwingend gegen den Funktionskatalog prüfen, nicht nur Design.
  17. Die Sicherung: eine Konformitäts-Regel „keine screen-lokale Funktion, wo eine Katalog-Funktion existiert".
  18. Dieselbe Sicherung fehlt für Icons — deshalb rendern die neuen Icons nirgends, obwohl „KONFORM" steht.
  19. Ist beides gebunden (Katalog + erzwungener Gate + Harness-Regel), baut der Screen-Bauer wie mit Lego und der Harness beweist es.
  20. Dann ist Schluss mit „Aufwand umsonst": jede Verbesserung lebt einmal im Katalog, gilt überall und ist maschinell gesichert.
  21. Nachtrag 07.08. (E-69): Derselbe Vertrag gilt ab jetzt für vier Gegenstandsarten — Screen ✅ · Skill/Agent 🟡 · Prompt 📝 · Absicht 📝. Er wird erweitert, nicht kopiert.
  22. ⛔ Prompts sind die klaffende Lücke: KAIs wichtigste Regel lebt als Text ohne Vertrag und ohne Test — ein Fehler im Code schreit, ein Fehler in einem Prompt flüstert.
  23. ⭐ Und der vierte Zustand kam dazu: „sichtbar". Geschrieben, verdrahtet und geprüft leben alle im Repo — keiner heißt, dass der Mensch es sehen kann.
  24. Zwei neue Rollen tragen das: der Historiker („das gab es schon") und der Verdrahter („das wurde beschlossen — hier fehlt es noch").
Status heute: Phasen 0·2·3·4·7·8 stehen. Die drei Kanon-Nahtstellen (1 Reuse-Funktionen · 5 Engine/Icons vereinen · 6 Harness um Icons+Funktionen erweitern) sind die Lücke — und zugleich der gesamte Fix. Ein Auftrag, drei gebundene Stellen.