From 2061c810db6c8694f274fc439acc50b149f9c0fc Mon Sep 17 00:00:00 2001 From: Hare Date: Mon, 13 Jul 2026 21:46:05 +0900 Subject: [PATCH] ticket: type workdir cleanup status --- .yoi/tickets/00001KXDR5EK4/artifacts/.gitkeep | 0 .yoi/tickets/00001KXDR5EK4/item.md | 29 +++++++++++++++++++ .yoi/tickets/00001KXDR5EK4/thread.md | 7 +++++ 3 files changed, 36 insertions(+) create mode 100644 .yoi/tickets/00001KXDR5EK4/artifacts/.gitkeep create mode 100644 .yoi/tickets/00001KXDR5EK4/item.md create mode 100644 .yoi/tickets/00001KXDR5EK4/thread.md diff --git a/.yoi/tickets/00001KXDR5EK4/artifacts/.gitkeep b/.yoi/tickets/00001KXDR5EK4/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/00001KXDR5EK4/item.md b/.yoi/tickets/00001KXDR5EK4/item.md new file mode 100644 index 00000000..cc6b2558 --- /dev/null +++ b/.yoi/tickets/00001KXDR5EK4/item.md @@ -0,0 +1,29 @@ +--- +title: 'Type Workdir cleanup plan status' +state: 'planning' +created_at: '2026-07-13T12:45:21Z' +updated_at: '2026-07-13T12:45:40Z' +assignee: null +--- + +## 背景 + +Runtime と workspace-server はどちらも Rust であり、Runtime catalog の Workdir status / cleanliness は `worker-runtime` の typed enum として共有できる。それにもかかわらず cleanup plan は `file_status: String` / `cleanliness: String` に落として判定しており、`WorkingDirectoryStatusKind::NotFound` が `notfound` になるバグを起こした。 + +Rust 内部の cleanup policy 判定では文字列化せず、typed enum / 明示的 parse 境界に閉じる。 + +## 要件 + +- `CleanupWorkdirCandidate.file_status` を文字列ではなく typed enum にする。 +- `CleanupWorkdirCandidate.cleanliness` を文字列ではなく typed enum にする。 +- Runtime observation 由来の Workdir status / cleanliness は `worker-runtime` の型から typed に変換する。 +- DB registry 由来の status / cleanliness は明示的な parse 境界で typed に変換し、未知値は `unknown` として扱う。 +- cleanup action 判定は string match ではなく enum match にする。 +- JSON API では従来通り snake_case string として serialize される。 + +## 受け入れ条件 + +- `not_found` Workdir が型付き判定で `workdir_record_delete` になる。 +- `clean` Workdir が型付き cleanliness 判定で `workdir_clean_cleanup` になる。 +- Rust 内部 cleanup policy に `format!("{:?}").to_lowercase()` や status string match が残らない。 +- workspace-server tests と Nix build が通る。 diff --git a/.yoi/tickets/00001KXDR5EK4/thread.md b/.yoi/tickets/00001KXDR5EK4/thread.md new file mode 100644 index 00000000..89feb389 --- /dev/null +++ b/.yoi/tickets/00001KXDR5EK4/thread.md @@ -0,0 +1,7 @@ + + +## 作成 + +LocalTicketBackend によって作成されました。 + +---