reference
Living

workspace binding

The isolated git worktree a spawned worker actually edits files in — its pen — and the liveness check built on top of it: whether the worker's on-disk fingerprint has moved recently, not whether it happened to call a tool.

A worker mid a long test run can go quiet on the tool wire for the entire run. #13062 caught the dashboard reading that quiet as a stall: 17 minutes of MCP silence beside a pen that had changed a minute earlier. #13065 fixed which signal leads: the pen, whenever one exists, with tool-call silence demoted to the fallback for lanes that have none.

§01 · the pen

A pen is real git state.

A workspace here has one specific meaning: the isolated git worktree a spawned worker actually edits files in. Every worker gets its own, running its own git history in its own directory. Vinculum calls it a pen.

A pen accumulates ordinary git facts as work happens: files changed, lines inserted, lines deleted, a timestamp for the most recent change. None of that depends on the worker calling a tool or reporting in. It's just what git already tracks, read off the worktree the worker is sitting in.

§02 · the bug

17 minutes of silence, a pen one minute old.

On the night behind #13062, a worker was 4,765 tests into a suite and had made no MCP tool call in about 17 minutes. The dashboard's stalled flag read true, computed from that silence alone.

The worker's pen told a different story: 4 files changed, 160 insertions, 69 deletions, the most recent edit one minute before the check. The finding's own framing was blunt: "stalled measures MCP silence; the pen measures work." The worker had been busy the entire 17 minutes; it hadn't called a tool because a suite that size doesn't need one until it finishes.

§03 · the fix

Liveness moved to the pen.

The fix that followed, #13065, changes which signal leads. Where a pen exists, its on-disk fingerprint decides whether a worker is stalled — not the worker's tool-call cadence.

For lanes with no pen — read-only research workers that inspect the graph without ever touching a worktree — MCP silence keeps doing the job it did before: the only signal available, because there's no on-disk fingerprint to check instead.

§04 · the receipt

The incident and the fix, in numbers.

The incident is #13062: a worker mid a 4,765-test run, 17 minutes of MCP silence, a pen showing 4 files changed, 160 insertions, 69 deletions, one minute old. The fix is #13065: liveness derived from the pen whenever one exists, MCP silence demoted to the pen-less fallback.

What was measuredThe number
MCP tool-call silenceAbout 17 minutes with no tool call, while the worker ran a 4,765-test suite.
pen state at the same moment4 files changed, 160 insertions, 69 deletions, most recent change 1 minute before the check.
fix shippedLiveness now derives from the pen whenever one exists; MCP silence demoted to the fallback for pen-less lanes.
sourceVinculum substrate entries #13062, #13065
§05 · common questions

Common questions.

What's a pen?

A pen is the isolated git worktree a spawned worker actually edits files in — real git state: files changed, lines inserted and deleted, a timestamp for the most recent change. It's evidence a tool-call log can't provide on its own.

Why not just watch MCP tool calls?

Tool-call cadence is a legitimate signal. It's just the wrong one for measuring whether a worker is producing output right now: a worker running a long test suite can go quiet on the tool wire for the whole run, because there's nothing to call a tool about until the suite finishes. #13062 is that exact case — 17 minutes of silence, a pen that had changed a minute earlier.

What happens to a worker that's actually stuck?

For a worker with no pen — a read-only research lane that never touches a worktree — MCP silence is still the signal, exactly as it was before the fix: no on-disk fingerprint means no pen check to run, so tool-call cadence is the only evidence available. A worker with a pen is judged by that pen instead.

see also

Related entries.

architectureworkspace binding
watching it happen1
the dashboard