Files
tibi-docs/plans/audit/03-types-starter.md
T
apairon 1928922e07 Audit + Umbau: Faktenfehler behoben, Server-/Admin-Lücken geschlossen, 49 Screenshots, Schema-Matrix generiert
- Audit: plans/doku-audit.md (Befunde, Phasen P1-P9, Ausführungsprotokoll) + plans/audit/ (8 Detailreports) + plans/offene-issues.md
- Werkzeuge: scripts/audit-docs.mjs (Links/Anker/Bilder/Tabellen), scripts/gen-schema-matrix.mjs (npm run gen:schemas)
- Neue Seiten: projekt/feld-rechte, reference/rest-system, reference/schema-properties, projekt/tests, 5 Anwender-Seiten
- Fehler behoben: EMBEDDING_BGE_M3_*-Env, allowSnapshots, MCP-Scopes (.read/.create/.update), meta.views, loadAll-Signatur, OpenAPI-Endpunkt, MongoDB 8, Befehlspalette
- Screenshots: 9 Admin + 10 Anwender aus Mock-Projekt corporate (t1 entfernt), 49 Bilder gesamt
- AGENTS.md: Sync-Behauptung richtiggestellt, Belegpflicht/UI-Namen/Screenshot-Regeln, Werkzeug-Abschnitt
- Build: 71 Seiten grün, 0 tote Links, 0 kaputte Tabellen
2026-10-17 01:49:35 +00:00

27 KiB
Raw Blame History

Audit 03: tibi-types + tibi-svelte-starter vs. tibi-docs

