TGV · Governance · Stand 29.09.2026 · Stufe 2

🏗 Die Gesamt-Arbeitsweise — wie wir TGV konzipieren und erstellen

Das Szenario, für das diese Seite existiert (JC): „Stell dir vor, ich muss TGV von scratch neu aufbauen — wir wären froh, lesen zu können, wie wir mit Claude Code zusammenarbeiten und was wir in 8 Wochen gelernt haben." Hier steht das Betriebsmodell, der Weg jeder Anforderung, die Werkzeuge in Klartext, die destillierten Lektionen und die Konversations-Konventionen.

🔨 STUFE 2 (29.09.2026) — auf heute gezogen: Codex als fünfter Akteur · Register-Serialisierung · Aufträge-Brett · Merge-Fenster · die gemessenen CI-Kosten. Die Lektionen von 2026-07-19 stehen unverändert — sie haben gehalten.

§0 · VIBE CODING FIRST — das Prinzip, unter dem alles andere steht

JC beschreibt was und wofür. Nie wie. Alles darunter — Architektur, Code, Prüfung, Auslieferung — ist Sache der KI-Organisation. Der Mensch ist nicht der Klebstoff zwischen Maschinen, und seit es mehrere Agenten sind, auch nicht der Klebstoff zwischen ihnen.

JCs Bild vom 19.07.2026: „Stell dir vor, ich muss TGV von scratch neu aufbauen — wir wären froh, lesen zu können, wie wir mit Claude Code zusammenarbeiten."

Daraus folgen vier Sätze, die den Rest dieser Seite erklären:

  1. Was nur im Gespräch steht, existiert nicht. Jede Anforderung UND jede Zusage wird im selben Zug eine Registerzeile. Ein Versprechen, das nirgends steht, ist von einem vergessenen nicht zu unterscheiden (JC, 29.09.2026).
  2. Was Handarbeit ist, veraltet. Was erzeugt wird, nicht. Deshalb baut master die Sammeldateien, und deshalb soll das Roadmap-Board erzeugt statt gepflegt werden.
  3. Fertig ist, was ein Wächter dauerhaft sichert — und der Wächter gilt erst, wenn er einmal absichtlich gebrochen wurde. Ein grüner Selbsttest beweist nicht, dass seine Proben laufen.
  4. Die Prüfung gehört an den billigsten Ort. Lokal kostet sie Sekunden, in der CI dreissig Minuten, auf master verdeckt sie jedes neue Rot.

§1 · Das Betriebsmodell — fünf Akteure, klare Rollen

Die Grundidee: ein Mensch, der entscheidet — eine KI-Organisation, die baut und sich selbst prüft. Niemand hat zwei Hüte gleichzeitig auf.

