Reported by builder pir-272 while completing the REFRESH tail for #272, 2026-08-31.
What happens
Running the spec 250 evidence collectors needs two things that are not obvious:
T3_NODE must point at a Node 22 binary.
- Port 3799 is held by the main workspace's pinned harness, so a second run needs
T3_HARNESS_PORT set elsewhere. 272 used 3809.
Without either, the tools exit 3 with NO_INTERPRETER. The builder's words: it "reads like a failure and is not one".
Why it matters
The project already treats this shape as a defect: "I could not tell" must never be spelled the same way as "no". An exit 3 from a missing interpreter and an exit 3 from a real problem are the same signal to anyone reading a log or a CI summary, so a run that never happened is indistinguishable from a run that happened and went badly.
The port collision compounds it. Two workspaces on one machine is the normal case here, not an edge case, and the second one fails in a way that names the interpreter rather than the port.
What would close this
- Distinct exit codes, or distinct signal strings, for "no usable interpreter", "port already held", and a genuine failure. Each must be unambiguous on its own.
- The port message should name the holder, or at least name
T3_HARNESS_PORT as the knob, so the reader does not have to know that 3799 belongs to the main workspace.
- The Node 22 requirement should appear where the failure appears, not only in a runbook.
Related
#263 covers harness port and runtime dir being shared process-global state. This issue is about the diagnosis being wrong when that sharing bites, which stands whether or not #263 changes the sharing.
Reported by builder
pir-272while completing the REFRESH tail for #272, 2026-08-31.What happens
Running the spec 250 evidence collectors needs two things that are not obvious:
T3_NODEmust point at a Node 22 binary.T3_HARNESS_PORTset elsewhere. 272 used 3809.Without either, the tools exit
3withNO_INTERPRETER. The builder's words: it "reads like a failure and is not one".Why it matters
The project already treats this shape as a defect: "I could not tell" must never be spelled the same way as "no". An exit 3 from a missing interpreter and an exit 3 from a real problem are the same signal to anyone reading a log or a CI summary, so a run that never happened is indistinguishable from a run that happened and went badly.
The port collision compounds it. Two workspaces on one machine is the normal case here, not an edge case, and the second one fails in a way that names the interpreter rather than the port.
What would close this
T3_HARNESS_PORTas the knob, so the reader does not have to know that 3799 belongs to the main workspace.Related
#263 covers harness port and runtime dir being shared process-global state. This issue is about the diagnosis being wrong when that sharing bites, which stands whether or not #263 changes the sharing.