Stand: 2026-10-16. Codebasen: tibi-types (schemas + index.d.ts), tibi-svelte-starter (README, AGENTS, package.json, frontend/api/Docker/Env). Doku: tibi-docs/src/content/docs (Seiten einstieg/*, projekt/*, reference/schemas.md, reference/hooks-*.md). Regel: Jede Aussage mit datei:zeile belegt; ohne Beleg steht „nicht verifiziert".

1) Schema-Matrix tibi-types (16 Schemas in schemas/config/)

Quelle Top-Level-Properties: per Python aus den Schema-Dateien extrahiert. Dokustand: reference/schemas.md:10-32 listet alle 16 Schemas nur tabellarisch (Name → Datei → Pflichtfelder), beschreibt aber keine Properties im Detail; Details liegen ggf. auf Projektseiten.

Schema (schemas/config/*.json) Top-Level-Properties in reference/schemas.md beschrieben? undokumentierte Properties (vs. schemas.md + Projektseite)
project.schema.json namespace, meta, upload, collections, jobs, actions, assets, cors, admin, hook, audit, strictFields, snapshotPath, snapshots, legacy (project.schema.json:99-333 für Sub-Blöcke: agent :102, assets :174, cors :187, admin :227, hook :262, audit :303, strictFields :312, snapshotPath :315, snapshots :319, legacy :333) nur Zeile in Tabelle (schemas.md:18); hook/cache/ratelimit-Details nur in server/konfiguration.md, snapshots nur in projekt/audit-backup.md, admin nur Server-Seiten snapshotPath (String, Ablagepfad Snapshots), snapshots (Array, Zeitplan/Retention — nur Ablauf in audit-backup.md, kein Feld- mapping), legacy (nur in reference/fehlercodes.md erwähnt, sonst nicht verifiziert), strictFields auf Projektebene (nur fehlercodes.md, nicht verifiziert), cors auf Projektebene (nur Server-Seiten server/sicherheit.md, server/konfiguration.md), admin-Subkeys (nur Server-Seiten)
collection.schema.json name, defaultLanguage, uploadPath, upload, permissions, projections, hooks, meta, imageFilter, fields, indexes, audit, bulk, cors, queryLimits, readonlyFields, hiddenFields, strictFields, search (collection.schema.json:17 uploadPath, :63 imageFilter, :103 audit, :126 bulk, :147 cors, :187 queryLimits, :201 readonlyFields, :207 hiddenFields, :213 strictFields, :216 search) nur Tabellenzeile (schemas.md:19); Teilabdeckung: indexes+search in projekt/sammlungen-anlegen.md:104-150, imageFilter in projekt/dateien-bilder.md, audit in projekt/audit-backup.md, cors in projekt/jobs-actions.md uploadPath (String, veralteter Upload-Pfad neben upload; nicht verifiziert in Doku), queryLimits (defaultLimit/maxLimit; kein Treffer in Doku — nicht verifiziert), readonlyFields/hiddenFields auf Collection-Ebene (kein Treffer in Doku — nicht verifiziert), strictFields (nur fehlercodes.md, kein Konzepttext), bulk (optimize.create/update/delete; in projekt/* nur bulk-Wort in mcp-nutzen.md/hooks-schreiben.md ohne Feld-Doku), upload.allowedMimeTypes/maxBodySize (nur Server-Seite, nicht pro Collection), Index-Subkeys dropDups/sparse/background/defaultLanguage/languageOverride (Schema-$defs indexConfig; Doku sammlungen-anlegen.md:106-135 zeigt nur Text/Unique-Beispiel)
field.schema.json via $defs.field: name, type, index, subFields, validator, readonly, hidden, strictFields, meta (Typ-Enum string…any, index-Enum single/unique/text/sparse/background) nur Tabellenzeile (schemas.md:20) readonly/hidden als Bool-oder-eval (BoolOrEval, index.d.ts:13); Doku felder-widgets.md/sammlungen-anlegen.md enthalten kein readonly/hidden (grep ohne Treffer) — nicht verifiziert; strictFields auf Feldebene (nur fehlercodes.md); index-Enum-Details (sparse/background) ohne Doku
field-list.schema.json Array-Items string | field.schema (Datei 1:20) nur Tabellenzeile (schemas.md:21) keine Properties (Wrapper); Verwendung (String-Kurzform vs. Objekt) in felder-widgets.md:12-32 teilweise gezeigt — abgedeckt
field-meta.schema.json label, widget, i18n, helperText, hideLabel, hide, protected, position, section, containerProps, defaultValue, dependsOn, inputProps, choices, foreign, downscale, imageEditor, drillDown, pageSize, preview, addElementLabel, filter, pagebuilder, schemaRef, openapi (field-meta.schema.json:14 widget, :50 hideLabel, :66 containerProps, :131 dependsOn, :183 downscale, :198 imageEditor, :229 drillDown, :232 pageSize, :239 addElementLabel, :242 filter, :303 schemaRef) nur Tabellenzeile (schemas.md:22); Teilabdeckung in projekt/felder-widgets.md (Aufbau :12, Typen :33, Validatoren :60, Choices/FK :80, dependsOn :131, i18n :151) hideLabel (Bool; kein Treffer — nicht verifiziert), containerProps (Objekt; kein Treffer), position/section (Layout; section nur collection-meta, Feld-section nicht verifiziert), pageSize (Zahl; kein Treffer), addElementLabel (String; kein Treffer), imageEditor (Konfig; kein Treffer), schemaRef (String-Ref; kein Treffer), filter: true/false als Admin-Filter-Opt-in (field-meta.schema.json:242-246; Doku zeigt nur filter_public.js-Hook, nicht das Flag), inputProps/defaultValue-Details nur angerissen
collection-meta.schema.json label, muiIcon, group, exports, designGuide, imageUrl, hide, singleton, subNavigation, preview, i18n, defaultSort, viewHint, sidebar, sections, openapi, query, agent (collection-meta.schema.json:69 singleton, :84 subNavigation, :211 defaultSort, :231 viewHint, :423 sidebar, :441 sections, :465 openapi, :468 query, :503 agent) nur Tabellenzeile (schemas.md:23); Teilabdeckung: sammlungen-anlegen.md:79-103 (Label/Gruppe/Icon/Vorschau), admin/ansichten-listen.md (subNavigation, defaultSort, viewHint) singleton (Bool, Ein-Dokument-Collection; kein Treffer in Doku — nicht verifiziert), sections (Array, Editor-Sektionen; kein Treffer), hide auf Collection-Ebene, exports/designGuide/imageUrl (nicht verifiziert), query-Block (Meta-Abfragen; nicht verifiziert), agent-Block (nicht verifiziert), openapi-Meta (nur Tabellenzeile)
permissions.schema.json public, user + $defs.permissionSet: methods, filter, validProjections, readonlyFields, hiddenFields nur Tabellenzeile (schemas.md:24) validProjections (String-Array; kein Treffer — nicht verifiziert), filter (Mongo-Filter je Permission-Set; nur rechte-tokens.md grob, kein Feld-Mapping — teilweise), readonlyFields/hiddenFields je Permission-Set (kein Treffer)
hooks.schema.json get, post, put, delete, audit + $defs: hook(type/file/timeout), getHooks(handle/read/return/file), postHooks(bind/validate/handle/create/return/bulkCreate/bulkReturn), putHooks(bind/validate/update/return/bulkUpdate/bulkReturn), deleteHooks(delete/return/bulkDelete/bulkReturn), auditHooks(return) nur Tabellenzeile (schemas.md:25); Hook-Protokoll in projekt/hooks-schreiben.md bulkCreate/bulkReturn, bulkUpdate/bulkReturn, bulkDelete/bulkReturn (Stufen im Schema, in hooks-schreiben.md nur bulk-Wort ohne Stufen-Mapping — teilweise), bind vs. validate vs. handle-Reihenfolge (Schema-$defs, Doku-Erwähnung prüfen — teilweise), audit.return-Hook (Schema vorhanden; Doku nur audit-backup.md, kein Hook-Stufen-Text)
job.schema.json cron, type, file, timeout, meta nur Tabellenzeile (schemas.md:26); Ablauf in projekt/jobs-actions.md timeout (Sekunden; in jobs-actions.md erwähnt — abgedeckt/teilweise), meta (frei; nicht verifiziert)
action.schema.json name, meta, permissions, hooks, audit, cors + $defs: actionField, actionMappedField(source/name/...), actionFieldSection, actionExecutionMeta(kind/cancellable), actionOutputProgressMapping(indexField/countField/statusField/messageField/fields), actionOutputMapping(summary/details/progress), actionOutputMeta(title/mapping), actionMethodMeta(query/data/execution/output), actionMeta(label/muiIcon/description/group/hide/methods) nur Tabellenzeile (schemas.md:27); Actions in projekt/jobs-actions.md, Admin-Ansicht in admin/aktionen.md actionOutputMapping/actionOutputProgressMapping-Felder (indexField/countField/statusField/messageField/fields; nur admin/aktionen.md-Treffer für „mapping", kein Feld-Mapping — teilweise/nicht verifiziert), actionExecutionMeta.kind/cancellable (nicht verifiziert), actionMappedField.source vs. name (Dot-Path vs. Legacy; nicht verifiziert), cors/audit je Action (nicht verifiziert)
asset.schema.json name, path nur Tabellenzeile (schemas.md:28) keine weiteren Properties; Verwendung (config.yml-Assets) in server/schnittstellen.md/neues-projekt.md — abgedeckt
image-filter.schema.json Array von Filter-Objekten (kein Top-Level-Props-Objekt) nur Tabellenzeile (schemas.md:29); Anwendung in projekt/dateien-bilder.md Filter-Parameter (width/height/fit/fill/resampling/anchor/…/quality/outputType aus ImageFilterParams, index.d.ts:314-358) sind in dateien-bilder.md nur als filter-Query-Param gezeigt, kein Parameter-Mapping — teilweise
projections.schema.json Pattern-Key {name: {select: {feld: 0|1}}} (Wrapper-Datei 1:30) nur Tabellenzeile (schemas.md:30); Nutzung in projekt/abfragen-lesen.md select: null-Variante (Schema erlaubt `object
snapshot.schema.json name, description, collections, includeMedia, collectionDedup, mode, retention, schedule, permissions, enabled nur Tabellenzeile (schemas.md:31); Ablauf in projekt/audit-backup.md, Endpunkte in server/schnittstellen.md includeMedia (Bool), collectionDedup (Bool/Strategie), mode, retention, schedule, permissions, enabled — Feld-für-Feld-Mapping in audit-backup.md prüfen, per Stichprobe nur Ablauf erzählt — teilweise (genaue Abdeckung nicht verifiziert)
openapi.schema.json disabled, get, getOne, post, put, delete + $defs: codeSample(lang/label/source), responseObject, operationObject(disabled/tags/summary/description/x-codeSamples/parameters/responses/security), fieldOpenapi(disabled/description/example/format/enum/deprecated) nur Tabellenzeile (schemas.md:32); generierte Referenz in reference/openapi.md x-codeSamples, getOne-Trennung (get vs. getOne), fieldOpenapi.example/format/enum/deprecated — Detail-Mapping nicht verifiziert (teilweise)
defs.schema.json nur $ref-Bausteine, kein Ziel (schemas.md:33 sagt das explizit) abgedeckt (schemas.md:33) —

Wichtigste undokumentierte Schema-Properties (Top-10, mit Typ/Wirkung aus Schema):

  1. collection.queryLimits (collection.schema.json:187) — Objekt {defaultLimit, maxLimit} (Zahlen): GET-Limits je Collection. Kein Treffer in Doku — nicht verifiziert.
  2. collection.readonlyFields / hiddenFields (collection.schema.json:201-207) — String-Arrays: Collection-weite Schreib-/Sichtschutz-Felder. Kein Treffer in Doku — nicht verifiziert.
  3. collection.uploadPath (collection.schema.json:17) — String: Legacy-Upload-Pfad neben upload:{maxBodySize, allowedMimeTypes}. Nicht verifiziert in Doku.
  4. collection.strictFields + Feld-strictFields (collection.schema.json:213; Feld-$defs) — Bool: unbekannte Felder ablehnen. Nur fehlercodes.md-Treffer, kein Konzept — faktisch undokumentiert.
  5. collection-meta.singleton (collection-meta.schema.json:69) — Bool: Collection auf ein Dokument begrenzen. Kein Treffer — nicht verifiziert.
  6. collection-meta.sections (collection-meta.schema.json:441) — Array: Editor-Sektionen. Kein Treffer — nicht verifiziert.
  7. field-meta.hideLabel (field-meta.schema.json:50) — Bool: Label im Editor verstecken. Kein Treffer — nicht verifiziert.
  8. field-meta.imageEditor (field-meta.schema.json:198) — Objekt: Bildeditor-Konfig je Feld. Kein Treffer — nicht verifiziert.
  9. permissionSet.validProjections (Schema-$defs.permissionSet) — String-Array: erlaubte Projections je Rolle. Kein Treffer — nicht verifiziert.
  10. action.actionOutputMapping/actionOutputProgressMapping (action.schema.json-$defs) — {summary/details/progress{indexField/countField/statusField/messageField/fields}}: Fortschritts-/Ergebnis-Mapping von Actions. Nur „mapping"-Wort in admin/aktionen.md, kein Feld-Mapping — faktisch undokumentiert.

2) Hook-Typen (tibi-types/index.d.ts, 1716 Zeilen)

Die reference/hooks-*.md dokumentieren Pakete/Funktionen (db.find …), nicht Typen. reference/schemas.md listet nur Schema-Dateien. reference/hook-kontexte.md:8-28 listet Pakete aus internal/hook (Server-Code), nicht index.d.ts-Typen. Ergebnis: fast alle globalen Typen sind als Typen undokumentiert (Verwendung teils in Beispielen, aber kein Typ-Mapping).

Typ (index.d.ts) Zeilen in hooks-*/schemas.md dokumentiert?
CollectionDocument index.d.ts:2-7 nicht verifiziert (nirgends als Typ; implizit in Beispielen)
BoolOrEval index.d.ts:13 nein — readonly/hidden-Felder selbst fehlen (s. §1)
FieldImageValidator (minWidth/maxWidth/minHeight/maxHeight/allowNonImages/allowUnknownDimensions) index.d.ts:16-29 + Schema field.schema.json:130-142 nein — felder-widgets.md:60-78 kennt nur maxFileSize/accept, keine Bildmaß-Validatoren
FieldValidator (alle Schlüssel) index.d.ts:31-68 teilweise — felder-widgets.md:60-78 listet required/pattern/in/minLength/maxLength/min/max/minDate/maxDate/minItems/maxItems/format/maxFileSize/minFileSize/accept/eval/allowZero, aber nicht image: FieldImageValidator als Unterschlüssel
SearchConfig + RrfConfig/SourceFusionConfig/VectorConfig/NgramConfig/NormalizeConfig/RegexConfig/ScoreConfig index.d.ts:70-184 teilweise — projekt/suche.md:33-38 zeigt autoRegenerate, :74 nennt score_rrf/score_sum/rank_score/hybrid, minmax/zscore, scoreWeight, sourceConfig als „existiert im Code", ohne Feld-Mapping
SearchExplainSource/SearchExplanation/SearchMeta (qExplain) index.d.ts:120-147 nicht verifiziert (kein Treffer qExplain/SearchExplanation in Doku-Stichprobe)
QueryLimitsConfig/BulkOptimizeConfig/BulkConfig index.d.ts:187-209 nein (s. §1 queryLimits/bulk)
CollectionIndex (name/key/unique/dropDups/background/sparse/defaultLanguage/languageOverride) index.d.ts:211-228 teilweise — sammlungen-anlegen.md:106-135 zeigt Text-/Unique-Beispiel, keine Subkey-Tabelle
AuditCollectionConfig index.d.ts:231-243 teilweise — audit-backup.md erzählt Ablauf, kein Feld-Mapping (enabled/actions-Liste)
UploadConfig (maxBodySize/allowedMimeTypes) index.d.ts:245-248 teilweise — Server-Seite ja, Collection-Ebene nein
LocalizedText/ChoiceValue/ChoiceStyle/ChoiceItem index.d.ts:250-272 teilweise — felder-widgets.md:82-110 zeigt Choices, aber kein badgeVariant/chipVariant/badgeStyle/chipStyle-Mapping
PreviewTableColumn/PreviewSlots/PreviewConfig/EvalStringConfig/EvalHtmlConfig index.d.ts:274-311 teilweise — sammlungen-anlegen.md:79-103 + admin/ansichten-listen.md zeigen Vorschau, kein Slot-Mapping (label/secondary/tertiary/badge/image/table/select)
ImageFilterParams index.d.ts:314-358 teilweise (s. §1 image-filter)
CollectionInfo (inkl. imageFilter/indexes/audit/bulk/queryLimits/readonlyFields/hiddenFields/search/strictFields) index.d.ts:361-388 nein als Typ; Felder s. §1
ActionInfo/ActionMeta/ActionMethodMeta/ActionExecutionMeta/ActionMappedField/ActionOutputProgressMapping/ActionOutputMapping/ActionOutputMeta index.d.ts:391-465 nein als Typen; Ablauf in jobs-actions.md/admin/aktionen.md
MethodPermission/SimpleMethodPermission/AllowedMethodPermission/CollectionYourPermissions/ActionYourPermissions/ProjectYourPermissions/PermissionSet/ProjectionConfig index.d.ts:467-521 teilweise — rechte-tokens.md + abfragen-lesen.md (Projections) behandeln Konzepte, kein Typ-Mapping (bulk-Flag, filter, validProjections fehlen)
CollectionFieldInfo (readonly/hidden/strictFields) index.d.ts:523-536 teilweise (s. Feld-§1)
ApiInfo/ProjectInfo index.d.ts:539-562 nicht verifiziert als Typen
AuditLogEntry index.d.ts:565-611 teilweise — audit-backup.md (Eintrags-Felder userId/action/snapshot/changes erzählt, kein Typ-Mapping)
DbReadOptions (filter/selector/projection/offset/limit/sort/pipelineMod) index.d.ts:613-627 teilweise — hooks-daten.md:8-113 dokumentiert find/count/…-Signaturen, pipelineMod als Option nicht verifiziert
GetHookData/GetHookGetOnlyData/PostHookData/JobConfig/JobData index.d.ts:629-737 teilweise — hooks-schreiben.md (Stufen), jobs-actions.md (Jobs); bulkReturn-Felder (created/ids/modified/deleted) ohne Typ-Mapping
ConfigPackage/DbPackage/SmtpPackage/FsPackage/TplPackage/HttpPackage index.d.ts:738-1062 ja (Funktionen) — hooks-daten.md, hooks-netze.md, hooks-medien.md, hooks-sicherheit.md
DebugPackage/ResponsePackage/UserPackage/BcryptPackage/JwtPackage/CharsetPackage/ImagePackage/XmlPackage/CookiePackage/PdfPackage/CryptoPackage/JsonPackage/ExecPackage/Base64Package index.d.ts:1064-1474 ja (Funktionen) — hooks-meta.md, hooks-medien.md, hooks-sicherheit.md
CachePackage/RatelimitPackage/ChannelSubscribeOptions/ChannelSubscription/ChannelPackage (+ Rest ab :1616) index.d.ts:1481-1640 ja (Funktionen) — hooks-daten.md:114-195 (cache), hooks-netze.md:69-176 (channel, ratelimit)

Undokumentierte Typen (als Typ-Mapping): CollectionDocument, BoolOrEval, FieldImageValidator, SearchExplainSource/SearchExplanation/SearchMeta, QueryLimitsConfig, BulkOptimizeConfig/BulkConfig, ChoiceItem (Varianten/Styles), PreviewSlots/PreviewConfig, CollectionInfo, ActionInfo-Familie (8 Interfaces), *YourPermissions-Familie, ApiInfo/ProjectInfo, AuditLogEntry (als Typ), DbReadOptions.pipelineMod.

3) Felder-Widgets / Validator-Optionen vs. projekt/felder-widgets.md

