cyberine
UsageRun recipes

Verify-error steering — test-runner output as navigation index (T447)

T447 extends the T436 feedback loop to test-runner and stack-trace output (the STEER act). When a loop-adapter worker produces verify output — a codeexecution snippet that shells out to npm test,...

T447 extends the T436 feedback loop to test-runner and stack-trace output (the STEER act). When a loop-adapter worker produces verify output — a code_execution snippet that shells out to npm test, vitest, or tsc, or an allow-listed run_bash command that emits a parseable tuple — the adapter parses that output for {file, line, error} tuples and injects a steering message listing the named source files, before the next model turn. The worker receives the error locations as "read these before editing", converging on a verified edit in fewer iterations.

run_bash cannot run a verify command, and that is deliberate. Its allow-list is inspection-only (ls cat head tail wc echo pwd true sort uniq grep plus read-only/staging git); every interpreter is excluded, and kvz3j ratified keeping them out on 2026-08-28 — see "Why run_bash will never run a build" below. Until 2026-08-28 the steering's tool set named run_bash alone, so this feature was wired to a surface that could not produce its input; code_execution is now in the set.

Supported output formats: tsc path(line,col): error TSxxxx: msg (format A), tsc path:line:col - error TSxxxx: msg (format B), Jest/Vitest failure block stack frames (at ... (file:line:col)), and plain Node.js stack traces (absolute paths, excluding node_modules).

Gated on the same CYBERINE_DIAG_FEEDBACK toggle as T436 — no extra env var needed:

# Enable both LSP/compiler feedback (T436) and test-runner steering (T447) together
CYBERINE_DIAG_FEEDBACK=1 CYBERINE_BUILD_FLEET="loop-deepseek-build" \
  npm run wf -- src/engine/implementTaskWorkflow.ts

The steering message emitted to the TUI peek view reads [steer: N error file(s) surfaced]. The injection is bounded by CYBERINE_DIAG_FEEDBACK_MAX_ERRORS (default 10) so test-runner output with many failures cannot flood context. Only local source files are surfaced; node_modules paths are always excluded.