[P1] Add closed project-op plan vocabulary and plan dependency-graph executor #454
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#454
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?
Goal
Harden the existing SPEC/PLAN separation and add the missing long-horizon execution layer:
sync_remote/1,index/1,search/2,locate/1,read/1,diff/2,edit/2,create/2,delete/1,run/1,validate/1,delegate/2) as inert data constructors that compile into the existingrlm_planclosed-AST world: each validated step executes throughrlm_planas[tool(Op, literal(Args), Bind), final(var(Bind))]—rlm_planremains the only step executor; no second plan interpreter, no second scheduler.step/2+depends_on/2facts compiled into a validated acyclic graph; runtime decides executability viaready_step/1semantics (all dependencies completed), with failed/blocked dependency propagation as structured outcomes. LLM proposes the graph; Prolog decides what is executable; expert KB (host expert registry) decides who executes — except the D6-11 plan-native deterministic set (sync_remote/1,run/1,index/1,delete/1), which executes at the plan layer and is excluded from expert mapping; capability system decides whether; SPEC validator decides acceptability.symbol_ref/source_spandata terms plus a bounded resolver over host-supplied index facts, consumed bylocate/1,diff/2,edit/2. Language independence: plans speaksymbol(foo), notpythonFunction(foo).Current execution truth (evidence)
prolog/rlm_plan.pl: closed AST opscontext/3, model/4, rlm/2, tool/3, spawn_agent/3, parallel/2, retry/3, checkpoint/1, final/1; whole-plan validation before side effects; host tool registry + preflight; budgets.prolog/rlm_spec_lang.pl+prolog/rlm_spec.pl+prolog/rlm_verify.pl: closed SPEC authoring, validation, freeze, verify.prolog/rlm_spec_workflow.pl: spec_plan_bind binds plans to frozen Spec fingerprints; repair loop overrlm_graph.prolog/rlm_project_source.pl: Project/File/Language/grammar registry (#95); syntax/symbol layers (#96-#99) still open.Invariants
plan_graph_run_async/4submits ONE execute predicate torlm_async; the ready-step loop runs inside that worker callingrlm_planexecute ABIs directly (no nested Future waits); the synchronous facade awaits the same Future.tool(Op)(closedcapability_shape/1grammar;plan_op(...)is invalid today).plan_result.budget_remainingfeed-forward.error(rlm_cancelled(Token), _)aborts the graph and rethrows; no further step executes; no re-submission.rlm_tool:capabilities_narrow/3/ spawn path.sync_remote,edit,create,delete,runin real use) must route through the durable effect boundary with trusted adapter/attempt identity; this slice adds no new external-effect path (shipped handlers are pure host closures). Per D6-11 (docs/research/spec-plan-authority.md§6.3), the plan-native deterministic set (sync_remote/1,run/1,index/1,delete/1) executes at the plan layer through the canonical boundary — schema → capability → authority → durable effect admission → dispatch → observe — exactly like atool/3step, and is excluded from expert mapping and the future expert registry;edit/2/create/2remain write-expert-owned (§8.3).abandonedis terminal state, never retry authorization.Non-goals
Acceptance criteria
docs/plan-graph-runtime.md+ typed-plans/spec-verify cross-links + roadmap reconciliation if AgentProlog readiness changes.Review evidence
Adversarial subprocess review of
research/RLM-RESEARCH-027-spec-plan-graph-executor.org: verdict sound-with-changes; reportrage/288-review-research-report.md; required changes folded into the research record and this issue body.Refs #93 #71 #176
nsaspy referenced this issue2026-09-10 21:20:54 +00:00
Duplicate of #293 (pre-existing Forgejo mirror). Closing this accidental duplicate created by today's open-state sync; #293 stays canonical on Forgejo.