From 8241bf8d41229982564ec47456e938b8d0281e07 Mon Sep 17 00:00:00 2001 From: mika kuns Date: Fri, 24 Jul 2026 08:52:12 +0200 Subject: [PATCH] =?UTF-8?q?docs(verification):=20=C2=A71=20commit-range-af?= =?UTF-8?q?ter-merge=20PASS;=20blocked-merge=20silent-fail=20confirmed=20o?= =?UTF-8?q?n=20clean=20path=20too?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/open.md | 2 +- docs/verification-handoff.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/open.md b/docs/open.md index a563a2e4..3f46fb52 100644 --- a/docs/open.md +++ b/docs/open.md @@ -40,7 +40,7 @@ Kein Code-Aufwand, nur Durchspielen mit explizit notiertem Pass-Kriterium. Der G - **[BUG, 2026-07-24] OUTCOME-Karte rendert rohes Structured-Output-JSON:** `TaskMonitorViewModel.ApplyOutcome` (ClaudeDo.Ui) setzt bei Tasks ohne Roadblock-Marker `SessionOutcome = result` wörtlich (Zeile ~261). Der Worker legt in `task.Result` das rohe `{"summary":…,"files_changed":[…]}` ab (die lesbare Fassung steht in `task_runs.resultMarkdown`), also zeigt die Detail-Insel OUTCOME als JSON-Blob statt als Text. Fix-Optionen: (a) UI parst ein JSON-Result und zeigt `summary`, oder (b) der Worker schreibt `summary`/`resultMarkdown` statt des JSON in `task.Result`. Verifiziert am Task `verif §1 diff matrix` (2026-07-24). Deckt sich mit Memory `worker_testing_findings`. - **[NIT, 2026-07-24] Diff-Viewer: reiner Rename wird schwach dargestellt:** Rename wird korrekt erkannt (`UnifiedDiffParser` → `DiffFileStatus.Renamed`, Badge `StatusCode="R"`), aber der File-Tree zeigt nur den neuen Namen + „+0 −0" ohne „alt → neu"-Pfad; ein reiner Rename liest sich dadurch wie „keine Änderung". Kein Korrektheitsfehler, nur UX. Optional: alten Pfad + „renamed"-Label anzeigen. - **[MINOR, 2026-07-24] Header-TurnsText zeigt `0/max` für abgeschlossene Runs:** `TurnsText => {Turns}/{EffectiveMaxTurns}` — `Turns` wird beim Laden eines terminalen Tasks nicht aus `task_runs.turnCount` restauriert (nur live gefüllt), also erscheint `0/`. Kosmetisch. -- **[BUG, 2026-07-24] Approve & Merge schluckt einen „blocked"-Merge still:** `DetailsIslandViewModel.ApproveReviewAsync` reagiert nur auf `result.Status == "conflict"` (öffnet den Resolver); bei `"blocked"` (z.B. Ziel-Working-Tree hat uncommittete getrackte Änderungen) und anderen Nicht-`merged`/Nicht-`conflict`-Status passiert **nichts** — kein Footer-Fehler, kein Dialog (der `catch` greift nur bei Exceptions, „blocked" ist aber ein normaler Rückgabewert mit `ErrorMessage`). User sieht „Klick tut nichts". Verifiziert 2026-07-24 (Merge gegen dirty `main`-Checkout). Fix: bei `blocked`/unerwartetem Status `result.ErrorMessage` via `ShowErrorAsync`/`FlashFooterError` surfacen. Verstößt gegen `feedback_ui_error_surfacing`. (Der eigentliche Konflikt-Resolver + 3-Pane-Editor funktionieren, sobald der Ziel-Tree sauber ist.) +- **[BUG, 2026-07-24] Approve & Merge schluckt einen „blocked"-Merge still:** `DetailsIslandViewModel.ApproveReviewAsync` reagiert nur auf `result.Status == "conflict"` (öffnet den Resolver); bei `"blocked"` (z.B. Ziel-Working-Tree hat uncommittete getrackte Änderungen) und anderen Nicht-`merged`/Nicht-`conflict`-Status passiert **nichts** — kein Footer-Fehler, kein Dialog (der `catch` greift nur bei Exceptions, „blocked" ist aber ein normaler Rückgabewert mit `ErrorMessage`). User sieht „Klick tut nichts". Verifiziert 2026-07-24 **doppelt**: sowohl der Konflikt-Approve als auch ein sauberer additiver Approve (`verif §1b`) taten bei dirty `main`-Checkout still nichts (kein Footer). Fix: bei `blocked`/unerwartetem Status `result.ErrorMessage` via `ShowErrorAsync`/`FlashFooterError` surfacen. Verstößt gegen `feedback_ui_error_surfacing`. (Der eigentliche Konflikt-Resolver + 3-Pane-Editor funktionieren, sobald der Ziel-Tree sauber ist.) - **[UX, 2026-07-24] Conflict-Resolver: Continue/Merge-Button ist klickbar, obwohl noch nicht alle Konflikte gelöst — Klick tut dann nichts:** Das Continue-Gate greift funktional (merged erst wenn alle Konflikte in allen Dateien gelöst), aber der Button ist optisch nicht disabled/gegraut, solange offene Konflikte bestehen; ein früher Klick ist ein stummer No-op. Besser: Button disabled bis `AllResolved`, oder Hinweis „N Konflikte in M Dateien offen". Verifiziert 2026-07-24 (§4-Walkthrough). - **[UX, 2026-07-24] Conflict-Resolver: Mehrere Konfliktdateien schlecht erkennbar:** Beim 2-Datei-Konflikt war schwer zu sehen, dass **zwei** Dateien betroffen sind (File-Switcher/Anzahl zu unauffällig). Prominentere Datei-Liste / „x von y Dateien" wäre besser. (§4-Walkthrough 2026-07-24.) - **[FEATURE-WUNSCH, 2026-07-24] Conflict-Resolver: farbliches Hervorheben eingefügter Zeilen im Result-Pane** (grüner „flow" der übernommenen Zeilen) fehlt — kein Bug, UI-Verbesserung (User-Wunsch). diff --git a/docs/verification-handoff.md b/docs/verification-handoff.md index 27da7cc2..290bd24c 100644 --- a/docs/verification-handoff.md +++ b/docs/verification-handoff.md @@ -13,7 +13,7 @@ Konsolidierte manuelle Verifikationen aus `docs/open.md` + Memory-Ständen — g ## 1. Detail-Insel & Diff-Viewer (reines Durchklicken) - [~] Detail-Insel komplett: Output/Git/Session-Tabs, Merge-Sektion, Agent-Settings-Overrides (InheritedBadge korrekt), Prep-Panel — nach dem VM-Split (`DetailsIslandViewModel` → Sektions-VMs) alles gebunden, keine leeren Panels. — **TEILWEISE (2026-07-24, User-Sichtprüfung an `verif §1 diff matrix`):** Output/Git-Tabs, Merge-Sektion, Agent-Badges vorhanden & gebunden, keine leeren Panels. Git-Tab: `+1 −37`, „merges cleanly" korrekt. **BUG:** OUTCOME-Karte zeigt rohes JSON (s. open.md). Session-Tab fehlt — **erwartet** (nur bei Parent mit Kindern, `HasChildOutcomes`; wird in §4/§3 mit echtem Parent geprüft). Minor: TurnsText `0/max` bei terminalem Reload (open.md). Prep-Panel → §10. -- [~] Diff-Viewer: Dateiliste, Added/Deleted/Renamed/Binary-Erkennung, Commit-Range-Diff nach einem Merge. — **Added/Deleted/Binary PASS**; **Renamed** erkannt + „R"-Badge, aber schwach dargestellt (kein alt→neu-Pfad, „+0 −0" — nit, s. open.md); „Review Combined Diff" korrekt ausgegraut (kein Planning-Parent). **Commit-Range-Diff nach Merge: noch offen** (nächster Schritt mit echtem Merge). +- [~] Diff-Viewer: Dateiliste, Added/Deleted/Renamed/Binary-Erkennung, Commit-Range-Diff nach einem Merge. — **Added/Deleted/Binary PASS**; **Renamed** erkannt + „R"-Badge, aber schwach dargestellt (kein alt→neu-Pfad, „+0 −0" — nit, s. open.md); „Review Combined Diff" korrekt ausgegraut (kein Planning-Parent). **Commit-Range-Diff nach Merge: PASS (2026-07-24)** — Diff des gemergten Done-Tasks rendert über `base..head` trotz entferntem Worktree. - [ ] DiffModal-Fehler-State: Commit-Range ohne aufgezeichnete Commits → „Diff nicht mehr verfügbar" statt Crash/leer. — offen (nach Merge). - [ ] „children need attention"-Band auf dem Session-Tab eines Parents mit failed/blocked Kind. — verschoben nach §3 (braucht echten Parent mit Kindern).