docs: close out the review round in open.md, sync CLAUDE.md with merges

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mika kuns
2026-06-10 00:40:55 +02:00
parent 360ff77e18
commit 23ff3916cc
3 changed files with 10 additions and 20 deletions

View File

@@ -1,6 +1,6 @@
# ClaudeDo — Offene Punkte
Stand: 2026-06-09. **Nur noch offene Punkte.** Was erledigt ist, steht in den Commits und im Code — nicht hier.
Stand: 2026-06-10. **Nur noch offene Punkte.** Was erledigt ist, steht in den Commits und im Code — nicht hier.
---
@@ -14,6 +14,7 @@ Kein Code-Aufwand, nur Durchspielen mit explizit notiertem Pass-Kriterium. Der G
- Kein Git-Repo (`working_dir=C:\Temp`) → `status='Failed'`, **keine** `worktrees`-Row, Git-Fehler im Log.
- **Feature-Walkthroughs:** Planning-Session-Flow (Draft→Finalize→Chain), Prime/Daily-Prep-Trigger, Weekly-Report-Generierung, Self-Update (Banner → Update → „up to date").
- **UI-Sichtprüfung (neu, 2026-06-09):** Diff-Viewer (Dateiliste, Added/Deleted/Renamed/Binary-Erkennung, Commit-Range-Diff nach Merge) und das „children need attention"-Band auf dem Session-Tab des Parents.
- **UI-Sichtprüfung (neu, 2026-06-10, nach Refactoring-Merges):** Detail-Insel komplett durchklicken (Output/Git/Session-Tabs, Merge-Sektion, Agent-Settings-Overrides, Prep-Panel) — `DetailsIslandViewModel` wurde in Sektions-VMs aufgeteilt, Bindings angepasst. Außerdem: DiffModal-Fehler-State „Diff nicht mehr verfügbar" (Commit-Range ohne aufgezeichnete Commits) und der In-App-Konflikt-Resolver (Hub-Methoden umbenannt).
- **Worker-Autostart am Gerät:** Logoff/Logon-Autostart, Update-Pfad, Uninstall entfernt die Startup-`.lnk`.
## Offene Code-Punkte
@@ -21,26 +22,15 @@ Kein Code-Aufwand, nur Durchspielen mit explizit notiertem Pass-Kriterium. Der G
- **Status-Bar Live-Update:** Prüfen, ob `RunNow`-Enable/Disable pro Task-Row bei Connection-Change sauber re-evaluiert. Connection-Status lebt in `IslandsShellViewModel` / `WorkerConnectionModalViewModel` (es gibt keinen `StatusBarViewModel` mehr). Erst messen, dann ggf. fixen. Klein.
- **`AgentMcpTools` liegt in `LifecycleMcpTools.cs`** — beim Suchen irreführend; in eigene Datei verschieben. Ein-Minuten-Fix, lohnt keinen Agent-Lauf — beim nächsten Worker-Touch mitnehmen.
## Refactoring-Backlog (Review 2026-06-09, als ClaudeDo-Tasks in „Claude do" angelegt)
## Nachklapp Refactoring-/Bug-Runde (2026-06-09/10)
Befunde aus dem Code-Review nach dem Doku-Audit. Alle fünf sind als fertig formulierte Tasks (Idle) in der Liste „Claude do" angelegt; **1→2→3 müssen sequenziell laufen** (gleiche Dateien: `IWorkerClient`, Fakes), 4 und 5 sind unabhängig.
Alle 9 Review-Tasks (5 Refactorings, 4 Bugfixes) sind umgesetzt und gemerged; Details in den Commits. Offen geblieben:
1. **IWorkerClient-Parität:** 15 Methoden, 2 Events und `LastApproveTarget` existieren nur auf der konkreten `WorkerClient`-Klasse; 7 Klassen hängen deshalb an der konkreten Klasse und sind nicht fake-bar.
2. **Merge-API-Naming:** `ContinueMerge`/`AbortMerge` (Konflikt-Resolver) vs. `ContinuePlanningMerge`/`AbortPlanningMerge` (Unit-Merge) → Hub/Client-Ebene umbenennen in `ContinueConflictMerge`/`AbortConflictMerge`. `TaskMergeService` NICHT anfassen (wird auch vom `PlanningMergeOrchestrator` genutzt).
3. **`DetailsIslandViewModel` (1431 Zeilen) aufteilen:** drei Sektions-VMs extrahieren (AgentSettings, Merge, Prep); visuelle Verifikation danach offen.
4. **Test-Hygiene:** `FakeClaudeProcess` doppelt definiert, Hub-Fakes verstreut statt in `Infrastructure/`, `SeedListWithAgentTag(Async)` heißt noch nach dem entfernten Tag-System.
5. **`FailAsync`-Guard:** erlaubt `Queued→Failed`, hat aber nur einen Caller (TaskRunner-Fehlerpfad eines laufenden Tasks) — erst beweisen, ob erreichbar, dann Guard einschränken oder Race dokumentieren.
- **`DetailsIslandViewModel` ist nach dem Split noch 1258 Zeilen** (Ziel war ~800) — die drei Sektions-VMs (AgentSettings, Merge, Prep) sind extrahiert, weitere Extraktion (z.B. ChildOutcomes/Subtasks-Sektion) lohnt erst, wenn die Datei wieder wächst.
- **Bewusst zurückgestellt:** WorkerHub-Split nach Concern (~60 Methoden in einer Hub-Klasse). Die Interface-Parität löst das akute Testbarkeits-Problem; ein Hub-Split ist eine größere Architekturentscheidung → erst besprechen.
- **Lessons learned:** Der `StartRunningAsync`-Guard-Task hat isoliert grün getestet, aber den Queue-Pfad gebrochen (Picker claimt vor dem Dispatch) — Integrationsfix `74ca2e0`. Bei parallelen Tasks, die denselben Pfad berühren, nach JEDEM Merge-Schwung die volle Suite auf main fahren.
**Bewusst zurückgestellt:** WorkerHub-Split nach Concern (~60 Methoden in einer Hub-Klasse). Die Interface-Parität (Punkt 1) löst das akute Testbarkeits-Problem; ein Hub-Split ist eine größere Architekturentscheidung → erst besprechen.
## Bug-Befunde (Korrektheits-Review 2026-06-09, bestätigte als ClaudeDo-Tasks angelegt)
**Bestätigt und als Tasks in „Claude do" angelegt:**
1. **`FinalizeParentDoneAsync` umgeht den `TaskStateService`** (`PlanningMergeOrchestrator.cs:196`) — Direkt-Write `Status = Done` ohne Guard; überschreibt einen mid-merge gecancelten Parent.
2. **`TaskRunner` ignoriert `StartRunningAsync`-Ergebnis** (`TaskRunner.cs:101/211`) — Doppellauf-Race RunNow vs. Picker möglich.
3. **Unit-Merge nach Worker-Restart nicht abbrechbar** — Orchestrator-State ist in-memory; Repo bleibt mid-merge, Parent festgefahren. Fix: stateless Abort-Pfad.
4. **`DiffModalViewModel`: stiller Falsch-Diff** bei `FromCommitRange` ohne `HeadCommit` (Fallback auf Branch-Diff gegen das Listen-Working-Dir).
## Bug-Befunde (Korrektheits-Review 2026-06-09)
**Plausibel, noch nicht einzeln verifiziert (bei Gelegenheit prüfen):**