Files
tibi-docs/plans/doku-audit.md
T
apairon 6b55745fea Protokoll: Welle I nachgetragen (Komponenten-Rendering, Chip-Farben, Dev-Server-Fallstrick)
Die Welle-I-Notizen waren zuvor durch eine parallele Schreibsitzung aus plans/doku-audit.md
verschwunden (Datei war zuletzt in 06c5f0d geaendert, meine Welle-I-Edition fehlte im Commit).
Jetzt erneut eingetragen und committet - inklusive der fehlenden Ueberschrift 'Review-Fehler'.
2026-10-17 14:19:56 +00:00

76 KiB
Raw Blame History

Doku-Audit — Übersicht, Lücken, Fehler, Verbesserungen

Zweck: Vollständige Prüfung der Tibi-Doku (tibi-docs) gegen den Code von tibi-server, tibi-admin-nova, tibi-types und tibi-svelte-starter — mit Phasenplan und Checklisten zum Abarbeiten.

Stand: 2026-10-16, umgesetzt am 2026-10-17.

Zahlen in §1 sind der Audit-Stand vom 16.10. (61 Seiten, 30 Screenshots) — bewusst als Schnappschuss stehen gelassen. Ist-Stand nach der Umsetzung (17.10.): 70 Inhaltsseiten, 66 Screenshots (49 Anwender, 17 Admin), 71 Build-Seiten, 0 tote Links/Anker/Bildpfade, 8 legitime „Platzhalter"-Marker, npm run build grün. Jede Anwender- und jede Admin-Seite hat mindestens ein Bild. Nicht aus dem Mock darstellbar (Platzhalter mit Begründung): Suchindex-Banner (interceptor.ts:3073-3080 — Queue > 0 nur bei ngram/vector und _searchPending, corporate hat keine search-Config), Session-Timeout (inactivityTracker.ts:47 — im Mock No-op), KI-Werkzeugstatus/Vision (kein KI-Backend), Drill-Down/Sprungziele, Inline-Anlage/Rückverweise.

Rahmen (aus der Zielsetzung): Die Doku soll beschreiben: (a) alle Funktionen des tibi-server für Entwickler und Administratoren beim Aufsetzen und Betreiben von Projekten, (b) alle tibi-admin-nova-Funktionen, die Entwickler zum korrekten Konfigurieren brauchen, (c) alle tibi-admin-nova-Funktionen aus Anwendersicht anhand von Screenshots (Mock-Projekt corporate, nie t1). Die Doku soll nicht: den Quellcode der Tibi-Repos für die Core-Weiterentwicklung erklären, und den alten tibi-admin (vor Nova) beachten.


0. Artefakte dieses Audits

Datei Inhalt Zeilen
plans/doku-audit.md dieses Übersichtsdokument (Ergebnis + Phasenplan) —
plans/audit/01-server-features.md tibi-server: Feature-Matrix, Routen, Hooks, MCP, Config, Lücken, Fehler 200
plans/audit/02-admin-interfaces.md tibi-admin-nova: Entwickler-Schnittstellen, fehlende Interface-Doku, UI-Inventar, Screenshot-Lücken 128
plans/audit/03-types-starter.md tibi-types-Schemas + Starter: undokumentierte Properties, Starter-Lücken 125
plans/audit/04-legacy-docs.md Alt-Doku-Inventar in den Nachbar-Repos, Wegfall-Kandidaten, Repo-Hygiene 106
plans/audit/05-review-einstieg-server.md Seitenreview einstieg/ + server/ (35 Befunde) 68
plans/audit/05-review-projekt.md Seitenreview projekt/ (50 Befunde) 88
plans/audit/05-review-admin-reference.md Seitenreview admin/ + reference/ (21 Befunde) 55
plans/audit/05-review-anwender-adr.md Seitenreview anwender/ + adr/ (25 Befunde) 58
plans/audit-report.json Maschinenlesbarer Struktur-Befund (Skript) —
scripts/audit-docs.mjs Audit-Skript: Frontmatter, Codeblöcke, Links, Anker, Bilder, Tabellen, Stil-Marker, Komponenten-Inventar 268
plans/coverage-report.json Bestehendes Coverage-Inventar (Routen/Kontexte/Tools/Schemas) —

Belegstatus-Legende (durchgängig in diesem Dokument):

Symbol Bedeutung
✅ selbst am Code/Doku geprüft (Datei:Zeile liegt vor)
⚠️ aus Subagenten-Report übernommen, nicht selbst nachgeprüft
❌ Report-Behauptung, die ich widerlegt habe (siehe §15.3)
🔍 PRUEFEN-Punkt: offen, braucht Entscheidung/Beleg

Reproduzieren:

cd /WM_Dev/src/gitbase.de/cms/tibi-docs
node scripts/audit-docs.mjs      # schreibt plans/audit-report.json
npm run coverage                 # schreibt plans/coverage-report.json
npm run build                    # muss grün bleiben

1. Kennzahlen und Ampel

Bereich Zahl Ampel
Seiten / Zeilen 61 / 7.127 🟢 Gerüst steht, alle Bereiche vorhanden
Build 62 HTML-Dateien (61 Inhaltsseiten + 404.html), grün, Pagefind + Sitemap ok 🟢
Tote interne Links / Anker 0 🟢
Ungeschlossene Codeblöcke / Codeblöcke ohne Sprach-Tag 0 / 0 🟢
Frontmatter fehlt 1 Seite ohne description (reference/openapi.md) 🟡
Kaputte Markdown-Tabellen 1 (admin/ki-funktionen.md:40) 🟡
Screenshots 30 (anwender/), 9 Admin-Seiten mit Platzhalter-Kommentar (0 Bilder) 🟠
Verifiziert-Stempel 4 verschiedene Formate, 2 Stempelnamen („Verifiziert am" / „Geprüft an"), Hashlängen 7/8 Zeichen 🟡
Faktische Fehler (selbst geprüft) 8 🔴
Faktische Fehler (gemeldet, ungeprüft) 7 🟠
Nicht dokumentierte Server-Fähigkeiten 15 🔴
Fehlende Interface-Doku (Admin/Projekt) 10 Kernpunkte 🔴
Undokumentierte Schema-Properties (tibi-types) 10+ 🔴
UI-Bereiche ohne Screenshot 25 🔴
Anwender-Seiten, die komplett fehlen 5 🔴
Alt-Doku-Dateien, die sofort gelöscht werden können 0 (nur Repo-Ebene) ⚪
Seitenreview-Befunde gesamt 131 Tabellenzeilen (35 + 50 + 21 + 25) 🟠

2. Phasenplan (Übersicht)

Reihenfolge nach Risiko/Nutzen — P7 vor P6, weil Stil-/Strukturarbeit Überschriften und Slugs ändert und damit Screenshots entwertet. P1 und P2 sind Fehlerkorrekturen (klein, hoher Effekt), P3–P5 sind Substanz, P6a ist Vorarbeit, P7 ordnet, P6b friert ein, P8/P9 sind Ordnung und Abriss. P3 und P4 sind parallelisierbar.

Phase Name Inhalt Aufwand Abhängigkeit
P1 Falschaussagen tilgen 8 selbst geprüfte + 7 gemeldete Inhaltsfehler S (½ Tag) —
P2 Markdown/Struktur/Hygiene kaputte Tabelle, Hüllen-Rückstände, Stempel-Format, Link-/Anker-Prüfung als fester Schritt, Redirect-Konzept S (1 Tag) —
P3 Server-Lücken schließen 16 Fähigkeiten: Feld-Level-Permissions, System-CRUD, _meta, MIME, Snapshots, Embedding-Gruppen, Scopes, Filecleanup M–L (2–3 Tage) P1
P4 Admin-Interface-Lücken schließen 12 Schnittstellen: singleton, admin.tokens, query, agent, sections, MANUALLY, Export-ctx, Action-execution M (2 Tage) P1 (parallel zu P3)
P5 tibi-types + Starter + Fremd-Repo-Doku undokumentierte Schema-Properties, Playwright/Mock im Starter, Interface-Doku in den Repos selbst M (1–2 Tage) P4
P6a Fehlende Anwender-Seiten 5 Seiten (Verlauf/Restore, Massenbearbeitung, Aktionen, Backup-Einspielen, Tastenkürzel) S–M (1–2 Tage) P2
P7 Stil + Starlight + Struktur Ton, UI-Text-Treue, Komponenten (LinkCard, Tabs syncKey, Icon), Astro-Config, Slug-/Sidebar-Umbau M (1–2 Tage) P6a, P3/P4 (UI-Texte können sich noch ändern)
P6b Screenshots Anwender + Admin 9 Admin-Motive + 25 UI-Bereiche, alles aus corporate L (3–5 Tage) P7 (erst nach Slug-/Text-Freeze)
P8 Meta/Betrieb AGENTS.md-Widerspruch, Sync-Skripte, Coverage v2, Stempel-Norm, Staleness-Regel, Issues an die Repos S (1 Tag) P2
P9 Alt-Doku-Abbau Repo-Hygiene, Wegfall-Bedingungen je Alt-Datei S–M P3–P7

Warum diese Reihenfolge (falsifizierbar): P7 verschiebt Slugs und ändert Überschriften/Sidebar; jede Stunde Screenshot-Arbeit davor müsste danach teilweise wiederholt werden. Umgekehrt kostet die Verschiebung nichts, weil P6b keine Inhalte mehr ändert. Falls sich zeigt, dass P7 doch Inhalte anfasst, die Bilder zeigen, ist die Reihenfolge zu revidieren (Re-Shoot-Zähler als Messgröße).


3. P1 — Faktische Fehler (selbst geprüft ✅)

Diese acht Stellen widersprechen dem Code. Jede Zeile nennt Doku-Ort, Code-Beleg und Korrektur.

# Datei:Zeile Doku sagt Code sagt Korrektur Beleg
1 server/konfiguration.md:21 und :99-104 bge-m3 → EMBEDDING_BGE-M3_* (Bindestrich bleibt stehen) normalizeEnvKeyName: - → _, dann UPPER → BGE_M3 (internal/config/server.go:245-251) Alle 6 Beispielzeilen auf EMBEDDING_BGE_M3_* ändern, Regel-Satz präzisieren ✅
2 projekt/audit-backup.md:107,127,141 Token-Recht heißt AllowSnapshot Feld heißt allowSnapshots (yaml-Tag im Struct AdminToken, internal/models/project.go:120; Prüfung AllowSnapshots) „allowSnapshots (Projekt-Admin-Recht)" durchgängig ✅
3 reference/hook-kontexte.md:52 crypto.sha256, crypto.md5 „(plus weitere)" Nur 2 Funktionen registriert (internal/hook/context_crypto.go:13-16) „(plus weitere)" streichen ✅
4 projekt/mcp-nutzen.md:63-71 Scope-Tabelle: .get, .post, .put, .delete MethodToAction("GET") → read, POST → create, PUT → update (internal/config/admin_token.go:115-128); Detailabschnitte derselben Seite (:102,120,192,210) nennen korrekt .read/.create/.update/.delete Tabelle auf .read/.create/.update/.delete umstellen ✅
5 admin/customizing.md:14 „meta.views (Tabelle, Karten, Kalender …)" steuert die Ansichten collection-meta.schema.json hat kein views und additionalProperties:false; types/admin.d.ts:452-458: Custom-Views „not yet supported" Zeile streichen oder durch die tatsächlich vorhandenen Mittel (viewHint, subNavigation) ersetzen ✅
6 admin/exporte.md:60 Beispiel ruft ctx.db.loadAll({ filter: ctx.filter }) Signatur ist loadAll(collection, options) (frontend/src/lib/utils/custom-export.types.ts:56) Beispiel auf loadAll("blog", { filter: ctx.filter }) korrigieren ✅
7 reference/openapi.md (ganze Seite) Quelle TIBI_API_URL/openapi.json, „Erzeugen mit npm run sync:openapi" Server hat nur GET /api/v1/_openapi/:project (internal/controller/setup.go:692-701); kein /openapi.json. Das Skript scripts/sync-openapi.mjs ruft genau diesen nicht existenten Pfad → Platzhalter bleibt ewig stehen Skript auf _openapi/:project umstellen (Env TIBI_NAMESPACE), Seite generieren ✅
8 server/betrieb.md:21 „mongo (MongoDB 7)" Lokaler Stack: image: gitbase.de/server/mongo:8 (tibi-admin-nova/docker-compose-local.yml:133, tibi-svelte-starter/docker-compose-local.yml:139) „MongoDB 8" ✅

