diff --git a/.yoi/tickets/open/20260608-054546-shutdown-intake-pod-after-ready-idle/artifacts/.gitkeep b/.yoi/tickets/closed/20260608-054546-shutdown-intake-pod-after-ready-idle/artifacts/.gitkeep similarity index 100% rename from .yoi/tickets/open/20260608-054546-shutdown-intake-pod-after-ready-idle/artifacts/.gitkeep rename to .yoi/tickets/closed/20260608-054546-shutdown-intake-pod-after-ready-idle/artifacts/.gitkeep diff --git a/.yoi/tickets/open/20260608-054546-shutdown-intake-pod-after-ready-idle/item.md b/.yoi/tickets/closed/20260608-054546-shutdown-intake-pod-after-ready-idle/item.md similarity index 98% rename from .yoi/tickets/open/20260608-054546-shutdown-intake-pod-after-ready-idle/item.md rename to .yoi/tickets/closed/20260608-054546-shutdown-intake-pod-after-ready-idle/item.md index 18da47ee..d2b1ae7b 100644 --- a/.yoi/tickets/open/20260608-054546-shutdown-intake-pod-after-ready-idle/item.md +++ b/.yoi/tickets/closed/20260608-054546-shutdown-intake-pod-after-ready-idle/item.md @@ -2,13 +2,13 @@ id: '20260608-054546-shutdown-intake-pod-after-ready-idle' slug: 'shutdown-intake-pod-after-ready-idle' title: 'Shutdown Intake Pod after TicketIntakeReady returns to Idle' -status: 'open' +status: 'closed' kind: 'task' priority: 'P2' labels: ['ticket', 'intake', 'pod', 'lifecycle', 'panel'] -workflow_state: 'inprogress' +workflow_state: 'done' created_at: '2026-06-08T05:45:46Z' -updated_at: '2026-06-08T08:10:43Z' +updated_at: '2026-06-08T08:12:36Z' assignee: null legacy_ticket: null queued_by: 'workspace-panel' diff --git a/.yoi/tickets/closed/20260608-054546-shutdown-intake-pod-after-ready-idle/resolution.md b/.yoi/tickets/closed/20260608-054546-shutdown-intake-pod-after-ready-idle/resolution.md new file mode 100644 index 00000000..79e54509 --- /dev/null +++ b/.yoi/tickets/closed/20260608-054546-shutdown-intake-pod-after-ready-idle/resolution.md @@ -0,0 +1,33 @@ +Merged and completed the Intake Pod idle-shutdown behavior. + +Summary: +- Ticket role launcher now passes a hidden process-local `--ticket-role ` marker to Pod runtime for Ticket role Pods. +- `TicketIntakeReady` successful tool results schedule transient shutdown-after-idle only for runtime role `intake`. +- Failed `TicketIntakeReady`, non-Intake roles, and other tools do not schedule shutdown. +- Controller executes ordinary clean shutdown only after run completion/final response/history+session commit/status transition and only when the Pod is Idle. +- The shutdown request is transient runtime state and does not mutate or remove local Ticket claim/session records. + +Merged branch/worktree: +- Branch: `shutdown-intake-pod-after-ready-idle` +- Commit: `61c3231 pod: stop intake after ready idle` +- Merge commit on `develop`: `f7c5060 merge: shutdown intake after ready idle` + +Validation passed after merge: +- `cargo test -p pod shutdown_after_idle --lib` +- `cargo test -p client runtime_args --lib` +- `cargo test -p client ticket_role --lib` +- `cargo test -p pod --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/shutdown-intake-pod-after-ready-idle`. +- Deleted branch `shutdown-intake-pod-after-ready-idle`. + +Residual notes: +- Hidden `--ticket-role` is not an authorization boundary; manual opt-in affects only the current Pod's self-shutdown scheduling and grants no Ticket or Pod-control authority. +- Generic restore of an old Intake role session does not automatically regain the process-local role marker unless launched through the Ticket role path; this matches the non-durable shutdown signal boundary. \ No newline at end of file diff --git a/.yoi/tickets/open/20260608-054546-shutdown-intake-pod-after-ready-idle/thread.md b/.yoi/tickets/closed/20260608-054546-shutdown-intake-pod-after-ready-idle/thread.md similarity index 87% rename from .yoi/tickets/open/20260608-054546-shutdown-intake-pod-after-ready-idle/thread.md rename to .yoi/tickets/closed/20260608-054546-shutdown-intake-pod-after-ready-idle/thread.md index 7c17a6e4..bc869cb8 100644 --- a/.yoi/tickets/open/20260608-054546-shutdown-intake-pod-after-ready-idle/thread.md +++ b/.yoi/tickets/closed/20260608-054546-shutdown-intake-pod-after-ready-idle/thread.md @@ -359,3 +359,68 @@ 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 `shutdown-intake-pod-after-ready-idle` with `--no-ff`. +- Reviewer `reviewer-shutdown-intake-idle` approved the branch-local implementation. +- Post-merge validation passed: `cargo test -p pod shutdown_after_idle --lib`, `cargo test -p client runtime_args --lib`, `cargo test -p client ticket_role --lib`, `cargo test -p pod --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 Intake idle-shutdown branch/worktree/Pods cleaned up. + +--- + + + +## Closed + +Merged and completed the Intake Pod idle-shutdown behavior. + +Summary: +- Ticket role launcher now passes a hidden process-local `--ticket-role ` marker to Pod runtime for Ticket role Pods. +- `TicketIntakeReady` successful tool results schedule transient shutdown-after-idle only for runtime role `intake`. +- Failed `TicketIntakeReady`, non-Intake roles, and other tools do not schedule shutdown. +- Controller executes ordinary clean shutdown only after run completion/final response/history+session commit/status transition and only when the Pod is Idle. +- The shutdown request is transient runtime state and does not mutate or remove local Ticket claim/session records. + +Merged branch/worktree: +- Branch: `shutdown-intake-pod-after-ready-idle` +- Commit: `61c3231 pod: stop intake after ready idle` +- Merge commit on `develop`: `f7c5060 merge: shutdown intake after ready idle` + +Validation passed after merge: +- `cargo test -p pod shutdown_after_idle --lib` +- `cargo test -p client runtime_args --lib` +- `cargo test -p client ticket_role --lib` +- `cargo test -p pod --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/shutdown-intake-pod-after-ready-idle`. +- Deleted branch `shutdown-intake-pod-after-ready-idle`. + +Residual notes: +- Hidden `--ticket-role` is not an authorization boundary; manual opt-in affects only the current Pod's self-shutdown scheduling and grants no Ticket or Pod-control authority. +- Generic restore of an old Intake role session does not automatically regain the process-local role marker unless launched through the Ticket role path; this matches the non-durable shutdown signal boundary. + +---