Kansho/docs/architecture/functional/mvp_freeze_candidate.md
Lars 29e3d0ff74 Document the laptop-to-home transfer without moving personal data into git.
SQLite restore stays wave 1; Docker and Postgres stay wave 2. Session bootstrap for the switch is environment_handover.md plus the laptop and home work orders.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-07 08:25:20 +02:00

4.9 KiB
Raw Blame History

title status date product_family document_role parent_document
Kanshō MVP Freeze Candidate (lokale Urlaubs-Testphase) Abnahme / Freeze Candidate 2026-08-25 Jinkendo Kurze Abnahme-Checkliste für den lokalen Journal-MVP Freeze Candidate mvp_stand_und_abgleich.md

Kanshō MVP Freeze Candidate

Dieses Blatt ersetzt weder mvp.md noch mvp_stand_und_abgleich.md. Es sagt, was für die lokale Urlaubs-Testphase automatisch, manuell und später in Produktion zu prüfen ist, und was bewusst nicht zu diesem Slice gehört.

Stand: 2026-08-25. Kein Docker, kein PostgreSQL, keine echten Provider-Aufrufe in der automatischen Suite.

1. Automatisierte lokale Prüfungen

Einstieg: .\scripts\test-mvp.ps1

Die Suite setzt UTF-8, leere Provider-Keys und isolierte Temp-Daten. Suites, die einen Fake-Provider brauchen, setzen ihn selbst; Fail-closed bleibt prüfbar. Sie darf backend/data/kansho.sqlite und echte Medien nicht verändern.

  • alle backend/tests/test_*.py (Abbruch beim ersten Fehler)
  • frontend/src/journal/document.test.js
  • Frontend-Produktions-Build
  • git diff --check (separat, vor einem späteren Commit)

Neu in diesem Freeze: Backup/Restore, Papierkorb/Purge, Entry-Liste, Opening-Invarianten, include_existing beider Varianten.

2. Spätere manuelle Modell-/Browserprüfungen

Nicht durch Fake-Provider bewiesen:

  • Erster Impuls mit einem echten Modell: belegter Plan, offener Tagesfaden, neutraler Fallback
  • Dialogqualität der sechs Operationen (Cases C/D/E bleiben modellabhängig)
  • Journalentwurf Stufe 1 lokal / Stufe 2 mit einem echten Modell: Quelltreue, keine Assistentenfakten, höchstens ein Narrations-Call im Normalfall
  • include_existing in der Oberfläche: Checkbox aus, Checkbox an, Nutzerfassung unangetastet
  • Papierkorb: Soft Delete, Wiederherstellen, endgültiges Löschen inkl. Medien
  • Startseite: Fortsetzen wenn ein Day existiert, sonst Space-Einstieg
  • Backup erzeugen und an einem zweiten Temp-Pfad wiederherstellen, inkl. Bestätigung
  • Browser: ungespeicherte Editoränderungen, beforeunload; Zurück bleibt bewusst ohne Router-Migration

3. Spätere Produktions-Gates

Kein Codefehler des Freeze Candidate, sondern Betriebsreife:

  • PostgreSQL, Docker/Compose, TLS, Reverse Proxy — nach SQLite-Restore der Urlaubsdaten (../technical/environment_handover.md, ../technical/runtime_and_deploy.md §7.2)
  • Gitea-Pipelines / CI
  • Ollama bzw. lokales Detect-Modell
  • Verschlüsselung at rest, DSFA, persistentes Audit ohne Prompts
  • Quasi-Identifikatoren, vollständige Platzhalterprüfung, inhaltliche Minimierung
  • Vollständiger Datenexport für ein öffentliches Produkt

4. Bewusst ausgeschlossene Funktionen des nächsten Slices

  • Neue Reflection-Intents, universelle Continuation-Engine
  • Self Model, semantisches Retrieval, Space Content Memory
  • Chunk-and-Merge
  • Voice und visuelle LLM-Verarbeitung
  • Dialogmedien als direkte Dialogquelle (Bilder/Videos gehören im MVP in den Journal Editor)
  • Frühere Space-Entries als Faktenquelle der Journalgenerierung

5. Bewusste MVP-Grenzen dieses Freeze

  • Browser-Zurück: vorhandene Unsaved-Warnung und beforeunload reichen; keine Data-Router-Migration.
  • Space-Kontext darf den Dialogzug stützen, nicht still die Generate-Quelle werden.
  • Stufe 1 ist lokal (local_source_artifact); autoritativ sind lokale Source Registry und VerifiedArtifact. Es gibt keinen externen Rekonstruktions-Call im Runtime-Pfad. Abbruch nur ohne Nutzertext.
  • Semantische Detection jedes persönlichen Egress; Detect-Treffer nicht automatisch bestätigt; Legacy-Mappings lokal reviewen (/admin/identities)
  • Response Validation nach dem Generate normalisiert aktiven Klartext lokal. Das verhindert keinen bereits erfolgten Egress. Pre-Egress bleibt fail-closed.
  • Journal-Generate muss eine inhaltstreue, redaktionell verbesserte Fassung liefern, keine Dialogkopie. Faktentreue bleibt; Wortlaut darf (und soll) lesbar werden. prose_edit und notes_to_journal sind lokal. Ein überwiegend stichpunktartiger Dialog bleibt notes_to_journal. Unvollständige Sätze dürfen ohne neue Tatsache umgebaut werden. Ähnlichkeit ist Diagnose, kein Retry-Grund. Ein nicht übernommener Modelltext ist kein stiller Rohtext-Entwurf.
  • Additiv 2026-08-27 (Mischquellen): Die lokale Zuordnung eines gesamten Tages zu prose_edit oder notes_to_journal war eine technische Zwischenlösung und gilt als ersetzt. Mischquellen sind der Normalfall und werden in einem Generate-Aufruf verarbeitet. Keine dritte Mischkategorie.
  • Qualitative Modellfälle nicht als automatisch vollständig bewiesen bezeichnen. Vergleich: backend/journal_eval.py (Baseline, vorheriger Vertrag, aktueller Prompt; --profile-ab für Stilvorgaben). Live-Qualität ist unbestätigt, bis ein kontrollierter Modellvergleich mit --live --profile-id über das Privacy Gateway läuft. Das Harness erklärt keinen Sieger. Fake-Läufe beweisen den Vertrag, nicht die Modellprosa.