From 2c2c2fdef610cfcc3798a0996e5371ebb8bf9f35 Mon Sep 17 00:00:00 2001 From: claude Date: Fri, 24 Jul 2026 19:45:27 +0200 Subject: [PATCH] docs(ledger, glossary, guide): the ten-verb grammar, the use seam, open patterns MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit C24: the op-script grammar section is rewritten to the ten verbs — repairing a pre-existing drift on the way (it read "The eight verbs" and omitted the doc op shipped with #316) — with the new use row and the open-pattern reading of input roles; a "Registered-blueprint splice" paragraph records the resolution split (all store I/O CLI-side at DTO conversion; the engine's second injected closure mirrors vocab, the §"Enforcement shift" permission extended to registered-blueprint references); the construction-gates paragraph moves root-role boundness from the holistic finalize list to compile/bootstrap only (#317 comment 4627). C29: the register-seam wording drops "named" — the code gates EVERY nested composite, recon-confirmed pre-existing prose/code mismatch — and the use seam joins the seam list (build-time gate on fetched store content; no retroactive invalidation of existing reads). Glossary: use (op) and blueprint label entries. Authoring guide: ten ops (the stale "nine ops" heading + the input row's obsolete finalize-refusal claim corrected), the use row, and the register --name / discovery paragraph. Prose truth per review: instance params are sweepable, NOT gangable (the gang op refuses a composite instance's member path) — stated as such everywhere; the gangability of spliced instances is recorded residue, not a claim. refs #317 --- docs/authoring-guide.md | 12 +++- docs/design/contracts/c24-blueprint-data.md | 62 +++++++++++++++---- docs/design/contracts/c29-self-description.md | 14 ++++- docs/glossary.md | 8 +++ 4 files changed, 79 insertions(+), 17 deletions(-) diff --git a/docs/authoring-guide.md b/docs/authoring-guide.md index 8f0fd47..d1d58a5 100644 --- a/docs/authoring-guide.md +++ b/docs/authoring-guide.md @@ -221,14 +221,15 @@ $ aura graph build < smacross.json > blueprint.json Nodes are referenced by an **identifier** (given by `add`, see below); ports are dotted `.` on both sides of a wire. -### The nine ops +### The ten ops | op | JSON shape | does | |---|---|---| | `doc` | `{"op":"doc","text":}` | declare the composite's one-line meaning (C29) — the op-script twin of the Rust builder's `.doc(...)`. Required before `aura graph register` accepts the product (the store refuses a doc-less composite); at most one per script (a second refuses: `a doc op may appear at most once`). The text is gated: empty or merely restating the composite's name refuses at register. | | `source` | `{"op":"source","role":,"kind":}` | reserve a bound root **source** role of `kind` — a real input the harness feeds (e.g. `"price"`). | -| `input` | `{"op":"input","role":}` | reserve an open root **input** role (kind inferred from the slots it feeds) — for a fragment meant to be wired by an *enclosing* graph. A standalone document built with `aura graph build` finalizes as a closed root, so an `input` role that is never bound refuses at the end: `finalize: root input role is unbound`. | +| `input` | `{"op":"input","role":}` | reserve an open root **input** role (kind inferred from the slots it feeds) — the formal parameter of an **open pattern**, a fragment meant to be wired by an *enclosing* graph. An open pattern builds and registers like any blueprint; only *running* it standalone refuses (bootstrap's unbound-root-role gate — there is no enclosing graph to wire it). | | `add` | `{"op":"add","type":,"name":?,"bind":{:}?}` | instantiate a node of a type in the closed vocabulary (`aura graph introspect --vocabulary`) — see §0 below for how a type gets into that vocabulary in the first place. `name` becomes the node's identifier for later ops (default: the type's own lowercase label — two unnamed nodes of the same type then collide). `bind` sets zero or more of its params. | +| `use` | `{"op":"use","ref":{"content_id":}\|{"name":