From eb29b63aa16b39b1bdf0ad5b3614aeed41146125 Mon Sep 17 00:00:00 2001 From: Hare Date: Sun, 14 Jun 2026 01:57:03 +0900 Subject: [PATCH] ticket: accept e2e tmp isolation --- .yoi/tickets/00001KV0YK5S0/item.md | 4 +- .yoi/tickets/00001KV0YK5S0/thread.md | 56 ++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/.yoi/tickets/00001KV0YK5S0/item.md b/.yoi/tickets/00001KV0YK5S0/item.md index 94970c9d..7cc4438b 100644 --- a/.yoi/tickets/00001KV0YK5S0/item.md +++ b/.yoi/tickets/00001KV0YK5S0/item.md @@ -1,8 +1,8 @@ --- title: 'E2E harness を完全な tmp runtime/data/workspace 隔離と cleanup に対応させる' -state: 'queued' +state: 'inprogress' created_at: '2026-06-13T16:56:11Z' -updated_at: '2026-06-13T16:56:31Z' +updated_at: '2026-06-13T16:56:58Z' assignee: null readiness: 'ready' queued_by: 'yoi ticket' diff --git a/.yoi/tickets/00001KV0YK5S0/thread.md b/.yoi/tickets/00001KV0YK5S0/thread.md index 4431322b..a5a4eb29 100644 --- a/.yoi/tickets/00001KV0YK5S0/thread.md +++ b/.yoi/tickets/00001KV0YK5S0/thread.md @@ -30,4 +30,60 @@ Ticket planning が完了しました。state planning -> ready。 Ticket を `yoi ticket` が queued にしました。 +--- + + + +## Decision + +Routing decision: implementation_ready + +Reason: +- ユーザーが E2E harness の clean tmp environment / cleanup を明示した。 +- Ticket は `queued` で、要件・受け入れ条件は具体的。既存 `00001KSKBP9YG` / `00001KV0TJVN5` の follow-up で、主な変更面は `tests/e2e` に bounded される。 +- Blocking relation はなく、既存 queued Tickets とは変更面が異なる。Orchestrator worktree は clean。 +- Risk は test/runtime isolation だが、binding invariants(host runtime registry 非参照、fixture-local Pod metadata、cleanup artifact 記録)が明確なため実装可能。 + +Evidence checked: +- 新規 Ticket body / related records。 +- `00001KV0TJVN5` の post-merge concern: host/global runtime registry を見た可能性、fixture `workspace-orchestrator` metadata、runtime isolation assertion 不足。 +- Existing E2E code map: `tests/e2e/src/lib.rs` の fixture setup / `PanelHarness::spawn` / `run_yoi_capture` / artifact handling。 +- Orchestrator workspace state: clean。 + +IntentPacket: + +Intent: +- E2E harness が毎回 clean な tmp workspace/data/runtime environment で実行され、host Pod/runtime registry を見ず、成功・失敗に関係なく fixture temp を cleanup するようにする。 + +Binding decisions / invariants: +- Tested `yoi` process は host runtime/data/session/worktree/Pod registry を見ない。 +- Fixture-created Pods (`workspace`, `workspace-orchestrator` 等) は fixture-local。 +- Failure diagnostics は `target/e2e-artifacts` にコピーして残し、fixture temp root は cleanup する。 +- Existing binary provider、env credential isolation、mouse capture guard、quit pending barrier を壊さない。 +- Root/original workspace では作業しない。 + +Requirements / acceptance criteria: +- `cargo test -p yoi-e2e --features e2e --test panel -- --nocapture` が clean tmp env を使い、終了後に fixture temp root を残さない。 +- Artifact に fixture workspace/data/runtime paths、cleanup result、env/runtime policy が残る。 +- Test/assertion で Panel が host live Pods / host runtime registry を見ないことを確認する。 +- Host `XDG_RUNTIME_DIR` 等が設定されていても tested `yoi` は fixture runtime だけを見る。 +- `cargo fmt --check` / `git diff --check` / relevant checks / E2E tests が pass。 + +Implementation latitude: +- `tempfile::TempDir` / custom guard / artifact snapshot strategy の具体設計は Coder が選んでよい。 +- Runtime dir は explicit `XDG_RUNTIME_DIR` fixture path でも、Yoi-specific fixture runtime env でもよいが、host fallback を使わないことを artifact/assertion で示す。 +- Failure artifact は fixture tree 全体ではなく必要 subset copy でよい。 + +Escalate if: +- Yoi runtime path discovery に explicit test runtime dir を渡す public/production surface 変更が必要になる場合。 +- Cleanup と artifact preservation が両立しない design constraint がある場合。 + +--- + + + +## State changed + +Ticket evidence、related E2E tickets、existing code map、Orchestrator worktree clean state を確認した。ユーザーが明示的に修正を依頼しており、blocking relation はない。実装 side effect の前に inprogress acceptance を記録する。 + ---