tasks: fix relative --repo, early report race and stale workspaces after finish (#28)

* tasks: task.start resolves the repo path and exists before its worker

`task start --repo .` failed with "cannot resolve base_ref 'HEAD'": the
server resolved the relative path against its own cwd. The CLI now makes
--repo and --path absolute before sending them, and the server rejects a
relative repo with BAD_PARAMS, as it already did for path.

A worker that ran `signaltty report` right away got NO_SUCH_TASK: the
task entered the store only after its pane had spawned. It is now
committed before the spawn and gets its pane id afterwards; a spawn
failure fails the stored task as before. The response carries the stored
task, so an early report is not overwritten.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* tasks: finish closes the workspaces of the removed worktree

After task.finish removed a worktree, the task's workspace stayed in the
list with a cwd that no longer existed. Once the checkout is gone, the
workspaces rooted at it now close with their panes, on every finish
path (discard, merge and the cleanup retry). A checkout that survives
keeps its workspace.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* server: preserve workspaces with live panes outside removed task worktrees

---------

Co-authored-by: Lucenx9 <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
c29e7fee8aSimone committed on 10/5/2026, 8:20:34 PM· committed by GitHubparent1f2262d
7 files changedLine totals unavailable