Make production static-load errors fail CI #137

Merged
lost-rob0t merged 5 commits from agent/136-static-load-errors-fail-ci into main 2026-08-20 21:38:40 +00:00
lost-rob0t commented 2026-08-20 21:33:50 +00:00 (Migrated from github.com)

Closes #136.

What changed

Production static-load errors now fail the deterministic merge gate instead of printing ERROR and exiting zero.

  • test/load_all.pl enables SWI-Prolog on_error=status before loading production modules and uses halt/0 on the success path, so any reported compile/load error becomes a non-zero process result;
  • rlm_spec_workflow.pl binds Config.source_refresher to a callable variable before call/6, matching the module's existing dynamic-callback pattern and eliminating the supported-SWI meta-argument compile error;
  • an intentionally broken load fixture plus PlUnit child-process regression proves the status policy itself returns non-zero without relying on log grep.

TDD evidence

The first PR head 7927a176d867803ab4a6ddf3c00cfbc32620df1f contained only the fail-closed loader change. Its deterministic job failed exactly at Static load all production modules with:

rlm_spec_workflow.pl:224: Functions are not (yet) supported for meta-arguments of type 5

and SWI exited status 1. Every later deterministic step was skipped. That established the real red checkpoint before the production callback was repaired.

Exact-head validation

Final head: 006596058a4e6b5b4556cb933542a5018e02a594

PASS:

  • supported SWI-Prolog runtime check;
  • production static load with fail-closed error status;
  • live integration test-definition static load;
  • deterministic PlUnit, including the intentionally broken child-load regression;
  • deterministic benchmark/conformance suite;
  • deterministic deep-recursion experiment;
  • credential-free CLI demo/trace smoke;
  • graph persistence/restart verification;
  • durable artifact handoff verification;
  • whitespace check;
  • Tree-sitter FFI;
  • REAL OpenRouter core suite;
  • REAL OpenRouter structured repair suite;
  • REAL OpenRouter benchmark suite;
  • REAL depth 0/1/2 recursion experiment;
  • one-command REAL RLM CLI smoke.

No unresolved issue comments, PR comments, or review threads were present at final review.

Non-goals

No warning suppression, no || true, no swallowed errors, no log-grep-only load validation, and no redesign of Spec/Plan/Execute/Verify semantics.

Closes #136. ## What changed Production static-load errors now fail the deterministic merge gate instead of printing `ERROR` and exiting zero. - `test/load_all.pl` enables SWI-Prolog `on_error=status` before loading production modules and uses `halt/0` on the success path, so any reported compile/load error becomes a non-zero process result; - `rlm_spec_workflow.pl` binds `Config.source_refresher` to a callable variable before `call/6`, matching the module's existing dynamic-callback pattern and eliminating the supported-SWI meta-argument compile error; - an intentionally broken load fixture plus PlUnit child-process regression proves the status policy itself returns non-zero without relying on log grep. ## TDD evidence The first PR head `7927a176d867803ab4a6ddf3c00cfbc32620df1f` contained only the fail-closed loader change. Its deterministic job **failed exactly at `Static load all production modules`** with: `rlm_spec_workflow.pl:224: Functions are not (yet) supported for meta-arguments of type 5` and SWI exited status 1. Every later deterministic step was skipped. That established the real red checkpoint before the production callback was repaired. ## Exact-head validation Final head: `006596058a4e6b5b4556cb933542a5018e02a594` PASS: - supported SWI-Prolog runtime check; - production static load with fail-closed error status; - live integration test-definition static load; - deterministic PlUnit, including the intentionally broken child-load regression; - deterministic benchmark/conformance suite; - deterministic deep-recursion experiment; - credential-free CLI demo/trace smoke; - graph persistence/restart verification; - durable artifact handoff verification; - whitespace check; - Tree-sitter FFI; - REAL OpenRouter core suite; - REAL OpenRouter structured repair suite; - REAL OpenRouter benchmark suite; - REAL depth 0/1/2 recursion experiment; - one-command REAL RLM CLI smoke. No unresolved issue comments, PR comments, or review threads were present at final review. ## Non-goals No warning suppression, no `|| true`, no swallowed errors, no log-grep-only load validation, and no redesign of Spec/Plan/Execute/Verify semantics.
Sign in to join this conversation.
No description provided.