Landing batch of settled worker fixes, each reviewed and verified before settling:
mason: reduce applicability walk discovery cost
mason: bound managed Git resolver output capture
Reword the managed git hook release note for users
mason: shorten retention waits before checkout binding
mason: wake OpenCode 2 sessions on bash watch matches
Word the OpenCode 2 watch-match release note for users
mason: scope retention yield assertion to pending bind lifetime
mason: wake due view publications without unrelated maintenance
Word the view publication wake release note for users
mason: return background runon handles before remote admission
Give route-bind database tests the product's own deadlines
mason: add owner-only bash scope pause management
Expect bash.kill_scope in the HELLO manifest snapshot test
Summary by cubic
Lands settled worker fixes that cut applicability walk cost, prevent managed git hook hangs, speed up checkout binding, wake view publications on time, return runon handles before admission, add owner-only bash.kill_scope, and make OpenCode 2 watch matches wake their sessions.
New Features
bash.kill_scope stops a cancelled worker's local and remote bash tasks without revoking its scope; worker cancellation invokes it, not pausing. It stops unfinished saved tasks before the project rebinds, records the pause before recovered workers start, and shares one claimed task between recovery and project replay so a saved remote retry never resubmits and a saved local fallback never launches during recovery. Cancellations settle cleanly across reconnect, draining, signer, and refusal-report paths instead of waiting out the deadline or overwriting the recorded outcome with failure. A runner cancel a finished remote task still owes is indexed and sent at the next startup from its storage root, without waiting for the project to rebind; the pass merges its outcome under the task's write lock so a concurrent replay cannot restore an already-delivered owner-cancellation notice.
OpenCode 2: a background bash_watch wakes its agent when the pattern matches, including a match found after a missed notification. Watches are acknowledged per match offset so one watch cannot consume a sibling's pending match, delivery is bounded by an overflow cap, and retries use a bounded backoff when the host refuses standalone wakes. Confirmed wakes retire behind a durable replay fence, a linked-worktree restart recovers undelivered matches and completions from the tool root, and a closing Location cannot ACK away an undelivered wake. Standalone completions and matches for a deleted session are acknowledged and dropped without creating session state. SubC consumers keep their own acknowledgement retry path.
Bug Fixes and Refactors
A managed git hook no longer hangs a commit when a helper process it spawns keeps running.
Reduces applicability walk discovery cost by resolving the registry once per walk and caching per-directory server selection, workspace roots, and Biome configuration; a debug assertion refuses a verbatim Windows root in the uncached walk.
Worker checkouts bind faster during cache cleanup; each publication leader owns a pending marker through sweep admission and durable publication, and cache marking, metadata rereads, and retirement batches yield to pending binds.
With index views on, a call graph reflects an edit within seconds instead of waiting for an unrelated maintenance timer.
Background runon launches return their task ID without waiting for remote admission, so a busy runner cannot hide a job behind a launch timeout; cancellation before acceptance reports plainly that whether the job ran is unknown, never a falsely confirmed stop.
Standalone OpenCode 2 completion wakes are restored: the drain reply check required a session_id the daemon never sends, so pushed completions never woke their session. Entries now use the drain's session, and an entry naming another session is refused.
Retention bind and applicability test hooks (including the cache-cap test) now use the product's normalized roots, fixing macOS and Windows test timeouts, and route-bind database test deadlines align with the product's own timeouts.
Confidence Score: 5/5
The changes since the previous review appear safe to merge.
Summary
This PR improves checkout discovery, cache cleanup, background task cancellation, and OpenCode 2 background notifications.
Owners can stop bash tasks for a scope without revoking it.
Background runon replies return before a runner accepts the job.
OpenCode 2 wakes for watch matches and recovered task completions.
Worker checkouts can connect while cache cleanup is running.
Applicability walks reuse language-server choices across files.
Managed Git hooks stop waiting on helper processes that stay open.
Due index views publish without waiting for unrelated maintenance.
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Cancel remote task] --> B{Job ID known?}
B -->|Yes| C[Send exec.cancel]
B -->|No| D[Withdraw active submission]
D --> E[Report whether it ran as unknown]
C --> F[Save cancellation result]
F --> G{Cancel still owed after restart?}
G -->|Yes| H[Retry saved cancellation]