fieldtest: bound-override cycle — 4 examples, 6 findings (4 working, 1 friction, 1 bug)
Per-cycle fieldtest over the #246 surface, consumer-perspective, public interface only: the scaffold quickstart end to end (aura new -> run -> --list-axes -> override sweep), --list-axes on a partially-open blueprint, an override family reproduced bit-identically (3/3 members), and the error surface (wrong axis name, kind-mismatched value — both exit 2). Corpus under fieldtests/cycle-246-bound-override/. Dispositions: the one bug (F6) is fixed in this commit — authoring-guide §1 still asserted a bound param 'never shows up in --list-axes' and 'no aura sweep --axis can reopen it', contradicting the shipped #246 semantics and the C12 amendment; the three-states paragraph now reads open = must-bind, bound = overridable default. The friction finding (F5, KindMismatch/MissingKnob printed as raw Debug structs beside polished prose) is filed as #247. refs #246
This commit is contained in:
@@ -259,14 +259,16 @@ purpose — three open campaign axes, see §3. This is the milestone fieldtest
|
||||
corpus's own example, verified below; byte-identical to the on-disk
|
||||
`fieldtests/milestone-research-artifacts/mra_1_strategy_smacross.json`.)
|
||||
|
||||
A `bind` in an `add` op pins that param to a fixed value and **removes it
|
||||
from the sweepable param space**: a bound param is closed — it never shows
|
||||
up in `--params`/`--list-axes`, and no campaign axis and no `aura sweep
|
||||
--axis` can reopen it. `bind` is for a constant the strategy never varies;
|
||||
leave a param unbound, as all three are here, to keep it open for sweeping.
|
||||
A `bind` in an `add` op pins that param to a value and removes it from the
|
||||
**open** param space (`--params`): a bound param is a **default** (#246) — a
|
||||
run uses it as-is, while any campaign axis or `aura sweep --axis` naming it
|
||||
re-opens it for that family and binds it per cell. `--list-axes` lists it
|
||||
after the open knobs as `<name>:<KIND> default=<value>`. `bind` is for a
|
||||
value the strategy carries by default; leave a param unbound, as all three
|
||||
are here, to make binding it mandatory for every sweep.
|
||||
|
||||
A param therefore has three states: **open** (a sweepable axis), **bound**
|
||||
(closed by a `bind` — gone from the axis namespace), and **ganged** (open, but
|
||||
A param therefore has three states: **open** (an axis every sweep MUST bind),
|
||||
**bound** (a default any axis MAY override, #246), and **ganged** (open, but
|
||||
fused with its siblings under ONE public knob declared by a `gang` op; the
|
||||
member addresses are unbindable and only the gang's own single-segment name —
|
||||
wrapped like any knob, e.g. `graph.channel_length` — appears in `--list-axes`).
|
||||
|
||||
Reference in New Issue
Block a user