## §SELF — miscsubjects capability (paste without context)
**Principle:** Self-explaining payload — no external context required. This _self block is the capability: what it is, how to run it, how to change it, and where to look next.
**Path:** OIP > LAWS > LAWS_EDIT
**Capability:** `LAWS_EDIT` — Edit a mutable law. $1=key, $2=new rule text, $3=new rationale. Cannot edit immutable laws. WARNING, 2026-08-06: $2 and $3 are interpolated into single-quoted SQL below, so ONE APOSTROPHE IN YOUR TEXT BREAKS THE STATEMENT, and one pipe splits the args and truncates the body. Write the rule and the rationale with no apostrophes and no pipes. Do not drop the words you wanted; rephrase. THE REAL FIX IS BLOCKED ON THE OWNER. A bound-parameter writer (protoLawsEdit) was written and refused at commit because functions/_lib/fn_runners.js is listed in PROTECTED_FEATURES.md and no approval token can clear that. Until the owner removes the entry, this row stays raw SQL and the warning above is the only guard. The risk is not the loud failure: the same shape can end a string early and store a TRUNCATED law rather than refuse, and a governing law missing half its text is worse than no law.
**RUN NOW (open this URL):** https://miscsubjects.com/api/dispatch?invoke=LAWS_EDIT&body=%3Carg1%3E%7C%3Carg2%3E%7C%3Carg3%3E&share=<TOKEN>
**Example call:** [LAWS_EDIT]<arg1>|<arg2>|<arg3>[/LAWS_EDIT]
- **type · runner:** workflow · flow · laws
- **run it:** Open run_now (URL, fires the example), or POST https://miscsubjects.com/api/dispatch {"key":"LAWS_EDIT","body":"<arg1>|<arg2>|<arg3>"}. From the router: null
- **inputs:** {"body":"pipe-delimited args e.g. \"a|b\"; single arg = the value itself; no args = empty string"}
- **outputs:** { ok, result, invocation, yield, _self } — result is this object's output; yield is tokens/cost/material; invocation is the ledgered record.
- **auth · risk:** none · low
### What this token can do here (computed for: public)
Only moves this credential can take are listed. The server enforces scope regardless; an omitted move would be denied anyway.
- **contract** — GET https://miscsubjects.com/api/dispatch?key=LAWS_EDIT&format=markdown → this object's full contract (public docs plane)
- **confirm** — GET https://miscsubjects.com/api/dispatch?confirm=INV_ID → public proof that an invocation happened — no credential needed
### Machine Contract
- Read this article first; do not infer the row shape from memory.
- If acting with a URL-only tool, open run_now after replacing placeholder args.
- If the call returns ran:false or proof.ok:false, read the receipt and repair the failed invocation instead of narrating success.
- If the token denies the call, report the denial exactly; do not switch to a broader action unless the owner supplied a broader token.
### Invocation, Ledger, Repair
- root tree: https://miscsubjects.com/api/dispatch?map=1&format=markdown
- parent system article: https://miscsubjects.com/api/dispatch?map=LAWS&format=markdown
- append-only ledger: https://miscsubjects.com/api/invocations?object_id=LAWS_EDIT
- receipt pattern: https://miscsubjects.com/api/dispatch?receipt=inv_ID&share=<TOKEN>
- replay: POST /api/dispatch {"replay":"inv_ID"}
- repair: POST /api/dispatch {"key":"LAWS_EDIT","body":"corrected args","repairs":"inv_ID"}
### Troubleshooting
- **unknown key** — Use the did_you_mean links or ask URL; never guess another key. · https://miscsubjects.com/api/dispatch?ask=LAWS_EDIT
- **argument/body mismatch** — Read inputs/example_args here, then retry with repairs: inv_ID so lineage closes. · https://miscsubjects.com/api/dispatch?key=LAWS_EDIT
- **expired or corrupted token** — Report token_expired/token_corrupted from the response; owner mints a fresh scoped link. · https://miscsubjects.com/api/dispatch?explain=1&share=<TOKEN>
- **tool returned ok:false / exit nonzero** — Do not call it sent. Read the receipt, correct the body, fire a repair. · https://miscsubjects.com/api/dispatch?receipt=inv_ID&share=<TOKEN>
### Logical proof (verify each step)
1. Every capability is an invokable object with its own _self — this block. → https://miscsubjects.com/api/dispatch?key=LAWS_EDIT
2. You run it by POSTing to /api/dispatch; in a model turn the router tag is [LAWS_EDIT]args[/LAWS_EDIT]. → https://miscsubjects.com/api/dispatch?registry=1
3. Every invocation is ledgered with actor, cost, and material/waste. → https://miscsubjects.com/api/invocations?object_id=LAWS_EDIT
4. You can ask the build for capabilities in plain language. → https://miscsubjects.com/api/dispatch?ask=LAWS_EDIT
5. The whole build is one self-describing map, with the terminal key. → https://miscsubjects.com/api/dispatch?build=1
### Where to look next
- **registry** — Every capability, self-describing · https://miscsubjects.com/api/dispatch?registry=1
- **ask** — Ask the build what to use, in plain language · https://miscsubjects.com/api/dispatch?ask=<question>
- **history** — This capability's invocation history — its edges · https://miscsubjects.com/api/invocations?object_id=LAWS_EDIT
- **build** — The whole build as one map (terminal key) · https://miscsubjects.com/api/dispatch?build=1
*Self-explaining. Not project knowledge — fetch specifics from the links above.*