yoi/.yoi/tickets/00001KXT5FEFR/thread.md

2.5 KiB

作成

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


Intake summary

Marked ready by yoi ticket state.


State changed

Marked ready by yoi ticket state.


State changed

Ticket を yoi ticket が queued にしました。


State changed

State changed to inprogress.


Implementation report

workdir materialization の dirty source check を selector == "HEAD" の場合だけ実行するようにした。

変更点:

  • LocalGitWorktreeMaterializer::materialize で selector を先に確定。
  • selector が HEAD の時だけ git status --porcelain による dirty source rejection を行う。
  • 明示 branch selector では source worktree が dirty でも git rev-parse <selector>^{commit} で commit 解決し、detached worktree を作る。
  • branch selector + dirty source の回帰テストを追加し、未コミットファイルが materialized worktree に入らないことを確認。

検証:

  • cargo test -p worker-runtime --features ws-server,fs-store branch_selector_allows_dirty_source_materialization --quiet
  • cargo test -p worker-runtime --features ws-server,fs-store dirty_source_is_rejected_by_materialization --quiet
  • cargo test -p worker-runtime --features ws-server,fs-store local_git_repo_materializes_detached_worktree_under_runtime_root --quiet
  • cargo fmt --check
  • git diff --check

State changed

Ticket を closed にしました。


完了

Workdir dirty source rejection is now scoped to the HEAD selector. Explicit branch selectors can materialize detached workdirs from their resolved commit even when the source worktree has uncommitted changes.