`src/curiocity/src/evaluators/command.ts` calls `ctx.exec(p.run, {shell:true, cwd, reject:false, all:true})` with no timeout option, so a hanging build/test/lint command (typically `gate:true`) blocks the trial's evaluate step indefinitely. The sibling `external` evaluator (`src/curiocity/src/evaluators/external.ts`) already has a configurable `timeoutSec` (default 60s) passed to execa with explicit timeout handling via `res.timedOut`. Add the same optional `timeoutSec` param to `command`'s schema and pass it through.
`src/curiocity/src/evaluators/command.ts` calls `ctx.exec(p.run, {shell:true, cwd, reject:false, all:true})` with no timeout option, so a hanging build/test/lint command (typically `gate:true`) blocks the trial's evaluate step indefinitely. The sibling `external` evaluator (`src/curiocity/src/evaluators/external.ts`) already has a configurable `timeoutSec` (default 60s) passed to execa with explicit timeout handling via `res.timedOut`. Add the same optional `timeoutSec` param to `command`'s schema and pass it through.