Makes tests/run-godot self-containing so neither humans nor LLM callers
have to remember to wrap it in a timeout or pipe it into a file. A hung
test now kills cleanly at 300s with a clear TEST_TIMEOUT marker and
bisection hint instead of silently burning an hour of wall clock (as
Sprint 36 learned).
- Godot+gdUnit4 output goes to /tmp/sr-run-godot.log (overwritten each
run). Nothing streams to stdout/stderr — 20k+ lines of test log into
a terminal or an LLM context is unworkable.
- Stdout: one-line JSON summary, with a "log" field pointing at the
file. On timeout adds "timeout":true and "timeout_sec":300.
- Stderr: a short hint block. On pass: one line. On failure: three
commands to inspect the log. On timeout: a bisection recipe.
- Single well-known path instead of an env var — worktrees each want
their own value and the indirection makes the hint lines meaningless.
Concurrent runs are the caller's problem.
- timeout(1) --foreground --kill-after=10 to escalate to SIGKILL if
Godot ignores SIGTERM.