# Conflicts: # .yoi/tickets/00001KV10SN02/item.md # .yoi/tickets/00001KV10SN02/thread.md
9.8 KiB
作成
LocalTicketBackend によって作成されました。
Decision
修正:
- 初回作成時は git log の確認が不足しており、既存/別 branch の E2E 実装済み範囲を一部重複して書いていた。
- git log を確認し、既存の Panel E2E harness、latest-binary build、late quit latency E2E、mouse click selection E2E、orchestration branch の tmp runtime/data isolation を前提として反映した。
- この Ticket は残差に絞る: wheel regression、rewind UI real-process regression、必要最小限の critical path 維持/補強。
State changed
Ticket を workspace-panel が queued にしました。
Implementation report
Implementation handoff resumed successfully after retry.
- Previous blocker was child launch validation requiring workspace root read grant.
- Retried
SpawnPodwith explicit non-recursive read grant for/home/hare/Projects/yoiplus child worktree read/write scopes. - Coder Pod started:
coder-00001KV10SN02-e2e-critical - Worktree:
/home/hare/Projects/yoi/.worktree/e2e-critical-path - Branch:
ticket-00001KV10SN02-e2e-critical-path
The root workspace grant is non-recursive and is only for runtime launch validation. Coder instructions explicitly prohibit inspecting, writing, running git, validating, merging, or cleaning up in the root/original workspace.
State changed
Coder Pod coder-00001KV10SN02-e2e-critical has been started after SpawnPod retry with explicit root non-recursive read grant. This records the missing acceptance marker before further implementation/review side effects continue; previous handoff report already documented the retry and scope.
Implementation report
Implementation blocked / stopped for now.
Problem:
- Coder Pod
coder-00001KV10SN02-e2e-criticalis in an inconsistent communication state:ReadPodOutputreports it as stopped/unreachable, while restore/list surfaces report the socket as live/reachable, andSendToPodtimes out waiting for initial Snapshot. - Worktree
/home/hare/Projects/yoi/.worktree/e2e-critical-pathcontains uncommitted changes incrates/tui/src/multi_pod.rs,crates/tui/src/single_pod.rs,tests/e2e/src/lib.rs,tests/e2e/tests/panel.rs, and newtests/e2e/tests/rewind.rs. - No Coder final report, commit, or Ticket implementation_report was received.
Decision:
- Per user instruction, stop this Ticket instead of attempting to merge incomplete/unreviewed work.
- Do not merge this branch.
- Preserve the dirty worktree for human/next-Orchestrator inspection rather than deleting it.
Recovery needed:
- Inspect dirty diff in
/home/hare/Projects/yoi/.worktree/e2e-critical-path. - Decide whether to salvage/commit after validation, ask Coder to continue after runtime recovery, or discard and restart from clean branch.
- Do not mark done until implementation is committed, reviewed, and validated.
Implementation report
Recovery action: hand off dirty worktree to a replacement Coder.
User requested continuing with a different Coder after the prior Coder Pod stopped unexpectedly.
Current worktree state before handoff:
- Worktree:
/home/hare/Projects/yoi/.worktree/e2e-critical-path - Branch:
ticket-00001KV10SN02-e2e-critical-path - Dirty files from prior Coder attempt:
crates/tui/src/multi_pod.rscrates/tui/src/single_pod.rstests/e2e/src/lib.rstests/e2e/tests/panel.rstests/e2e/tests/rewind.rs(new)
git diff --checkcurrently reports no whitespace/check errors.
Replacement Coder task:
- Inspect the dirty diff, decide whether it is salvageable, then either finish/commit/report it or stop with a concrete blocker.
- Do not merge or clean up; Orchestrator will handle review/merge.
Implementation report
Implemented critical-path TUI E2E coverage in commit b9f49eee.
Files changed:
- crates/tui/src/multi_pod.rs: panel mouse wheel events now move selection and emit e2e observer diagnostics without enabling full drag-motion capture.
- crates/tui/src/single_pod.rs: e2e-test-only canned single-Pod rewind fixture path for real TUI/PTTY driving; preserves production/non-production boundary.
- tests/e2e/Cargo.toml: disables auto-discovered integration tests and registers panel/rewind only behind the e2e feature.
- tests/e2e/src/lib.rs: harness support for rewind fixture env isolation, wheel input, event waiting, and forbidden ?1002h/?1003h capture detection.
- tests/e2e/tests/panel.rs: adds PTY wheel regression coverage and drag-capture failure assertion while keeping existing panel cases.
- tests/e2e/tests/rewind.rs: adds single-Pod rewind picker/apply/duplicate-Enter regression.
Validation:
- cargo fmt --check
- git diff --check
- cargo test -p yoi-e2e --no-run
- cargo build -p yoi
- cargo test -p yoi-e2e --features e2e
- cargo test -p tui --lib single_pod::tests::rewind
- cargo test -p tui --lib mouse
- nix build .#yoi
Additional note:
- Full cargo test -p tui was also attempted and failed in pre-existing/unrelated tests: multi_pod::tests::orchestrator_launch_context_uses_orchestration_root_for_runtime_workspace and spawn::tests::{profile_choices_include_builtin_and_project_default_marker, profile_choices_use_project_registry_default}. Focused changed-area tui tests passed.
Residual risks:
- Rewind E2E uses an e2e-test-only canned in-process fixture instead of a provider/socket-backed Pod, intentionally avoiding credentials/network while still exercising the real single-Pod TUI/PTTY path.
- nix build emitted the expected dirty-tree warning before succeeding.
Review: approve
APPROVE.
Review evidence:
- Diff base: inspected
git diff orchestration/yoi-orchestrator..HEAD; changed files are limited to this Ticket record plus intended TUI/E2E files (crates/tui/src/{multi_pod.rs,single_pod.rs},tests/e2e/{Cargo.toml,src/lib.rs,tests/panel.rs,tests/rewind.rs}). No unrelated Ticket records or broad code churn were present. - Existing Panel E2E remains opt-in:
tests/e2e/Cargo.tomlusesautotests = false;panelandrewindintegration tests haverequired-features = ["e2e"].cargo test -p yoi-e2e --no-runcompiled only the library test, whilecargo test -p yoi-e2e --features e2eran the isolated panel/rewind cases. - Wheel PTY coverage is meaningful: the panel test drives real PTY SGR wheel input at a row coordinate derived from
rows_rendered, then observesmouse_wheel,selection_changed, and refreshedrows_renderedevents. This exercises terminal input delivery and row/list selection behavior rather than direct state mutation. - Mouse capture assertions cover the intended invariant: the TUI now enables normal tracking + SGR through the local
EnableWheelMouseCapturecommand, and tests assert mouse capture is enabled while rejecting forbidden full drag-motion modes. Observed PTY artifacts from the reviewer run contained?1000h/?1006honce and?1002h/?1003hzero times for panel and rewind runs. - Rewind E2E uses a real single-Pod TUI/PTTY surface with an
e2e-test-only fixture. The test sendsCtrl+R,Enter, and repeatedEnter; observed events show picker open, exactly one rewind submit, duplicate Enter suppression while pending, andrewind_appliedwith restored composer text. The PTY output artifact also contained the restored text (revise the plan), so this covers visible composer restoration without Esc/restart/restore. - Credential/network isolation is preserved: the E2E harness uses
env_clear, fixture HOME/XDG runtime/data/config/state, explicit runtime binary override, and default-deny provider credential policy. The rewind fixture is only compiled/activated behind thee2e-testfeature andYOI_TUI_TEST_REWIND_FIXTURE; normalcargo build -p yoipassed without that fixture.
Validation performed:
cargo fmt --check— passgit diff --check orchestration/yoi-orchestrator..HEAD— passcargo test -p yoi-e2e --no-run— passcargo build -p yoi— passcargo test -p yoi-e2e --features e2e— pass (1 lib env-policy test, 3 panel tests, 1 rewind test)cargo test -p tui --lib single_pod::tests::rewind— pass (5 tests)cargo test -p tui --lib mouse— pass (4 tests)cargo test -p tui --lib— fails in known unrelated tests already noted by implementation report:multi_pod::tests::orchestrator_launch_context_uses_orchestration_root_for_runtime_workspaceandspawn::tests::{profile_choices_include_builtin_and_project_default_marker, profile_choices_use_project_registry_default}; 327 other tests passed, including the changed-area mouse/rewind tests.nix build .#yoi— not run by reviewer because this review grant allows writes only undertarget/and this Ticket record; a normal nix build would write outside that boundary (store/result link). Coder's implementation report recorded a successful nix build with the expected dirty-tree warning.
Residual risk:
- The rewind E2E intentionally uses an in-process canned rewind fixture instead of a provider/socket-backed Pod to avoid credentials and network. This is acceptable for the Ticket's critical TUI/PTTY regression focus, but it is not full provider integration coverage.