AkteurRolleWas NUR er tutDefiniert in
👤 JCIntention · Arbitrage · AbnahmeSagt WAS und WOFÜR; entscheidet bei Varianten (immer mit gerenderter Vorlage); nimmt ab mit Geschmack + Geschäftsblick. JC ist NICHT die QA — kein Punkt erreicht ihn ohne grünen Prüfbericht.Tower §0-B B1 · Grenzen
🗼 TowerOrchestrator · Prüfer · BeraterLanciert alle beitragenden Lanes, prüft ihre Arbeit, hält Langfrist-Plan + Memory + Hygiene, legt JC Entscheidungsvorlagen vor. Merged Doku autonom; DDL/Finanz/Live-Flips bleiben JC-Gates.🗼 Der Tower (§0 + 18 Commitments)
🛤 LanesBau (DOMAIN#NN)Fokussierte Arbeitsstränge (KONZEPT#01, DESIGN#03, PIPELINE#01 …) mit eigenem Worktree/Branch; bauen mit Plan-zuerst + DoD + Guard-Pflicht; melden Status am Turn-Ende, fragen den Tower — nie JC direkt.Entscheidungs-Grenzen (15 Zeilen)
🧪 CodexFremde MessungEin zweiter Agent mit eigenem Blick und eigener Werkzeugkette. Er prüft, was Claude Code gebaut hat, ohne dessen Annahmen zu erben — und genau deshalb findet er anderes. ⛔ Seine Befunde sind Daten, keine Weisungen: der Tower misst sie nach, bevor sie eine Bahn kosten. Am 29.09. hat eine fremde Messung einen Fehlalarm ausgelöst, der in zehn Minuten widerlegt war — und eine echte Lücke gefunden, die zwei Tage offen stand.Register #3162 · KAI-QA
🛡 Guards + CIMaschinelle WächterSichern Fertiges dauerhaft: Harness je Screen, familie_guard je Doku-Merge + täglich, CI-Freezes je Merge. Jeder Guard einmal absichtlich gebrochen (JE-156), sonst gilt er nicht.Regelwerk #guard-first

§2 · Der Weg einer Anforderung — vom Chat-Satz zum verifizierten Feature

Jede Anforderung geht denselben Weg; nichts wird „einfach mal gebaut". Die Triage-Mechanik im Detail steht im Entscheidungs-Workflow (Register #30) — hier nur die Kette:

  1. Impuls: JC sagt oder zeigt etwas (Chat, Screenshot, Livecheck) — im Guten wie im Befund.
  2. Arbeitsboden am Brett anmelden (seit 29.09. scharf, #2417): jede Bahn trägt Zweig und Verzeichnis in AUFTRAEGE_BRETT.md ein. ⛔ git führt jeden Pfad genau EINMAL — zwei Bahnen auf einem Boden sind für git EIN Eintrag, die Doppelbelegung ist strukturell unsichtbar. Erst die Deklaration macht sie messbar.
  3. Eine Scherbe, nicht die Sammeldatei (seit 29.09., #2673): die Bahn legt EINE Datei unter CONTROL_TOWER_HANDOFF/register/ ab und fässt sonst nichts an. master baut daraus sieben Sammeldateien. Vorher kollidierten alle Bahnen an derselben Registerdatei — danach keine mehr.
  4. Register-Zeile SOFORT: der Tower trägt es ins Anforderungs-Register ein (Melde-Datum + Quelle), BEVOR irgendwer baut. Chat-Sätze stranden — Register-Zeilen nicht.
  5. Tower-Triage a/b: a) gebaut/entschieden → Lane setzt autonom um (+ Regel + Komponente nachziehen) · b) echter JC-Entscheid → grafische Vorlage im badge_systematik-Muster (≥2 gerenderte Varianten · Lage · Empfehlung · Entscheid-Feld).
  6. Bau mit Guard-first: die Lane baut gegen den VERTRAG der Anforderung (nicht bloß Existenz); fertig heißt: ein Guard sichert es, und der Guard wurde einmal absichtlich gebrochen (JE-156).
  7. Maschinelle Prüfer: Harness (Screens), familie_guard (Doku), UXAUDIT/Gate-Checks — auf echter Staging-Breite (375/880/1280 × hell/dunkel), nie localhost.
  8. Deploy: PR → Self-/Tower-Merge (Doku) bzw. gated Merge (DDL/Finanz/Live) → Auto-Deploy (PLAT#02) bzw. Serve-Skript; „gemergt" ≠ „live" — die Status-Legende sagt es ehrlich.
  9. JC-Blick zuletzt: Geschmack + Geschäft auf der echten URL. Was JC findet, ist eine Drift-KLASSE → zurück zu Schritt 2 (Voll-Audit, nicht Einzel-Fix).

§2b · Was eine Bahn hinterlässt — sieben Spuren, sieben Leser

§2 beschreibt den Weg. Dieser Abschnitt beschreibt, was auf dem Weg liegen bleibt — und wer es liest. ⭐ Der Satz, der alles trägt: Scherbe = Quelle, Sammeldatei = Ansicht. AUFTRAEGE_BRETT.md, ANFORDERUNGS_REGISTER_TIER_A.md, ROADMAP.md sind Ansichten, die master aus den Scherben baut — eine Bahn schreibt nie in eine Ansicht.

#Spurwo sie liegtwer sie liestwas sie beweist
1Reservierungrefs/tgv/register-reservierung/<nr>check_register_nummerdie Nummer gehört ihr, atomar
2Brett-Scherbebrett/<datum>__<bahn>~<zweig>.mdcheck_brett_traegt_den_bodendie Bahn lebt, auf diesem Zweig, in diesem Arbeitsbaum
3Register-Scherberegister/<sortier>__<nr>.mdRoadmap · Ballzählung · Tor ⑱was sie fand oder baute, mit Wirkorten
4Zweig + PRGitHuballe Wächter · gh pr listdie Arbeit selbst
5Merge-Commitmastergit merge-basesie ist angekommen
6Deploy-LaufActions⛔ niemand (Stand 09.10.2026)sie ist ausgeliefert
7Sichtbare WirkungFrontend⛔ niemandsie nützt

⛔ Jede Störung in diesem Haus ist eine von zwei Klassen — nicht sieben Probleme, sondern zwei:
⒜ Zwei Bahnen schreiben in dieselbe Spur ⇒ Konflikt. Am 09.10. kollidierten acht PRs plus #3249 an einer Datei: dem erzeugten AUFTRAEGE_BRETT.md. n Bahnen an einer Tabelle sind n² Nähte. Die Scherben-Form macht den Konflikt unmöglich, nicht unwahrscheinlich — zwei Bahnen können dieselbe Datei nicht berühren, weil jede ihre eigene hat (#2673 · #3772 · #3264).
⒝ Eine Spur hat keinen Leser ⇒ Arbeit umsonst. Gemessen 09.10.: 517 Zweige tragen Arbeit ohne offenen PR; neun Briefe an einen Tower lagen darauf, einer davon am selben Tag an den amtierenden adressiert — er wäre nie gelesen worden. Die Spur war da. Es gab keinen Leser.

⛔⛔ Und die beiden letzten Spuren hat bis zum 09.10.2026 niemand gelesen. Der Beweis steht im Haus selbst: die letzten vier Dienst-Fassungen auf master enden jede mit „LIVE NICHT GEMESSEN (Deploy = JCs Wort)" — 1.12.310 · .306 · .305 · .304. Vier Bahnen hintereinander haben ihre Wirkung nie gesehen.
⭐ Und das Deploy-Tor liegt nicht, wo man es vermutet: deploy.yml und deploy-service.yml sind push: branches:[master] plus Pfadfilter. Ein Merge, der core_shell.html oder app.py berührt, deployt automatisch ohne JCs Wort; einer, der sie nicht berührt, deployt nicht — auch mit GO.

Der Lane-Abschluss — fünf Zeilen, nicht drei (JC 09.10.2026)

  1. PR + Merge-Commit (volle 40 Zeichen) → gemergt?
  2. Registernummer #nnnn → für Roadmap und Ballzählung sichtbar? ⛔ Ohne Nummer ist die Bahn unsichtbar, egal wie fertig sie ist.
  3. Was kann TGV jetzt, MIT Ort → gebaut? ⛔ „Konzept erstellt" ist keine Antwort.
  4. Hat der Merge einen DEPLOY ausgelöst? → run-ID + der Pfad, der den Filter traf. ⛔ „kein Deploy" ist gültig — dann sag WARUM.
  5. Woran sieht JC es? → Screen, Zahl, Ereignis — oder „nicht sichtbar, und das ist Absicht".

⭐ ①–③ beweisen, dass gebaut wurde. Erst ④ und ⑤ beweisen, dass es wirkt. Erst danach gilt: „Kann zu. Abgestimmt mit Tower." ⛔ Dieser Abschlusssatz stand zwei Monate nur im Chat — ein grep über den ganzen Projektspeicher am 09.10. ergab null Fundstellen. Eine Anweisung, die nur im Fenster steht, hat der nächste Tower nicht.

Die Rückkopplung — Roadmap, Monitoring, Routine

Die sieben Spuren sagen, was eine Bahn hinterlässt. Drei Einrichtungen lesen sie über alle Bahnen hinweg — sie sind der Grund, warum eine steckengebliebene Bahn überhaupt auffällt:

EinrichtungOrtliest welche Spurenbeantwortet
🗺 Roadmap-Boardroadmap_board.html, erzeugt von 08_OPS/gen_roadmap_board.py3 · 4 (+ Dienst-Health)Wer ist dran? — Bälle bei JC, Bälle beim Tower, PRs, die ein Wort brauchen
📡 MonitoringBetriebs-Wächter + Crons (.github/workflows/betriebs-*.yml)5 · 6Läuft es noch? — Stempel je Tag, Melder bei Bruch
🔁 RoutineNachzug je Merge (register-nachzug.yml)1 · 2 · 3Sind die Ansichten aktuell? — baut die sieben Sammeldateien aus den Scherben

⛔ Die Lücke, benannt statt verschwiegen: keine der drei Einrichtungen verbindet die sieben Spuren je Bahn zu einer Zeile. Die Roadmap zeigt Spur 3 und 4, das Monitoring Spur 5 und 6, der Nachzug Spur 1 bis 3 — und niemand zieht sie zusammen. Deshalb kann eine Bahn fertig sein, ohne dass es jemand sieht. ⭐ Das ist kein neuer Wächter: alle sieben Spuren sind einzeln lesbar. Es fehlt ein Leser, der sie verbindet — und sein Ort ist gen_roadmap_board.py, weil der schon live misst und im Nachzug läuft.

§3 · Die Werkzeuge — in Klartext

WerkzeugWas es für uns istWo es lebt
Worktree / Branch / PRJede Lane arbeitet in ihrem eigenen Verzeichnis (Worktree) auf ihrem eigenen Stand (Branch); ein PR ist der Antrag „nimm es in die eine Wahrheit (master)". Erst der Merge zählt — DONE ≠ master ≠ LIVE.Glossar
Merge-Freeze / BündelTore, die Merges anhalten, bis eine Bedingung stimmt (z.B. Migrations-Reihenfolge). Gilt auch gegen den Tower: Gate rot = Bündel-Position für JC, nie überstimmen.Tower-Commitment 11 · Glossar
Staging vs. LIVEProbebühne mit echtem Deploy (core_shell_staging) vs. das, was Nutzer sehen (app.startact.ai). Verifiziert wird IMMER auf der echten URL — localhost hat uns belogen.Glossar
CI + Cron-LäufeGitHubs Automat prüft nach jedem Push (Guards, Testdaten-Wächter) und TÄGLICH per Zeitplan (familie_guard 05:23 UTC mit Stempel im Familie-Index) — weil pfad-getriggerte Prüfer auf Unberührtem blind sind. ⛔ Ein Workflow, der nicht startet, erzeugt keine Checks — und das sieht in der PR-Prüfliste aus wie Zustimmung, nicht wie Schweigen.Index (🛡-Stempel) · Glossar CI
Welche Wächter schulde ich?
pruefe_ci_zustaendigkeit.py
Vor jedem Push zu fahren. Nennt zu den geänderten Dateien JEDEN CI-Wächter, der dafür zuständig ist, und den Befehl dazu — abgeleitet aus .github/workflows/*.yml, nicht aus einer gepflegten Liste (eine Liste altert am Tag ihrer Entstehung). ⛔ Anlass: SCREEN#03 hatte lokal acht Wächter grün, die CI fand danach vier echte Lücken — lokal grün ist keine Aussage über die CI, weil die lokale Liste nicht die CI-Liste ist. Jede vermeidbare CI-Runde ist ein Schritt im Rennen gegen master.
⭐ Die Körnung ist der Workflow, nicht der einzelne Wächter: feuert er, laufen ALLE seine Schritte. Deshalb nennt das Werkzeug alle — eine engere Ausgabe wäre eine falsche Entlastung.
python 08_OPS/pruefe_ci_zustaendigkeit.py --seit origin/master
Register #1652
Sessions / Chips / Cross-MessagesJede Lane ist eine eigene Claude-Code-Session; der Tower spricht sie per Cross-Session-Nachricht an. Jede Nachricht kostet JC einen Erlauben-Klick → gebündelt, Status wird gepollt (Turn-Ende-Zeilen), nie gepusht.Tower-Commitment 5
Registerzeile anlegenEine Zusage oder ein Befund wird eine Scherbe — im selben Zug, in dem sie ausgesprochen wird, nicht wenn die Arbeit fertig ist. Die Nummer zieht das Werkzeug selbst und reserviert sie: es liest master, alle offenen PRs und die bestehenden Reservierungen. ⛔ Die höchste Nummer auf master ist nie die höchste vergebene.register_zeile_einfuegen.py <zeile> --ans-ende · check_register_nummer.py --ziehe-bis-frei N --reserviere
Welche Wächter schulde ich?Leitet aus .github/workflows/*.yml ab, welche CI-Wächter für die geänderten Dateien zuständig sind — keine gepflegte Liste, eine Ableitung. Wer einen Wächter einhängt, ändert damit automatisch diese Auskunft.pruefe_ci_zustaendigkeit.py --seit origin/master
Kollidiert mein Zweig?⭐ Die wichtigste Zeile des Tages. Sagt lokal und in zwei Sekunden, ob der Zweig sauber auf master passt — dieselbe Frage, für die ein Push dreissig Minuten CI kostet. Am 29.09. liefen ≥ 300 CI-Läufe, grob 15 Stunden Maschinenzeit, grösstenteils Nachzugsarbeit. ⛔ Nicht gh pr view fragen: dessen mergeable steht nach jedem Master-Merge erst einmal auf UNKNOWN.git merge-tree --write-tree origin/master HEAD
Fassungsnummer auflösenLöst den SERVICE_VERSION-Konflikt blockweise: masters Zeile wird demotiert, nie geworfen, und die neue Nummer muss über masters UND über der Live-Fassung liegen — sonst bricht es ab, statt zu raten.loese_fassungsblock.py
Stunden-BerichteDer Tower berichtet stündlich, GEMESSEN (Commits/PRs/Läufe als Beleg, % gegen DoD, Hygiene-Zeile); bei Null-Delta ein Einzeiler. Nie rosig.Tower-Commitment 7 + 17

§4 · Die Lektionen — destilliert, mit Narben-Beleg (1–7 aus den ersten acht Wochen, 8–12 vom 29.09.2026)

Nicht erfunden, sondern destilliert aus TOWER_REGELWERK.md (80 Narben), dem Konsolidierungsplan und den Feedback-Memories. Jede Lektion hat uns mindestens einen Vorfall gekostet.

1 · Die Prüfer lügen — verify the verifier. Drei Prüfwerkzeuge meldeten an EINEM Tag Zustände, die sie nie gemessen hatten (ssh exit 0 ohne Wirkung · grep-Pipe fraß das Ergebnis · Harness prüfte 1 von 7 Screens „42× grün"). Konsequenz: jeder Prüfer braucht einen Gegenbeweis-Test; Falsch-Grün ist gefährlicher als Rot.
2 · Gebaut ohne den Vertrag. Implementierungen erfüllten die EXISTENZ einer Anforderung, nicht ihre DEFINITION — wochenlang, trotz 10-fachem Sagen. Konsequenz: Anforderungs-Register mit Konformitäts-Spalte; Abnahme gesperrt, bis Konformität grün ist.
3 · Regal-Krankheit — eine Wahrheit je Artefakt. Listen existierten doppelt, halb, als „Einzelteile". JC-Gesetz: „Entweder hat eine Liste SINN — dann jetzt vollständig — oder sie verschwindet." Artefakt-Register + Guard erzwingen es.
4 · Chat-Strandung — was nur im Chat steht, existiert nicht. Entscheide und Lern-Boxen, die nie in Doku/Memory ankamen, waren strukturell verloren. Konsequenz: Intake-Ritual (Register-Zeile SOFORT), Entscheid-Persistenz in Kontrakten, Lern-Box → Glossar binnen Tages-Frist (D5-Guard).
5 · Bestand vor Bau. „NIX bauen, was wir haben" (R-V4-19): erst messen, was existiert (mit Datei:Zeile), dann portieren/andocken — nie neu erfinden. Der Reuse-Check ist Gate, nicht Empfehlung.
6 · Empty-State schlägt Konfabulation. Lieber ehrlich „weiß ich nicht (Stand X)" oder „Vorlage in Arbeit" als eine erfundene Antwort oder ein toter Button. Gilt für KAI-Antworten wie für unsere eigenen Statusmeldungen.
7 · Stichprobe ≠ Vollmessung. Ein grüner Einzelfall beweist nichts über die Klasse (pfad-getriggerte Guards sind blind auf Unberührtem; ein JC-Befund ist immer eine Drift-KLASSE). Konsequenz: Voll-Audits + tägliche Cron-Läufe + Ratchets, die nur besser werden dürfen.
8 · Der Bezugspunkt der Messung war nicht der, nach dem gefragt war. Fünfmal an einem Nachmittag, drei verschiedene Bahnen, jedes Mal ein fehlerfrei laufendes Werkzeug (29.09.2026): eine Bestandszählung im eigenen Baum zählte den eigenen Zuwachs mit („3 Treffer — also normal", davon zwei eigene) · git diff a...b misst gegen den gemeinsamen VORFAHREN und beantwortet „was habe ich getan", nicht „was fehlt drüben" · ein on:-Block wurde aus der Laufliste erschlossen, die ein Pfadfilter geleert hatte · ein Wächter in alter Fassung meldete masters Zuwachs als Schuld des Zweigs · ein zerlegter Arbeitsbaum liess jeden relativen Pfad ins Leere laufen und lieferte fünf makellose Negative in Folge. ⇒ Vor jeder Messung den Bezugspunkt aussprechen: „ich vergleiche X gegen Y." Und jede Reihe sauberer Negative braucht eine Positivkontrolle, bevor sie ein Ergebnis wird.
9 · Ein grüner Selbsttest beweist nicht, dass seine Proben laufen. Die Frist im Artefakt-Register war 23 Tage alt und grün — weil geprüft wurde, ob ein Datum dasteht, nie wie alt es ist. ⇒ Beim Bau jeder Achse Mutanten fahren: das Werkzeug absichtlich kaputtmachen und sehen, ob der Selbsttest stirbt. Drei Mutanten, drei Tote — erst dann gilt die Probe.
10 · Ein Muster, das eine Gestalt für den Gegenstand hält. Ein Wächter suchte Deklarationen nur am Zeilenanfang und meldete deshalb einen Laufzeitfehler, den es nicht gab. Nach dem Weiten: Fehlalarm weg und 107 Deklarationen mehr im Blick. ⇒ Eine Existenzfrage über einen MECHANISMUS nie per Namenssuche beantworten — „welches Tor läuft auf dem Gegenstand", nicht „welche Datei heisst so, wie ich es nennen würde".
11 · Der Ort schlägt den Vorbehalt. Eine Registerzeile sagte wörtlich „GEBAUT UND GEPRÜFT, NICHT GEMERGT" — und wurde trotzdem von allen als erledigt gelesen. ⇒ Unfertiges gehört nicht ins Regal des Fertigen, egal wie deutlich der Vorbehalt formuliert ist. Wer im Register liest, liest Erledigtes.
12 · Ein dauerrotes Tor ist ein toter Meldeweg. Deshalb bekam die neue Frist 45 Tage und nicht 21: bei 21 wären am Tag des Einbaus alle 21 Einträge sofort rot gewesen. Ein Tor, das immer rot ist, kann kein NEUES Rot mehr ankündigen — und macht blind für jeden anderen Wächter im selben Lauf.

§5 · Konversations-Konventionen — wie wir miteinander schreiben

Startbestand = Tower-Zulieferung 19.07. (wörtlich übernommen). Diese Zeichen bedeuten in JEDEM Chat dasselbe — 1 Symbol = 1 Bedeutung, wie im UI.

KonventionBedeutung
🗼-PräfixDer Tower spricht zu einer Lane.
„LANE → 🗼"Eine Lane meldet an den Tower.
Lane-BRIEFEErscheinen als eigener, abgesetzter Block — nie im Fließtext.
🖐️ JC-AktionSeparater Block mit exaktem Kopier-Befehl: Konsole + Branch + VPN-Zustand + Erfolgs-Kriterium („grün endet mit X").
📦 Lern-BoxGerahmte Klartext-Definition auf eine JC-Frage (Tradition seit „was ist ein Gate?"). Pflicht: binnen Tages-Frist Glossar-Eintrag (D5-Guard wacht).
Status-Legende✅ live-verifiziert · 🔧 gebaut, Deploy ausstehend · 🔨 in Arbeit · 📝 Kontrakt fertig · ❌ offen — überall dieselben fünf.
🚦-BoardsLane-Stand als Ampel-Board im Tower-Bericht.
„STATUS:"-ZeilenAm Ende jedes Lane-Turns; der Tower POLLT sie (stündlich) — Lanes pushen keinen Status (spart JC Klicks).
GOLDENE REGELJede Beleg-ID #xxxx ist IMMER ein klickbarer Drive-Link. Ohne Ausnahme.
Stunden-BerichtFormat: Tabelle (gemessen, mit Belegen) + 3 Sätze + Hygiene-Zeile (ungepushte Stände, alte PRs).

Asynchron lesen ohne Verlust — die Anti-„sequentielles-Lesen"-Konventionen (Tower-Zulieferung 19.07., ab sofort gelebt)

JCs Problem: die Chats laufen asynchron weiter, während er liest — Älteres zu beantworten ist verschwendete Zeit. Diese fünf Konventionen machen den Verlauf ignorierbar:

KonventionBedeutung
Nachrichten-KlassenJede Tower→JC-Nachricht trägt ihre Klasse: 🟢 INFO (nie antworten) · 🖐️ AKTION (Befehl/Klick) · 🎯 ENTSCHEID [ID] (nur mit ID antworten). Alles ohne 🖐️/🎯 ist antwortfrei.
Der letzte Stand schlägt den VerlaufTowers jeweils NEUESTE Nachricht listet ALLE offenen JC-Punkte vollständig; was dort nicht mehr steht, ist erledigt/überholt. JC-Praxis: bei Rückkehr ans Ende springen, Älteres nie beantworten.
Überholt-MarkerSelbst-erledigte Fragen werden aktiv annulliert („❌ überholt: X — nicht mehr beantworten") — nie still fallengelassen.
Historie mit WarnschildDie Schwester des Überholt-Markers für DOKUMENTE statt für Fragen: ein überholtes Blatt wird nicht gelöscht und nicht umgeschrieben, sondern bekommt ein Warnschild. Drei Teile, alle drei Pflicht — ① Warnschild im Titel ② Begründung, warum die Datei bleibt ③ Löschbedingung. Präzedenzfall: 06_DASHBOARD/REACT_MIGRATION_PLAN.md.
Stabile IDs für alles OffeneJeder offene Punkt trägt eine ID (E4 · W2 · #17 · JE-xxx) → JC-Antworten sind reihenfolge-unabhängig gültig; Kurzform-Antworten („E4=ok") sind der Standard.
JC-Joker „Stand?"Das eine Wort liefert jederzeit den konsolidierten Ist-Zustand als EINE Tabelle — statt den Verlauf nachzulesen.
IDs tragen ihren LinkJede ID in Offen-Listen und Vorlagen (Tower→JC) trägt, wo passend, ihren Ansicht-LINK — JC klickt, statt zu suchen. (Familien-Seiten erzwingt das bereits Guard D6 Link-Pflicht; hier gilt es explizit auch für Chat-Listen.)
ID-UniversalitätALLES trägt eine ID (JC 19.07.): Regeln R-xx · Entscheide JE-xxx · Komponenten K-xx · Anforderungen #nn · Widersprüche W-x · Entscheid-Punkte E-x · Batches B-n · Konzept-Vorhaben (UMG-…). Neue Artefakt-Klassen bekommen bei Einführung ihren eigenen Nummernkreis, append-only. Maschinell: ID-lose Neuzugänge in Registern sind ROT (Guard C5b ID-Spalte · C6 kid-Pflicht · D1 JE-Existenz).
📜 HISTORIE MIT WARNSCHILD — die Form für ein überholtes Blatt (benannt 27.09.2026, RECHTE-UX#02 · #3163). Die Form ist nicht neu, nur namenlos gewesen — sie steht seit Monaten in 06_DASHBOARD/REACT_MIGRATION_PLAN.md und hat dort nachweislich gewirkt. Ohne Namen war sie nicht auffindbar: man kann nach einem Dateinamen greppen, nicht nach „wie datiere ich ein überholtes Blatt". Deshalb bekommt sie hier einen.

① Warnschild im TITEL. Nicht in einer Fussnote, nicht im Kopf-Absatz — im Titel, weil der in jeder Dateiliste mitläuft: „⛔ SUPERSEDED — … (historisch)". Darunter der Satz, der keine Auslegung zulässt: „DIESER PLAN IST NICHT MEHR GÜLTIG. NICHT DANACH BAUEN." Dazu was stattdessen gilt — als Tabelle alt gegen neu mit Grund, nicht als Verweis.

② BEGRÜNDUNG, warum die Datei bleibt. Das Original sagt es im Klartext: „sie ist die Quelle, aus der mehrfach versehentlich Arbeit beauftragt wurde — Lane-Briefs lasen diesen Plan statt den Lock." Ohne diesen Satz wirkt das Blatt wie Nachlässigkeit und wird beim nächsten Aufräumen gelöscht — und dann zeigt der nächste Brief ins Leere.

③ LÖSCHBEDINGUNG. „Löschen erst, wenn kein Brief mehr auf sie zeigt." ⛔ Ein überholtes Blatt ohne Löschbedingung ist ein Dauergast. Die Bedingung macht aus dem Warnschild einen Vorgang mit Ende statt einer Ewigkeits-Notiz.

⭐ Und die Falle, gegen die das Ganze gebaut ist: ein überholtes Blatt kann ein 🔒 Schloss tragen, während die Berichtigung in einem anderen Dokument steht — ein Blatt mit Schloss sieht autoritativer aus als die Notiz, die es berichtigt. Gemessen am 26.09. an PLAT_09/ARCHITECTURE_DECISION.md (gelockt, ohne Vermerk) gegen MODULE_CONTRACT.md §0 (trägt die Aufhebung). Die Berichtigung gehört an den stärkeren Ort, nicht an den schwächeren.

Zweite Anwendung (27.09., sechs PLAT#09-Blätter): Körper unverändert, 0 gelöschte Zeilen, je ein datierter Kasten — und darin auch das GRÜN Geprüfte. ⛔ Sonst sieht „nicht geprüft" aus wie „geprüft und in Ordnung".
📜 FAMILIEN-GESETZ (JC 19.07.): Die Konzept-Familie wird IMMER konsolidiert aufgebaut. Keine neue Seite, ohne vorher geprüft zu haben, ob Bestehendes ERGÄNZT oder per Link REFERENZIERT werden kann. Gelebt wird das dreifach: ① jeder PR mit neuer Familie-Seite trägt eine „Bestands-Check"-Zeile (welche bestehenden Seiten geprüft, was referenziert statt gedoppelt) · ② maschinell: familie_guard D7 Insel-Verbot — eine Seite ohne Index-Eintrag und ohne eingehende+ausgehende Familien-Verweise ist ROT (täglicher CI-Lauf) · ③ Bestätigungen stärken bestehende Einträge, erzeugen nie zweite (Konsolidierungs-Prinzip, Muster JE-090).

§6 · Wo das Gedächtnis gepflegt wird — neun Orte, gemessen

JC, 06.10.2026: „stelle mir diese als Tabelle, jetzt wo unser gesamtes Gehirn gepflegt wird“. Alle Zahlen sind gemessen, nicht geschätzt — und sie verändern sich. Wer sie liest, prüft das Datum. ⭐⭐ Und dieser Satz hat sich binnen 24 Stunden selbst bewiesen: Zeile 1 stand am 06.10. auf 98,7 % — fast voll, am 07.10. auf 81 % — Luft, weil eine Aufräum-Bahn in derselben Nacht lief. ⇒ Eine Zahl mit einer Bewertung daneben altert anders als eine nackte: ihre Aussage ist nicht die Zahl, sondern das Urteil — und ein falsches Urteil fordert Handlung, die nicht nötig ist. Deshalb trägt jede nachgemessene Zelle hier ihr eigenes Datum, nicht nur die Überschrift.

⭐⭐ Der Satz, der die Tabelle trägt: dieselbe Lehre kann an neun Orten stehen, und nur einer davon wird bei jedem Sitzungsstart gelesen. Ein Ort ohne Leser ist eine Schublade; ein Ort mit mehreren Schreibern ohne Abgleich ist eine Dopplung. Die Spalte ganz rechts nennt, welches der beiden droht.
#OrtUmfang (06.10.2026)Wer schreibtWer liestDopplungs-Risiko
1Speicher …/.claude/projects/…/memory/
⛔ ausserhalb git
361 Erinnerungen
Index 18.254 B = 81,0 % des Budgets
07.10.2026 nachgemessen; am 06.10. stand hier 363 / 22.235 B = 98,7 %
jede Sitzungjede Sitzung beim Start🟡 entspannt — SPEICHER#01 hat 6 Dubletten aufgelöst und die Ratsche auf 0 zugezogen; 4.274 B frei. ⛔ Die Form trägt trotzdem nicht: bei 1.296 Erinnerungen passt nicht einmal die nackte Namensliste (2,1 × Budget) — Form-Entscheid liegt bei JC
2Register register/*.md2.056 Scherben
07.10.2026
jede BahnGenerator, Roadmap🟡 Lehren wiederholen sich über Monate
3CLAUDE.md91 Zeilennur JC / Towerjede Sitzung, verbindlich🟢 kurz gehalten — ist ein Gate, kein Lager
4Kompendium 06_DASHBOARD/konzepte/
(diese Seite)
45 SeitenBahnenwer nachschlägt🔴 132 von 132 Lane-Briefen unverzeichnet
5Prüfer 08_OPS/check_*.py214 WerkzeugeBahnenCI🔴 Lehrtexte in Kommentaren, nie gegeneinander gehalten
6Anforderungs-Register2.159 ZeilenTowerBahnen🟡 —
7Brett AUFTRAEGE_BRETT.md3.430 Zeilen
07.10.2026
Tower / BahnenWächter🟢 auf Scherben umgebaut — 15 Dateien unter brett/, Block aus dem Verzeichnis gebaut. ⛔ Rest-Befund: die Deckungsprobe brett_md_bauen --pruefe läuft in KEINEM Workflow (null Aufrufer im Repo)
8Skill-Registry 02_SKILLS/_registry.yaml1.039 ZeilenBahnen6 generierte Listen🟢 generiert und validiert
9Artefakt-Register323 ZeilenBahnenWächter🟢 —
⛔ Die zwei Zahlen, die am 06.10. sofort zählten:

① Der Index steht bei 98,7 % — noch rund zwei Zeilen frei. Auf dem geborgenen VM-Stick liegen 949 weitere Erinnerungen, von denen über 900 hier fehlen. 949 × ~150 B Index-Zeile = 142 KB, das Sechsfache des ganzen Budgets. ⇒ Die heutige Form skaliert nicht, und das ist der Grund, warum die Rückholung hinter dem Aufräumen steht (Bahn SPEICHER#01, Register #3801).

② Ort 1 liegt ausserhalb von git. Kein Diff, kein Wächter in der CI, keine Spiegelung — der VM-Verlust im September war die Bauart, nicht das Pech. Eine Änderung am Speicher ist nur belegt, wenn sie in einer Registerzeile steht.
⭐ Wie man diese Tabelle fortschreibt: nicht von Hand zählen — check_memory_index.py (Ort 1) · check_brief_ist_im_kompendium.py (Ort 4) · check_artefakt_register.py (Ort 9) nennen ihre Zahlen selbst. ⛔ check_brief_ist_im_kompendium.py globt nur 01_ITERATIONS/**/BRIEF.md — Leitdokumente fallen durch sein Raster, und genau so lag ein von JC beauftragtes Konzept 58 Tage unbemerkt (AUSSEN#01, 06.10.).
Pflege & nächste Stufe: Diese Seite ist Stufe 1 (Gerüst) — JC validiert Kapitelschnitt + Lektionen-Auswahl, dann füllen wir §1–§4 mit den Detail-Verweisen (u.a. Seitenbau-Prozess A–F, Lane-Lebenszyklus, Deploy-Ketten). Verwandte Seiten statt Doppelung: 🗼 Der Tower (Rolle + 18 Commitments) · ⚖ Entscheidungs-Grenzen (wer entscheidet was) · ⚡ Generative Seiten (wie Screens entstehen) · 📖 Glossar (jeder Begriff in Klartext). Die Lern-Box-Pflicht lebt maschinell: familie_guard D5 (täglicher CI-Lauf) ist rot, solange der Lern-Box-Backlog im Glossar nicht leer ist.