Conversation
Implementation PlanProblem analysisDashboard disk-session inventory currently drops every session whose recorded JSONL-header The implementation must keep two meanings explicit:
This plan deliberately chooses the issue's explicit fallback option rather than adding a new persistent setting or silently falling back to the Dashboard launch directory/home. Project instructions, tools, settings, extensions, skills, memories, and git state depend on this choice, so the user should choose when the historical directory is unavailable. A separate configuration feature is not required by the issue's “explicit or configurable” acceptance criterion. Deliverables
Acceptance criteria
Files to create or modifyDashboard server and protocol
Dashboard client
Coding-agent runtime boundary
Tests
Documentation
Testing approach
Risks and resolved scope decisions
Plan created by mach6 |
Progress UpdateImplemented and pushed the missing-historical-CWD resume flow:
Validation completed successfully:
Commit: Progress tracked by mach6 |
Unverified Review Candidates — Pending AssessmentReview round: 1
CriticalNone. ImportantFinding 1 — Fleet fallback resume can create duplicate runtimesConfidence: 98/100 · Files:
Finding 2 — New sessions created after fallback inherit the missing historical CWDConfidence: 95/100 · File: Fallback resume intentionally leaves Finding 3 — Direct resume can use a stale cached symlink targetConfidence: 86/100 · File: Fleet submits inventory-time Finding 4 — Directory validation does not establish usable read/search permissionsConfidence: 98/100 · File:
SuggestionsFinding 5 — Canonically equivalent paths hide raw historical provenanceConfidence: 90/100 · Files: Display logic compares Finding 6 — Fallback modal does not identify the selected sessionConfidence: 100/100 · File: The approved plan says the chooser identifies the session. It receives and displays only CWD values, so several sessions sharing one unavailable historical directory are indistinguishable once the modal opens. Finding 7 — Required coding-agent README update is absentConfidence: 100/100 · File: Repository policy requires public feature changes to update the root README, coding-agent README, and relevant docs. The PR updates the root README, Dashboard README, Dashboard docs, and RPC docs, but leaves the coding-agent README Dashboard overview unchanged. Finding 8 — Planned high-value regression coverage has gapsConfidence: 98/100 · Files: Dashboard client/server tests and coding-agent RPC tests The suite is substantial, but several planned paths are not exercised end-to-end:
These gaps matter where they correspond to findings 1, 2, 4, and 5; missing tests alone are not yet assessed as blockers. Finding 9 — Share the duplicated
|
Unverified Review Candidates — Pending AssessmentReview round: 1
CriticalNone. ImportantFinding 1 — Fleet fallback resume can create duplicate runtimesConfidence: 98/100 · Files:
Finding 2 — New sessions created after fallback inherit the missing historical CWDConfidence: 95/100 · File: Fallback resume intentionally leaves Finding 3 — Direct resume can use a stale cached symlink targetConfidence: 86/100 · File: Fleet submits inventory-time Finding 4 — Directory validation does not establish usable read/search permissionsConfidence: 98/100 · File:
SuggestionsFinding 5 — Canonically equivalent paths hide raw historical provenanceConfidence: 90/100 · Files: Display logic compares Finding 6 — Fallback modal does not identify the selected sessionConfidence: 100/100 · File: The approved plan says the chooser identifies the session. It receives and displays only CWD values, so several sessions sharing one unavailable historical directory are indistinguishable once the modal opens. Finding 7 — Required coding-agent README update is absentConfidence: 100/100 · File: Repository policy requires public feature changes to update the root README, coding-agent README, and relevant docs. The PR updates the root README, Dashboard README, Dashboard docs, and RPC docs, but leaves the coding-agent README Dashboard overview unchanged. Finding 8 — Planned high-value regression coverage has gapsConfidence: 98/100 · Files: Dashboard client/server tests and coding-agent RPC tests The suite is substantial, but several planned paths are not exercised end-to-end:
These gaps matter where they correspond to findings 1, 2, 4, and 5; missing tests alone are not yet assessed as blockers. Finding 9 — Share the duplicated
|
Review AssessmentClassifications
Action Plan
Only these five merge blockers belong in the action plan. Findings 6–8 can be completed opportunistically in the authorized fix batch where they overlap required files/tests/docs; findings 9–11 are non-blocking cleanup. Assessment by mach6 |
Progress UpdateImplemented and pushed the five round-1 merge-blocker fixes:
Validation completed successfully:
Commit: \�043b1ba71ee53e67a3102bab670bda13f83067e57\�0 Progress tracked by mach6 |
Unverified Review Candidates — Pending AssessmentReview round: 3
CriticalNone. ImportantFinding 1 — Fleet single-flight does not survive remounts, tabs, or ambiguous responsesConfidence: 98/100 · Files: The new Finding 2 — A stalled create request leaves the fallback chooser locked indefinitelyConfidence: 96/100 · Files: Dashboard fetches have no timeout or abort signal. Once fallback resume is busy, every control is disabled and Escape/backdrop dismissal is ignored. A half-open remote connection can leave the operator with no action except reloading, while the server-side creation result is unknown. Re-enabling retry without idempotency could compound finding 1. Finding 3 — A stale or corrupted session path can resume blank or overwrite the sourceConfidence: 99/100 · Files: Runtime creation validates only CWD before forwarding Finding 4 — Non-root message forks still persist the missing historical CWDConfidence: 96/100 · Files: The Finding 5 — A permission-race
|
Review AssessmentRound-3 unverified review candidates Classifications
Action Plan
No other candidate meets the round-3 requirement that both the independent assessor and developer's advocate confirm material practical impact. Assessment by mach6 |
…esume-missing-session-cwd # Conflicts: # packages/coding-agent/docs/dashboard.md # packages/dashboard/src/client/screens/fleet.tsx # packages/dashboard/src/client/screens/session.tsx # packages/dashboard/src/client/screens/subagent.tsx # packages/dashboard/src/client/styles/app.css
Unverified Review Candidates — Pending AssessmentReview round: 4
CriticalNone. Important
Suggestions
Strengths
Agents run: code-reviewer, error-auditor, test-reviewer, completeness-checker, simplifier Reviewed by mach6 |
Review AssessmentRound-4 unverified review candidates Classifications
Action Plan
Concrete trigger and outcome: a Dashboard user fallback-resumes the issue-512 scenario, then uses fork-from-message. Today the new JSONL header is written with the missing historical path and the closed branch becomes unavailable again. The fix makes newly created branch provenance match where that branch actually operated without rewriting the source transcript. Assessment by mach6 |
Progress UpdateFixed round-4 finding 1:
Commit: Progress tracked by mach6 |
Unverified Review Candidates — Pending AssessmentReview round: 5
CriticalNone. ImportantNone. SuggestionsFinding 1 — Divergent-CWD coverage omits relative Dream backup and tab-title contextConfidence: 98/100 · Files: The changed runtime-CWD wiring has divergent historical/effective CWD coverage for git branch, new-session creation, and agent discovery, but not for relative Finding 2 — Closed-session chooser adapters lack interaction coverageConfidence: 97/100 · Files: Parent and subagent tests assert that “Choose directory…” is rendered, while store tests bypass both screen adapters and Fleet covers the shared modal. Neither closed-screen adapter is exercised through opening the chooser, selecting or entering a CWD, submitting it to Finding 3 — Use Solid's narrowed
|
Review AssessmentRound-5 unverified review candidates Classifications
Action PlanNo merge blockers. The prior blocker is independently verified fixed: assistant-message and non-root user-message forks pass the effective runtime CWD, and the persisted regression confirms the source JSONL header remains historical while both derived branch paths record the effective CWD. Assessment by mach6 |
Progress UpdateImplemented both round-5 useful follow-ups:
Commit: Progress tracked by mach6 |
Closes #512
Allow Dashboard users to resume a persisted session whose recorded historical working directory no longer exists, while keeping that provenance separate from the validated directory used by the live runtime.
Implementation plan posted as a comment below.