Widget-Enum (field-meta.schema.json:14-25): text, textarea, number, checkbox, switch, select, selectArray, chipArray, date, datetime, file, image, json, richtext, html, foreignKey, foreignKeyChipArray, foreignFile, foreignMedia, pagebuilder, pageBuilder, templateProps, containerLessObject, containerLessObjectArray, color — alle in felder-widgets.md + admin/eintrags-editor.md per grep nachweisbar (Stichprobe §-Befund: alle 20+ Treffer). Lücken: pagebuilder vs. pageBuilder (beide im Enum, Doku unterscheidet nicht — nicht verifiziert), containerLessObject vs. containerLessObjectArray (beide erwähnt, Unterschied nicht verifiziert), image vs. file vs. foreignFile vs. foreignMedia (alle erwähnt, Abgrenzung nur in dateien-bilder.md angerissen — teilweise). Validatoren (felder-widgets.md:60-78): required, pattern, in, minLength/maxLength, min/max, minDate/maxDate, minItems/maxItems, format(email/url/uuid/slug), maxFileSize/minFileSize, accept, eval, allowZero — alle dokumentiert. Fehlt: image-Unterschlüssel (minWidth/maxWidth/minHeight/maxHeight/allowNonImages/allowUnknownDimensions, field.schema.json:130-142, index.d.ts:16-29) — kein Treffer in Doku außer minWidth-Messung in dateien-bilder.md:93 (Medialib-Anzeige, kein Validator). Meta-Lücken (s. §1): hideLabel, containerProps, position, pageSize, addElementLabel, imageEditor, schemaRef, filter-Flag (field-meta.schema.json:242-246), drillDown (nur pagebuilder-dev.md-Treffer), downscale (nur dateien-bilder.md-Treffer).

