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>
4.9 KiB
| 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_existingin 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
beforeunloadreichen; 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 undVerifiedArtifact. 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_editundnotes_to_journalsind lokal. Ein überwiegend stichpunktartiger Dialog bleibtnotes_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_editodernotes_to_journalwar 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-abfü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.