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:** —