[P0] Propagate permanent RLM operator context to internal model requests #200
Labels
No labels
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/prolog-rlm#200
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?
Parent/design authority: #183
Related provider-surface gate: #176
Starting main:
2ceba4c0f4a64e95233849a92def6e4fbf95b8b7Deterministic regression evidence
Current
rlm_completion/4compiles the default RLM operating skills and injects them into the root planner request as one system message. After the planner returns a typed plan, however,completion_after_recursive_validation/...constructsplan_run/5runtime options containing providers, tools, context options, and budget only.Current
rlm_planthen executes everymodel(...)step by constructing a fresh provider request with exactly one user message:Therefore an RLM-internal model/leaf request — including one nested below
rlm(...),parallel(...), orretry(...)— does not inherit the permanent operating skills that #183 requires throughout an RLM/agent run.This is not a new architecture decision. #183 explicitly approves permanent provider-visible context across root planner, recursive/subagent, internal model/leaf, and repair/retry requests while leaving raw standalone LM calls raw.
RAGE / TDD contract
Analyze
The missing seam is host-owned runtime projection from
rlm_completionintorlm_plan; the skill compiler itself already produces the bounded system message correctly. Recompiling skills independently insiderlm_planwould create a second policy path and is rejected.Design
Carry the already-compiled permanent provider message(s) as a host-owned
rlm_planruntime option. Internalmodel(...)execution prepends those messages to its one user prompt. Nested RLM, parallel, and retry execution already reuse the same immutable Runtime value, so they inherit the projection without a second compiler or per-node re-selection.Raw
llm_query/3remains unchanged. Empty/disabled skill projection yields the current single-user-message request. Runtime message projection changes visibility only; it grants no capabilities, handlers, authority, or effects.Adversarial review
The implementation must prove:
rlm(...)inherits the same permanent context;skill_mode(off)removes permanent instructions from internal model requests;llm_query/3remains a single user message;Decision gate
GO. This slice is inside the explicitly approved #183 architecture. If implementation requires a second compiler, model-controlled provider prefix, capability widening, or any materially different permanent-context ownership model, stop and return to #183 design review.
Acceptance
skill_mode(off)propagates to internal model requests.llm_query/3remains unchanged.Non-goals