71 lines
4.1 KiB
Markdown
71 lines
4.1 KiB
Markdown
---
|
||
title: "Kanshō – MVP Freeze Candidate (lokale Urlaubs-Testphase)"
|
||
status: "Abnahme / Freeze Candidate"
|
||
date: "2026-08-25"
|
||
product_family: "Jinkendo"
|
||
document_role: "Kurze Abnahme-Checkliste für den lokalen Journal-MVP Freeze Candidate"
|
||
parent_document: "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
|
||
- 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 prüft nur im aktuellen Request aktiv maskierte Identitäten. Historische Mappings und Homonyme blockieren keinen gültigen Modelltext.
|
||
- 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. Ähnlichkeit ist Diagnose, kein Retry-Grund.
|
||
- Qualitative Modellfälle nicht als automatisch vollständig bewiesen bezeichnen. Vergleich: `backend/journal_eval.py`. Live-Qualität ist unbestätigt, bis ein kontrollierter Modellvergleich läuft.
|