## 作成 LocalTicketBackend によって作成されました。 --- ## Intake summary Marked ready by `yoi ticket state`. --- ## State changed Marked ready by `yoi ticket state`. --- ## State changed Ticket を `yoi ticket` が queued にしました。 --- ## State changed State changed to `inprogress`. --- ## Implementation report Stabilized cleanup plan candidate ordering and verified the not-found Workdir deletion endpoint. Root cause: - Cleanup plan digest includes worker/workdir candidate arrays. - Candidate order was not normalized before digest calculation, so GET `/cleanup-plan` and POST `/cleanup-executions` could compute different digests for the same target set. - The POST then failed with `workspace_cleanup_plan_stale`, preventing `workdir_record_delete` execution. Changes: - Sort worker cleanup candidates by `target_id` before digest calculation. - Sort Workdir cleanup candidates by `target_id` before digest calculation. Endpoint verification: - Fetched `GET /api/w/0197a949-4b6b-7f2a-9d9a-1f87e3a4c5b6/runtimes/arc/cleanup-plan`. - Posted the returned revision/digest and all `file_status: not_found` Workdir target ids to `POST /cleanup-executions`. - Received HTTP 200 and four `workdir_record_delete` results with `status: deleted`. Validation: - `cargo fmt --check` - `git diff --check` - `cargo check -q` - `cargo test -q -p yoi-workspace-server` - targeted cleanup plan test - `nix build .#yoi --no-link` --- ## State changed State changed to `done`. ---