Convert the 100%-AI-authored codebase into one a non-AI human can walk into, understand, and (if needed) maintain — without the original author available. Covers: per-subsystem audit (Epic 1), human-targeted documentation (Epic 2), test-suite trustworthiness pre-flight (Epic 3), big-bang restructure of backend (layer→domain) and frontend (lib→domain) with stack-symmetric domain names (Epic 4), and post-refactor cleanup of dead code, vague comments, and scratch artifacts (Epic 5). Closes when the final readiness scorecard (CLEANUP-5 / Epic 5) goes 🟢 and the codebase is ready to send to evaluators.
Robustness and feedback improvements to the Kurrent OCR service: spell-check feedback loop from user corrections, integration tests for the full streaming pipeline with a real image, spell-check routing tests, clearer startup errors for invalid CLAHE env vars, and non-optional TriggerSenderTrainingDTO.personId. Supports the product-defining Kurrent recognition flywheel.
Consolidated improvements to the Person domain and UI: split combined import entries, multi-sender documents, multi-person Von-column splitting, title/personType fields, sort options on the list, Korrespondenz-Überblick dashboard on /persons/[id], and visual differentiation of incomplete placeholder persons. Targets cleanup of ODS-import artefacts and richer correspondent discovery.
First production deployment of Familienarchiv. Captures the phase-1 (security) through phase-7 (monitoring) cluster that prepares the app to run outside the dev NAS: scoped credentials, MIME validation, rate limiting, CSP headers, production Docker images, docker-compose.prod overlay with Caddy+TLS, production Spring profile, automated backups, DEPLOYMENT.md runbook, and Prometheus/Loki/Grafana observability. When this milestone closes, the app is safely hostable at a stable URL for family members.
Consumer-facing improvements for the younger family generation (the archive's stated target audience), who will read letters primarily on phones. Covers the mobile-first bar for Home, /documents list+detail, /briefwechsel and /persons, plus viewer error recovery, locale consistency, and placeholder-person visual flags. Paired with Transcriber Experience v1 for the other persona.
Quality-of-life improvements for the transcriber persona (60+ family members with Kurrent literacy, working on laptops/tablets). Covers locale consistency in the transcription surface, guided onboarding for the Transcribe panel's empty state, visible per-document transcription progress, and keyboard shortcuts for the repetitive power path. Paired with Reader Experience v1 for the other persona.
v1.1.0
First post-prod-deploy release cycle. Closes the security debt that was deliberately deferred during the Production v1 push so the deploy could ship: the auth model rewrite (session-based auth, CSRF re-enable, session revocation, login rate limiting). Hard cutover release — all in-flight sessions are invalidated on deploy. Anchored by the two replacement issues for #522 (session model cutover + defense-in-depth). Closes when both ship and the AuthTokenCookieFilter is fully removed from the codebase.
One-week polish sprint before a live demo of the archive at the family get-together (laptop-based). Goal: clear low-hanging UX noise so observational feedback from relatives surfaces real product signals rather than obvious bugs or missing i18n. Scope is deliberately narrow — mobile-first work, admin polish, and schema changes are out of scope for this week. Set the due date once the get-together date is confirmed.