* fix(server): finish subagents the parent transcript can never end A skill-spawned subagent — a /code-review run, for example — has no Task tool_use for the parent to record, so its sidecar carries no toolUseId and its id appears nowhere in the parent transcript. Replay resolved no link, emitted no status observation, and the store defaulted the descriptor to running. The subagents track then reported a running child on every reopen, days after it had finished, and the archive dialog offered to stop it. Paseo only records an outcome for a child whose Task call it parsed out of the parent, so a child with no Task call is one no reader can finish. Resolve identity and status together and mark those completed. A child that does have a Task call but no result yet is the opposite case — the parent was interrupted mid-Task — and keeps running. Keying on "no Task call for this id" rather than "no toolUseId" also covers legacy grandchildren. Across 554 recorded subagent transcripts, 5 stuck rows had no toolUseId and 8 more named a Task call made inside a sibling's session; none of the 13 has a recoverable tool_result in the parent. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * fix(server): admit only declared Claude subagents on replay * test(server): cover Claude workflow subagent accumulation --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: Mohamed Boudra <boudra.moha@gmail.com>