🐈🐈⬛🐈 Das Dreiecksgespann — Rollen, Nähte, Freigaben
Der erste Stein, bevor ein Rohr gelegt wird. Nicht die Infra (Gitea, MCP, NetBox) beschreibt
diese Datei, sondern wer was macht und wo die Post übergeben wird. Rohre folgen dem Lauf
des Wassers — erst wenn die Nähte hier feststehen, ergeben Gitea + MCP + Ansible-Layout Sinn.
Solange keine „neuen Kinder" mitspielen: drei Miaus, ein Regisseur. Direkter Katzenkanal,
kurze Wege, analoge Handgriffe nur dort, wo ein Mensch wirklich ja/nein sagen muss.
Die drei Miaus (Gewerke entlang der schon existierenden Nähte Text → Ton → Bild)
| Miau | Ort | Gewerk | Werkzeug (heute) |
|---|---|---|---|
| 🐈 opuskatze | Habitat (crumbdesktop, zugemauert) | Text / Story — Skripte, Cameo-Zeilen, Regie-Regeln | raw_stems/*/script.json, SNAKE_KONZEPT, crumbstrudel |
| 🐈⬛ ansiblekatze | M4 | Ton / Render — Stimmen einbauen, dreisprachig mastern, deployen | render_episode.py (afconvert + pure-Python), s02-Deploy |
| 🐱 designkatze (neu) | (offen — M4? eigenes Habitat?) | Bild / Landing — Design, Animation, anime.js-Bühnen | hoerraum/build_player.py, season_player_*.html |
Branko = Regisseur, nicht Brücke. Er schleppt keine Handoffs — er spricht Stimmen ein,
sagt ja/nein, und drückt Push. Drei Freigabe-Punkte gehören ihm (siehe unten), sonst nichts.
Die Nähte (Übergabepunkte — hier wandert die Post)
Story-Freigabe Stimmen (analog) Look-Freigabe
│ │ │
▼ ▼ ▼
🐈 opuskatze ──①──▶ 🐈⬛ ansiblekatze ──②──▶ 🐱 designkatze ──③──▶ s02 live
Text Ton Bild
│ ▲
└──────────────────── Branko: Push ──────────────────────────────────┘
① Text → Ton. opuskatze schreibt die Cameo-/Story-Zeile render-fertig in script.json
(voices-Map ergänzt, Reihenfolge = Klang-Position). Übergabe = die Datei im Repo.
Analog: Braucht die Zeile eine echte Stimme (z.B. Snake), spricht Branko sie ein —
Snake wird nie per TTS geklont.
② Ton → Bild. ansiblekatze rendert _master.wav (DE/EN/FR) + .cues.json und ruft
im selben Schritt python3 hoerraum/build_player.py <ep> auf. So gehen Audio + Landing
Page in EINEM Push raus — kein separater Round-Trip, kein Mensch als Brücke. Das war die
Naht, an der es schieflief (ep06 dreisprachig gerendert, bevor die Page existierte).
③ Bild → live. designkatze hebt den MVP-Player (Sternenfeld) zur bespoke anime.js-Bühne
der Folge (ep10 = die handgebaute Referenz). Übergabe = season_player_epNN.html.
Analog: Branko gibt den Look frei, dann Deploy auf s02.
Snake-Konvention (festgeschrieben, damit's keiner „repariert")
Snake spricht Deutsch — in ALLEN Sprachen. Kein fehlender Render: es gibt bewusst nur
DE-Stems (Brankos echter Atem, speaker_roles_stem/SE00EP00/snake/). Untertitel sind
übersetzt, die Stimme bleibt DE = Running-Gag. EN/FR-Snake nur, wenn Branko sie neu einspricht.
Erst dann die Rohre (Reihenfolge, bewusst so herum)
- Diese Datei — Rollen + Nähte + Freigaben. ← du bist hier
build_player.pyin den Render-Schritt der ansiblekatze falten (Naht ②). Die designkatze
erbt das, statt es neu zu erfinden.- Gitea lokal als echtes Push-Ziel → der „direkte Katzenkanal" wird PRs/Branches zwischen
den Miaus (review-bar), statt~/.crumb/*-inbox.md-Zettel. Pull-Watcher bleibt daneben
gültig, solange das Habitat zugemauert ist (pull-only, holt sich die Post). - NetBox / Ansible Developer-Mode — die drei Miaus + M4 + Habitat als eigene Rollen/Umgebung
modelliert, damit die Pipeline die neue Topologie kennt. - MCP als geteilter Werkzeugkasten —
build_player.py, crumbstrudel, Render-Trigger als
Tools, die alle drei aufrufen. Zuletzt, weil erst jetzt feststeht wer welches Tool zieht.
Drei Miaus, kurze Wege. Der Mensch sagt ja/nein — und der Wald holt sich die Post.