Skip to content

v1.0.7

Choose a tag to compare

@edxeth edxeth released this 04 Jun 08:17

Install:

pi install git:github.com/edxeth/pi-ralph-loop@v1.0.7

Or latest:

pi install git:github.com/edxeth/pi-ralph-loop

πŸ› Bug Fixes

Noisy verification gates no longer block the loop

Refs: da41d1b, 4b087d8

Verification gates (the verification_gates commands Ralph runs before accepting <promise>NEXT</promise> or <promise>COMPLETE</promise>) could be misclassified as failures when a command passed but printed a lot of output. The old runner buffered gate output in memory with a fixed maxBuffer, so a gate that exited 0 while emitting ~20 KB+ of logs hit ENOBUFS and was treated as failing. That rejected NEXT, so no fresh iteration session ever started and the loop appeared to hang until it timed out.

Gate execution now runs in a dedicated child runner that streams stdout/stderr and caps what it keeps incrementally, instead of relying on a single in-memory buffer. A passing-but-chatty gate is now correctly accepted, NEXT advances, and the next iteration session opens as expected. Genuine failures (non-zero exit, timeout, signal) still report a capped, truncated diagnostic so output stays bounded.

πŸ”§ Other Changes

Add direct dev dependency on @earendil-works/pi-tui

Refs: da41d1b

@earendil-works/pi-tui is now declared as a direct dev dependency. It was previously only available transitively through runtime modules that the test suite imports, so this pins it explicitly for a reliable test environment.

Regression coverage for the noisy-gate handoff

Refs: 34d15b5, 172ce39

Added a PI_RALPH_LIVE regression test that reproduces the original symptom: a 2-item bundle driven by a deterministic fake provider (no network) with a gate that passes while emitting ~20 KB of output. It asserts NEXT is accepted (bundle_rejection_count 0), a fresh session opens for iteration 2, and the loop reaches stop_reason: complete. The test also fails fast (~4s) with a diagnostic naming the observed stop_reason and bundle_rejection_count when the handoff regresses, instead of hanging until the 150s timeout.