--- context: default phase: betrieb-nach-live-gehen task: null total_tasks: 0 status: paused last_updated: 2026-09-16T10:28:05.211Z --- # Wiedereinstieg — v1.1.0 ist live, nichts angefangen ## Critical Anti-Patterns Alle aus tatsaechlichen Fehlschlaegen dieser und der vorigen Sitzungen. | Muster | Beschreibung | Schwere | Vermeidung | |--------|--------------|---------|------------| | Zaehlung ohne Ansehen | Der Planer zaehlte fuenf Tastenreihen im Rechner, es sind sechs — die Mindesthoehe schnitt die unterste Reihe ab. Erst der Browser-Blick fand es. | blocking | Zahlen, die eine Groesse tragen, im Browser messen (Bounding-Box, scrollHeight), nicht aus dem Quelltext ableiten. | | Gespeicherte Werte vergessen | Konstanten zu aendern haette fuer den User NICHTS bewirkt — react-grid-layout nimmt gespeicherte Layout-Eintraege woertlich (inkl. minW/minH). | blocking | Bei jeder Aenderung an Vorgaben pruefen, ob persistierte Daten dieselben Werte tragen; dann beim Laden ueberschreiben/anheben. | | `git checkout -- ` als Falsifizierungs-Rueckweg | setzte auch die noch unkommittierte Nutz-Aenderung zurueck. | advisory | Vor Rueckbau-Proben committen, oder Patchdatei + `git apply -R`. | | Zwei Schreiber auf einer Datei | Uebersetzungs-Fix musste warten, weil der laufende Executor de.json/en.json anfasste. | advisory | Quick-Tasks mit ueberlappenden Dateien nacheinander ausfuehren. | | Platte voll durch Bau-Cache | vier Docker-Bauten + CI: `no space left on device`. | advisory | `docker builder prune -af` und `docker image prune -f` bei Bedarf; Volumes nie anfassen. | | Bericht statt Arbeitsbaum | (aus Etappe 2) Agenten brachen nach getaner Arbeit ab. | blocking | `git status` ist die Wahrheit. | **Gemessen 2026-09-16 10:28Z:** `git status --porcelain` leer, `main == origin/main` (29fe3d7), keine async-jobs, keine angefangene Arbeit. **Live:** tessera.ctl.de laeuft `v1.1.0` (User hat gepullt, "sieht gut aus"). **Beta:** alpha.tessera.ctl.de holt `beta`/`latest` — derselbe Stand e0d4532. **Registry:** beta/latest/live/v1.0.0/v1.1.0. **Gitea-Releases:** 1.0.0 und 1.1.0 (letzterer von der Pipeline angelegt — erster CI-Beweis des Release-Wegs). **Schalter:** AUS und bleibt es. **Mandantenfaehigkeit:** RUHT (User 2026-09-14). **Tests:** Web 49/309, API 67/1078, Werkzeug 253/253. **Ledger:** 15 offen / 1 zurueckgestellt / 23 geschlossen / 39. Seit 2026-09-14: WINDOWS #29, Etappe 3c, Kanalmodell + Versionsstempel, Fehler-melden-Knopf, Erstfreigabe v1.0.0 (live 15.09.), Dashboard-Umbau + Nachbesserung, Aenderungsliste (CHANGELOG.md, Seite "Was ist neu", Gitea-Release je Tag), Uebersetzungs-Fix, Freigabe v1.1.0. Alle als Quick-Tasks mit voller Kette; Details in der Quick-Task-Tabelle in `.planning/STATE.md`. Nichts Angefangenes. Naechste Arbeit kommt vom User (Feedback aus dem Betrieb). Ohne Termin: Desktop-Client-Todo, Ship Phase 17 (blockiert bei open_count 15), Ledger #35/#36/#37. Nicht ansprechen: Mandantenfaehigkeit, Lizenzierung. Siehe `HANDOFF.json` — Kanalmodell, Versionsnummern-Regel (Funktionen -> mittlere Stelle, Fixes -> dritte), Mandantenfaehigkeit ruht, Lizenzmodell nur festgehalten, Dashboard-Entscheidungen (inhaltsgetriebene Minima, Ueberschreiben gespeicherter Minima, ganze Kachel Griff, preventCollision). Keine. Eine nicht-blockierende Handreichung fuer den User: auf alpha einmalig `IMAGE_TAG=beta` und die zwei `image:`-Zeilen (Kap. 9) — bis dahin laeuft alpha ueber `latest`, das dasselbe Abbild ist. ## Required Reading (in order) 1. `.planning/STATE.md` — Session Continuity + Quick-Task-Tabelle 2. `CHANGELOG.md` — Regel: jede Aenderung sofort unter `## Unveröffentlicht` 3. `docs/anleitung-betrieb.md` Kapitel 9 — Freigabe/Hotfix-Rezept 4. `.planning/WINDOWS.md` — 15 offen, davon nur #35/#36/#37 ohne Mandantenbezug ## Infrastructure State - Live-Server tessera.ctl.de (`IMAGE_TAG=live`, eigene DB); alpha 192.168.13.12 (Beta); Deploy macht der User (pull + `up -d --force-recreate api web`). - Lokal: `db`, `api`, `web`, `mailhog` laufen (web aus c3d8e16); Admin admin/admin123; DB ohne Host-Port (IP per `docker inspect`, tessera:tessera_dev); Prisma-Binary aus `apps/api/node_modules/.bin/prisma`. - Gitea 1.26.2 + Runner auf diesem Rechner; Runner arbeitet EINEN Auftrag gleichzeitig; CI ueber API localhost:3002 beobachtbar (Token aus Push-URL, nie ausgeben). `grep` ist hier ugrep (`$` als Anker). `/gsd-resume-work`, dann das, was der User nennt — als `/gsd-quick --validate` mit voller Kette; Browser-Nachweis per Playwright MCP gegen lokale Container; CHANGELOG pflegen; bei "Version freigeben" das Rezept aus Kap. 9.