[P1] Move concrete project tools into in-repo standard tool packages #49
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/prolog-rlm#49
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
Move concrete project/file/code-agent tools out of the
prolog-rlmcore runtime module set into separately loadable tool packages while keeping the core registry, loader, capability, authority, async, cancellation, and effect contracts unchanged.Repository placement decision: the standard tool packages are maintained in the same
lost-rob0t/prolog-rlmGit repository by default. “External” means external to the core runtime dependency graph / separately loadable, not “must live in another Git repository.” Third-party tool packs may still live in other repositories and use the same public loader ABI.Suggested in-repo shape (exact directory/package naming may follow implementation evidence):
This keeps one checkout, one issue tracker, one CI/version graph, and one release surface while preserving the architectural rule that core does not import or require the concrete production tool catalog.
First migration
The existing
project_readimplementation is the first concrete tool to extract from the core runtime module set into the in-repo standard tool area.Acceptance criteria
prolog-rlmcore runtime modules no longer own the concrete productionproject_readimplementation.project_readis supplied by a separately loadable standard tool package maintained in this repository by default and registered through the public tool-loading boundary.Non-goals
prolog-rlmcore into a batteries-included coding-agent runtime.Architectural intent
Post-#72 live-state audit confirms #49 is now the smallest coherent external-tool follow-on from canonical
main7b527750a64d5cbd9fff79413a399a8c69e90c75.Current concrete ownership is still exactly in core:
prolog/rlm_tool.plexportsregister_project_read_tool/4and contains theproject_readschema, confinement preflight, handler, root/path normalization, traversal rejection, symlink-component rejection, byte-limit handling, and project-root containment helpers.test/rlm_tool_test.plstill directly registers that core concrete implementation for success, confinement, and typed-plan coverage.The loader boundary needed for extraction is now mature: trusted multifile pack + sanitized manifest, deterministic category loading/idempotency/conflict preflight, capability separation, authority separation, and inert MCP behavior are on
main. The next acceptance should therefore extract onlyproject_readthrough a separately loadable filesystem pack/companion-library path while keeping generic registry/preflight/schema/authority machinery in core.Preserve the exact existing safety behavior during migration: project-root confinement, traversal/backslash/NUL rejection, symlink-component rejection, regular-file/readability checks, byte and wall-time bounds, schema validation, tracing, capability gating, and normalized authority effect identity. Do not use this slice to add
project_search, Git/process/network tools, or the rest of #50.Closing as superseded by the canonical product boundary in #141. Concrete coding/project filesystem/Git/process/test tool packs are product/downstream ownership in
lost-rob0t/agentProlog;prolog-rlmshould keep only reusable generic runtime/tool contracts. Future expert-system work may reason over typed host-supplied capabilities without moving concrete coding tools back into core.