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.
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.
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.
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 measured | The number |
|---|---|
| MCP tool-call silence | About 17 minutes with no tool call, while the worker ran a 4,765-test suite. |
| pen state at the same moment | 4 files changed, 160 insertions, 69 deletions, most recent change 1 minute before the check. |
| fix shipped | Liveness now derives from the pen whenever one exists; MCP silence demoted to the fallback for pen-less lanes. |
| source | Vinculum substrate entries #13062, #13065 |
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.