prolog-rlm flake pin predates rlm_direct/4: direct-mode dispatch fails with existence_error(procedure, rlm:rlm_direct/4) #118
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/a0-symbolics#118
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
The
directlane of the_prolog_rlmplugin crashes with an existence error:runtime_worker.pldispatchesrlm:rlm_direct(Prompt, text(Context), Options, Outcome), but the flake-pinned prolog-rlm revision (2e1264d8, Aug 27) predates the provider-native direct runtime (rlm_direct/4landed Aug 28 in f7d93e6f). Everydirect-mode turn through the core-loop proxy raisesexistence_error(procedure, rlm:rlm_direct/4)insidedispatch/3, which surfaces as aRuntimeFailureand aborts the agent's model turn. The plugin had to be disabled to keep the agent running.Environment
bba5dcbaplugins/_prolog_rlm/helpers/loop.py(core-loop proxy, direct mode)Repro
main, noteflake.nixpinsprolog-rlmto 2e1264d8; the built pack'sprolog/rlm.plexports norlm_direct/4(confirmed:grep -c rlm_direct→ 0 in the store path thatactivate_prolog_rlmgcroots and exports viaSWIPL_PACK_PATH).directrequest:echo '{"request_id":"t2","action":"direct","arguments":{"prompt":"2+2","context":{"text":"x"},"budget":{"max_total_tokens":256}}}' | swipl -q -f plugins/_prolog_rlm/prolog/runtime_worker.plRuntimeFailure: dispatch/3: Unknown procedure: rlm:rlm_direct/4: error(existence_error(procedure,rlm:rlm_direct/4),context(dispatch/3,_246)).Expected / Actual
Expected: the pinned runtime revision satisfies every procedure the plugin worker dispatches (
rlm_direct/4for direct,rlm_completion/4for symbolic); a missing runtime capability should fail as a typed envelope, not abort the turn.Actual: the pin predates
rlm_direct/4;dispatch(direct, ...)raiseserror(existence_error(procedure, rlm:rlm_direct/4), context(dispatch/3, _)).Evidence
feat: add provider-native direct runtimef7d93e6f / d87c467b (2026-08-28 03:18), which is whererlm_direct/4entersprolog/rlm.plexports.e1ed6c2b(origin/main, 2026-09-05):rlm_direct/4present (7 occurrences inrlm.pl), workerstatusaction respondsok:true, and the pack builds cleanly under the symbolics nix setup.SWIPL_PACK_PATH=/nix/store/s1d81w1...-prolog-rlm-0.1.0/share/swi-prolog/pack(identical to the pinned source, norlm_direct).Fix direction
Bump the flake pin to a prolog-rlm revision containing the provider-native direct runtime (verified against
e1ed6c2b5f717d9bb380fcf22d144737299197f8), and consider a smoke test asserting the worker'sstatusresult lists the surfaces the plugin dispatch table depends on, so pin/runtime skew fails in CI instead of in a live agent turn.Fix pushed to the Forgejo repo: PR nsaspy/a0-symbolics#117 (
fix/prolog-rlm-pin-rlm_direct, commit17dc77c9) bumps the flake pin toe1ed6c2b.Verified on the branch:
rlm_direct/4(7 refs inprolog/rlm.pl)statusaction respondsok:truewith the full surface list