5.3 KiB
作成
LocalTicketBackend によって作成されました。
Intake summary
ユーザーが cargo build による最新 yoi binary 入手を E2E harness default にする方針を明示した。要件・受け入れ条件は、YOI_E2E_BIN override を残しつつ、通常 E2E 実行では harness が cargo build -p yoi --features e2e-test --bin yoi を実行し、生成 binary を直接 PTY spawn すること。
State changed
Ticket planning が完了しました。state planning -> ready。
State changed
Ticket を yoi ticket が queued にしました。
Decision
Routing decision: implementation_ready
Reason:
- ユーザーが方針を明示した:
cargo runを PTY の process-under-test にせず、E2E harness がcargo build -p yoi --features e2e-test --bin yoiを実行し、生成された binary を直接 spawn する。 - Ticket は
queuedで、要件・受け入れ条件は具体的。blocking relation はなく、既存 E2E harness の小さな follow-up として実装可能。 - 既存 production/non-production boundary、mouse capture check、quit pending barrier は維持すべき invariant として明記済み。
Evidence checked:
- Ticket body / relation to
00001KSKBP9YG。 - Existing E2E harness code:
tests/e2e/src/lib.rs::yoi_binary()currently prefersYOI_E2E_BIN, then inferstarget/debug/yoi, but does not build it。 - Orchestrator worktree is clean。
IntentPacket:
Intent:
cargo test -p yoi-e2e --features e2e ...を任意タイミングで実行しても、harness が最新 source から E2E 用yoibinary を build して直接 PTY spawn するようにする。
Binding decisions / invariants:
cargo runを process-under-test にしない。YOI_E2E_BINexplicit override は残してよい。- default path は harness 内
cargo build -p yoi --features e2e-test --bin yoi+ direct binary spawn。 - production/non-production boundary と
e2e-testfeature gating を壊さない。 - mouse capture tracking / quit pending barrier を壊さない。
Requirements / acceptance criteria:
- 事前 manual build なしに
cargo test -p yoi-e2e --features e2e --test panel -- --nocaptureが pass する。 YOI_E2E_BIN=<path>指定時は override としてその path が使われる。- Build command / binary path が artifact または diagnostics から分かる。
cargo fmt --check、git diff --check、関連 checks が pass。
Implementation latitude:
OnceLock等で同一 test process 内の build を 1 回にまとめてよい。- Workspace root detection は
CARGO_MANIFEST_DIRparent traversal、cargo metadata、または robust helper のいずれでもよい。 - Cargo executable は
CARGOenv を尊重する。
Escalate if:
- workspace/package layout 上、E2E test process 内から cargo build するのが大きな cyclic/build-system 問題を起こす場合。
- Nix/package source filter 等の追加変更が必要になる場合。
State changed
Ticket evidence、existing E2E harness code map、Orchestrator worktree clean state を確認した。ユーザーが明示的に修正を依頼しており、blocking relation はない。実装 side effect の前に inprogress acceptance を記録する。
Implementation report
Implementation report for Ticket 00001KV0TJVN5
Files changed:
tests/e2e/src/lib.rs- Added a cached e2e binary provider using
OnceLock. - Preserves
YOI_E2E_BIN=<path>as the explicit override and skips the default cargo build provider in that path. - Default path runs
${CARGO:-cargo} build -p yoi --features e2e-test --bin yoifrom the workspace root, then returns the directtarget/{profile}/yoibinary path for PTY spawning. - Writes
target/e2e-artifacts/binary-provider.jsonand emits diagnostics with provider, build command, and binary path. - Expanded command-failure diagnostics to include command args.
- Added a cached e2e binary provider using
tests/e2e/tests/panel.rs- Updated panel tests to use the fallible cached binary provider.
Validation:
cargo fmt --check— passed.git diff --check— passed.cargo check -p yoi-e2e --all-targets --features e2e— passed.unset YOI_E2E_BIN && cargo test -p yoi-e2e --features e2e --test panel -- --nocapture— passed; default provider built the currentyoibinary and PTY-spawnedtarget/debug/yoi.YOI_E2E_BIN=/home/hare/Projects/yoi/.worktree/e2e-binary-provider/target/debug/yoi cargo test -p yoi-e2e --features e2e --test panel -- --nocapture— passed; override provider path used without invoking the default cargo-build provider.
Remaining gaps:
- None known.