From 87b29b591287c042abee6b2af76b4127c5b00fa2 Mon Sep 17 00:00:00 2001 From: Bernd Steckmeister Date: Fri, 3 Jul 2026 17:46:55 +0200 Subject: [PATCH] docs: Fable-5-Review abgeschlossen und protokolliert (M0-Punkt abgehakt) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Review-Protokoll in PROGRESS.md nachgeholt (die Vorsession hatte f9979e4 und 891f348 gepusht, wurde aber vor dem Protokollieren abgebrochen) und den Review zu Ende geführt: (a) Splits unabhängig per Zeilen-Multiset verifiziert, (b) Soft-Logout-Guard gegen SDK-Quelle gegenverifiziert, (c) Lint-Fixes äquivalent (onReorderItem gegen Flutter-SDK geprüft), (d) ROADMAP-Haken stimmen mit dem Code überein. Nebenbefund: docs/ PROGRESS.md als Archiv markiert (Verwechslungsgefahr mit dem echten Protokoll im Root). Co-Authored-By: Claude Fable 5 --- PROGRESS.md | 90 ++++++++++++++++++++++++++++++++++++++++++++++++ ROADMAP.md | 20 +++++------ docs/PROGRESS.md | 6 ++-- 3 files changed, 104 insertions(+), 12 deletions(-) diff --git a/PROGRESS.md b/PROGRESS.md index 84a6f59..4f7eb77 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -13,6 +13,96 @@ Schritt (und beim Abbruch mitten im Schritt den Zwischenstand). Format: --- +## Fable-5-Review (Qualitäts-Review aller Autopilot-Commits 25ed765..HEAD) + +Bernds Auftrag (ROADMAP M0): alle bisherigen Sonnet-5-Commits kritisch und in +der Tiefe nachprüfen. Jeder Punkt hier wird abgehakt, sobald er geprüft ist – +**bereits abgehakte Punkte in künftigen Sessions NICHT erneut prüfen.** + +Hinweis zur Historie: Eine frühere Fable-5-Session hatte den Review begonnen +und zwei Fix-Commits gepusht (f9979e4, 891f348), wurde aber VOR dem +Protokollieren abgebrochen – dieser Abschnitt holt das Protokoll nach und +schließt den Review ab. + +- [x] **(a) Die 6 Gott-Datei-Aufteilungen fachlich geprüft – Ergebnis: korrekt, + 1 Befund bereits gefixt (f9979e4).** Unabhängige Nachprüfung (nicht nur den + alten Blockvergleich wiederholt): eigener Zeilen-Multiset-Vergleich + (Code-Zeilen ohne Kommentare/Imports/part-Direktiven) Original vor dem Split + vs. heutiger Stand für alle 6 Bibliotheken → **keine Code-Zeile verloren, + keine hinzugekommen** (settings_modal 5055, message_group 2409, rooms_panel + 2308, space_admin_dialog 2079, chat_view 1813, document_viewer 1543 Zeilen, + jeweils exakt identisch). Alle `part`-Direktiven == Dateien auf Platte, + alle Part-Dateien mit korrektem `part of`. Befund der Vorsession bestätigt: + Beim Split gingen 24 **Erklärkommentar-Blöcke** verloren (u. a. die + Selbst-Aussperr-Warnung über `updatePowerLevelsSafely`, HTML-Subset-Doku, + PDF-Cache-Doku) – mit f9979e4 an den richtigen Klassen wiederhergestellt + (Stichprobe geprüft: sitzt korrekt). `flutter analyze`: unverändert 1 + bekannter Hinweis (`chat_provider.dart:42`). +- [x] **(b) Uta-Logout-/Push-Fix (63e4919, 9dc83f7) gegen das matrix-SDK 6.2.0 + verifiziert – Analyse war richtig, aber unvollständig; Lücke mit 891f348 + geschlossen (Vorsession), heute vollständig gegenverifiziert:** + - SDK-Quelle bestätigt (client.dart:2374 ff.): Ohne eigenen `onSoftLogout`- + Handler eskaliert JEDER fehlgeschlagene Token-Refresh (auch bloße + Netzwerkfehler) zu `logout()` + `clear()` → Session inkl. Krypto-Schlüssel + weg. Mit `refreshToken: true` (9dc83f7) wären Refreshes Routine geworden – + das Restrisiko wäre also GESTIEGEN. Der Guard (`soft_logout_guard.dart`, + 891f348) ist die notwendige zweite Hälfte des Fixes. + - Guard-Code geprüft: wirft nie (alle Pfade gefangen; `AuthLog.write` fängt + intern selbst alles – wichtig, sonst würde ein Logging-Fehler im + catch-Pfad doch wieder `logout()` auslösen). SDK ruft bei nicht-werfendem + Handler nachweislich nie `logout()` auf. + - „Retry heilt das Token-Rotations-Race mit dem Push-Isolate"-Behauptung + gegen SDK-Quelle geprüft: stimmt – `refreshAccessToken()` liest den + Refresh-Token bei jedem Aufruf frisch per `database.getClient()` aus der + geteilten DB. + - Beide `Client(`-Konstruktionen der App (matrix_client.dart, + background_push.dart) haben den Guard – keine ungeschützte übrig. + - `isLoggedInProvider`-Änderung (softLoggedOut ≠ ausgeloggt) korrekt: + verhindert Login-Screen-Flackern bei Routine-Refresh; echtes `loggedOut` + führt weiterhin zum Login-Screen. + - **Dokumentiertes Restrisiko (kein Fix möglich/nötig):** Ein hartes + `M_UNKNOWN_TOKEN` OHNE `soft_logout`-Flag führt im SDK weiterhin direkt zu + `clear()`. Das ist ein echter serverseitiger Session-Widerruf (z. B. + Admin-Logout) – lokal nicht abwendbar; Schlüssel kommen dann übers + Key-Backup zurück. Kein stiller Fehlerpfad, sondern legitimer Server-Befehl. +- [x] **(c) analyze-/Lint-Fixes (9dc1175, 133a8ac, 99f10c5, 2395db5, 057ac1e, + 401bd6a) auf Verhaltensänderungen geprüft – alle äquivalent, 1 Kleinigkeit + gefunden (bewusst belassen):** + - `onReorder` → `onReorderItem` (401bd6a): gegen Flutter-SDK-Quelle + verifiziert – der neue Callback korrigiert den Index intern, das entfernte + manuelle `newIdx--` ist korrekt; einzige Aufrufstelle migriert. Kein + Off-by-One beim Raum-Umsortieren. + - `Matrix4.translate/scale` → `translateByDouble/scaleByDouble` (PDF-Zoom): + mathematisch äquivalent (uniforme Skalierung, w=1). + - `withOpacity`→`withValues`, `activeColor`→`activeThumbColor`, + `cacheExtent`→`scrollCacheExtent`, `PublicRoomsChunk`→`PublishedRoomsChunk`, + print→debugPrint, `__`→`_`-Parameter, Curly-Braces: reine Renames/Syntax. + - Toter Code (9dc1175): entfernte Funktionen (`_showNotif`, `_fetchTitle`, + `_get`, `_applyNoiseSuppression`, `destructive`-Param, `_saved`-Feld) per + grep bestätigt nirgends referenziert. + - **Kleinigkeit:** In `mini_call_widget.dart` wurde das ungenutzte + `_hovered`-Feld nicht gelöscht, sondern verdrahtet (Hover-Farbe auf + Call-Buttons) – streng genommen eine Mini-Verhaltensänderung in einem + Lint-Commit. Offensichtlich die ursprünglich gemeinte Funktion des Feldes, + rein kosmetisch, kein Risiko → belassen, hier nur dokumentiert. +- [x] **(d) Abgehakte ROADMAP-Punkte gegen Code gegengeprüft – alle stimmen:** + `isKeyBackupMissing`-Warnung sitzt nach dem Settings-Split weiterhin in + beiden Logout-Pfaden (settings_about.dart, settings_shared.dart); + `refreshToken: true` in login_notifier.dart:84; Bootstrap-Flows + (`askUnlockSsss`, `_triggerBootstrap`) vorhanden; `features/calls/`-Leiche + existiert nicht; `docs/M2_MODULE_SCHNITT.md` vorhanden; `flutter analyze` + sauber (1 bekannter Hinweis). Nebenbefund gefixt: `docs/PROGRESS.md` war ein + eingefrorener Alt-Stand (2026-06-04) mit Verwechslungsgefahr zum echten + Protokoll im Root → Archiv-Banner eingefügt. + +**Fazit:** Die Sonnet-5-Arbeit war handwerklich sauber; die zwei echten Lücken +(verlorene Kommentare, fehlender Soft-Logout-Guard) hatte die abgebrochene +Fable-5-Vorsession bereits gefixt – beide Fixes heute unabhängig verifiziert. +Alles weiterhin UNGETESTET (Pi) im Sinne von „nicht in echter UI gesehen"; +der ausstehende PC-Praxistest (siehe Einträge unten) bleibt Pflicht. + +--- + ## 2026-07-03 – M2: Gott-Datei `document_viewer.dart` aufgeteilt (5 Dateien) **Erledigt:** Vor dem Weiterarbeiten wie immer Arbeitszyklus durchlaufen diff --git a/ROADMAP.md b/ROADMAP.md index 473d1bb..e4d8c85 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -15,16 +15,16 @@ Punkte abhaken (`[x]`), wenn erledigt UND in `PROGRESS.md` protokolliert. - [x] `lib/features/call/` vs. `lib/features/calls/` (leer?) klären – Leiche entfernen (geprüft: `calls/` existiert nicht mehr, nur `call/` mit den echten Dateien) - [x] README.md durch echte Projektbeschreibung ersetzt (74d38fd) -- [ ] **Fable-5-Qualitäts-Review aller bisherigen Autopilot-Commits (Bernds Wunsch, VOR allem anderen):** - Sämtliche Commits vom 2026-07-03 (25ed765..HEAD, gemacht von Sonnet 5) kritisch - und in der Tiefe nachprüfen – nicht nur formal: (a) die 6 Gott-Datei-Aufteilungen - stichprobenartig fachlich lesen (stimmen `part of`-Bezüge, Sichtbarkeiten, - keine verlorenen Blöcke – über den automatisierten Blockvergleich hinaus), - (b) den Uta-Logout-/Push-Fix (63e4919, 9dc83f7) fachlich gegen das matrix-SDK - verifizieren (ist die Ursachen-Analyse schlüssig? Nebenwirkungen?), - (c) die analyze-/Lint-Fixes auf versehentliche Verhaltensänderungen prüfen, - (d) abgehakte ROADMAP-Punkte gegen PROGRESS.md und den Code gegenprüfen. - Befunde direkt fixen, alles in PROGRESS.md protokollieren. +- [x] **Fable-5-Qualitäts-Review aller bisherigen Autopilot-Commits (Bernds Wunsch, VOR allem anderen):** + ERLEDIGT – siehe Abschnitt „Fable-5-Review" oben in PROGRESS.md. + (a) alle 6 Gott-Datei-Aufteilungen unabhängig verifiziert (Zeilen-Multiset, + part-Bezüge): korrekt, verlorene Erklärkommentare waren mit f9979e4 schon + wiederhergestellt; (b) Uta-Logout-/Push-Fix gegen matrix-SDK 6.2.0 + verifiziert: Analyse richtig, Lücke (SDK eskaliert Refresh-Fehler zu + logout()+clear()) war mit 891f348 (onSoftLogout-Guard) geschlossen, Guard + heute gegenverifiziert; (c) Lint-Fixes verhaltensäquivalent (onReorderItem + gegen Flutter-SDK geprüft, kein Off-by-One); (d) abgehakte Punkte stimmen + mit dem Code überein. Alles weiterhin UNGETESTET (Pi) → PC-Praxistest bleibt. - [x] **Uta-Random-Logout untersuchen:** UNGETESTET (Pi) – Ursache im matrix-SDK gefunden + Fix committet (63e4919, 9dc83f7), siehe PROGRESS.md 2026-07-03. diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 2c79278..8014b52 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -1,6 +1,8 @@ -# Pyramid – Fortschritt & offene Punkte +# Pyramid – Fortschritt & offene Punkte (ARCHIV, Stand 2026-06-04) -Stand: 2026-06-04 +> **ACHTUNG:** Dies ist ein eingefrorener Alt-Stand von vor der neuen +> Arbeitsstruktur. Das aktuelle Arbeitsprotokoll liegt im Projekt-Root: +> `PROGRESS.md`. Diese Datei nur als historische Referenz lesen, nie pflegen. ## Erledigt