Skip to content

0.40.0 — No host-wide Watson lock, and a commit carve-out scoped to the dispatched process

Choose a tag to compare

@mikebronner mikebronner released this 04 Sep 18:18
· 39 commits to main since this release

🔒 What changed

The host-wide /tmp/watson.lock mutex is gone. Watson runs are no longer serialized against each other on a machine.

The commit-approval carve-out now rides on WORKBENCH_DEV_TEAM_PIPELINE=1, exported by bin/dispatch-agent.sh onto the process it spawns.

⚠️ This makes the commit gate stricter, not looser

A live-PID lock file answered "is a pipeline running on this host?". It never answered "is this process the pipeline?".

A scheduled run therefore waived commit approval for every concurrent interactive session on the machine. That leak once let four unapproved commits land across two interactive Watsons.

An inherited environment variable cannot reach a session the dispatcher did not spawn. The hole closes.

🪤 One trap recorded in the gate itself

agent_type in the hook payload cannot stand in for the lock. It is present for a scheduled claude -p --agent watson and for an interactively dispatched one alike. Using it would reopen the same hole.

🐛 A collision the lock had been masking

/tmp/watson-42 served repo-a#42 and repo-b#42 alike, and cleanup opens with rm -rf. The clone path is now keyed by repo as well as issue.

📝 Also

The orchestrate skill now describes the delegation gate shipped in workbench-core. It no longer tells the main agent to edit files inline.

🔧 After updating

Re-run /workbench-dev-team:setup. Three copies go stale on this release: the installed ~/.claude-workbench/bin/dispatch-agent.sh, the Dispatch scheduled-task prompt, and the warmup text in ~/.claude/CLAUDE.md.

Nothing breaks before the re-run. The old script and the old gate work together, so they only need to move together.

🧪 Testing

166 tests pass across six suites. shellcheck -x is clean.

Mutation-verified rather than assumed. Deleting the export reddens 5 cases. Restoring the lock check reddens 1. Loosening the equality test reddens 3.