- P1#16 (Zusammenfassung), P2#4 (Admonitions), P2#8 (Stempel-Norm) auf erledigt - reference/openapi.md: Wording 'Stand: Platzhalter' entfernt (Seite nennt jetzt Quelle und Erzeugung) - Audit: 7 legitime Platzhalter-Woerter, 0 tote Links/Anker/Bilder, 2 bewusst offene Screenshot-Marker (im Mock nicht darstellbar)
69 KiB
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 buildgrü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 beingram/vectorund_searchPending,corporatehat keinesearch-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:
- Admin-Unterordner
src/assets/admin/anlegen (Trennung Anwender-/Admin-Bilder). - Motive 8.1 zuerst (9 Bilder), dann 8.2 in der Reihenfolge der Seiten (25 weitere).
- Für die 5 neuen Seiten 8.3 zuerst Text, dann Bilder.
- Danach
npm run build+ Alt-Text-Prüfung (scripts/audit-docs.mjsprü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
reference/erweitern:mcp-werkzeuge.md,rest-system.md,collection-config.md(Sync aus Nova),schema-properties.md(generiert).admin/als Entwickler-Sicht auf die Oberfläche schärfen: alle UI-Verhaltensbeschreibungen ausprojekt/*dorthin.anwender/um die 5 fehlenden Seiten (8.3) erweitern; Ziel = jede Bildschirmfläche hat eine Seite.projekt/mcp-nutzen.mdundprojekt/pagebuilder-dev.mdauf Leitfaden-Länge kürzen (Ziel < 300 Zeilen), Details inreference/.- 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.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_*inserver/konfiguration.mdkorrigieren (5 Stellen)allowSnapshotsinprojekt/audit-backup.md(3 Stellen)- „(plus weitere)" bei
cryptoinreference/hook-kontexte.md:52streichen - MCP-Scope-Tabelle in
projekt/mcp-nutzen.md:63-71auf.read/.create/.update/.delete meta.viewsinadmin/customizing.md:14streichen/ersetzenloadAll-Beispiel inadmin/exporte.md:60korrigierenscripts/sync-openapi.mjsauf_openapi/:projectumstellen,reference/openapi.mdgenerieren- „MongoDB 7" → „MongoDB 8" in
server/betrieb.md:21 - Punkte 9–16 aus §3 prüfen und korrigieren (⚠️-Liste)
- Nach jedem Fix:
npm run buildgrün +Verifiziert am …-Stempel erneuern
P2 — Markdown/Struktur/Hygiene
- Tabelle
admin/ki-funktionen.md:40reparieren - Aufbau-Rückstand
reference/hook-kontexte.md:65entfernen :::note/caution/danger→<Aside>(3 Stellen)- lange Überschrift
projekt/pagebuilder-dev.md:215kü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 inastro.config.mjsbeschließen - Snippet-Prüfliste aus den 6 verifizierten Fehlerbeispielen anlegen
npm run build+node scripts/audit-docs.mjs→ 0 Findings außer bekanntenPRUEFEN
P3 — Server-Lücken
projekt/feld-rechte.mdneu (Feld-Level-Permissions)reference/rest-system.mdneu (System-CRUD +_meta)projekt/rechte-tokens.mdum Scope-Katalog +token-Felder erweiternserver/konfiguration.mdumupload.allowedMimeTypes+ Embedding-Gruppen-Tuningprojekt/audit-backup.mdum Snapshot-Detailfelder + Restore-Token-Flowprojekt/suche.mdum 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.navigationdokumentierenproject.admin.tokens-Rechte dokumentieren (inkl. Querverweis Backup/Snapshot/Search)- Export-
ctxvollständig inadmin/exporte.md(Beispiel korrigiert, Batching, Guards) - Action-
execution.kind/cancellableinadmin/aktionen.md - Registry-Ladeordnung/Cache +
{eval}-Specifier inprojekt/pagebuilder-dev.md - Runtime-System-Config in
admin/setup.md - 🔍
hooksTrigger/exportScriptklären (existieren nicht)
P5 — tibi-types + Starter
reference/schemas.mdzur Property-Matrix ausbauen (generiert)- Undokumentierte Properties (§7.1) je Projektseite ergänzen
- Playwright-/Mock-Kapitel anlegen
- CI/Deploy-Env +
api/templatesdokumentieren - 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.mdanwender/massenbearbeitung.mdanwender/aktionen.mdanwender/backup-einspielen.mdanwender/tastenkombinationen.md- Sidebar +
coverage-map.jsonnachziehen
P7 — Stil, Starlight, Struktur (vor P6b!)
- UI-Namen gegen
de.jsonabgleichen (allen voran „Befehlspalette") - §9-Muster abarbeiten (Binsen, Prosa-Wände, Wertungen, Anführungszeichen)
syncKeyfür Tab-Gruppen,LinkCardauf Übersichten,Icon/Badgedort, wo es hilft- Zeilenmarkierungen +
frame/titlein Codeblöcken vereinheitlichen lastUpdated,expressiveCode,sidebar.labelinastro.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 buildgrü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.mjsum 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):
- 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.
- 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.
- §12 entkräftet die eigene Absolutaussage: „0 Duplikate" statt „0 Wegfall";
tibi-server/docs/24-ephemeral-rest-tokens.mdist 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 | ✅ | plans/offene-issues.md: 7× tibi-server, 4× tibi-admin-nova, 2× tibi-types (mit Beleg) |
| P9 Repo-Hygiene (Löschungen) | ⬜ | bewusst nicht ausgeführt — Löschen in fremden Repos braucht Freigabe; Kandidatenliste steht in §12.1 |
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 | ⚠️ | Session-Timeout (Mock schaltet den Inaktivitäts-Tracker ab), Suchindex-Banner (Mock-Queue immer 0), KI-Werkzeugstatus/Vision (kein KI-Backend), Drill-Down/Sprungziele, Inline-Anlage/Rückverweise → als <!-- Screenshot (T-SHOTS) … --> markiert, Grund dokumentiert |
| 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.
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 |