docs(catalog): Spec für KAT-05 Katalogdaten (freigegeben) #51

Merged
cschlaefke merged 6 commits from docs/2-kat05-spec into main 2026-11-03 14:15:11 +00:00
Owner

Zusammenfassung

Refs #2 (KAT-05 „Katalogdaten laden und aktuell halten"). Reiner Spec-PR, kein Code.

Neu: docs/specs/2-katalog-daten.md; ergänzt: requirements/r1-klaerungen.md (neue Klärung N15). Chris hat die Spec am 2026-11-03 freigegeben, die offenen Fragen Spec-F1–F9 wie empfohlen entschieden und die Designwahlen aus § 9.3 (W1, W4, W6, W7, H1/H2, H7) einzeln bestätigt (siehe Kommentar im Issue #2).

Inhalt (Kern)

  • Schnitt: ein Issue, drei PRs (2a R1.1 Datenmodell/Rechte/Startbestand/Platzhalter-Cover, 2b R1.2 Zusammenführen + Runbook, 2c R1.2 Meldungstabelle game_reports). 2c muss vor #13 (KAT-04) gemergt sein. Alle drei PRs nur Refs #2; Chris schließt #2 nach Go-live-Prüfung (C1) und KAT-02 (#4).
  • Ausblenden/Zusammenführen über hidden_at und merged_into_id; Katalog-View catalog_games (security_invoker).
  • Quellen und Anzeige-Erlaubnis je Quelle (catalog_sources): Daten ohne Erlaubnis werden gar nicht gespeichert, die View ist nur zweite Sicherung.
  • Spaltenrechte auf games; Supabase-Standardrechte für neue Objekte zuerst entziehen; Admin-Funktionen nur postgres/supabase_admin.
  • Beim Umhängen eines privaten Eintrags in den Katalog werden keine Varianten kopiert (Review-Blocker RB1, Entscheidung von Chris); Edition wird auf gleichnamige Zielvariante abgebildet, sonst null. Trigger games_visibility_immutable verhindert das Öffentlich-Schalten privater Einträge.
  • Pflege in R1 nur über Studio/psql; Startbestand als idempotente Datei supabase/catalog/startbestand.sql (mind. 180 sichtbare Spiele, Agents erfinden keine Spieldaten).
  • Nur self-hosting-taugliche Mittel, keine Edge Function, keine neuen Pakete.

Review

code-reviewer, zwei Durchgänge: Erster Review CHANGES REQUESTED (Blocker RB1: private Varianten würden öffentlich; W1–W7, H1–H14), alles eingearbeitet. Re-Review: APPROVE mit Textauflagen (W-a bis W-c, W4 a–e, Verweiskorrekturen); diese sind ebenfalls eingearbeitet. Beide Reviews nur gelesen, nichts ausgeführt (kein SQL, kein Dart in diesem PR).

Abweichung von requirements/ (bitte beachten)

KAT-04 Kriterium 4 („eigene Angaben bleiben erhalten") gilt für die Edition nur eingeschränkt: Sie kann beim Umhängen verloren gehen. Dokumentiert als N15 in r1-klaerungen.md, Spec § 3.3/R10/§ 9.5 und Hinweis in Issue #13.

Bitte erledigen

  • Nach Merge: Label status/spec-review an #2 entfernen
  • size/xl → size/l an #2 (ändert nur Chris)
  • Vokabular für den Startbestand (Aufgabe C0) gibt Chris frei, bevor Daten entstehen

Nicht verifiziert

Die Spec beschreibt das Soll, nicht den Stand der Umsetzung; Migrationen und Tests sind noch nicht geschrieben. Annahmen zur Supabase-CLI 3.0.0 (sql_paths, begin/commit in Seed-Dateien, db reset vs. supabase start in CI) sind als unverifiziert markiert (R11). docs/datenmodell-r1.md enthält den Abschnitt „Tabellenstruktur" doppelt; Bereinigung ist Aufgabe B4. Die CI habe ich für diesen PR nicht angesehen.

🤖 Generated with Claude Code

## Zusammenfassung Refs #2 (KAT-05 „Katalogdaten laden und aktuell halten"). Reiner Spec-PR, kein Code. Neu: `docs/specs/2-katalog-daten.md`; ergänzt: `requirements/r1-klaerungen.md` (neue Klärung N15). Chris hat die Spec am 2026-11-03 freigegeben, die offenen Fragen Spec-F1–F9 wie empfohlen entschieden und die Designwahlen aus § 9.3 (W1, W4, W6, W7, H1/H2, H7) einzeln bestätigt (siehe Kommentar im Issue #2). ## Inhalt (Kern) - Schnitt: ein Issue, drei PRs (2a R1.1 Datenmodell/Rechte/Startbestand/Platzhalter-Cover, 2b R1.2 Zusammenführen + Runbook, 2c R1.2 Meldungstabelle `game_reports`). 2c muss vor #13 (KAT-04) gemergt sein. Alle drei PRs nur `Refs #2`; Chris schließt #2 nach Go-live-Prüfung (C1) und KAT-02 (#4). - Ausblenden/Zusammenführen über `hidden_at` und `merged_into_id`; Katalog-View `catalog_games` (`security_invoker`). - Quellen und Anzeige-Erlaubnis je Quelle (`catalog_sources`): Daten ohne Erlaubnis werden gar nicht gespeichert, die View ist nur zweite Sicherung. - Spaltenrechte auf `games`; Supabase-Standardrechte für neue Objekte zuerst entziehen; Admin-Funktionen nur `postgres`/`supabase_admin`. - Beim Umhängen eines privaten Eintrags in den Katalog werden **keine Varianten kopiert** (Review-Blocker RB1, Entscheidung von Chris); Edition wird auf gleichnamige Zielvariante abgebildet, sonst `null`. Trigger `games_visibility_immutable` verhindert das Öffentlich-Schalten privater Einträge. - Pflege in R1 nur über Studio/`psql`; Startbestand als idempotente Datei `supabase/catalog/startbestand.sql` (mind. 180 sichtbare Spiele, Agents erfinden keine Spieldaten). - Nur self-hosting-taugliche Mittel, keine Edge Function, keine neuen Pakete. ## Review `code-reviewer`, zwei Durchgänge: Erster Review CHANGES REQUESTED (Blocker RB1: private Varianten würden öffentlich; W1–W7, H1–H14), alles eingearbeitet. Re-Review: **APPROVE** mit Textauflagen (W-a bis W-c, W4 a–e, Verweiskorrekturen); diese sind ebenfalls eingearbeitet. Beide Reviews nur gelesen, nichts ausgeführt (kein SQL, kein Dart in diesem PR). ## Abweichung von requirements/ (bitte beachten) KAT-04 Kriterium 4 („eigene Angaben bleiben erhalten") gilt für die **Edition** nur eingeschränkt: Sie kann beim Umhängen verloren gehen. Dokumentiert als N15 in `r1-klaerungen.md`, Spec § 3.3/R10/§ 9.5 und Hinweis in Issue #13. ## Bitte erledigen - [ ] Nach Merge: Label `status/spec-review` an #2 entfernen - [ ] `size/xl` → `size/l` an #2 (ändert nur Chris) - [ ] Vokabular für den Startbestand (Aufgabe C0) gibt Chris frei, bevor Daten entstehen ## Nicht verifiziert Die Spec beschreibt das Soll, nicht den Stand der Umsetzung; Migrationen und Tests sind noch nicht geschrieben. Annahmen zur Supabase-CLI 3.0.0 (`sql_paths`, `begin`/`commit` in Seed-Dateien, `db reset` vs. `supabase start` in CI) sind als unverifiziert markiert (R11). `docs/datenmodell-r1.md` enthält den Abschnitt „Tabellenstruktur" doppelt; Bereinigung ist Aufgabe B4. Die CI habe ich für diesen PR nicht angesehen. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
cschlaefke added 3 commits 2026-11-03 13:16:26 +00:00
Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
docs(catalog): record approval and decisions F1-F9 in KAT-05 spec
All checks were successful
CI / flutter (pull_request) Successful in 1m18s
CI / web-build (pull_request) Successful in 56s
CI / supabase (pull_request) Successful in 4s
CI / supabase-tests (pull_request) Successful in 33s
CI / e2e (pull_request) Successful in 2m51s
c0f832fd1d
Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cschlaefke added 1 commit 2026-11-03 13:35:42 +00:00
docs(catalog): address review findings on KAT-05 spec
All checks were successful
CI / flutter (pull_request) Successful in 1m18s
CI / web-build (pull_request) Successful in 56s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 30s
CI / e2e (pull_request) Successful in 2m51s
8c57e05458
Variants are no longer copied when repointing provisional entries,
all PRs only reference #2, grants, idempotency, checks and merge
rules are spelled out.

Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cschlaefke added 1 commit 2026-11-03 14:02:18 +00:00
docs(catalog): address re-review of KAT-05 spec and record clarification N15
All checks were successful
CI / flutter (pull_request) Successful in 1m14s
CI / web-build (pull_request) Successful in 55s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 31s
CI / e2e (pull_request) Successful in 2m51s
6dd5854eab
Visibility is immutable, variant copying is derived from visibility,
startbestand idempotency and vocabulary handling are defined, and the
edition deviation from KAT-04 criterion 4 is recorded as N15.

Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cschlaefke added 1 commit 2026-11-03 14:07:23 +00:00
docs(catalog): mark design choices W1, W4, W6, W7, H1, H2, H7 as confirmed
All checks were successful
CI / flutter (pull_request) Successful in 1m16s
CI / web-build (pull_request) Successful in 56s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 30s
CI / e2e (pull_request) Successful in 2m45s
b77146eabf
Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cschlaefke merged commit 982a689b7f into main 2026-11-03 14:15:11 +00:00
cschlaefke deleted branch docs/2-kat05-spec 2026-11-03 14:15:11 +00:00
cschlaefke added the
status/ready-for-merge
label 2026-11-03 14:15:33 +00:00
Author
Owner

Review-Stand (Orchestrator): CI grün auf b77146e (flutter, web-build, supabase, supabase-tests, e2e, alle success). code-reviewer: erster Review CHANGES REQUESTED (Blocker RB1), Re-Review auf 8c57e05 APPROVE mit Textauflagen. Die Auflagen und deine Bestätigungen sind in 6dd5854 und b77146e eingearbeitet; diese beiden Commits hat kein Reviewer erneut gelesen. Reiner Doku-PR, kein SQL oder Dart ausgeführt. Merge durch Chris. Danach: Label status/spec-review an #2 entfernen, size/xl → size/l.

**Review-Stand (Orchestrator):** CI grün auf b77146e (`flutter`, `web-build`, `supabase`, `supabase-tests`, `e2e`, alle success). `code-reviewer`: erster Review CHANGES REQUESTED (Blocker RB1), Re-Review auf 8c57e05 APPROVE mit Textauflagen. Die Auflagen und deine Bestätigungen sind in 6dd5854 und b77146e eingearbeitet; diese beiden Commits hat kein Reviewer erneut gelesen. Reiner Doku-PR, kein SQL oder Dart ausgeführt. Merge durch Chris. Danach: Label `status/spec-review` an #2 entfernen, `size/xl` → `size/l`.
Sign in to join this conversation.
No description provided.