yoi/.yoi/tickets/00001KV0YK5S0/thread.md

6.7 KiB
Raw Blame History

作成

LocalTicketBackend によって作成されました。


Intake summary

ユーザーが E2E を完全に clean な tmp environment で実行し、毎回 cleanup することを明示した。要件は workspace/HOME/XDG/runtime/artifacts の fixture 分離、host Pod/runtime registry 非参照、fixture-created Pod metadata の fixture-local 化、成功/失敗時 cleanup と artifact 記録。


State changed

Ticket planning が完了しました。state planning -> ready。


State changed

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 invariantshost 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 を記録する。


Review: approve

Review: approve

外部 Reviewer Pod 起動を試みたが、この Orchestrator の現在の delegation scope では child launch validation が要求する root workspace read grant を再委譲できず、Reviewer Pod を起動できなかった。そのため Orchestrator が実装 diff・validation・artifact を直接確認した。

確認した実装:

  • tests/e2e/src/lib.rs に per-scenario FixtureWorkspace / TempDir 管理を追加。
  • fixture root 配下に workspacehomedatastateconfigruntime を作り、tested yoi には env_clear() + fixture-local XDG_RUNTIME_DIR を渡す。
  • PanelHarness::spawn と fixture setup command は host XDG_RUNTIME_DIR / host provider env を継承しない。
  • fixture snapshot / cleanup report / fixture metadata を target/e2e-artifacts/<run>/ に保存し、fixture temp root は cleanup 後に存在しないことを記録する。
  • tests は hostile host XDG_RUNTIME_DIR を設定した状態でも fixture runtime policy を使う。
  • existing binary provider、mouse capture guard、quit pending barrier、env credential isolation は維持されている。

Validation performed by Orchestrator:

  • cargo fmt --check: PASS
  • git diff --check: PASS
  • cargo check -p yoi-e2e --all-targets --features e2e: PASS
  • XDG_RUNTIME_DIR=/tmp/yoi-e2e-host-runtime-leak-test OPENAI_API_KEY=host-secret ANTHROPIC_API_KEY=host-secret GEMINI_API_KEY=host-secret cargo test -p yoi-e2e --features e2e --test panel -- --nocapture: PASS
  • artifact spot-check: recent cleanup.json records cleanup_success: true and fixture_root_exists_after: false
  • target/e2e-tmp の直下に residual fixture temp root が残っていないことを確認。

Notes:

  • Failure artifact は fixture snapshot を保存するため、host への leak ではなく target/e2e-artifacts に診断情報が残る。
  • Fixture-created workspace / workspace-orchestrator Pod metadata は fixture data dir / snapshot に閉じる。host runtime/data registry を読む経路は fixture XDG_RUNTIME_DIR + env clear により遮断されている。

Decision: approve.