From e4fb64d7c67e253c2014cd29fbf2733d5e7b6c87 Mon Sep 17 00:00:00 2001 From: claude Date: Mon, 13 Jul 2026 04:32:47 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20bound=20params=20are=20overridable=20de?= =?UTF-8?q?faults=20=E2=80=94=20C12=20amendment,=20glossary,=20guide?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task 7 of the bound-override cycle: the design ledger's C12 records the bound-as-default semantics (axis 1 may name a bound param; identity reads the authored document; the retired axes-bind-only-open-knobs restriction was an implementation consequence, not a recorded decision), the glossary's blueprint entry carries the same sentence, and the authoring-guide's data-only starter section explains the one-file run+sweep quickstart. closes #246 --- docs/authoring-guide.md | 9 +++++---- docs/design/INDEX.md | 10 ++++++++++ docs/glossary.md | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/docs/authoring-guide.md b/docs/authoring-guide.md index 548b14f..97f6b97 100644 --- a/docs/authoring-guide.md +++ b/docs/authoring-guide.md @@ -38,10 +38,11 @@ the same shape every node in `aura-std` already follows. - **The project's own signal doesn't need a crate by default.** `aura new` scaffolds a **data-only** project (`docs/project-layout.md`, "A project repo (two tiers)") — a strategy over the std vocabulary is a - blueprint/campaign document, not Rust: the scaffold ships a single closed - `signal.json` starter, runnable immediately with no build step, and also - the sweep target itself (a bound param is a default any `--axis` may - override, #246). + blueprint/campaign document, not Rust: the scaffold ships **one** closed + `signal.json` starter that serves both verbs — `aura run` uses its bound + values as-is, `aura sweep --axis .fast.length=2,4,8` overrides them + (bound = default, not fixed); `--list-axes` lists the open knobs and the + bound defaults alike, so every override target is discoverable. - **A project-specific *native* node type** — the moment §0's three-part pattern is actually needed — lives in an attached **node crate**: `aura nodes new ` scaffolds a sibling cdylib crate (`Cargo.toml` + diff --git a/docs/design/INDEX.md b/docs/design/INDEX.md index 1207e64..dd890f4 100644 --- a/docs/design/INDEX.md +++ b/docs/design/INDEX.md @@ -1132,6 +1132,16 @@ Seed-as-input reconciles Monte-Carlo with C1. The "frozen topology" of the atomic unit is one harness instance, selected by the harness's **structural axes** (C20); the structural experiment matrix is the outer orchestration over this dimension, the tuning sweep the inner (C19/C20). +**Amendment (2026-07-12, #246).** A bound blueprint param is the param's +**default**: axis 1 (param-sweep) may name a bound param — the family boundary +re-opens it on the probe and on every member reload, and the axis binds it per +cell. "Open" means *must be bound by an axis*; "bound" means *default, +overridable by an axis*. `run`/`mc` still require every param resolved (a truly +open param still refuses). Identity is untouched: `content_id_of` and +`topology_hash` read the authored document, never a re-opened probe, and each +member manifest records its per-cell bindings as before. The restriction this +amends — axes bind only open knobs — was an implementation consequence of +`bind()` shrinking the param surface, not a recorded decision. ### C13 — Hot-reload is authoring-only; deploy is frozen **Guarantee.** A node/strategy is authored as a native Rust `cdylib`, diff --git a/docs/glossary.md b/docs/glossary.md index d909286..51cfcf1 100644 --- a/docs/glossary.md +++ b/docs/glossary.md @@ -29,7 +29,7 @@ A strategy's primary, backtestable DAG output: one signed, bounded `f64 ∈ [-1, ### blueprint **Avoid:** — -The param-generic, input-role-generic graph-as-data produced by running a Rust builder; it carries free numeric params and free input roles before bootstrap. Bootstrapped into a frozen instance by binding params + data + seed. Registered and inspected headless (`aura graph register`, `aura graph introspect --params` — the raw `param_space` namespace campaign axes bind against; cycle 0107/#196). +The param-generic, input-role-generic graph-as-data produced by running a Rust builder; it carries free numeric params and free input roles before bootstrap. Bootstrapped into a frozen instance by binding params + data + seed. Registered and inspected headless (`aura graph register`, `aura graph introspect --params` — the raw `param_space` namespace campaign axes bind against; cycle 0107/#196); a *bound* param is an overridable **default** — a sweep axis naming it re-opens it per family (#246), while `run` uses it as-is. ### bootstrap **Avoid:** —