From e4dd08f8b6307998d03400c2af08d85aacc14d9a Mon Sep 17 00:00:00 2001 From: Hare Date: Wed, 10 Jun 2026 18:40:43 +0900 Subject: [PATCH] ticket: close file mutation serialization --- .yoi/tickets/00001KTR83D6E/item.md | 4 +- .yoi/tickets/00001KTR83D6E/resolution.md | 26 ++++++++ .yoi/tickets/00001KTR83D6E/thread.md | 78 ++++++++++++++++++++++++ 3 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 .yoi/tickets/00001KTR83D6E/resolution.md diff --git a/.yoi/tickets/00001KTR83D6E/item.md b/.yoi/tickets/00001KTR83D6E/item.md index a2b28652..ed94dc7f 100644 --- a/.yoi/tickets/00001KTR83D6E/item.md +++ b/.yoi/tickets/00001KTR83D6E/item.md @@ -1,8 +1,8 @@ --- title: 'Edit/Writeの同一ファイル変更をToolExecutionContextで直列化する' -state: 'inprogress' +state: 'closed' created_at: '2026-06-10T07:49:10Z' -updated_at: '2026-06-10T09:37:59Z' +updated_at: '2026-06-10T09:40:36Z' assignee: null queued_by: 'workspace-panel' queued_at: '2026-06-10T08:10:58Z' diff --git a/.yoi/tickets/00001KTR83D6E/resolution.md b/.yoi/tickets/00001KTR83D6E/resolution.md new file mode 100644 index 00000000..0e18ca7f --- /dev/null +++ b/.yoi/tickets/00001KTR83D6E/resolution.md @@ -0,0 +1,26 @@ +完了しました。 + +実施内容: +- `Tracker` に `Write` / `Edit` 共有の per-target-file mutation guard を追加しました。 +- `Write` と `Edit` は read/verify/write/record の critical section を同一ファイル単位で直列化します。 +- Worker/provider の parallel tool execution は維持し、Worker-wide scheduler は導入していません。 +- guard key は canonical target / canonical parent / lexical fallback で同一ファイル相当を寄せ、異なるファイルは別 mutex で扱います。 +- `ToolExecutionContext` の `batch_id` / `call_index` は guard acquisition の diagnostics/correlation に使っています。 +- same-file write→edit ordering、failed mutation release、equivalent path guard、different-file non-blocking の tests を追加しました。 + +Merge: +- Branch: `serialize-file-mutations` +- Merge commit: `29960c15 merge: serialize file mutations` + +確認: +- Branch-local reviewer `reviewer-serialize-file-mutations` が approve。 +- `cargo fmt --check` passed。 +- `git diff --check` passed。 +- `cargo test -p tools --lib` passed(99 passed)。 +- `cargo check -p tools` passed。 +- `target/debug/yoi ticket doctor` passed。 +- typed `TicketDoctor` は 0 errors / 3 pre-existing diagnostics。 +- `nix build .#yoi` passed。 + +残作業: +- なし。将来 `Write` / `Edit` が guard acquisition 前に await を増やす場合は、同一 response 内の call order 保証を再確認してください。 \ No newline at end of file diff --git a/.yoi/tickets/00001KTR83D6E/thread.md b/.yoi/tickets/00001KTR83D6E/thread.md index d1eb781c..a96a79ce 100644 --- a/.yoi/tickets/00001KTR83D6E/thread.md +++ b/.yoi/tickets/00001KTR83D6E/thread.md @@ -126,3 +126,81 @@ Non-blocking note: This is branch-local review evidence; final main-branch approval/close belongs to merge-completion. --- + + + +## Review: approve + +Main-branch review/merge-completion approval. + +Verified before merge: +- Branch-local reviewer approved with no blockers. +- Merge target matched branch `serialize-file-mutations` / worktree `.worktree/serialize-file-mutations` and commit `40130143`. +- Implementation is limited to `crates/tools`; Worker-wide scheduler semantics were not changed. + +Merged: +- `git merge --no-ff serialize-file-mutations -m "merge: serialize file mutations"` +- Merge commit: `29960c15 merge: serialize file mutations` + +Post-merge validation: +- `cargo fmt --check` passed. +- `git diff --check` passed. +- `cargo test -p tools --lib` passed (99 passed). +- `cargo check -p tools` passed. +- `target/debug/yoi ticket doctor` passed. +- typed `TicketDoctor` reported 0 errors and 3 pre-existing diagnostics. +- `nix build .#yoi` passed. + +Result: approve. + +--- + + + +## State changed + +Merged branch `serialize-file-mutations` with merge commit `29960c15`; branch-local review approved and post-merge validation passed (`cargo fmt --check`, `git diff --check`, `cargo test -p tools --lib`, `cargo check -p tools`, `target/debug/yoi ticket doctor`, `nix build .#yoi`). + +--- + + + +## State changed + +Ticket を closed にしました。 + + +--- + + + +## 完了 + +完了しました。 + +実施内容: +- `Tracker` に `Write` / `Edit` 共有の per-target-file mutation guard を追加しました。 +- `Write` と `Edit` は read/verify/write/record の critical section を同一ファイル単位で直列化します。 +- Worker/provider の parallel tool execution は維持し、Worker-wide scheduler は導入していません。 +- guard key は canonical target / canonical parent / lexical fallback で同一ファイル相当を寄せ、異なるファイルは別 mutex で扱います。 +- `ToolExecutionContext` の `batch_id` / `call_index` は guard acquisition の diagnostics/correlation に使っています。 +- same-file write→edit ordering、failed mutation release、equivalent path guard、different-file non-blocking の tests を追加しました。 + +Merge: +- Branch: `serialize-file-mutations` +- Merge commit: `29960c15 merge: serialize file mutations` + +確認: +- Branch-local reviewer `reviewer-serialize-file-mutations` が approve。 +- `cargo fmt --check` passed。 +- `git diff --check` passed。 +- `cargo test -p tools --lib` passed(99 passed)。 +- `cargo check -p tools` passed。 +- `target/debug/yoi ticket doctor` passed。 +- typed `TicketDoctor` は 0 errors / 3 pre-existing diagnostics。 +- `nix build .#yoi` passed。 + +残作業: +- なし。将来 `Write` / `Edit` が guard acquisition 前に await を増やす場合は、同一 response 内の call order 保証を再確認してください。 + +---