[P1] Add normalized task IR and prompt compilation/rendering APIs #429
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#429
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
Implement the first child slice of #68: represent prompt/workflow intent as normalized inspectable Prolog data, then render standalone model-targeted execution prompts from that IR.
Required model
The source requirement list is not the final prompt. Compile it into a closed IR with fields equivalent in semantics to:
Exact representation may follow repository conventions, but it must be closed, ground, schema-validated, and inspectable.
Public APIs
Add regular public predicates equivalent to:
Where latency-bearing provider-assisted normalization/rendering is supported, follow #54 with canonical async variants and sync wrappers over the same execution path.
Normalization semantics
Model-native rendering
Rendering may adapt wording/structure for a model/provider profile, but profiles are semantic renderers, not magic-trigger-word catalogs.
Profiles may specify things such as:
The canonical TaskIR remains model-neutral.
Fresh-root contract
The rendered prompt must be a standalone execution artifact suitable for a fresh thread/agent. It should not require the exploratory conversation history to recover hard requirements.
Integration
Reuse existing structured outcomes, artifacts, traces, completion/provider APIs, and #54 async rules. Do not build another template engine with hidden global state.
Acceptance
Refs #68 #54 #56
Duplicate of #69 (pre-existing Forgejo mirror with GitHub number parity). Closing this accidental duplicate created by today's open-state sync; #69 stays canonical on Forgejo.