Gemeldet, aber nicht selbst geprüft (⚠️ — vor dem Fixen kurz verifizieren):

# Datei:Zeile Behauptung Korrektur
9 einstieg/neues-projekt.md:68,77 $CODING_TIBISERVER_URL existiert in keinem .env/Skript auf die realen Starter-Variablen umstellen
10 server/schnittstellen.md:62 „Alle Antworten gzip" absolut Ausnahmen ergänzen: .pdf/.mp4/.jpg/.jpeg/.png, /metrics (setup.go:151-154)
11 projekt/hooks-schreiben.md:85 „Ohne return … eingeloggte Nutzer sehen dann alles" „anonyme Nutzer" (Starter-Hook filtert nur Anonyme)
12 projekt/sammlungen-anlegen.md:87 Gruppen-Beispiel „content, content, community" „content, community, system" (Starter: content, community, system) — ✅ Duplikat selbst bestätigt (grep group: api/collections/*.yml)
13 projekt/audit-backup.md:29 Audit-defaultTTL: "0" = ewig im Code kein 0-Sonderfall gefunden → Beleg nachreichen oder Aussage streichen (🔍)
14 projekt/deploy.md:90-91 POST /api/ssr?clear=1 als Server-Pfad dargestellt als Starter-/Proxy-Pfad kennzeichnen; Server hat keine ssr-Route
15 anwender/orientierung.md:58 Überschrift „Schnellsuche" UI-String heißt „Befehlspalette" (frontend/src/lib/i18n/locales/de.json:1207; ✅ — „Schnellsuche" kommt dort nicht vor)
16 admin/aktionen.md / admin/ki-funktionen.md „Kurzfassung" Locale sagt „Zusammenfassung" (⚠️)

4. P2 — Markdown, Struktur, Hygiene-Defekte

Automatisch gefunden (Skript) und im Review bestätigt:

# Ort Defekt Fix Beleg
1 admin/ki-funktionen.md:40 Tabelle mit inkonsistenter Spaltenzahl (letzte Zeile 2 statt 3 Zellen) → bricht das Rendering der dritten Stufe Zeile auf drei Zellen umbauen (Stufe, Schwelle, Verhalten) ✅ Skript
2 reference/hook-kontexte.md:65 Aufbau-Rückstand in Nutzer-Doku: „Die Hülle nannte nur: db, http, …" Absatz ersetzen durch: „Diese Pakete existieren zusätzlich zur Erstfassung: …" ✅
3 reference/openapi.md kein description in Frontmatter, „Stand: Platzhalter" nach P1-#7 generieren ✅ Skript
4 einstieg/neues-projekt.md:81, einstieg/schnellstart.md:8, server/uebersicht.md:12 :::caution / :::danger / :::note-Direktiven — 3 Einzelfälle im ganzen Repo (sonst 86× <Aside>) auf <Aside type="…"> vereinheitlichen ⚠️/✅ (Vorkommen selbst bestätigt)
5 admin/ansichten-listen.md:76, admin/exporte.md:40, projekt/… #-Überschriften innerhalb von Codeblöcken (Skript-Fehltreffer) → keine echten Fehler, aber Prüfregel dokumentieren keine Änderung nötig ✅
6 projekt/pagebuilder-dev.md:215 Überschrift 100 Zeichen lang kürzen, Rest in den Text ✅ Skript
7 alle Seiten „Suchbegriffe:"-Zeile in 7 Seiten, „Suche-Begriffe" (Bindestrich) in 4 Seiten, in 8 Seiten ganz ohne einheitlich „Suchbegriffe:" überall oder nirgends ⚠️
8 Seitenfüße Stempel-Format: 11× „Geprüft an 2b091d89" (ohne Datum), 15× „Verifiziert am (repo)", Hashlängen 7 und 8 Norm „Verifiziert am <kurzhash> <JJJJ-MM-TT> (<repo>[, …])", AGENTS.md §2 ergänzen ✅ (Inventar selbst erhoben)
9 alle Seiten ungenutzte Starlight-Importe (z. B. 4 Server-Seiten teilen eine 8er-Importzeile) Imports auf tatsächlich benutzte Komponenten kürzen ⚠️
10 anwender/*.md Fußzeile „Geprüft an … (tibi-admin-nova)" ohne Datum (11×) Datum ergänzen ✅

Bilder: 0 verwaiste, 0 doppelte Dateien — alle 30 .webp genau einmal referenziert, alle mit deutschem Alt-Text, alle ≤ 78 KB. 🟢


5. P3 — Lücken: tibi-server-Funktionen ohne Dokustelle

Aus plans/audit/01-server-features.md, sortiert nach Wirkung für Projektentwickler/Admins. Code-Belege dort im Detail.

# Fehlende Fähigkeit Code-Beleg Wo sie hingehört
1 Feld-Level-Permissions (readonlyFields, hiddenFields, Feldsichtbarkeit je Rolle) internal/models/field_permissions.go, http_status.go:53-58; Server-Doc 17-field-level-permissions.md (546 Z.) eigene Seite projekt/feld-rechte.md
2 System-CRUD per REST (user/project/org/team/token, je 5 Routen) internal/dbapi/register.go:90-94 reference/rest-system.md
3 GET /_meta, GET /_meta/<collection> internal/dbapi/register.go:100-114 reference/rest-system.md + Querverweis projekt/mcp-nutzen.md
4 token-Collection-Felder (scopes, expiresAt) internal/models/token.go:39-76 projekt/rechte-tokens.md
5 Scope-Katalog (System- vs. Namespace-Scopes, UND-Regel Token × Besitzer) internal/models/token_scope_catalog.go:47-90 projekt/rechte-tokens.md
6 upload.allowedMimeTypes internal/config/server.go:46 server/konfiguration.md
7 Snapshot-Detailfelder (mode: include/exclude, collectionDedup, permissions, retention.maxAge/maxSizeBytes) und Einzelrouten (stats, prune, trigger, :id/download) internal/controller/setup.go:436-495, snapshot_config.go:34-93 projekt/audit-backup.md
8 Backup-Restore-Token-Lebenszyklus (Analyse → :restoreToken → Restore/Cleanup) + Admin-Auth-Reihenfolge internal/controller/admin_backup*.go, admin_auth.go:20-74 projekt/audit-backup.md
9 Embedding-Gruppen-Tuning (Policies, Health, Race, Retry, Bulk) internal/config/embedding_group.go:44-190, Env server.go:489-625 server/konfiguration.md + projekt/suche.md
10 Suchmodi jenseits des Starters (text/regex/eval/filter, autoRegenerate, Search-Worker, Such-Debug) internal/models/collection.go:314, controller/search_debug.go projekt/suche.md
11 aggregate an der Listen-Route (nur in MCP/SSR/Fehlercodes erwähnt) internal/controller/collection_get.go projekt/abfragen-lesen.md
12 Realtime-Hub-Details (Ringpuffer 256, LastN/MaxAge/TTL, Drop-Policy) internal/realtime/hub.go:94-179 server/schnittstellen.md
13 Gzip-Ausnahmen + _search-Stripping/NaN-Sanitizing internal/controller/setup.go:151-154, :814-825 server/schnittstellen.md
14 Filecleanup (Orphan-Dateien) hat gar keine Dokustelle internal/filecleanup/cleanup.go:21-149 Einzeiler in server/betrieb.md + projekt/dateien-bilder.md
15 Hook-Cache-Defaults (MaxEntries 10000, TTL 0, LRU) internal/cache/cache.go:23-33 reference/hooks-daten.md
16 Ephemeral REST Tokens: tibi-server/docs/24-…md beschreibt sie, im Code kein Treffer nur docs/24* 🔍 Entscheidung nötig: implementieren oder Server-Doc löschen — nicht in die Nutzer-Doku übernehmen, solange es die Fähigkeit nicht gibt

Positiv (vollständig abgedeckt): alle 36 MCP-Tools, alle 23 Hook-Pakete/70 Funktionen, Jobs, Actions, Audit, LLM-Chat, Rate-Limit/Login-Backoff, CORS-Kaskade, suexec, SSR-Hooks, Deploy/Compose-Profile.


6. P4 — Lücken: tibi-admin-nova-Entwickler-Schnittstellen

Aus plans/audit/02-admin-interfaces.md. Alle Punkte fehlen in tibi-docs und in tibi-admin-nova/docs.

# Schnittstelle Wirkung Beleg
1 meta.singleton (enabled, key) Ein-Eintrag-Sammlungen (Einstellungen, Startseite) collection-meta.schema.json
2 project.admin.tokens (allowReload, allowRegenerateSearch, allowBackup, allowSnapshots) wer Backup/Snapshot/Search-Rebuild per Token darf project.schema.json
3 meta.query deklarierte Zusatz-Querykeys für Hooks (ctx.request().query) collection-meta.schema.json
4 meta.agent (purpose/instructions/fieldHints/workflows) Sammlungs-Doku für Agents (MCP/REST _meta) collection-meta.schema.json
5 meta.sections (group/label/collapsible/collapsed) zweite Formular-Gruppierung neben sidebar collection-meta.schema.json
6 meta.defaultSort.order: MANUALLY + Drag-Freigabe manuelle Reihenfolge als Config, nicht nur Bedienung collection-meta.schema.json, types/admin.d.ts:426ff
7 meta.viewHint.navigation (nodesField, declaredTrees) Navigationsbaum-Ansicht konfigurieren Schema, NavigationTreeField.svelte
8 Export-ctx vollständig (loadAll-Batching 500, sort[0], selector vs. select, csvCell-Guard, Dateinamen-Sanitizing) eigene Berichte korrekt schreiben frontend/src/lib/utils/custom-export.types.ts:17-100
9 Action-execution (kind, cancellable) + Upload-Fortschritt Actions abbrechbar/Fortschritt korrekt action.schema.json, ActionView.svelte:349-379
10 Ladeordnung/Cache der Registry-Loader (Pagebuilder, Exporte), {eval}-Asset-Specifier Assets/Registry korrekt verdrahten load-registry.ts:14-60, project-asset-specifier.ts:17-50
11 Runtime-System-Config (system.config.json, Engine-Modi auto/api/browser/none, TTS-Stimmen) KI-Laufzeit im Admin konfigurieren runtime-system-config.ts, schemas/config/system-config.schema.json
12 views-Widerspruch auflösen (siehe P1 #5) Doku darf nichts versprechen, was das Schema verbietet ✅

🔍 Nicht verifizierte Begriffe aus dem Ausbau-Auftrag: hooksTrigger und exportScript existieren im Code nicht (grep ohne Treffer). Vor jeder Dokumentation klären, ob damit hooks bzw. meta.exports gemeint war.


7. P5 — Lücken in den anderen Repos

7.1 tibi-types (Schemas + Hook-Typen)

Kein Doku-Verzeichnis vorhanden — die einzige Referenz sind index.d.ts und schemas/config/*.json. Aus plans/audit/03-types-starter.md:

Undokumentierte Property Wirkung Beleg
collection.queryLimits (defaultLimit/maxLimit) erzwungene Limit-Grenzen je Sammlung collection.schema.json
collection.readonlyFields / hiddenFields pauschale Feld-Sperre/Verbergung collection.schema.json
collection.uploadPath / upload Upload-Ablage und Upload-Regeln je Sammlung collection.schema.json
collection.strictFields unbekannte Felder ablehnen collection.schema.json
collection.imageFilter Bildfilter-Defaults je Sammlung collection.schema.json
collection-meta.singleton / sections s. P4 collection-meta.schema.json
field-meta.hideLabel, imageEditor, containerProps, inputProps, schemaRef, protected, drillDown, pageSize Widget-/Formularverhalten field-meta.schema.json
permissionSet.validProjections erlaubte Feldprojektionen je Recht permissions.schema.json
action.output.mapping (summary/details/progress mit index/count/status/message) Ergebnis-Darstellung nach Action action.schema.json

Strukturempfehlung: reference/schemas.md von „Übersicht" zu einer Property-Matrix ausbauen (Schema → Property → Typ → Default → Wirkung), generiert aus schemas/config/*.json per Skript (analog scripts/coverage-inventory.mjs). Damit ist die Seite dauerhaft drift-frei.

7.2 tibi-svelte-starter

Lücke Beleg/Ort Ziel in tibi-docs
Playwright-Setup fehlt komplett playwright.config.ts, tests/ neues Kapitel projekt/tests.md oder Abschnitt in einstieg/schnellstart.md
Mock-Modus (MOCK=1) nur als Wort esbuild.config*.js, frontend/ einstieg/schnellstart.md
api/templates/, ssr.yml, Cache-Regeln api/ projekt/ssr-website.md
CI/Deploy-Env (ci-deploy.sh, ci-staging.sh, .basic-auth-*, ADMIN_ASSET_VERSION) Repo-Root projekt/deploy.md
lib/-Module, widgets/, Sentry frontend/src/ projekt/ssr-website.md

7.3 tibi-admin-nova/docs/ und Test-Pläne

Kein Löschkandidat. 3 Dateien sind Single Source (collection-config.md, custom-export-script.md, test-plans/39-preview-resolver.md, test-plans/41-search-index-status.md), 18 weitere sind teilweise die einzige Quelle für Detailverhalten.

Empfehlung statt Löschen: die drei Vollreferenzen (collection-config.md 2.293 Z., collection-export.md 327 Z., custom-export-script.md 117 Z.) per Sync als Referenz-Kapitel in tibi-docs spiegeln (reference/collection-config.md …) und im Repo als Quelle belassen — gleiche Mechanik wie beim Server-Sync, nur mit Sidebar-Eintrag.


8. P6 — Screenshots und Anwender-UI-Abdeckung

8.1 Ist

  • anwender/: 30 Bilder, 11 Seiten — inhaltlich vollständig illustriert. 🟢
  • admin/: 9 Seiten mit Platzhalter-Kommentar <!-- Screenshot-Platzhalter (T-SHOTS): … -->, null Bilder. 🔴

Fehlende Admin-Motive (aus den Kommentaren, ✅ selbst extrahiert):

Seite Motiv
admin/aktionen.md:29 Action-Ansicht mit Methoden-Reitern, Eingabeformular, Ausführen-Knopf
admin/ansichten-listen.md:103 Liste mit Suchfeld, Filter-Popover, Paginierung
admin/benutzer-rechte.md:103 Hub mit Benutzerliste + Detail-Drawer (Rollen-Badge, Chips)
admin/customizing.md:87 angepasste Listenansicht mit Spaltenwahl und eigenem Export-Reiter
admin/eintrags-editor.md:103 Editor mit Formular, Seitenleiste, Übersetzungsleiste
admin/exporte.md:83 Export-Dialog mit Formatwahl und Spaltenliste
admin/ki-funktionen.md:132 geöffneter KI-Chat mit Werkzeugstatus und Mikrofon-Knopf
admin/medien.md:81 Medienraster mit Warteschlange und Bildeditor-Dialog
admin/setup.md:83 frisch gestarteter Admin mit Projektliste nach Login

8.2 UI-Bereiche ganz ohne Bild (Anwender-Perpektive, 25)

Command-Palette-Overlay, Tastaturkürzel-Hilfe, Suchindex-Banner, Bulk-Edit-Panel, Feldsuche/Sprungziele/Drill-Down, Diff-Dialog, JSON-Overlay, FK-Drawer/Inline-Anlage/Rückverweise, Übersetzungsleiste, Medien-Lightbox, Upload-Warteschlange, Fremddatei-Widget, Action-Ansicht (Anwender), KI-Werkzeug-Inspektor/Chat-Verlauf/Vision-Overlay, Audit-/Verlaufs-UI (komplett), Backup-Import-Dialog, Restore-Bestätigung, Benutzer-/Team-/Org-Drawer, Token-Seite, Projekt-Admin-Ansicht, Stellvertretungs-Banner, Session-Timeout-Dialog, Theme-Umschalter, Voice-Filter-Eingabe.

8.3 Fehlende Anwender-Seiten (mit Code-Beleg)

Vorschlag Beleg Warum
anwender/verlauf-wiederherstellen.md AuditView.svelte, AuditHistoryPanel.svelte, AuditDiff.svelte, AuditRestoreDialog.svelte mächtigste ungeklärte UI; Restore ist destruktiv
anwender/massenbearbeitung.md BulkEditPanel.svelte versehentliche Änderungen an vielen Einträgen
anwender/aktionen.md ActionView.svelte Anwender startet Actions, weiß aber nicht, was passiert
anwender/backup-einspielen.md BackupView.svelte, backup-api.ts Import/Restore ohne Anleitung = Datenverlustrisiko
anwender/tastenkombinationen.md (Anwender-Sicht) shortcuts.ts, KeyboardShortcuts.svelte Referenz existiert, Anwender-Zugang fehlt

8.4 Vorgehen (Playwright, Mock)

Bestehende Vorlage: plans/t-shots-arbeitsauftrag.md — Mock-Admin, Login admin/admin (frontend/assets/mock/login.json), Projekt Corporate Website (Mock-Projekte vorhanden: blog, corporate, events, intranet, shop; t1 ist verboten), Zielpfad tibi-docs/src/assets/anwender/, max. 200 KB je Bild, deutscher Alt-Text.

Erweiterung für P6:

  1. Admin-Unterordner src/assets/admin/ anlegen (Trennung Anwender-/Admin-Bilder).
  2. Motive 8.1 zuerst (9 Bilder), dann 8.2 in der Reihenfolge der Seiten (25 weitere).
  3. Für die 5 neuen Seiten 8.3 zuerst Text, dann Bilder.
  4. Danach npm run build + Alt-Text-Prüfung (scripts/audit-docs.mjs prüft automatisch).

8.5 Daten-/Rechte-Hinweis

Screenshots aus dem Mock sind unkritisch. Sobald echte Projekte fotografiert werden: keine Kunden-/Personendaten (AGENTS.md §5). 🔍 Für Review-Screenshots (Bulk, Restore, Stellvertretung) reicht der Mock — bitte bestätigen, dass Mock-Daten im Bild bleiben dürfen.


9. P7 — Stil

Aus den vier Seitenreviews (131 Befunde; hier die Muster, nicht jeder Einzelfall).

Muster Beispiel Regel
Erfundene UI-Namen „Schnellsuche" statt „Befehlspalette" (orientierung.md:58, hilfe.md); „Kurzfassung" statt „Zusammenfassung" jeder fett/„zitierte" UI-String muss wörtlich in frontend/src/lib/i18n/locales/de.json stehen — als Prüfschritt in die Abnahme aufnehmen
Anglizismen/Doppelbegriffe „Sichtbare Spalten" vs. „Spaltenwahl"; „Verlauf" vs. „Historie"; „Admin" vs. „tibi-admin" Glossar in einstieg/begriffe.md als Norm, Seiten gleichen darauf ab
Belehrende Binsen „Preise stehen nirgends im Code — erfinde keine" (llm-nutzen.md:89); „Übernimm die Liste nicht blind" (audit-backup.md:96); „Passiert nicht von selbst" (dateien-bilder.md:105) Imperativ → sachlicher Satz
Prosa-Wände Kennzahlen-Prosa in ki-funktionen.md:30; 4 Admin-UI-Absätze in audit-backup.md:50-58 Tabelle/Badge-Legende statt Fließtext; Admin-Verhalten nach admin/ verschieben
Wertungen ohne Beleg suche.md:21 „kein Textindex nötig"; hooks-schreiben.md:111 „einzige Log-Hilfe" Absolut-Aussagen abschwächen oder belegen
Inkonsistente Anführungszeichen „…" in 2 Dateien gemischt mit "…" eine Form (deutsche Anführungszeichen)
Platzhalter im Beispiel LIVE_URL=https://www, __PROJECT_NAME__ (deploy.md:15,79) # TODO: echte Domain in den Block
Fehlende Ergebnis-Schritte Setup-Checkliste als [ ]-Codeblock (neues-projekt.md:12-23) echte Task-Liste/Steps, damit Fortschritt sichtbar ist
Duplikate statt Verweise hilfe.md wiederholt drei Seiten; qName-Tabelle wortgleich in abfragen-lesen.md und suche.md; Widget-Tabellen 3×; active:true-Falle in 5 Seiten kanonische Stelle bestimmen, Rest kurz + Verweis

Positiv: keine „man"-Form, saubere Umlaute, keine toten Links, alle Codeblöcke balanciert, keine Seite > 800 Zeilen außer mcp-nutzen.md (754).


10. P7 — Bessere Starlight-Komponenten und Astro-Konfiguration

10.1 Komponenten-Einsatz heute (Skript-Inventar ✅)

Komponente Vorkommen Bewertung
Aside 86 gut genutzt; 3 Ausreißer als :::-Direktive
Steps 78 gut genutzt
TabItem / Tabs 56 / 25 ohne syncKey → Tab-Wahl geht beim Navigieren verloren
Card / CardGrid 30 / 7 Karten enthalten Markdown-Links statt echter Karten-Links
Badge 21–30 ok
FileTree 3 ok
LinkCard / LinkButton / Icon / MarkdownContent 0 ungenutztes Potenzial
Codeblöcke 432 Zäune, 254 mit title= 0 Zeilenmarkierungen, 0 frame=

10.2 Konkrete Verbesserungen

# Maßnahme Wirkung Beleg
1 Tabs syncKey auf allen mehrsprachigen/alternativen Tab-Gruppen (konfiguration.md:46-77, schnittstellen.md:21-60, felder-widgets.md) gleiche Auswahl bleibt beim Seitenwechsel ⚠️
2 LinkCard statt Card + Markdown-Link auf Übersichtsseiten (einstieg/was-ist-tibi.md:30-35, server/uebersicht.md:19-33, index.mdx) ganze Karte klickbar, bessere Tastaturbedienung ⚠️
3 Icon in Tabellen/Steps bei wiederkehrenden Handlungstypen schnellere Erfassung ⚠️
4 Zeilenmarkierungen (```sh {2,5}) dort, wo ein Beispiel „die eine Zeile" zeigt (Konfiguration, .env, Hook-Beispiele) Leser sieht die relevante Zeile sofort ✅ (0 Vorkommen)
5 references/frame="none" für reine Textblöcke, title= konsequent (254 von 432 haben es) einheitliche Optik ✅
6 <Tabs> statt zwei aufeinanderfolgender Steps bei Eingabe/Ausgabe (anwender/ki-nutzen.md:58-75) und bei Viewport-Presets (anwender/seiten-bauen.md:89-109, Werte aus PagebuilderViewportControl.svelte:22-29) Zuordnung Bild ↔ Preset ⚠️
7 <Tabs> je Exportformat (anwender/exportieren.md:24-34) Vergleich CSV/XLSX/JSON statt Klickstrecke ⚠️
8 <Badge> für Statusbegriffe statt Fettung (REST-only, Legacy, Pflicht) konsistente Optik ⚠️
9 Frontmatter sidebar.label für abgekürzte Seitentitel (z. B. „Hook-Referenz: Daten" → „Daten") + tableOfContents.minHeadingLevel je Seite kürzere Sidebar, längere ToC 🟡
10 lastUpdated: true in astro.config.mjs + lastUpdated-Frontmatter je Seite Aktualität sichtbar statt Stempel im Fließtext 🟡
11 expressiveCode-Optionen (Theme passend zu custom.css, frameType) statt Default einheitliches Code-Bild ✅
12 Suche: pagefind-Optionen (z. B. Sprach-/Stoppwort-Konfiguration), social-Einträge erweitern, editLink prüfen (zeigt aktuell auf _edit/master/) Suchqualität, Beitragsweg ✅

10.3 Astro-/Repo-Ebene

# Befund Maßnahme
1 Sidebar ist vollständig manuell (61 Einträge in astro.config.mjs) — jede neue Seite braucht 2 Änderungen (Datei + Sidebar) auf autogenerate je Gruppe umstellen, sobald die Ordner stabil sind; bis dahin Sidebar-Check in scripts/audit-docs.mjs (existiert bereits) als Pflicht-Abnahme
2 keine src/components/-Erweiterungen optional: TibiShot.astro (Bild + Alt-Text + Breite), damit Screenshot-Einbau überall gleich aussieht
3 sync-server-docs.mjs erzeugt verwaiste Seiten (24+3), weil die Ziele nicht in der Sidebar stehen — siehe §11 🔍 Entscheidung D1
4 scripts/sync-openapi.mjs zielt auf nicht existenten Endpunkt (P1 #7) Skript korrigieren
5 coverage-inventory.mjs misst Topic-Level („282/282") und damit keine Tiefe v2: Funktionskörnung + Depth-Gate (siehe plans/doku-ausbau.md, Abschnitt „v3")
6 keine robots.txt/_headers/Cache-Regeln für den statischen Betrieb bei Live-Deploy ergänzen (nginx-Config existiert)

10.4 Zusätzliche Dimensionen (aus der Zweitmeinung ergänzt)

# Dimension Befund Maßnahme Phase
1 Link-/Anker-Integrität + Redirects AGENTS.md §5 sagt selbst, dass der Build interne Links nicht prüft; es gibt keine redirects-Konfiguration. Jede Slug-Umbenennung in P7 reißt damit unbemerkt Links auf scripts/audit-docs.mjs (prüft Links + Anker bereits) als Pflichtschritt vor jedem Push; Umbenennungen zusätzlich in astro.config.mjs → redirects eintragen P2 / P7
2 Snippet-Verifikation „Code schlägt Doku" ist Regel, aber kein Beispiel wird ausgeführt — genau der Fehlertyp aus P1 (#6 loadAll, #4 Scope-Namen) die 6 verifizierten Fehlerbeispiele in eine Prüfliste aufnehmen; wo möglich (Hooks, Export-Skripte) Beispiele gegen tibi-types/demo-api laufen lassen P1 / P2
3 Staleness/Versionierung „Verifiziert am <hash> " altert ohne Mechanismus; 4 Formate, 2 Stempelnamen Norm + Regel „bei jeder Änderung an der Quelle Stempel erneuern" in AGENTS.md; Audit-Skript meldet Stempel älter als N Tage P8
4 Onboarding-Reihenfolge (Reise statt Fähigkeit) Sidebar ist fähigkeitsgetrieben (projekt/ folgt dem Schema, nicht dem Ablauf klonen → konfigurieren → bauen → deploy) einstieg/schnellstart.md als Reise ausbauen und die Sidebar-Reihenfolge in projekt/ gegen diesen Ablauf prüfen P7
5 Barrierefreiheit Alt-Texte sind vollständig ✅; Kontrast von --tibi-nova: #c2410c auf hellem Grund und Dark-Hover sind ungeprüft Kontrast mit a11y-MCP oder Lighthouse prüfen, --tibi-nova nur als Deko zulassen P7
6 Suche Pagefind läuft (62 Dateien, 185 ms) ✅; deutsche Stemming-Qualität und Synonyme („Suchbegriffe:"-Zeile) ungeprüft Suche mit typischen Anwenderbegriffen testen, ggf. Synonym-Mapping je Seite vereinheitlichen P7
7 Mehrsprachigkeit bewusst nur de (astro.config.mjs locales.root) als ADR festhalten (adr/0004-nur-deutsch.md), damit die Frage nicht wiederkehrt P8
8 Druck/PDF nicht vorgesehen bewusst streichen; Dev-Doku wird online gelesen —

11. Struktur, Information Architecture, Zielbild

11.1 Ist-Struktur

einstieg/   4 Seiten   (Was ist Tibi, Schnellstart, Begriffe, Neues Projekt)
server/     5          (Übersicht, Konfiguration, Betrieb, Sicherheit, Schnittstellen)
projekt/   15          (Sammlungen → Deploy)
admin/     10          (Konzept, Setup, Customizing, Ansichten, Editor, Medien, Exporte, Aktionen, Rechte, KI)
anwender/  11          (Anmelden → KI nutzen)
reference/ 11          (OpenAPI, Schemas, Hook-Kontexte, 5 Hook-Referenzen, Token-Köpfe, Fehler, Tastatur)
adr/        4

Abgleich Sidebar ↔ Dateien: vollständig konsistent, keine Seite ohne Sidebar-Eintrag. 🟢

11.2 Zielbild „3 Zielgruppen × 1 Ort pro Fähigkeit"

Der Rahmen verlangt drei Sichten auf dieselben Fähigkeiten. Heute sind sie teils vermischt:

Fähigkeit Entwickler (Projekt) Anwender Gehört heute wo Soll
Editor/Widgets projekt/felder-widgets.md anwender/eintrag-bearbeiten.md + 3 Widget-Tabellen in admin/* Tabellen nur in admin/customizing.md, Rest verweist
Verlauf/Restore — fehlt nur projekt/audit-backup.md:50-58 (Admin-Verhalten in Projekt-Seite) admin/ + neue Anwender-Seite
Pagebuilder projekt/pagebuilder-dev.md (660 Z., enthält 65 Z. Admin-UI) anwender/seiten-bauen.md vermischt UI-Teil nach admin/eintrags-editor.md
MCP projekt/mcp-nutzen.md (754 Z.) — de facto Referenz Werkzeug-Referenz → reference/mcp-werkzeuge.md
Snapshots/Backup projekt/audit-backup.md anwender/sichern.md ok + anwender/backup-einspielen.md

11.3 Konkrete Struktur-Maßnahmen

  1. reference/ erweitern: mcp-werkzeuge.md, rest-system.md, collection-config.md (Sync aus Nova), schema-properties.md (generiert).
  2. admin/ als Entwickler-Sicht auf die Oberfläche schärfen: alle UI-Verhaltensbeschreibungen aus projekt/* dorthin.
  3. anwender/ um die 5 fehlenden Seiten (8.3) erweitern; Ziel = jede Bildschirmfläche hat eine Seite.
  4. projekt/mcp-nutzen.md und projekt/pagebuilder-dev.md auf Leitfaden-Länge kürzen (Ziel < 300 Zeilen), Details in reference/.
  5. Querverweis-Konvention: jede Fähigkeit beschreibt eine kanonische Seite; andere Seiten nennen sie in 1–2 Zeilen mit Link.

12. P9 — Alt-Doku in den anderen Repos: was weg kann

Ehrliche Antwort: als Duplikat von tibi-docs kann heute keine Datei weg — 0 Duplikate. Grund: tibi-server/docs/ (24 englische Dateien) und tibi-admin-nova/docs/ (3 Referenzdateien) sind Quellen, nicht Kopien; die tibi-docs-Seiten sind davon abgeleitete Nutzer-Doku. Zusätzlich liest scripts/sync-server-docs.mjs genau diese Pfade als Sync-Quelle. Erst wenn eine Fähigkeit in tibi-docs tiefer steht als in der Quelle, ist die Quelle ein Duplikat.

Davon zu trennen sind Stale-Kandidaten (beschreiben etwas, das es nicht mehr/nicht gibt) — die dürfen sofort weg oder müssen korrigiert werden, unabhängig von tibi-docs. Es gibt genau einen: tibi-server/docs/24-ephemeral-rest-tokens.md (🔍 Entscheidung D3).

Und Repo-Hygiene-Fälle (Alt-Kopien, kaputte Arbeitsstände) — siehe §12.1.

12.1 Repo-Ebene: sofort weg (nach Backup-Abgleich)

Pfad Befund Empfehlung
cms/tibi-docs-kaputt/ defekte Doku-Kopie, eigenes .git löschen
cms/tibi-admin.bak/, tibi-admin.bak2/, tibi-admin.kaputt/ Alt-tibi-admin (vor Nova) mit eigenem .git löschen — der alte Admin ist laut Zielsetzung ohnehin ausgeschlossen
cms/tibi-server.bak/ Server-Backup-Kopie löschen
cms/tibi-docs-legacy/ (inkl. eingechecktem node_modules/) Docpress-Ära nach Volltext-Abgleich gegen einstieg/begriffe.md löschen
cms/tibi-admin/, tibi-admin-dev/, tibi-admin-master/, tibi-admin-server/, tibi-starter/ alte Starter-/Admin-Varianten, READMEs verweisen auf tibi-svelte-starter klären, dann archivieren; tibi-svelte-starter als kanonisch erklären
tibi-server/docs/24-ephemeral-rest-tokens.md beschreibt eine Fähigkeit, die im Code nicht existiert (kein Treffer für „ephemeral" außer in dieser Datei) 🔍 D3: implementieren oder Datei löschen — beides ist ein Fortschritt, Liegenlassen nicht

12.1a Ergebnis der Freigabe-Aktion (2026-10-17)

Freigabe des Nutzers: „Löschung, wenn wirklich alles in tibi-docs." Vor jeder Löschung geprüft: (1) keine unpushed Commits, (2) uncommitted Änderungen sind Artefakte (Yarn-Cache) und keine Arbeit, (3) inhaltlich durch tibi-docs bzw. durch die Git-Remotes auf gitbase.de abgedeckt.

Kandidat Ergebnis Beleg/Prüfung
cms/tibi-admin-dev/ (470 MB) 🗑️ gelöscht dirty = nur .yarn/cache/* (235/235), unpushed=0, Remote cms/tibi-admin.git
cms/tibi-admin-master/ (405 MB) 🗑️ gelöscht dirty = nur .yarn/cache/* (231/231), unpushed=0
cms/tibi-admin.bak/ (1,8 GB) 🗑️ gelöscht dirty = nur .yarn/cache/* (64/64), unpushed=0
cms/tibi-admin.bak2/ (2,3 GB) 🗑️ gelöscht dirty = nur .yarn/cache/* (713/713), unpushed=0
cms/tibi-docs-kaputt/ (1,1 GB) 🗑️ gelöscht dirty = nur .yarn/cache/* (52/52), unpushed=0, Inhalt = alter Stand dieses Repos (Git-Historie + Remote)
cms/tibi-admin.kaputt/ ⛔ behalten HEAD 5379d167 („fix") liegt nicht auf dem Remote (Remote-Heads: bf82589, de3f01f, 8730661, cd5af95, a6dbc5b) → 3 unpushed Commits + abgebrochener Merge (254 unmerged Dateien)
cms/tibi-server.bak/ ⛔ behalten uncommitted Quellarbeit: internal/controller/setup.go, internal/models/{collection,project}.go geändert, internal/controller/collection_cache.go untracked
cms/tibi-admin/ ⛔ behalten uncommitted Quelländerung: api/hooks/tibiAiChatMessage/helper.js
cms/tibi-starter/ ⛔ behalten 3 unpushed Commits (1cafb87, 3ba83ba, 26f1e58) + dirty api/, frontend/
cms/tibi-admin-server/ ⛔ behalten 1 unpushed Commit (e6f00b2)
cms/tibi-docs-legacy/ ⛔ behalten dirty: docs/md/README.md, docs/md/projektkonfig/collections/meta.md + untracked docs/md/tibiAI/TibiAI.md; Inhalte teils nicht in tibi-docs (u. a. dashboard.md, ssr&htaccess.md, admin-javascript-kontext/*)

Freigeworden: ~6,1 GB. Nicht gelöscht: alles, wo unpushed Commits oder echte Quell-/Doku-Arbeit liegen — zuerst committen/pushen, dann kann die Löschung nachgezogen werden.

12.2 Datei-Ebene: Wegfall erst nach Erfüllung dieser Bedingungen

Alt-Datei Wegfall möglich, wenn … Heutiger Abdeckungsgrad
tibi-server/docs/15-troubleshooting.md reference/fehlercodes.md alle dort gelisteten Fehler + Ursachen führt teilweise
tibi-server/docs/16-cookbook.md die Rezepte in projekt/sammlungen-anlegen.md stehen teilweise
tibi-server/docs/13-openapi-metrics.md reference/openapi.md generiert ist und Metrik-Labels dokumentiert sind teilweise (P1 #7)
tibi-server/docs/17-field-level-permissions.md projekt/feld-rechte.md existiert nicht abgedeckt (P3 #1)
tibi-server/docs/24-ephemeral-rest-tokens.md Fähigkeit im Code existiert (heute nicht) nicht abgedeckt 🔍
tibi-server/docs/{01,02,03,04,05,06,07,08,10,12,14,18,19,20,21,22,23}.md nicht absehbar — Core-Referenz für Server-Entwicklung, nicht Ziel dieser Doku teilweise/vollständig
tibi-admin-nova/docs/collection-config.md, custom-export-script.md nach Spiegelung als reference/collection-config.md nicht abgedeckt
tibi-admin-nova/docs/test-plans/* nie — Test-Artefakte, keine Nutzer-Doku —
tibi-types/ (keine Doku) es entsteht Doku im Repo (empfohlen, §7.1) —

12.3 Dubletten/Widersprüche zwischen Alt-Doku und tibi-docs

# Widerspruch Auflösung
1 MCP-Route: tibi-server/docs/23-mcp.md (Env MCP_ROUTE steuerbar) vs. server/schnittstellen.md:77 („wird ignoriert") ✅ Code: Routing ist hart (setup.go:754-755), mcp.Route() ungenutzt → tibi-docs hat recht, Server-Doc veraltet
2 Sync-Behauptung in tibi-docs/AGENTS.md §2/§4 vs. Realität (keine Sync-Artefakte im Repo) AGENTS.md korrigieren (P8)
3 Starter-Token-Header (tibi-svelte-starter/AGENTS.md) ohne Warnung vor reservierten Namen (reference/token-koepfe.md:52) Starter-AGENTS.md ergänzen
4 plans/doku-ausbau.md führt llm-nutzen/mcp-nutzen noch als „Hülle" — beide sind fertig Plan-Zeilen als erledigt markieren

13. P8 — Prozess und Meta

# Befund Maßnahme
1 AGENTS.md §2 sagt „server/ = SYNC, nicht von Hand editieren"; tatsächlich sind es Handseiten (npm run sync würde 27 verwaiste Seiten erzeugen) 🔍 Entscheidung D1: Sync reaktivieren oder Skript + AGENTS-Abschnitt entfernen
2 AGENTS.md §1 verbietet gleichzeitig das Duplizieren englischer Server-Docs — beißt sich mit §2 Widerspruch auflösen (eine Regel streichen)
3 Prüfregeln (Links, UI-Text-Treue, Stempel) sind nirgends automatisiert scripts/audit-docs.mjs um UI-String-Abgleich gegen de.json erweitern und in npm run build-Vorprüfung hängen
4 Kein Mechanismus, der Fähigkeiten ohne Dokustelle meldet Coverage v2 mit Funktionskörnung + Depth-Gate (siehe plans/doku-ausbau.md v3)
5 Stempel-Format driftet (4 Formate) Norm in AGENTS.md §2 festschreiben
6 Offene Punkte aus der letzten Runde wurden nie als Issues angelegt Issues anlegen: (a) tibi-server: Typo reponse.header (context_response.go), (b) tibi-server: doppelter yaml-Tag allowSnapshots (models/project.go:104), (c) tibi-admin-nova: totes u-Kürzel in de.json, (d) tibi-server: mgocrud.old/ toter Code, (e) tibi-server: Doku 24-ephemeral-rest-tokens.md ohne Code

Fehler, die ich zusätzlich im Server-Code gefunden habe (nicht Doku, aber gefunden beim Prüfen — gehören als Issue gemeldet):

Code-Fund Beleg
doppelter Struct-Tag yaml:"allowSnapshots" yaml:"allowSnapshots" (auch bei token, allowReload … — alle vier Felder doppelt getaggt) internal/models/project.go:120 (Struct AdminToken:116-122) ✅
Content-Range: inkl. Doppelpunkt als Header-Name (Doku zitiert ihn korrekt als Code-Abweichung) internal/controller/collection_get.go:32 ✅
Typos in Hook-Kontext: reponse.header internal/hook/context_response.go (⚠️)
MCP_ROUTE-Env existiert, wird aber vom Routing ignoriert internal/config/server.go:221-224 vs. setup.go:754 ✅

14. Phasen-Checklisten (zum Abhaken)

P1 — Falschaussagen tilgen

  • EMBEDDING_BGE_M3_* in server/konfiguration.md korrigieren (5 Stellen)
  • allowSnapshots in projekt/audit-backup.md (3 Stellen)
  • „(plus weitere)" bei crypto in reference/hook-kontexte.md:52 streichen
  • MCP-Scope-Tabelle in projekt/mcp-nutzen.md:63-71 auf .read/.create/.update/.delete
  • meta.views in admin/customizing.md:14 streichen/ersetzen
  • loadAll-Beispiel in admin/exporte.md:60 korrigieren
  • scripts/sync-openapi.mjs auf _openapi/:project umstellen, reference/openapi.md generieren
  • „MongoDB 7" → „MongoDB 8" in server/betrieb.md:21
  • Punkte 9–16 aus §3 prüfen und korrigieren (⚠️-Liste)
  • Nach jedem Fix: npm run build grün + Verifiziert am …-Stempel erneuern

P2 — Markdown/Struktur/Hygiene

  • Tabelle admin/ki-funktionen.md:40 reparieren
  • Aufbau-Rückstand reference/hook-kontexte.md:65 entfernen
  • :::note/caution/danger → <Aside> (3 Stellen)
  • lange Überschrift projekt/pagebuilder-dev.md:215 kürzen
  • Stempel-Format auf allen Seiten vereinheitlichen (Datum + Repo + Hashlänge)
  • „Suchbegriffe:"-Zeile normieren (7/4/8-Verteilung auflösen)
  • ungenutzte Starlight-Importe entfernen
  • Link-/Anker-Prüfung als fester Schritt etablieren (node scripts/audit-docs.mjs, gibt 0 tote Links aus) + Redirect-Konzept in astro.config.mjs beschließen
  • Snippet-Prüfliste aus den 6 verifizierten Fehlerbeispielen anlegen
  • npm run build + node scripts/audit-docs.mjs → 0 Findings außer bekannten PRUEFEN

P3 — Server-Lücken

  • projekt/feld-rechte.md neu (Feld-Level-Permissions)
  • reference/rest-system.md neu (System-CRUD + _meta)
  • projekt/rechte-tokens.md um Scope-Katalog + token-Felder erweitern
  • server/konfiguration.md um upload.allowedMimeTypes + Embedding-Gruppen-Tuning
  • projekt/audit-backup.md um Snapshot-Detailfelder + Restore-Token-Flow
  • projekt/suche.md um Suchmodi/Regenerate/Search-Worker
  • Gzip-Ausnahmen + Filecleanup + Cache-Defaults einarbeiten
  • 🔍 Entscheidung Ephemeral REST Tokens (implementieren oder Server-Doc löschen)

P4 — Admin-Interfaces (parallel zu P3)

  • singleton, sections, query, agent, MANUALLY, viewHint.navigation dokumentieren
  • project.admin.tokens-Rechte dokumentieren (inkl. Querverweis Backup/Snapshot/Search)
  • Export-ctx vollständig in admin/exporte.md (Beispiel korrigiert, Batching, Guards)
  • Action-execution.kind/cancellable in admin/aktionen.md
  • Registry-Ladeordnung/Cache + {eval}-Specifier in projekt/pagebuilder-dev.md
  • Runtime-System-Config in admin/setup.md
  • 🔍 hooksTrigger/exportScript klären (existieren nicht)

P5 — tibi-types + Starter

  • reference/schemas.md zur Property-Matrix ausbauen (generiert)
  • Undokumentierte Properties (§7.1) je Projektseite ergänzen
  • Playwright-/Mock-Kapitel anlegen
  • CI/Deploy-Env + api/templates dokumentieren
  • Doku im tibi-types-Repo anlegen (Schemas selbst erklären) + index.d.ts-Typen referenzieren

P6a — Fehlende Anwender-Seiten (nach P2, parallel zu P3/P4)

  • anwender/verlauf-wiederherstellen.md
  • anwender/massenbearbeitung.md
  • anwender/aktionen.md
  • anwender/backup-einspielen.md
  • anwender/tastenkombinationen.md
  • Sidebar + coverage-map.json nachziehen

P7 — Stil, Starlight, Struktur (vor P6b!)

  • UI-Namen gegen de.json abgleichen (allen voran „Befehlspalette")
  • §9-Muster abarbeiten (Binsen, Prosa-Wände, Wertungen, Anführungszeichen)
  • syncKey für Tab-Gruppen, LinkCard auf Übersichten, Icon/Badge dort, wo es hilft
  • Zeilenmarkierungen + frame/title in Codeblöcken vereinheitlichen
  • lastUpdated, expressiveCode, sidebar.label in astro.config.mjs
  • kanonische Stellen für Duplikate festlegen (Widgets, qName, active:true)
  • Umbenennungen/Verschiebungen nur mit redirects-Eintrag
  • Onboarding-Reihenfolge und Sidebar gegen die Reise prüfen (§10.4 #4)
  • a11y-Kontrast + Pagefind-Suche testen (§10.4 #5/#6)

P6b — Screenshots (nach P7, Slug-/Text-Freeze)

  • src/assets/admin/ anlegen
  • 9 Admin-Motive aus §8.1 aufnehmen und Platzhalter-Kommentare ersetzen
  • 25 UI-Bereiche aus §8.2 bebildern
  • alle Bilder ≤ 200 KB, deutsche Alt-Texte, npm run build grün
  • Re-Shoot-Zähler messen (Messgröße für die Reihenfolge-Entscheidung)

P8 — Meta

  • 🔍 D1 entscheiden: Sync reaktivieren oder entfernen (AGENTS.md §2/§4 anpassen)
  • Stempel-Norm und Staleness-Regel in AGENTS.md
  • audit-docs.mjs um UI-String-Abgleich + Stempel-Alter erweitern, in Prüf-Ablauf aufnehmen
  • Coverage v2 (Funktionskörnung + Depth-Gate)
  • ADR „nur deutsch" anlegen (§10.4 #7)
  • 5 Issues in den Repos anlegen (§13)

P9 — Abbau

  • Repo-Hygiene (§12.1) nach Backup-Abgleich
  • Volltext-Abgleich tibi-docs-legacy → einstieg/begriffe.md
  • Wegfall-Bedingungen (§12.2) als Tickets anlegen, sobald P3–P6 fertig sind

15. Anti-Halluzination: Was geprüft ist und was nicht

15.1 Selbst am Code geprüft (✅)

EMBEDDING_BGE-M3_* · allowSnapshots · crypto-Funktionsumfang · MethodToAction/MCP-Scopes · meta.views im Schema · loadAll-Signatur · OpenAPI-Route (setup.go:692) · mongo:8 im Compose · Routen-Zählung (44 gruppierte Registrierungen) · MCP-Tools 10+12+14=36 · Route-Reihenfolge _count/_facet vor :id · „Befehlspalette" in de.json · Screenshot-Platzhalter in 9 Admin-Seiten · 30 Bilder alle referenziert · Schema-Properties (queryLimits, readonlyFields, hiddenFields, singleton, sections, hideLabel, imageEditor) fehlen in der Doku · Sync-Skript-Quellen · Build grün (62 Seiten).

15.2 Aus Subagenten-Reports übernommen (⚠️)

Alle Zeilen mit ⚠️ — insbesondere: $CODING_TIBISERVER_URL, Gzip-Absolutaussage, „eingeloggte vs. anonyme Nutzer" im Hook, hooks-schreiben.md-Details, action.execution, system.config.json, Starter-CI-Details, Übersichtsliste der 25 UI-Bereiche.

15.3 Widerlegte Report-Behauptungen (❌)

Behauptung Widerlegung
„…/comment/count landet nicht auf :id" (Review Projekt #2) ✅ Die Doku (projekt/abfragen-lesen.md:99) ist richtig: _count ist als Literal /_/:project/:collection/_count registriert (setup.go:514), /comment/count erfüllt dieses Muster nicht und fällt auf /_/:project/:collection/:id mit id="count" (setup.go:536). Kein Fix nötig.
„0 Wegfall-Kandidaten auf Datei-Ebene, daher nichts zu tun" (Report 04) Teils richtig, teils zu absolut: die Bedingungen, unter denen Alt-Dateien wegfallen dürfen, sind in §12.2 jetzt explizit gemacht; auf Repo-Ebene gibt es sehr wohl Löschkandidaten (§12.1).

15.4 Zweitmeinung (SecondOpinion) — eingearbeitet

Eine unabhängige Zweitmeinung zum Plan wurde eingeholt und hat drei Änderungen erzwungen (alle übernommen):

  1. Reihenfolgefehler korrigiert: P7 (Stil/Slugs/Struktur) läuft jetzt vor P6, weil es Überschriften und Slugs ändert und Screenshots sonst entwertet. P6 ist in P6a (fehlende Seiten, früh) und P6b (Bilder, nach Slug-Freeze) geteilt. P3 und P4 sind als parallel markiert.
  2. Fehlende Dimensionen ergänzt (§10.4): Link-/Redirect-Integrität, Snippet-Verifikation, Staleness-Regel, Onboarding-Reihenfolge, a11y, Suche, ADR „nur deutsch"; Druck/PDF bewusst ausgeschlossen.
  3. §12 entkräftet die eigene Absolutaussage: „0 Duplikate" statt „0 Wegfall"; tibi-server/docs/24-ephemeral-rest-tokens.md ist ein Stale-Kandidat von heute (🔍 D3), kein „nach P3"-Fall.

15.5 Regel für die Umsetzung

Jeder Fix aus §3/§5/§6 wird erst am Code nachgeprüft, dann geschrieben, dann gestempelt (Verifiziert am <hash> <datum> (<repo>)). Kein Fix ohne datei:zeile. Keine Zahl ohne Zählbefehl.


16. Offene Entscheidungen und offene Prüfpunkte

# Frage Betrifft Vorschlag
D1 Sync-Modell: server/ aus tibi-server/docs spiegeln oder Handseiten behalten? AGENTS.md, sync-server-docs.mjs, sync-openapi.mjs Handseiten behalten (Nutzer-Doku, deutsch), Sync-Skript für Server entfernen, Nova-Referenzen als reference/-Spiegel behalten
D2 Sind Mock-Daten in Review-Screenshots ok? P6 ja, corporate reicht
D3 Ephemere REST-Tokens: Feature oder Doku-Fehler? P3 #16 prüfen, dann eins von beidem löschen
D4 Übergangsbeleg für Audit-defaultTTL: "0" P1 #13 belegen oder Aussage streichen
D5 hooksTrigger/exportScript — gemeint war hooks bzw. meta.exports? P4 bestätigen
D6 Wie tief soll die Server-Referenz in tibi-docs gehen (Ziel: „Projekte aufsetzen und betreiben", nicht Core-Entwicklung)? P3 Referenz-Tabelle + Fehlerfälle ja, Go-Interna nein
D7 Bleibt die Doku einsprachig (nur de)? §10.4 #7 ja → als ADR festhalten
D8 Wo endet die Anwender-Doku (welche Admin-Flächen bekommen eine Anwender-Seite)? P6a jedes Bildschirmelement, das ein Redakteur ohne Entwicklerwissen bedient

🔍 Weitere PRUEFEN-Punkte: 7 in 05-review-einstieg-server.md, 7 in 05-review-projekt.md, 5 in 05-review-admin-reference.md, 5 in 05-review-anwender-adr.md — dort verlinkt und einzeln mit Beleg nachzuziehen.


17. Anhang: Inventar

Seiten je Bereich: einstieg 4 · server 5 · projekt 15 · admin 10 · anwender 11 · reference 11 · adr 4 · index 1 → 61 Seiten / 7.127 Zeilen. Bilder: 30 .webp in src/assets/anwender/ (≤ 78 KB je Datei) + 1 admin-nova.png + favicon.svg; Admin-Screenshots fehlen. Befunde: Audit-Skript 20 Rohmeldungen (17 Marker, 1 kaputte Tabelle, 1 lange Überschrift, 1 fehlende description) → davon 2 echte Markdown-Defekte; Seitenreviews 131 Befundzeilen; Code-Reports 15 Lücken + 5 Fehler (Server), 10 Interface-Lücken + 25 Screenshot-Lücken (Admin), 10 Schema-Properties + 5 Starter-Lücken, 0 Datei-Wegfall-Kandidaten + 6 Hygienefälle.

Erledigt in diesem Audit: Audit-Skript geschrieben, 4 Code-Reports + 4 Seitenreviews erstellt, 10 Kernbefunde selbst am Code verifiziert, 1 Report-Behauptung widerlegt, dieses Übersichtsdokument erstellt. Nicht erledigt (bewusst): kein Doku-Inhalt wurde geändert — die Umsetzung folgt über die Phasen P1–P9.

Zählbefehle (jede Zahl in diesem Dokument nachprüfbar)

cd /WM_Dev/src/gitbase.de/cms/tibi-docs
find src/content/docs -name '*.md' -o -name '*.mdx' | wc -l          # 61
find src/content/docs -name '*.md*' | xargs cat | wc -l              # 7127
ls src/assets/anwender/*.webp | wc -l                                # 30
find dist -name '*.html' | wc -l                                     # 62
grep -rln 'Screenshot-Platzhalter' src/content/docs/admin | wc -l    # 9
grep -rho '^\s*```' src/content/docs | wc -l                         # 432
grep -rn 'title="' src/content/docs | wc -l                          # 254
grep -rc '<Aside type=' src/content/docs | awk -F: '{s+=$2} END{print s}'   # 86
grep -rn '^:::' src/content/docs | wc -l                             # 3
wc -l src/content/docs/projekt/mcp-nutzen.md                         # 754
node scripts/audit-docs.mjs                                          # 0 tote Links, 20 Rohmeldungen

18. Ausführungsprotokoll (live)

Statuslegende: ✅ erledigt und reviewed · 🔄 läuft · ⬜ offen · 🔴 blockiert

Welle A — P1 (Fakten) + P2 (Markdown/Hygiene) · Stand 2026-10-17

Punkt Status Belege/Ergebnis
P1 #1 EMBEDDING_BGE_M3_* (6 Stellen) ✅ server/konfiguration.md; Review A ok gegen server.go:245-251
P1 #2 allowSnapshots (3 Stellen) ✅ projekt/audit-backup.md; Review ok gegen project.go:120
P1 #3 crypto „plus weitere" ✅ reference/hook-kontexte.md; Review ok
P1 #4 MCP-Scopes .read/.create/.update/.delete ✅ projekt/mcp-nutzen.md:63-71; Review ok gegen admin_token.go:115-128
P1 #5 meta.views entfernt ✅ admin/customizing.md; viewHint+subNavigation sind im Schema belegt
P1 #6 loadAll-Signatur ✅ admin/exporte.md; Review ok gegen custom-export.types.ts:56-60
P1 #7 reference/openapi.md + sync-openapi.mjs ✅ Seite handfest, Skript auf /_openapi/<namespace>; Review-Fund falscher Default-Pfad nachgezogen (/api/v1)
P1 #8 „MongoDB 7" → 8 ✅ server/betrieb.md:21; Review ok gegen beide Composes
P1 #9 $CODING_TIBISERVER_URL ✅ ersetzt durch $CODING_TIBIADMIN_URL/api/...; im Starter belegt, Proxy /api→/api/v1 belegt
P1 #10 Gzip-Absolutaussage ✅ server/schnittstellen.md; Ausnahmen = setup.go:151-154
P1 #11 „eingeloggte" → „anonyme" ✅ projekt/hooks-schreiben.md; belegt durch filter_public.js (!context.user.auth())
P1 #12 Sammelgruppen ✅ content/community/system gegen Starter-YMLs
P1 #13 Audit-TTL "0" = ewig ✅ bleibt Review-Fehler entkräftet: internal/mongocrud/mongo.go:477 (if index.ExpireAfter > 0) → bei 0 wird kein TTL-Index gesetzt = kein Ablauf. Aussage ist korrekt.
P1 #14 POST /api/ssr?clear=1 ✅ projekt/deploy.md; als Starter-/Proxy-Pfad gekennzeichnet
P1 #15 „Schnellsuche" → „Befehlspalette" ✅ anwender/orientierung.md, anwender/hilfe.md; belegt de.json:1207
P1 #16 „Kurzfassung" ✅ in Welle D auf „Zusammenfassung" gezogen (admin/aktionen.md, de.json:207); Restvorkommen sind Code-Block-Titel und der Linktext „Anwender-Kurzfassung"
P2 #1 kaputte Tabelle ✅ admin/ki-funktionen.md (3 Zellen je Zeile)
P2 #2 „Hülle"-Rückstand ✅ reference/hook-kontexte.md; grep "Hülle" in src/content/docs = 0
P2 #3 description in openapi.md ✅ Frontmatter vollständig
P2 #4 ::: → <Aside> ✅ server/uebersicht.md, einstieg/neues-projekt.md, einstieg/schnellstart.md; grep '^:::' = 0
P2 #6 lange Überschrift ✅ projekt/pagebuilder-dev.md
P2 #7 „Suchbegriffe:" ✅ 4 Projekt-Seiten normiert
P2 #8 Stempel-Norm ✅ ein Format (7-stelliger Hash, Datum, Repo): „Geprüft an" = 0, 8-stellige Hashes = 0, Endpunkt-Varianten = 0. Unterschiedliche Daten sind gewollt — sie nennen den Prüftag
P2 #9 ungenutzte Importe ✅ alle Seiten beider Bereiche geprüft
Welle-A-Review (general Subagent) ✅ Urteil: „abnehmbar nein — erst Punkt F fixen"; F wurde behoben, danach grün
Build ✅ 62 Seiten, 0 Fehler; scripts/audit-docs.mjs: 20 → 16 Findings (nur noch legitime „Platzhalter"-Wörter)

Welle B — P3 (Server-Lücken) + P4 (Admin-Interfaces) · Stand 2026-10-17 ✅

Punkt Status Belege/Ergebnis
P3: projekt/feld-rechte.md (neu, 87 Z.) ✅ Kaskade Collection → PermissionSet → Feld-Def; field_permissions.go:31-56,120,135,307,402-418; permissions.schema.json:55-72; collection.schema.json:201-212
P3: reference/rest-system.md (neu, 65 Z.) ✅ 5 Modelle × 5 Routen + _meta; dbapi/register.go:90-115; token.go:39-76; helper.go:64-167
P3: rechte-tokens.md (Scope-Katalog, Token-Felder, Admin-Flags) ✅ :144-208; token_scope_catalog.go:47-89; project.schema.json:227-261
P3: konfiguration.md (allowedMimeTypes, Embedding-Gruppen) ✅ :26,108-162; config/server.go:46,489-625; embedding_group.go:44-190
P3: audit-backup.md (10 Snapshot-/6 Backup-Routen, Config-Felder, Restore-Token, Auth-Reihenfolge) ✅ :95-198; setup.go:398-495; snapshot_config.go:11-58,89-94; admin_auth.go:20-74
P3: suche.md (7 Suchmodi, Regenerate/Worker, Vektor-Pfad, Debug) ✅ :44-129; collection.go:314-383; admin_regenerate_search.go:17-25; search_debug.go:145-159
P3: betrieb.md + dateien-bilder.md (Filecleanup) ✅ cleanup.go:21-149
P3: hooks-daten.md (Cache-Defaults) ✅ cache/cache.go:23-38; config/server.go:178-181
P3: abfragen-lesen.md (aggregate) ✅ :113-135; Signatur/Ops/Fehler 400/403
P4: Schema-Meta (singleton, sections, query, agent, MANUALLY, viewHint.navigation) ✅ sammlungen-anlegen.md:87-116; collection-meta.schema.json:69-503
P4: Feld-Meta (8 Optionen) ✅ felder-widgets.md:201-216; field-meta.schema.json:50-235,303-317
P4: admin.tokens-Rechte ✅ admin/benutzer-rechte.md:83-108; project.go:116-122
P4: Export-ctx vollständig + lauffähiges Beispiel ✅ admin/exporte.md:50-103; custom-export.types.ts:17-102
P4: Action-execution + Upload-Pfad ✅ admin/aktionen.md:31-50; action.schema.json:274-288; ActionView.svelte:260-295,350-382
P4: Registry-Ladeordnung + {eval}-Specifier ✅ pagebuilder-dev.md:56-79; load-registry.ts:16-94; project-asset-specifier.ts:17-50
P4: Runtime-System-Config ✅ admin/setup.md:73-96; system-config.schema.json:11-28; system.config.json:1-49
Welle-B-Review (general Subagent) ✅ 20 Stichproben, alle ok; Urteil „abnehmbar nach Fix von 2a+2b" — behoben
Review-Nacharbeit ✅ Quelle-Pfad in feld-rechte.md korrigiert; Stempel datiert (13 Seiten); Duplikat „Neuaufbau" in suche.md mit „Index aufbauen und prüfen" zusammengeführt; **Kurzfassung** → **Zusammenfassung** (de.json:207); letzte :::-Direktive → <Aside>
Build ✅ 64 Seiten (63 Inhaltsseiten + 404), 0 Fehler; Audit weiterhin 16 legitime „Platzhalter"-Marker

Welle C — P5 (types/Starter) + P6a (Anwender-Seiten) · Stand 2026-10-17 ✅

Punkt Status Belege/Ergebnis
P5: reference/schema-properties.md (generiert, 384 Z.) ✅ 16/16 Schemas, 25 Tabellen, 164 Property-Zeilen; Generator scripts/gen-schema-matrix.mjs + npm run gen:schemas; idempotent (md5 identisch beim Zweitlauf)
P5: reference/schemas.md auf Übersicht + Verweise reduziert ✅ keine Doppelung; Dateinamen/Auflösungsreihenfolge ergänzt
P5: projekt/tests.md (neu, 83 Z.) ✅ Playwright-Scripts/Projekte, MOCK=1 (frontend/src/lib/mock.ts, esbuild.config.js:141f), Artefaktordner
P5: projekt/deploy.md (CI-Variablen) ✅ scripts/ci-deploy.sh:6-35,62-68, ci-staging.sh:4-42; zwei Widersprüche bereinigt
P5: projekt/ssr-website.md (api/templates, Cache) ✅ api/hooks/ssr/get_read.js, hooks/lib/utils.js (clearSSRCache)
P6a: 5 neue Anwender-Seiten (319 Z. gesamt) ✅ Verlauf/Wiederherstellen, Massenbearbeitung, Aktionen, Backup einspielen, Tastenkürzel
P6a: 10 Screenshot-Platzhalter für P6b gesetzt ✅ 3 Verlauf, 2 Massenbearbeitung, 2 Aktionen, 2 Backup, 1 Tastenkürzel
Sidebar (astro.config.mjs) ✅ 7 neue Einträge; Sidebar ↔ Dateien konsistent (0 Abweichungen)
Welle-C-Review (general Subagent) ✅ Generator idempotent (md5 gleich), 15 Stichproben gegen JSON-Schemas ok, UI-Strings 25/26 wörtlich, tests.md korrekt
Review-Nacharbeit ✅ Generator schreibt jetzt „Generiert aus tibi-types 4c55f82 (Stand 2026-10-12)" (deterministisch); Hash-Länge auf 7 Zeichen normiert (33 Stellen); Bildbeschriftung auf die echten Knopftexte gezogen
Build ✅ 71 Seiten (70 Inhaltsseiten + 404), 0 Fehler; Audit: 0 tote Links, 16 legitime „Platzhalter"-Marker

Welle D — P7 (Stil, Starlight, Struktur) · Stand 2026-10-17 ✅

Punkt Status Ergebnis
UI-Text-Treue gegen de.json ✅ 21 geprüft, 20 wörtlich; korrigiert: **Zusammenfassung** (statt „Kurzfassung"), noOutputFields-Satz, „Erneut versuchen", {width}×{height}; „Datensatz öffnen" ohne UI-Beleg → wirkungsbeschreibend umformuliert
LinkCard statt Karte+Link ✅ index.mdx, server/uebersicht.md, einstieg/was-ist-tibi.md, reference/hook-kontexte.md (19 Karten)
Tabs/Steps/syncKey ✅ syncKey in 4 Seiten; <Tabs> für Exportformate, KI Ein-/Ausgabe, Viewport-Presets
Codeblöcke ✅ Zeilenmarkierungen ({n}) an 5 Stellen, title= flächendeckend
Checkliste statt Codeblock ✅ einstieg/neues-projekt.md Task-Liste
Begriffe-Glossar ✅ einstieg/begriffe.md mit 12 ##-Überschriften (ToC-fähig)
Redundanz kanonisiert ✅ qName nur in suche.md, active:true-Falle nur in rechte-tokens.md, Widget-Tabelle nur in felder-widgets.md
Auslagerung Projekt → Admin ✅ Verlauf-/Pagebuilder-UI aus projekt/* nach admin/eintrags-editor.md, Details dort ergänzt
Prosa/Binsen ✅ ki-funktionen.md Schwellen jetzt Tabelle; 6 Binsen/Wertungen umformuliert
mcp-nutzen.md entschlackt ✅ 754 → 441 Zeilen, alle 36 Werkzeuge erhalten (Tabelle + Signatur + Beispiel + Fehler)
Kontrast/a11y (custom.css) ✅ nachgerechnet: alle Text-/Akzentwerte ≥ 4.5:1 (hell/dunkel), Deko-Farben bewusst unverändert
lastUpdated: true ✅ rendert ohne Fehler
Stempel normiert ✅ ein Format, 7-stellige Hashes, Punkt am Ende entfernt (~22 Stellen)

Welle E — P6b (Screenshots) · Stand 2026-10-17 ✅

Punkt Status Ergebnis
Admin-Bilder ✅ 9/9 Motive aus corporate → src/assets/admin/, alle 1440×900, 21–78 KB
Anwender-Bilder ✅ 10 neue (Verlauf, Massenbearbeitung, Aktionen, Backup, Tastenkürzel) → src/assets/anwender/, 18–89 KB
Platzhalter-Kommentare ✅ alle <!-- Screenshot (T-SHOTS) … --> ersetzt; 0 offene Kommentare
Mock-Fixture erweitert ✅ corporate hat jetzt eine Aktion („Suchindex neu aufbauen") und zwei Exporte („Seiten-Report", „Seiten-CSV") — vorher gab es Aktionen/Exporte nur in t1, das laut Regel verboten ist
Regelverstoß behoben ✅ die zwei Aktionen-Bilder des ersten Durchlaufs stammten aus t1 und wurden durch corporate-Aufnahmen ersetzt
Textkorrektur nach UI-Abgleich ✅ Auswahl-Knopf heißt „Bearbeiten" (admin.bulk.edit)
offene UI-Mängel (nicht Doku) ⚠️ Mock-Overlay zeigt unübersetzten Key admin.commandPalette.commands.toggleUsers; Backup-Dialog teils englisch → als Issue notiert (plans/offene-issues.md A1/A2)

Welle F — P8 (Meta) + P9 (Abbau) · Stand 2026-10-17 ✅/⬜

Punkt Status Ergebnis
D1 entschieden: Sync stillgelegt ✅ AGENTS.md §2/§4 richtiggestellt (server/ = Handseiten), npm run sync entfernt, sync-server-docs.mjs mit Stillegungs-Hinweis versehen
AGENTS.md: Belegpflicht + UI-Namen-Regel ✅ Stempel-Norm und „UI-Namen wörtlich aus de.json" als Pflichtregeln ergänzt
AGENTS.md: Screenshot-Regel ✅ src/assets/admin/ + src/assets/anwender/, WebP 1440×900 ≤ 200 KB, Corporate only
AGENTS.md: Werkzeug-Abschnitt ✅ audit-docs.mjs, coverage, gen:schemas, sync:openapi als Pflichtschritte
Issues für die Nachbar-Repos ✅ 13 Issues in Gitea angelegt — tibi-server #42–#48, tibi-admin-nova #2–#5, tibi-types #3/#4; Vorlage mit Belegen in plans/offene-issues.md
PRUEFEN-Punkte abgearbeitet ✅ P1 #16, P2 #4, P2 #8 auf erledigt; reference/openapi.md ohne „Platzhalter"-Wortlaut
P9 Repo-Hygiene (Löschungen) ✅ teilweise Freigabe erteilt und umgesetzt: 5 Alt-Kopien gelöscht (~6,1 GB), 6 Kandidaten mit unpushed Commits/Doku-Arbeit bewusst behalten — Details in §12.1a

Welle G — Screenshot-Nachtrag (restliche UI-Bereiche) · Stand 2026-10-17 ✅

Punkt Status Ergebnis
Anwender-Motive (G1) ✅ 8 neue Bilder: FK-Drawer, Sprachleiste/Übersetzen, Feldsuche, JSON-Overlay, Medien-Lightbox, Upload-Warteschlange, Fremddatei, Stellvertretungs-Banner; 3 neue Kurzabschnitte, 3 Abschnitte erweitert
Admin-Motive (G2) ✅ 9 neue Bilder: Token-Liste, Token-Anlage (Profil), Projekt-Admin-Drawer, Team- und Org-Drawer, Theme-Umschalter, Chat-Verlauf, Voice im Filter
Befehlspalette im Admin ✅ neuer Abschnitt + Bild in admin/konzept.md; keep-Hinweis entfernt, Mock-Aussage t1 → Demo-Projekte korrigiert
Nicht darstellbare Motive ⚠️ bleiben als Hinweis (Nutzer-Entscheid) Session-Timeout (inactivityTracker.ts:47) und Suchindex-Banner (interceptor.ts:3073-3080) bleiben als <!-- Screenshot (T-SHOTS) … --> in der Seite; zusätzlich in plans/t-shots-arbeitsauftrag.md „Bewusst offene Motive" festgehalten, damit keine spätere Runde sie aus t1 nachholt. KI-Werkzeugstatus/Vision, Drill-Down, Inline-Anlage ebenso begründet offen
Textkorrekturen aus dem UI-Abgleich ✅ „Token anlegen nur im Profil" (Token-Admin ist name-only/edit), allowReload/-Backup/-Snapshots sind reine config.yml-Flags (0 Treffer im Frontend), „Serververwaltete Felder", „Ausgewählte Medien"
Welle-G-Review ✅ 17 Bilder geprüft: keine verwaisten Dateien, keine toten Pfade, alle Alt-Texte spezifisch, alle ≤ 200 KB; 3 Muss-Fixes umgesetzt; Urteil „abnehmbar"
Build/Audit ✅ 71 Seiten grün, 0 tote Links/Anker/Bildpfade, 0 kaputte Tabellen

Abschluss-Review (general Subagent) und Nacharbeit · 2026-10-17 ✅

Befund des Abschluss-Reviews Nacharbeit
4 Waisen-Seiten ohne eingehenden Link (Aktionen, Backup einspielen, Massenbearbeitung, Tastenkürzel) ✅ verlinkt aus admin/aktionen, anwender/sichern, projekt/audit-backup, anwender/lesen-suchen-filtern, admin/ansichten-listen, reference/tastatur-kurzbefehle, anwender/orientierung
8 Seiten ohne Stempel (4× einstieg/, reference/openapi.md, ADRs) ✅ 5 Seiten gestempelt; ADRs + generierte Seite als Ausnahme in AGENTS.md definiert (Abdeckung jetzt 64/69, Rest = Ausnahmen)
reference/rest-system.md nannte nur register.go ✅ vollständiger Pfad internal/dbapi/register.go
Export-Beispielpfad _/assets/exports/reports.mjs nicht belegt ✅ auf _/exports/reports.mjs relativiert (Specifier-Semantik steht in projekt/pagebuilder-dev.md)
Kopfzahlen in plans/doku-audit.md/plans/doku-ausbau.md veraltet (61 Seiten/30 Shots/55 Seiten) ✅ Ist-Stand als Block ergänzt, T-SHOTS- und T-FINISH-Zeile aktualisiert
Info-Verlust der Welle D ✅ keiner gefunden (Verdichtung, kein Verlust prüfbarer Aussagen)
20 Fakten-Stichproben ✅ 17 ok, 2 Beanstandungen (s. o.), 1 Bestätigung (MCP-Scope-Fix korrekt)
10 UI-String-Stichproben ✅ 10/10 wörtlich in de.json
Bilder ✅ 40 + 9, 0 verwaist, 0 leere Alt-Texte, alle < 200 KB, keine Aufnahme aus t1

Urteil des Reviews: „abnehmbar nach ca. 30 Minuten Nacharbeit" — die Nacharbeit ist erledigt, Build grün.

Welle H — Ton (Fehlerabschnitte) · Stand 2026-10-17 ✅

Anlass: Nutzer-Befund, dass Fehlerblöcke den Leser wie ein Kind ansprechen („Wenn etwas schiefgeht … notiere Aktion, Uhrzeit und Fehlermeldung und bitte deine Betreuung um Prüfung").

Punkt Status Ergebnis
Regel festgeschrieben ✅ AGENTS.md §1 „Ton in Fehlerabschnitten": Pflichtform Meldung | Bedeutung (Ursache) | Vorgehen; verbotene Muster (Schiefgeh-Überschriften, Leser-Hausaufgaben, Erziehungsfloskeln, Betreuungs-Verweise) + Ersatzform (Ursache + Instanz mit Link)
Anwender-Bereich ✅ 12 Seiten umgeschrieben: aktionen, anmelden, eintrag-bearbeiten, massenbearbeitung, medien, orientierung, sichern, seiten-bauen, lesen-suchen-filtern, verlauf-wiederherstellen, benutzer-teams, hilfe
hilfe.md ✅ komplett neu: „Fehlerübersicht" + „Zuständigkeiten" als Tabellen, Titel „Hilfe bei Störungen"
Übrige Bereiche ✅ Sweep über admin/projekt/reference/server/einstieg: 5 Stellen bereinigt (u. a. „Betreiber um Recht bitten", „Fehler dort tun mehr weh", Überschrift in reference/fehlercodes.md); Produkt-Zitate bleiben als Zitat
Instanz statt Fürsorge ✅ Passwort-Reset → Administration (Benutzerverwaltung, de.json:710, UserDetailDrawer.svelte:639-642); Projektzugang/Rechte → Administration; Snapshots/Restore → allowSnapshots/allowBackup am Projekt-Token (models/project.go:115-121); KI-Budgets → System-Admins (models/user.go:176-187)
Belegte Korrekturen beim Umbau ✅ Upload-Limits heißen upload.maxBodySize / upload.allowedMimeTypes (internal/config/server.go:45-46); Konflikt = verletzter Unique-Index, 409 (Legacy 500) (internal/controller/http_status.go:45-52)
Ton-Review (general Subagent) ✅ Verbotsliste: 0 echte Bevormundung im Bestand (1 Treffer = legitime Ursachen-Nennung „aktive Feststelltaste"); 4 Muss-Fixes umgesetzt; Urteil „abnehmbar"
Build ✅ 71 Seiten grün, 0 tote Links/Tabellen

Welle I — Darstellung: Komponenten und Inline-Code · Stand 2026-10-17 ✅

Zwei Befunde aus der Sichtprüfung des Nutzers bzw. beim Nachmessen der gerenderten Seiten:

Befund Umfang Fix Nachweis
Starlight-Komponenten wurden überhaupt nicht gerendert 58 Seiten waren .md: <Aside>/<Steps>/<Tabs>/<Card> blieben rohe HTML-Tags, die import-Zeile stand als Text auf 57 Seiten alle 58 Seiten auf .mdx umgestellt und MDX-konform gemacht (Import erhalten, Block-Tags in eigene Zeilen, HTML-Kommentare → {/* … */}, geschweifte Klammern im Fließtext escaped), fehlender Import in reference/hooks-daten ergänzt vorher 0 gerenderte Asides → nachher 432 Asides, 87 Steps-Listen, 159 Tab-Gruppen, 0 geleakte Imports, 0 rohe Tags
Inline-Code im Dark Mode kaum unterscheidbar (zweimal nachgeschärft) alle Seiten mit Code-Spans (Tabellen „Methode/Pfad", Scopes, Feldnamen) eigene Chip-Farben in src/styles/custom.css (--tibi-inline-bg/-border/-text); td:first-child code bricht nicht mitten im Wort. Erste Fassung #333945 war dem Nutzer zu nah am Seitenhintergrund → jetzt dunkel #49525f mit Rahmen #6b7686 und weißem Text, hell #dde2ea mit Rahmen #b9c1cd am gerenderten Screenshot gemessen: Chip/Seite 2,24:1 dunkel (vorher 1,53), Text/Chip 7,9:1; hell 13,7:1 Textkontrast
Regressionsschutz — scripts/audit-docs.mjs prüft jetzt zusätzlich: Komponente ohne Import, Komponente in .md, geleakte Import-Zeile und rohe Komponenten-Tags im gebauten dist/ Gegenprobe: eine Seite testweise auf .md zurückgestellt → Skript meldet den Fehler sofort

Welle-I-Review (general Subagent): Urteil „nicht abnehmbar ohne Fixes", davon 1 echter Fehler: die globale Umwandlung <!-- … --> → {/* … */} hatte in projekt/ssr-website.mdx auch fünf Code-Beispiele erwischt (<!--HEAD-->, <!--HTML-->, <!--PRELOAD-->, <!--SSR.ERROR-->, <!--SSR.COMMENT-->) → zurückgedreht und im gebauten HTML verifiziert (&lt;!--HEAD--&gt;). Restliche Review-Punkte abgehakt: Escapes korrekt, 0 rohe Komponenten-Tags außerhalb von Code, 0 Seiten mit fehlendem Import, Slugs/Sidebar unverändert, gen:schemas idempotent, Codeblöcke unberührt.

Betriebs-Fallstrick: umbenannte Seiten und der laufende Dev-Server. astro dev (Container tibi-docs-docs-1) hält den Content-Graph im Speicher, und .astro/ wird zwischen Dev-Server und astro build geteilt. Nach dem Rename brach der laufende Server mit „The slug reference/rest-system … does not exist" ab, obwohl Datei und Sidebar stimmten. Fix: docker restart tibi-docs-docs-1, danach alle Routen gegenprüfen (70/70 → 200). Regel steht in AGENTS.md §4; nicht parallel astro build und astro dev auf demselben .astro/ laufen lassen.

Nebenfund (Produkt, nicht Doku): de.json enthält zwei ASCII-Umschreibungen („ausfuehrbare … fuer", „Ausfuehren") — als Issue tibi-admin-nova #6 angelegt, weil die Doku UI-Texte wörtlich zitieren muss.

Review-Fehler (Anti-Halluzination)

Behauptung eines Prüfers Gegenbeleg Ergebnis
„…/comment/count landet nicht auf :id" (Seitenreview Projekt) setup.go:514 (/_count als Literal) vs. :536 (:id) Doku war richtig, Prüfer falsch
„sync-openapi.mjs Pfad falsch" (Review Welle A) ${base}/_openapi/… mit Default …/api → /api/_openapi/… richtig, Default auf /api/v1 geändert
„"0" = ewig im Audit-TTL nicht belegt" (Review Welle A) mongocrud/mongo.go:477 (> 0-Guard) Prüfer falsch, Aussage bleibt