# LDC-E8201 — Verbalization gap in the template pack ## What it means A review document renders every approved block through a template pack, and the pack must have a phrase for everything the block contains. When the pack has no wording for a construct, the renderer leaves an explicit gap marker in the text instead of guessing. A block that carries such a marker cannot be approved above draft: signing it would sign a text with its meaning hidden. Complete the pack so the construct renders, or keep the approval at draft until the wording exists. Draft approvals accept gaps; anything above draft does not. ## Example ```run {"argv": ["approve", "$ROOT/ir.json", "urn:demo:diagnostics#Duty", "--reviewer", "urn:person:reviewer", "--at", "2026-01-02T03:04:05Z", "--pack", "$ROOT/pack.json", "--status", "approved"], "files": {"ir.json": "{\"nodes\": [{\"id\": \"urn:demo:diagnostics#Duty\", \"kind\": \"rule\", \"package\": \"urn:demo:diagnostics\"}], \"package\": {\"name\": \"demo.diagnostics\", \"namespace\": \"urn:demo:diagnostics\", \"version\": \"0.1.0\"}, \"semanticHash\": \"sha256:0000000000000000000000000000000000000000000000000000000000000000\"}", "pack.json": "{\"coveredNodeKinds\": [], \"disclaimer\": \"probe\", \"formatVersion\": \"law.verb/0.1\", \"language\": \"en\", \"name\": \"probe.pack\", \"phrases\": {\"doc.disclaimer_title\": \"Disclaimer\", \"doc.node_id\": \"Identifier {id}\", \"doc.pack_line\": \"Pack {pack} {version} {language} {semantic_hash}\", \"doc.title\": \"Package {package} {version}\", \"gap\": \"[unverbalized: {what}]\"}, \"version\": \"0.1.0\"}"}, "expect": "LDC-E8201"} ``` ## Fix ```run {"argv": ["approve", "$ROOT/ir.json", "urn:demo:diagnostics#Duty", "--reviewer", "urn:person:reviewer", "--at", "2026-01-02T03:04:05Z", "--pack", "$ROOT/pack.json", "--status", "draft"], "files": {"ir.json": "{\"nodes\": [{\"id\": \"urn:demo:diagnostics#Duty\", \"kind\": \"rule\", \"package\": \"urn:demo:diagnostics\"}], \"package\": {\"name\": \"demo.diagnostics\", \"namespace\": \"urn:demo:diagnostics\", \"version\": \"0.1.0\"}, \"semanticHash\": \"sha256:0000000000000000000000000000000000000000000000000000000000000000\"}", "pack.json": "{\"coveredNodeKinds\": [], \"disclaimer\": \"probe\", \"formatVersion\": \"law.verb/0.1\", \"language\": \"en\", \"name\": \"probe.pack\", \"phrases\": {\"doc.disclaimer_title\": \"Disclaimer\", \"doc.node_id\": \"Identifier {id}\", \"doc.pack_line\": \"Pack {pack} {version} {language} {semantic_hash}\", \"doc.title\": \"Package {package} {version}\", \"gap\": \"[unverbalized: {what}]\"}, \"version\": \"0.1.0\"}"}, "expect": null} ``` ## Engine message The review tooling reports this in its own wording: ```text block 'urn:demo:diagnostics#Duty' contains 1 ⟦не вербализуется⟧ marker(s) (LDC-E8201): a status above draft is not allowed (LS §3.3) ``` ## Related - [LDC-E8202](/diagnostics/LDC-E8202/) — the neighbouring review refusal.