From 50c5743fa07e1403bdc005080ddcf89876330af5 Mon Sep 17 00:00:00 2001 From: Hare Date: Mon, 8 Jun 2026 11:54:41 +0900 Subject: [PATCH] ticket: close podclient reader cleanup --- .../artifacts/.gitkeep | 0 .../item.md | 6 +- .../resolution.md | 31 +++++++++ .../thread.md | 63 +++++++++++++++++++ 4 files changed, 97 insertions(+), 3 deletions(-) rename .yoi/tickets/{open => closed}/20260608-015630-abort-podclient-reader-task-on-drop/artifacts/.gitkeep (100%) rename .yoi/tickets/{open => closed}/20260608-015630-abort-podclient-reader-task-on-drop/item.md (97%) create mode 100644 .yoi/tickets/closed/20260608-015630-abort-podclient-reader-task-on-drop/resolution.md rename .yoi/tickets/{open => closed}/20260608-015630-abort-podclient-reader-task-on-drop/thread.md (82%) diff --git a/.yoi/tickets/open/20260608-015630-abort-podclient-reader-task-on-drop/artifacts/.gitkeep b/.yoi/tickets/closed/20260608-015630-abort-podclient-reader-task-on-drop/artifacts/.gitkeep similarity index 100% rename from .yoi/tickets/open/20260608-015630-abort-podclient-reader-task-on-drop/artifacts/.gitkeep rename to .yoi/tickets/closed/20260608-015630-abort-podclient-reader-task-on-drop/artifacts/.gitkeep diff --git a/.yoi/tickets/open/20260608-015630-abort-podclient-reader-task-on-drop/item.md b/.yoi/tickets/closed/20260608-015630-abort-podclient-reader-task-on-drop/item.md similarity index 97% rename from .yoi/tickets/open/20260608-015630-abort-podclient-reader-task-on-drop/item.md rename to .yoi/tickets/closed/20260608-015630-abort-podclient-reader-task-on-drop/item.md index 1476ce49..e4a916f3 100644 --- a/.yoi/tickets/open/20260608-015630-abort-podclient-reader-task-on-drop/item.md +++ b/.yoi/tickets/closed/20260608-015630-abort-podclient-reader-task-on-drop/item.md @@ -2,13 +2,13 @@ id: '20260608-015630-abort-podclient-reader-task-on-drop' slug: 'abort-podclient-reader-task-on-drop' title: 'Abort PodClient reader task on drop' -status: 'open' +status: 'closed' kind: 'task' priority: 'P1' labels: ['client', 'pod', 'tui', 'fd-leak', 'bug'] -workflow_state: 'inprogress' +workflow_state: 'done' created_at: '2026-06-08T01:56:30Z' -updated_at: '2026-06-08T02:52:51Z' +updated_at: '2026-06-08T02:54:31Z' assignee: null legacy_ticket: null queued_by: 'workspace-panel' diff --git a/.yoi/tickets/closed/20260608-015630-abort-podclient-reader-task-on-drop/resolution.md b/.yoi/tickets/closed/20260608-015630-abort-podclient-reader-task-on-drop/resolution.md new file mode 100644 index 00000000..69a43b52 --- /dev/null +++ b/.yoi/tickets/closed/20260608-015630-abort-podclient-reader-task-on-drop/resolution.md @@ -0,0 +1,31 @@ +Merged and completed the PodClient reader-task cleanup. + +Summary: +- `PodClient` now stores the background reader task `JoinHandle` created during `PodClient::connect()`. +- `PodClient` implements `Drop` and aborts the reader task when the client is dropped. +- Dropping short-lived clients releases the Unix socket read half without waiting for remote socket close. +- Existing live-client send and receive behavior remains covered. +- No Pod socket protocol, event format, controller behavior, registry semantics, or panel polling policy changed. + +Merged branch/worktree: +- Branch: `abort-podclient-reader-task-on-drop` +- Commit: `aec75b3 fix: abort PodClient reader task on drop` +- Merge commit on `develop`: `b0f37b5 merge: abort podclient reader task on drop` + +Validation passed after merge: +- `cargo test -p client pod_client --lib` +- `cargo test -p client --lib` +- `cargo test -p tui pod_list --lib` +- `cargo check -q` +- `cargo fmt --check` +- `git diff --check` +- `cargo run -q -p yoi -- ticket doctor` +- `nix build .#yoi` + +Cleanup completed: +- Stopped coder/reviewer Pods and reclaimed scope. +- Removed `.worktree/abort-podclient-reader-task-on-drop`. +- Deleted branch `abort-podclient-reader-task-on-drop`. + +Residual note: +- `Drop` cannot await task cancellation completion, but reviewer accepted the normal `JoinHandle::abort()` pattern and focused tests verify observable socket cleanup behavior. \ No newline at end of file diff --git a/.yoi/tickets/open/20260608-015630-abort-podclient-reader-task-on-drop/thread.md b/.yoi/tickets/closed/20260608-015630-abort-podclient-reader-task-on-drop/thread.md similarity index 82% rename from .yoi/tickets/open/20260608-015630-abort-podclient-reader-task-on-drop/thread.md rename to .yoi/tickets/closed/20260608-015630-abort-podclient-reader-task-on-drop/thread.md index e63f68aa..7c48e9ef 100644 --- a/.yoi/tickets/open/20260608-015630-abort-podclient-reader-task-on-drop/thread.md +++ b/.yoi/tickets/closed/20260608-015630-abort-podclient-reader-task-on-drop/thread.md @@ -243,3 +243,66 @@ Parent/human decision needs: - User has authorized merge-completion and cleanup after approved work. Proceeding to merge-completion unless post-merge validation fails. --- + + + +## Review: approve + +Final merge-completion approval after merge to `develop` and post-merge validation. + +Evidence: +- Merged branch `abort-podclient-reader-task-on-drop` with `--no-ff`. +- Reviewer `reviewer-abort-podclient-reader` approved the branch-local implementation. +- Post-merge validation passed: `cargo test -p client pod_client --lib`, `cargo test -p client --lib`, `cargo test -p tui pod_list --lib`, `cargo check -q`, `cargo fmt --check`, `git diff --check`, `cargo run -q -p yoi -- ticket doctor`, and `nix build .#yoi`. +- Coder/reviewer Pods stopped and delegated scope reclaimed. +- Merged worktree removed and branch deleted. + +This approval is for the merged main-branch result, not merely the branch-local reviewer verdict. + +--- + + + +## State changed + +Merged to `develop`, post-merge validation passed, final merge-completion approval recorded, and PodClient reader cleanup branch/worktree/Pods cleaned up. + +--- + + + +## Closed + +Merged and completed the PodClient reader-task cleanup. + +Summary: +- `PodClient` now stores the background reader task `JoinHandle` created during `PodClient::connect()`. +- `PodClient` implements `Drop` and aborts the reader task when the client is dropped. +- Dropping short-lived clients releases the Unix socket read half without waiting for remote socket close. +- Existing live-client send and receive behavior remains covered. +- No Pod socket protocol, event format, controller behavior, registry semantics, or panel polling policy changed. + +Merged branch/worktree: +- Branch: `abort-podclient-reader-task-on-drop` +- Commit: `aec75b3 fix: abort PodClient reader task on drop` +- Merge commit on `develop`: `b0f37b5 merge: abort podclient reader task on drop` + +Validation passed after merge: +- `cargo test -p client pod_client --lib` +- `cargo test -p client --lib` +- `cargo test -p tui pod_list --lib` +- `cargo check -q` +- `cargo fmt --check` +- `git diff --check` +- `cargo run -q -p yoi -- ticket doctor` +- `nix build .#yoi` + +Cleanup completed: +- Stopped coder/reviewer Pods and reclaimed scope. +- Removed `.worktree/abort-podclient-reader-task-on-drop`. +- Deleted branch `abort-podclient-reader-task-on-drop`. + +Residual note: +- `Drop` cannot await task cancellation completion, but reviewer accepted the normal `JoinHandle::abort()` pattern and focused tests verify observable socket cleanup behavior. + +---