diff --git a/docs/verification-handoff.md b/docs/verification-handoff.md index 77c8e136..2c1928f7 100644 --- a/docs/verification-handoff.md +++ b/docs/verification-handoff.md @@ -19,9 +19,9 @@ Konsolidierte manuelle Verifikationen aus `docs/open.md` + Memory-Ständen — g ## 2. Worktree-Pipeline (3 falsifizierbare Fälle) -- [ ] Happy-Path: Task mit WorkingDir → `worktrees.state='active'`, `head_commit` gesetzt, `diff_stat` non-empty, Branch `claudedo/` existiert auf Disk. -- [ ] No-Changes-Run: → `status='Done'`, `head_commit IS NULL`, `diff_stat IS NULL`. -- [ ] Kein Git-Repo (WorkingDir = `C:\Temp`): → `status='Failed'`, KEINE `worktrees`-Row, Git-Fehler im Log. +- [ ] Happy-Path: Task mit WorkingDir → `worktrees.state='active'`, `head_commit` gesetzt, `diff_stat` non-empty, Branch `claudedo/` existiert auf Disk. — **BLOCKIERT (2026-07-24)** durch den Permission-Bug (CLI 2.1.207 `--permission-mode auto` denied Writes; s. open.md „Offene Code-Punkte"). Worktree/Branch wurden korrekt angelegt, aber der Agent konnte nichts schreiben → kein Commit/Diff. Re-Test nach Fix. +- [x] No-Changes-Run: → `status='Done'`, `head_commit IS NULL`, `diff_stat IS NULL`. — **PASS (2026-07-24)**; Präzisierung: aktueller Flow endet in `WaitingForReview` (nicht `Done`, das ist erst nach Approve) — Doc-„Done" ist veraltet. Kein neuer Commit, leerer Diff bestätigt. +- [x] Kein Git-Repo (WorkingDir = `C:\Temp`): → `status='Failed'`, KEINE `worktrees`-Row, Git-Fehler im Log. — **PASS (2026-07-24)**; Fehler: „Worktree creation failed: working_dir is not a git repository". ## 3. Planning-Flow-Walkthrough @@ -50,7 +50,7 @@ Konflikt provozieren: gleiche Datei auf main ändern, während der Task-Branch s ## 6. Pick up in terminal -- [ ] Sichtbarkeit: Kontextmenü-Eintrag + Terminal-Button (ArrowOut) NUR bei WaitingForReview und Failed; bei Idle/Running/Queued/Done nicht. +- [x] Sichtbarkeit: Kontextmenü-Eintrag + Terminal-Button (ArrowOut) NUR bei WaitingForReview und Failed; bei Idle/Running/Queued/Done nicht. — **PASS (2026-07-24, Code+Test)**: `CanPickUpInTerminal => Status is WaitingForReview or Failed` (TaskRowViewModel.cs:69, DetailsIslandViewModel.cs:898), gebunden in TaskRowView.axaml:56 + TaskHeaderBar.axaml:34, Notify bei Statuswechsel, Unit-Test `CanPickUpInTerminal_OnlyForReviewOrFailed`. (Klick→Terminal + Fehler-Surfacing bleiben manueller UI/CLI-Check.) - [ ] Klick → neues Windows-Terminal im Worktree-Verzeichnis, `claude --resume ` nimmt die Session mit Kontext wieder auf. - [ ] Fehlerfälle surfacen sauber (Footer-Strip bzw. Fehlerdialog): laufende/gequeuete Task, keine persistierte Session-Id, kein aktiver Worktree. - Bekannte Kante: parked-Idle (reject-park) hat oft Session+Worktree, zeigt die Aktion aber bewusst NICHT (Idle nicht unterscheidbar). Nervt das in der Praxis → `CanPickUpInTerminal` erweitern. @@ -71,8 +71,8 @@ Konflikt provozieren: gleiche Datei auf main ändern, während der Task-Branch s ## 9. Attachments (Drag & Drop + MCP) - [ ] Drop aufs Detail-Pane: „Drop to attach"-Overlay, Datei erscheint in der Liste, landet unter `~/.todo-app/attachments//`; „Add file…"-Picker; Remove-Button. -- [ ] `ComposedPreview` enthält die Attachment-Pfade („## Reference files"). -- [ ] MCP: `add_task_attachment` / `list_task_attachments` / `remove_task_attachment`; Running-Task verweigert add/remove. +- [x] `ComposedPreview` enthält die Attachment-Pfade („## Reference files"). — **PASS (2026-07-24, Code+Test)**: TaskPromptComposer.cs:31 emittiert „## Reference files", ComposedPreview reicht Pfade durch, TaskRunner.cs:132 injiziert zur Laufzeit; TaskPromptComposerTests decken es ab. +- [x] MCP: `add_task_attachment` / `list_task_attachments` / `remove_task_attachment`; Running-Task verweigert add/remove. — **PASS (2026-07-24)** für add/list/remove-Round-Trip inkl. Datei unter `~/.todo-app/attachments//` (71 B, korrekt, nach Remove weg). Running-Task-Verweigerung ist code-guarded (AttachmentMcpTools), aber ohne dauerhaft laufende Task nicht live geprüft → manueller Rest. ## 10. Daily Prep (Prime) & Weekly Report @@ -86,4 +86,4 @@ Konflikt provozieren: gleiche Datei auf main ändern, während der Task-Branch s ## 12. Status-Bar / RunNow (Mini-Codecheck, erst messen) -- [ ] Worker trennen/verbinden → prüfen, ob RunNow-Enable pro Task-Row sauber re-evaluiert (Connection-State lebt in `IslandsShellViewModel`). Nur fixen, wenn tatsächlich kaputt. +- [x] Worker trennen/verbinden → prüfen, ob RunNow-Enable pro Task-Row sauber re-evaluiert (Connection-State lebt in `IslandsShellViewModel`). Nur fixen, wenn tatsächlich kaputt. — **PASS/moot (2026-07-24, Code)**: Es gibt kein per-Row-RunNow-Control in der UI; `RunNowAsync` (IWorkerClient/WorkerClient) hat keinen VM/View-Aufrufer (RunNow nur via MCP `run_task_now`). Die realen Detail-Pane-Aktionen (Enqueue/Dequeue/Continue/ResetAndRetry) re-evaluieren korrekt bei Connection-Change (DetailsIslandViewModel.cs:317-323). Nebenbefund: `RunNowAsync` in der UI ist toter Code.