4) Starter-Abgleich (tibi-svelte-starter → Doku)

Thema Beleg (Starter) Dokuseite Verdikt fehlt
Klonen + Platzhalter (__PROJECT_NAME__, __TIBI_NAMESPACE__, .env, api/config.yml, .htaccess) README.md:7-22, .env (PROJECT_NAME=__PROJECT_NAME__ etc.) einstieg/schnellstart.md:16-52, einstieg/neues-projekt.md:12-43 abgedeckt nichts
Token-Köpfe (Token vs. X-Admin-Token vs. X-Auth-Token, ADMIN_TOKEN in config.yml.env) AGENTS.md: Token header distinction, README-Checkliste einstieg/schnellstart.md:85-94, projekt/deploy.md:95-110, projekt/rechte-tokens.md abgedeckt nichts
make docker-up, Docker-Profile, Traefik-Routen Makefile, docker-compose-local.yml, AGENTS.md: Quick reference schnellstart.md:53-74, neues-projekt.md:44-54 teilweise Traefik-/Router-Details, Profile (tibi vs. tibi-dev), docker-restart-frontend/docker-logs nur Starter-lokal
yarn validate / yarn build / yarn build:server (app.server.js, buildInfo) package.json: scripts (validate, build, build:server, dev/start/start:mock/start:ssr), esbuild.config*.js, scripts/esbuild-wrapper.js schnellstart.md:75-84, ssr-website.md:105-121, deploy.md abgedeckt (Basis) start:mock/MOCK=1-Modus, esbuild-wrapper-Flags, buildInfo.ts-Mechanik nur angerissen
SSR-Hook (api/hooks/ssr/get_read.js, <html lang>, <!--HEAD-->, Cache-Collection ssr) README.md:24-40, api/hooks/ssr/, frontend/src/ssr.ts projekt/ssr-website.md (Routen :23, Lookups :36, Blöcke :70, Bundle :105, Cache :122, Abnahme :146) abgedeckt SSR-Cache-Invalidierungsregeln (PUT/DELETE vs. POST, ?clear=1) stehen nur als Code-Kommentar in ssr-website.md:153-164 — ok, aber ssr.yml-Felder nicht gemappt
Mock-Modus (MOCK=1, __MOCK__, frontend/mocking/*.json, lib/mock.ts) frontend/src/lib/mock.ts:4-8, frontend/src/lib/api.ts:88-89, package.json: start:mock einstieg/begriffe.md, einstieg/was-ist-tibi.md (nur Wort-Treffer) fehlt Mock-Aktivierung, mocking/-Verzeichnis-Format, __MOCK__-Flag — kein eigenes Doku-Kapitel (nur Wort in begriffe.md)
Playwright-Tests (tests/e2e, tests/api, test:e2e/test:api/test:visual/tour, global-setup.ts) package.json: scripts (test/test:e2e/test:api/test:visual/tour), tests/, playwright.config.ts keine (kein Treffer playwright in einstieg/*, ssr-website.md, deploy.md) fehlt gesamtes Test-Setup (Spec-Ordner, global-setup, CI ohne Playwright It. AGENTS.md) in Projekt-Doku nicht verziehen
Frontend-Struktur (App.svelte, routes/, blocks/, widgets/, lib/api.ts, store.ts, i18n, Tailwind, Sentry, svelte:head) frontend/src/ (App.svelte, blocks/*, widgets/, lib/*, config.ts, ssr.ts, sentry.ts) ssr-website.md (Routen/Blöcke/i18n/Tailwind angerissen) teilweise widgets/-Katalog, lib/-Module (api.ts, store.ts, navigation.ts, versionCheck.ts), Sentry-Verdrahtung, svelte:head-Pflicht nur Checklisten-Zeile
API-Verzeichnis (api/collections/*.yml, api/hooks/*, api/templates/, config.yml.env, ssr.yml, medialib.yml) api/ (collections/, hooks/, templates/, config.yml, config.yml.env) neues-projekt.md:55-104 (Dateien vs. registriert), sammlungen-anlegen.md, ssr-website.md teilweise templates/-Verzeichnis, config.yml.env-Mechanik (ADMIN_ASSET_VERSION), medialib.yml-Felder nur Beispiel
Env/Deploy (CODING_URL, LIVE_URL/STAGING_URL, ADMIN_ASSET_VERSION, .basic-auth-*, CI-Skripte scripts/ci-*.sh, validate-schemas.mjs in tibi-types) .env, scripts/ci-*.sh, AGENTS.md: Required secrets neues-projekt.md, deploy.md:12-110 (URL-Bild, Ablauf, Reload-Endpunkte, Token-Trennung) teilweise .basic-auth-*-Dateien, ADMIN_ASSET_VERSION-Mechanik, CI-Skript-Details (ci-modify-config.sh, ci-upload-sourcemaps.sh), BrowserSync-Proxy — Starter-lokal, Doku schweigt
.agents/-Wissen (BUILD_CHECKLIST, Skills, tibi-project-setup) .agents/BUILD_CHECKLIST.md, .agents/skills/, AGENTS.md keine Entsprechung fehlt (bewusst?) Build-Checklisten-Phasen und Skill-Pflege sind Starter-intern; Doku muss entscheiden, ob das Projekt-Delivery-Wissen je in neues-projekt.md gehört

Top-5 Starter-Lücken (für Projekt-Doku schnellstart/neues-projekt/ssr-website/deploy):

  1. Playwright-Test-Setup (tests/e2e|api|visual, test:e2e/test:api/tour-Skripte) — kein Doku-Kapitel.
  2. Mock-Modus (MOCK=1/start:mock, mocking/*.json, lib/mock.ts) — nur Wort-Treffer.
  3. api/templates/ + ssr.yml-Felder + Cache-Invalidierung als Konzept (nur Code-Kommentar in ssr-website.md:153-164).
  4. CI/Env-Mechanik (.basic-auth-*, ADMIN_ASSET_VERSION, scripts/ci-*.sh, esbuild-wrapper-Flags).
  5. Frontend-lib/-Module + widgets/-Katalog + Sentry-Verdrahtung (nur angerissen).

5) Löschkandidaten (Datei → Inhalt → Doku-Status)

tibi-types:

  • index.d.ts (1716 Zeilen: alle Hook-Typen) → in tibi-docs teilweise (Funktionen ja, Typen nein) → muss bleiben (einzige Typquelle; Starter referenziert via types/global.d.ts + tibi-types/-Submodul lt. AGENTS.md).
  • schemas/config/*.json (16 Dateien) → in tibi-docs teilweise (schemas.md:10-33 listet, Details fehlen) → muss bleiben (einzige Form-Quelle; Doku verlinkt per $schema-Zeile).
  • scripts/validate-schemas.mjs → Inhalt nicht verifiziert (nicht gelesen) → nicht verifiziert (vermutlich Build-Hilfe → muss bleiben).
  • demo-api/ (config.yml, collections/mycol.yml, collections/fields|global/, actions/, hooks/, testfiles/) → Doku-Beispiele nutzen Starter-api/, nicht demo-api → teilweise/nicht abgedeckt; vor Löschen prüfen, ob Tests/Validierung sie nutzen (nicht verifiziert) → nicht löschen ohne Prüfung.
  • package.json/tsconfig.json/README (falls vorhanden) → Paket-Metadaten → muss bleiben.

tibi-svelte-starter:

  • README.md (Setup-Checkliste :7-22, Architektur/SSR :24-40) → in tibi-docs abgedeckt (schnellstart.md, neues-projekt.md, ssr-website.md) → muss bleiben (Einstiegspunkt im Repo; Doku dupliziert mit Absicht für Website-Kontext).
  • AGENTS.md (Token-Köpfe, Medialib-URL-Pattern, Constraints, Secrets, Skills-Pflege) → in tibi-docs teilweise (Token-Köpfe abgedeckt, Medialib-Pattern in dateien-bilder.md, Skill-/Constraint-Wissen nicht) → muss bleiben (Agenten-Arbeitsanweisung im Repo).
  • api/ (collections/*.yml, hooks/ssr/*, templates/, config.yml, config.yml.env) → in tibi-docs teilweise (Konzepte ja, Feld-Mapping nein) → muss bleiben (lauffähiges Beispiel).
  • frontend/src/ (App/blocks/widgets/lib/routes) → teilweise → muss bleiben.
  • .agents/ (BUILD_CHECKLIST.md, STARTER_ALIGNMENT_*.md, skills/) → in tibi-docs nicht abgedeckt → muss bleiben (Starter-interne Liefer-/Pflege-Doku, kein Doku-Duplikat).
  • docker-compose-*.yml, Dockerfile, Makefile, esbuild.config*.js, scripts/esbuild-wrapper.js, .env → teilweise (Befehle ja, Details nein) → muss bleiben.
  • tests/ + playwright.config.ts + video-tours/ → in tibi-docs nicht abgedeckt → muss bleiben (kein Ersatz in Doku).
  • tibi-types/-Submodul + types/global.d.ts → Typ-Brückenkopf → muss bleiben.

Zählung: 0 Dateien mit Verdikt „löschen". 2× „muss bleiben" (Typ-/Schema-Quellen), Rest „teilweise/nicht abgedeckt, muss bleiben" (lauffähige Beispiele, Tests, Ops-Dateien). Einziger Klärungsfall: tibi-types/demo-api/ (Nutzung durch Tests/CI vor Lösch-Entscheidung prüfen — nicht verifiziert).