From a5a5c4baf5cfb992d2fb8a7edbb15d9063a91292 Mon Sep 17 00:00:00 2001 From: Bernd Steckmeister Date: Fri, 3 Jul 2026 23:22:15 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20Fable-5-Review=20um=20Punkte=20(h)-(j)?= =?UTF-8?q?=20erg=C3=A4nzt,=20Testplan=20auf=2024=20Tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- CHANGES.md | 3 +++ PROGRESS.md | 64 +++++++++++++++++++++++++++++++++++++++++++++ docs/PC_TESTPLAN.md | 2 +- 3 files changed, 68 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index fdffebe..3d9650c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1217,3 +1217,6 @@ 2026-07-03 23:18 [Edit] /home/steggi/pyramid/test/settings_prefs_test.dart 2026-07-03 23:19 [Edit] /home/steggi/pyramid/lib/core/settings_prefs.dart 2026-07-03 23:20 [Edit] /home/steggi/pyramid/lib/core/settings_prefs.dart +2026-07-03 23:21 [Edit] /home/steggi/pyramid/PROGRESS.md +2026-07-03 23:21 [Edit] /home/steggi/pyramid/docs/PC_TESTPLAN.md +2026-07-03 23:22 [Edit] /home/steggi/pyramid/PROGRESS.md diff --git a/PROGRESS.md b/PROGRESS.md index 4f96b8e..933eef1 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -13,6 +13,40 @@ Schritt (und beim Abbruch mitten im Schritt den Zwischenstand). Format: --- +## 2026-07-03 – Fable-5-Review (h)–(j): Test-/Doku-Commits geprüft, 1 echter Befund gefixt + +**Erledigt:** +- **Review-Pass über die drei seit (g) dazugekommenen Commits** – als Punkte + (h)–(j) im Fable-5-Review-Abschnitt abgehakt (Details dort): AuthLog-Tests + e0ac5cb korrekt (h), PC-Testplan-Update 03b84e0 korrekt (j), und bei den + settings_prefs-Tests 7dfdbf1 (i) beim Gegenlesen des Produktivcodes ein + **echter Befund**: Lade-Race in `BoolPref`/`StringSetPref` – + `StringSetPref.add()` vor abgeschlossenem `_load` konnte **bereits + persistierte Einträge löschen** (Read-Modify-Write auf ungeladenem State; + per Regressionstest am alten Code bewiesen, dann gefixt: 7b90f20). + Vorgehen: Test zuerst geschrieben, Fehlschlag am alten Code gesehen, dann + Fix, dann alles grün – kein blinder Fix. +- Unabhängige Verifikation: `flutter test` jetzt **24/24 grün auf dem Pi** + (2 neue Lade-Race-Tests), `flutter analyze` unverändert 1 bekannter Hinweis + (`chat_provider.dart:42`). PC-Testplan Schritt 0 auf 24 Tests nachgezogen. + +**Offen/Nächster Schritt:** Unverändert blockiert – alle offenen ROADMAP-Punkte +(M0 SQLCipher, M1 Härtetest, M2 Call-Schicht/State-Management) brauchen PC/GUI +oder Bernds Antworten (Call-Pilot, SQLCipher-Priorität), siehe +`docs/PC_TESTPLAN.md` und „Fragen an Bernd" weiter unten. Der Lade-Race-Fix +ist headless voll getestet, gehört aber der Vollständigkeit halber mit in den +nächsten PC-Klickdurchlauf (Einstellungs-Toggles, Space-Beitritt). + +**Stolperfallen:** Der BoolPref-Teil des Race ist im Test-Mock NICHT +reproduzierbar (Microtask-Reihenfolge dort zufällig gutartig: `set()` +persistiert vor dem `_load`-Read) – nur der StringSetPref-Teil schlug real +fehl. Lehre: Bei Race-Befunden nicht vom „Test wird schon rot"-Reflex leiten +lassen, sondern die konkrete Microtask-Reihenfolge durchdenken; ein Guard kann +richtig sein, auch wenn der Test ihn in dieser Umgebung nicht erzwingen kann +(dokumentiert im Review-Punkt (i)). + +--- + ## 2026-07-03 – Review-Nachzügler abgeschlossen + AuthLog-Regressionstests **Erledigt:** @@ -259,6 +293,36 @@ schließt den Review ab. zitiert eine Session diese englischen Phrasen wörtlich, gibt es einen unnötigen (aber harmlosen) Konto-Wechsel. +- [x] **(h) AuthLog-Tests (e0ac5cb) geprüft – korrekt, keine Änderung nötig.** + Alle 4 Tests gegen `core/auth_log.dart` nachvollzogen: Der Kaputt-Plattform- + Test läuft korrekt VOR den Tests mit funktionierender Plattform (das statische + `_file`-Handle wird beim Throw nie befüllt, daher kein vergifteter Cache); + Kappungs-Test rechnet richtig (521. Zeile triggert Kappung auf 500, „Hallo + Log" aus dem Vortest fliegt raus). pubspec-Ergänzung sauber (offizielles + `path_provider_platform_interface`, war transitiv im Lockfile). Unabhängig + verifiziert: `flutter test` 22/22 grün, `flutter analyze` 1 bekannter + Hinweis. Anmerkung (belassen): Die Kappung schreibt die Datei nicht-atomar + neu und ist nicht gegen parallele Schreiber aus dem Push-Isolate gesperrt – + für ein reines Diagnose-Log akzeptabel, kein Fix nötig. +- [x] **(i) settings_prefs-Tests (7dfdbf1) geprüft – Tests korrekt, aber beim + Gegenlesen des Produktivcodes 1 echter Befund gefunden und gefixt (7b90f20): + Lade-Race in `BoolPref`/`StringSetPref`.** `StringSetPref.add/remove` machten + Read-Modify-Write auf möglicherweise noch ungeladenem State – ein `add()` + direkt nach Erstellung persistierte nur den neuen Eintrag und LÖSCHTE alle + bereits gespeicherten (per neuem Regressionstest am alten Code bewiesen: + `['!a:hs']` im Store, `add('!b:hs')` → Store enthielt nur noch `['!b:hs']`). + Fix: `add`/`remove` warten jetzt auf `_loaded`. `BoolPref` zusätzlich mit + `_userSet`-Guard, damit ein spät landender persistierter Wert nie eine schon + getätigte Nutzeraktion zurücküberschreibt (die Microtask-Reihenfolge ist + plattform-/versionsabhängig – im Test-Mock zufällig gutartig). Einordnung: + in der heutigen App kaum treffbar (die Provider werden beim App-Start geladen, + lange bevor jemand klickt – deshalb nie aufgefallen), aber die Fassade wird + laut `docs/M2_MODULE_SCHNITT.md` zur Pflicht-Schnittstelle für neue, ggf. + früh laufende Aufrufer. 2 neue Regressionstests, alle 24 grün auf dem Pi. +- [x] **(j) PC-Testplan-Update (03b84e0) geprüft – stimmt.** Teststand „22 + Tests" war korrekt (durch (i) jetzt 24 – im Testplan nachgezogen, siehe + Eintrag oben). + **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. diff --git a/docs/PC_TESTPLAN.md b/docs/PC_TESTPLAN.md index 958db74..598ba17 100644 --- a/docs/PC_TESTPLAN.md +++ b/docs/PC_TESTPLAN.md @@ -12,7 +12,7 @@ Schnellster Weg: `flutter run -d windows`. - [ ] `flutter test` – die Regressionstests unter `test/` (Soft-Logout-Guard, Power-Levels-Schutz, AuthLog, Storage-Fassade `settings_prefs` – - Stand 2026-07-03: 22 Tests) müssen grün sein, bevor irgendetwas + Stand 2026-07-03: 24 Tests) müssen grün sein, bevor irgendetwas anderes geprüft wird. ## 1. Härtetest Login/Krypto (M1 – PFLICHT, zuerst!)