yoi/.yoi/tickets/00001KV3BQ7Q3/item.md

6.4 KiB

title state created_at updated_at assignee readiness risk_flags queued_by queued_at
対象 TUI/Panel merge commit の挙動を現行 E2E で確認する queued 2026-06-14T15:24:05Z 2026-06-14T15:37:04Z null implementation_ready
e2e
tui
panel
regression-evidence
workspace-panel 2026-06-14T15:35:57Z

Background

過去に以下の merge commit が、user-visible な TUI / Panel 挙動として十分な実経路確認なしに merge された、または merge 後に証明不足が問題化した。

  • 802fa1f00f8725fe35336e083cd05652fee1409emerge: rewind live refresh
  • 02311883f7cda116676d8e179a14ad0be9e7a244merge: panel mouse selection
  • db7bad7a64766c2039a4c10781801cb571027955merge: panel quit latency

特に Panel latency / mouse selection は、focused tests や code review だけでは実ユーザー経路の保証として不十分だった経緯がある。後続で E2E harness が整備されたため、現行の E2E システムで、これらの commit が意図した user-visible behavior を確認する。

この Ticket は「過去の merge 判断を後付けで正当化する」ためではなく、現行 HEAD / 現行 E2E infrastructure において、対象 behavior が実プロセス PTY 経路で確認できるかを明示するための validation work item である。

Requirements

  • 対象 commit ごとに、確認すべき user-visible behavior を明確化する。
    • 802fa1f0: rewind picker で Enter 後、live TUI 表示が restart / restore なしに巻き戻し後状態へ更新されること。
    • 02311883: Panel mouse selection が実プロセス PTY 経路で動作し、click が selection を変え、click だけで action dispatch しないこと。
    • db7bad7a: Panel quit latency 改善として意図された経路が、現行 E2E で bounded に確認できること。少なくとも pending background work が quit を user-visible に block しないことを確認し、元の latency 観測を直接保証できない場合はその gap を明示する。
  • 現行 E2E システムで各 behavior を確認する。
  • 既存 E2E coverage がある場合は、どの test / scenario がどの commit の behavior を確認しているかを実装報告に明記する。
  • 既存 E2E coverage が不足している場合は、最小限の E2E scenario / assertion を追加または更新して確認可能にする。
  • E2E で確認できない性質がある場合は、pass 扱いにせず、coverage gap として明示する。
  • 実ユーザー環境での manual/live confirmation と、fixture PTY E2E confirmation を混同しない。

Acceptance criteria

  • 802fa1f0, 02311883, db7bad7a の3件それぞれについて、現行 E2E での確認結果が pass / fail / coverage gap のいずれかとして記録されている。
  • pass とする場合は、対応する E2E test 名、assertion、実行 command、結果が実装報告に記録されている。
  • coverage gap とする場合は、何が現行 E2E では確認できないのか、追加 E2E が必要なのか、manual/live validation が必要なのかが明示されている。
  • mouse selection は、focused unit test ではなく実 yoi binary + PTY 経路で selection_changed 等の user-visible observer を確認している。
  • quit latency は、単に process が終了するだけでなく、latency / pending work / threshold の観点で何を保証しているかが明示されている。
  • rewind live refresh は、restart / restore なしの live 表示更新が E2E で確認されるか、未確認ならその不足が明示されている。
  • cargo test -p yoi-e2e --features e2e または同等の現行 E2E command が実行され、結果が記録されている。
  • E2E を追加・更新した場合、fixture-local HOME / XDG / runtime / workspace isolation と no-provider / no-network 前提を維持している。

Binding decisions / invariants

  • focused tests / code-path review だけで user-visible Panel/TUI behavior を確認済み扱いにしない。
  • E2E pass と manual/live user confirmation は別物として記録する。
  • 現行 E2E が確認していない behavior を、確認済みとして表現しない。
  • この Ticket の主目的は validation / evidence 整理であり、対象 behavior の大きな再設計や unrelated fix は行わない。
  • 対象 commit の historical merge decision を書き換えるのではなく、現行状態の evidence を追加する。

Implementation latitude

  • 既存 yoi-e2e scenario の再利用、test 名 / assertion の明確化、必要最小限の scenario 追加は実装者判断で行ってよい。
  • E2E observer / fixture helper に不足がある場合、production behavior に影響しない e2e-test feature gate 配下の補助を追加してよい。
  • latency threshold は既存 E2E の基準を優先し、変更が必要な場合は理由を実装報告に明記する。
  • 既存 E2E が flake する場合は、原因を切り分け、test hardening と behavior fix を混同しない。

Readiness

  • readiness: implementation_ready
  • risk_flags: [e2e, tui, panel, regression-evidence]

Escalation conditions

  • 現行 E2E infrastructure では対象 behavior を原理的に確認できず、実端末 manual validation や新しい harness 設計が必要な場合。
  • latency の再現・測定が既存 observer / threshold では意味を持たない場合。
  • mouse behavior が PTY SGR injection では pass するが、実端末 mouse 操作と乖離する疑いが残る場合。
  • 対象 behavior の確認中に actual regression が見つかり、validation ticket の範囲を超える修正が必要になった場合。

Validation

  • cargo test -p yoi-e2e --features e2e
  • 必要に応じて対象 E2E scenario の narrow run
  • E2E 追加・更新時:
    • cargo test -p yoi-e2e --no-run
    • cargo fmt --check
    • git diff --check
  • 変更範囲に応じて cargo check -p yoi-e2e -p yoi -p tui
  • 00001KV04NJ8D — TUI rewind picker の Enter 後に live 表示が巻き戻らない問題を調査・修正する
  • 00001KV072V89 — Panel mouse selection
  • 00001KV0723PC — Panel quit latency
  • 00001KSKBP9YG — opt-in Panel PTY E2E harness
  • 00001KV0TJVN5 — E2E binary provider / latest binary validation
  • 00001KV0YK5S0 — E2E tmp/runtime isolation
  • 00001KV10SN02 — E2E critical path coverage