Compare commits

...

2 Commits

Author SHA1 Message Date
Bernd Steckmeister 87b29b5912 docs: Fable-5-Review abgeschlossen und protokolliert (M0-Punkt abgehakt)
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 <noreply@anthropic.com>
2026-07-03 17:46:55 +02:00
Bernd Steckmeister 73420fe245 chore: Autopilot auf eigenes Claude-Profil (~/.claude-pyramid) + Review-Prompt
Bernds lokale Umstellung committen (Push = Backup): CLAUDE_CONFIG_DIR
zeigt auf das Pyramid-eigene Profil, Prompt um den Fable-5-Review-Pass
erweitert. *.bak in .gitignore (autopilot.sh.bak bleibt lokal).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 17:46:55 +02:00
5 changed files with 110 additions and 15 deletions
+1
View File
@@ -45,3 +45,4 @@ app.*.map.json
/android/app/release /android/app/release
autopilot.log autopilot.log
.claude/worktrees/ .claude/worktrees/
*.bak
+90
View File
@@ -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) ## 2026-07-03 M2: Gott-Datei `document_viewer.dart` aufgeteilt (5 Dateien)
**Erledigt:** Vor dem Weiterarbeiten wie immer Arbeitszyklus durchlaufen **Erledigt:** Vor dem Weiterarbeiten wie immer Arbeitszyklus durchlaufen
+10 -10
View File
@@ -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 - [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) (geprüft: `calls/` existiert nicht mehr, nur `call/` mit den echten Dateien)
- [x] README.md durch echte Projektbeschreibung ersetzt (74d38fd) - [x] README.md durch echte Projektbeschreibung ersetzt (74d38fd)
- [ ] **Fable-5-Qualitäts-Review aller bisherigen Autopilot-Commits (Bernds Wunsch, VOR allem anderen):** - [x] **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 ERLEDIGT siehe Abschnitt „Fable-5-Review" oben in PROGRESS.md.
und in der Tiefe nachprüfen nicht nur formal: (a) die 6 Gott-Datei-Aufteilungen (a) alle 6 Gott-Datei-Aufteilungen unabhängig verifiziert (Zeilen-Multiset,
stichprobenartig fachlich lesen (stimmen `part of`-Bezüge, Sichtbarkeiten, part-Bezüge): korrekt, verlorene Erklärkommentare waren mit f9979e4 schon
keine verlorenen Blöcke über den automatisierten Blockvergleich hinaus), wiederhergestellt; (b) Uta-Logout-/Push-Fix gegen matrix-SDK 6.2.0
(b) den Uta-Logout-/Push-Fix (63e4919, 9dc83f7) fachlich gegen das matrix-SDK verifiziert: Analyse richtig, Lücke (SDK eskaliert Refresh-Fehler zu
verifizieren (ist die Ursachen-Analyse schlüssig? Nebenwirkungen?), logout()+clear()) war mit 891f348 (onSoftLogout-Guard) geschlossen, Guard
(c) die analyze-/Lint-Fixes auf versehentliche Verhaltensänderungen prüfen, heute gegenverifiziert; (c) Lint-Fixes verhaltensäquivalent (onReorderItem
(d) abgehakte ROADMAP-Punkte gegen PROGRESS.md und den Code gegenprüfen. gegen Flutter-SDK geprüft, kein Off-by-One); (d) abgehakte Punkte stimmen
Befunde direkt fixen, alles in PROGRESS.md protokollieren. mit dem Code überein. Alles weiterhin UNGETESTET (Pi) → PC-Praxistest bleibt.
- [x] **Uta-Random-Logout untersuchen:** UNGETESTET (Pi) Ursache im matrix-SDK - [x] **Uta-Random-Logout untersuchen:** UNGETESTET (Pi) Ursache im matrix-SDK
gefunden + Fix committet (63e4919, 9dc83f7), siehe PROGRESS.md 2026-07-03. gefunden + Fix committet (63e4919, 9dc83f7), siehe PROGRESS.md 2026-07-03.
+5 -3
View File
@@ -9,6 +9,10 @@
cd "$(dirname "$0")" cd "$(dirname "$0")"
export PATH="$HOME/.local/bin:$HOME/flutter/bin:$PATH" export PATH="$HOME/.local/bin:$HOME/flutter/bin:$PATH"
# Pyramid laeuft auf eigenem Claude-Konto (Profil ~/.claude-pyramid),
# das Standard-Profil ~/.claude bleibt fuer die Webseiten-Arbeit.
export CLAUDE_CONFIG_DIR="$HOME/.claude-pyramid"
# --- Matrix-Statusberichte (Raum "🔺 Pyramid Autopilot", Token vom Gatus-Bot) --- # --- Matrix-Statusberichte (Raum "🔺 Pyramid Autopilot", Token vom Gatus-Bot) ---
MATRIX_URL="http://127.0.0.1:6167" MATRIX_URL="http://127.0.0.1:6167"
MATRIX_ROOM="!sYfOwD4Dw4jBDTlNmL:steggi-matrix.work" MATRIX_ROOM="!sYfOwD4Dw4jBDTlNmL:steggi-matrix.work"
@@ -24,9 +28,7 @@ notify_matrix() {
-d "$body" > /dev/null || true -d "$body" > /dev/null || true
} }
PROMPT="Lies CLAUDE.md und arbeite ROADMAP.md Punkt für Punkt weiter ab. \ PROMPT="Lies CLAUDE.md. Arbeite in dieser Reihenfolge: (1) Review-Pass: Gehe die in ROADMAP.md/PROGRESS.md als erledigt markierten Punkte durch, prüfe den zugehörigen Code kritisch und überarbeite/verbessere ihn, wo nötig. Führe in PROGRESS.md einen Abschnitt 'Fable-5-Review' und hake dort jeden geprüften Punkt ab, damit bereits reviewte Punkte nicht erneut geprüft werden. (2) Wenn alle erledigten Punkte reviewt sind, arbeite ROADMAP.md Punkt für Punkt weiter ab. Halte dich strikt an den Arbeitszyklus (PROGRESS.md pflegen, kleine Commits + Push). Arbeite so viel ab wie möglich."
Halte dich strikt an den Arbeitszyklus (PROGRESS.md pflegen, kleine Commits + Push). \
Arbeite so viele Punkte ab wie möglich."
while true; do while true; do
if [ -f PAUSE ]; then if [ -f PAUSE ]; then
+4 -2
View File
@@ -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 ## Erledigt