[P1] Make production static-load errors fail CI #136

Closed
opened 2026-08-20 21:28:57 +00:00 by lost-rob0t · 0 comments
lost-rob0t commented 2026-08-20 21:28:57 +00:00 (Migrated from github.com)

Problem

The deterministic CI gate can report green while SWI-Prolog emits a real production-module load error.

Observed in CI run 32418769221, deterministic job 96585895206, during test/load_all.pl:

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

The static-load step still completed successfully and the overall deterministic job went green. This makes the merge oracle unsound: a production compile/load error can be present on an exact head while the required gate says success.

The current source also contains the triggering shape in refresh_observation_sources/6, where Config.source_refresher is passed directly as the closure argument to call/6. Other dynamic handlers in the same module first bind the dict field to a variable before call/N.

Required behavior

  1. All production modules loaded by test/load_all.pl must load without SWI ERROR diagnostics.
  2. The rlm_spec_workflow source-refresher meta-call must compile cleanly on the repository's supported SWI runtime while preserving the same trusted callback semantics.
  3. The static-load gate must return non-zero for a deterministic fixture that produces a load/compile error. Do not rely only on log text or human inspection.
  4. A production module load error must fail the GitHub Actions deterministic job and therefore block merge.
  5. Existing deterministic PlUnit, benchmark/conformance, deep-recursion, persistence/restart, CLI smoke, Tree-sitter, and live OpenRouter gates must remain green after the repair.

Non-goals

  • no weakening or silencing of SWI diagnostics;
  • no || true, swallowed exceptions, or log-grep-only fake validation;
  • no redesign of Spec/Plan/Execute/Verify semantics beyond the narrow callback compile fix and load-gate hardening.

Evidence

  • prolog/rlm_spec_workflow.pl currently calls Config.source_refresher directly as a higher-arity closure.
  • test/load_all.pl is the canonical production static-load smoke and currently reaches rlm_spec_workflow_ready/0 even after the loader has emitted the compile error.
  • No existing open issue matched rlm_spec_workflow, load_all, or the exact SWI meta-argument error when searched before filing.
## Problem The deterministic CI gate can report green while SWI-Prolog emits a real production-module load error. Observed in CI run `32418769221`, deterministic job `96585895206`, during `test/load_all.pl`: ```text ERROR: .../prolog/rlm_spec_workflow.pl:224: ERROR: Functions are not (yet) supported for meta-arguments of type 5 ``` The static-load step still completed successfully and the overall deterministic job went green. This makes the merge oracle unsound: a production compile/load error can be present on an exact head while the required gate says success. The current source also contains the triggering shape in `refresh_observation_sources/6`, where `Config.source_refresher` is passed directly as the closure argument to `call/6`. Other dynamic handlers in the same module first bind the dict field to a variable before `call/N`. ## Required behavior 1. All production modules loaded by `test/load_all.pl` must load without SWI `ERROR` diagnostics. 2. The `rlm_spec_workflow` source-refresher meta-call must compile cleanly on the repository's supported SWI runtime while preserving the same trusted callback semantics. 3. The static-load gate must return non-zero for a deterministic fixture that produces a load/compile error. Do not rely only on log text or human inspection. 4. A production module load error must fail the GitHub Actions deterministic job and therefore block merge. 5. Existing deterministic PlUnit, benchmark/conformance, deep-recursion, persistence/restart, CLI smoke, Tree-sitter, and live OpenRouter gates must remain green after the repair. ## Non-goals - no weakening or silencing of SWI diagnostics; - no `|| true`, swallowed exceptions, or log-grep-only fake validation; - no redesign of Spec/Plan/Execute/Verify semantics beyond the narrow callback compile fix and load-gate hardening. ## Evidence - `prolog/rlm_spec_workflow.pl` currently calls `Config.source_refresher` directly as a higher-arity closure. - `test/load_all.pl` is the canonical production static-load smoke and currently reaches `rlm_spec_workflow_ready/0` even after the loader has emitted the compile error. - No existing open issue matched `rlm_spec_workflow`, `load_all`, or the exact SWI meta-argument error when searched before filing.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nsaspy/prolog-rlm#136
No description provided.