MRP-VM uses SOP Lang Control as a selective control membrane. It is not a universal representation for all knowledge. The runtime only formalizes control-critical objects: intents, seeds, KU metadata shells, and a few related runtime descriptors. See DS004, DS005, DS007, and DS031.
Intent CNL describes what the user wants plus the initial seeds that the engine may execute. Each intent is created with an intent constructor and refined through set statements.
@i1 intent compare "BM25 and dense retrieval for CPU-only deployment"
@i2 set $i1 context "The deployment budget is CPU only"
@i3 set $i1 criterion "Latency and memory use"
@i4 set $i1 output comparative_recommendation
@s1 seed $i1 explore locate "retrieval tradeoffs"
@s2 set $s1 domain retrieval
@s3 set $s1 evidenceNeed structural
@s4 set $s1 state active
| Semantic field | Required | SOP representation |
|---|---|---|
Act | Yes | intent <act> "<target>" |
Intent | Yes | intent <act> "<target>" |
Context | No | set $intent context "..." |
Criterion | No | set $intent criterion "..." |
Evidence | No | set $intent evidence "..." |
Output | Yes | set $intent output <atom> |
Context CNL serializes the metadata shell of a Knowledge Unit. The KU body may remain in rich natural language elsewhere; only the routing shell is normalized here.
@k1 ku atomic "src-001::chunk-000::unit-000"
@k2 set $k1 sourceId src-001
@k3 set $k1 chunkId src-001::chunk-000
@k4 set $k1 role Comparison
@k5 set $k1 topic "retrieval strategy tradeoffs"
@k6 set $k1 claim "BM25 usually has lower CPU cost than dense retrieval."
@k7 set $k1 utilityActs [compare recommend]
@k8 set $k1 phaseScopes [kb-plugin gs-plugin]
| Field | Required | SOP representation |
|---|---|---|
KUType | Yes | ku <atomic|composite|aggregate> "<kuId>" |
SourceId | Yes | set $ku sourceId ... |
ChunkId | Yes | set $ku chunkId ... |
Role | Yes | set $ku role ... |
Topic | Yes | set $ku topic "..." |
Claim | Yes* | set $ku claim "..." |
Procedure | Yes* | set $ku procedure "..." |
UtilityActs | No | set $ku utilityActs [..] |
PhaseScopes | No | set $ku phaseScopes [..] |
Hash | No | set $ku hash ... |
*claim is required unless the role is Procedure. procedure is required only for procedural KUs. The two are mutually exclusive.
The parser/validator layer is fully deterministic. It checks constructor signatures, reference syntax, required fields, enum values, list syntax, and semantic conflicts such as a KU carrying both claim and procedure.