exec refusal-prose polish round 2: override prose branches, emit discovery, per-variant risk rules #345

Open
opened 2026-07-26 14:20:23 +02:00 by claude · 1 comment
Collaborator

Bundled friction findings from the harvest-2026-07-26 per-cycle fieldtest (corpus fieldtests/harvest-2026-07-26/, replay via hv_3_exec_refusals.sh). None is a bug; each is a place where a correct refusal under-explains or misdescribes itself. The two bugs of the same fieldtest were fixed in-cycle; the trace-overwrite spec gap went to issues/311.

  1. The free-knob refusal recommends the flag the consumer just used. exec <bp> --override fast.length=7 on a blueprint whose fast.length is FREE returns the byte-identical bare-invocation refusal, ending "a single bound knob can be overridden with --override" — never saying that --override reopens a bound param and cannot close a free one. When overrides were passed and free knobs remain, the prose should say the flag addresses bound params and the free knobs need binding (or a campaign axis).

  2. The blueprint leg's unknown-path override diagnostic says "axis". --override nosuch.param=3 on the single-run leg refuses with aura: axis nosuch.param: ... — per C24 only the campaign leg injects an override as a single-value axis; the single-run leg has no axis and no document. The shared prose should say "override" (or name both) on this leg.

  3. presentation.emit has no discovery path. The refusal presentation.emit: unknown kind "bogus_table" names no roster; campaign introspect --unwired enumerates persist_taps but not emit; no public doc states what family_table/selection_report each produce. Every neighbouring closed vocabulary (folds, regimes, metrics, blocks, persist_taps) is enumerated with one-line meanings (C29). Wants: the refusal names the closed set, and either introspect or the guide states the two lines each selector emits.

  4. The risk[k] domain refusal recites all three regime rules regardless of variant. {"fixed":{"distance":-1.0}} refuses with "stop length must be >= 1, k must be > 0, and a fixed-stop distance must be > 0" — two clauses name knobs the fixed variant does not have. The serde sibling (unknown variant) is already per-variant; the domain refusal should name only the violated variant's rule.

context: routed from the harvest-2026-07-26 fieldtest at cycle close; items 1+2 sit in the same parse_override_tokens/refusal-prose seam the in-cycle B2 fix touched.

Bundled friction findings from the harvest-2026-07-26 per-cycle fieldtest (corpus `fieldtests/harvest-2026-07-26/`, replay via `hv_3_exec_refusals.sh`). None is a bug; each is a place where a correct refusal under-explains or misdescribes itself. The two bugs of the same fieldtest were fixed in-cycle; the trace-overwrite spec gap went to issues/311. 1. **The free-knob refusal recommends the flag the consumer just used.** `exec <bp> --override fast.length=7` on a blueprint whose `fast.length` is FREE returns the byte-identical bare-invocation refusal, ending "a single bound knob can be overridden with --override" — never saying that `--override` reopens a *bound* param and cannot close a free one. When overrides were passed and free knobs remain, the prose should say the flag addresses bound params and the free knobs need binding (or a campaign axis). 2. **The blueprint leg's unknown-path override diagnostic says "axis".** `--override nosuch.param=3` on the single-run leg refuses with `aura: axis nosuch.param: ...` — per C24 only the campaign leg injects an override as a single-value axis; the single-run leg has no axis and no document. The shared prose should say "override" (or name both) on this leg. 3. **`presentation.emit` has no discovery path.** The refusal `presentation.emit: unknown kind "bogus_table"` names no roster; `campaign introspect --unwired` enumerates persist_taps but not emit; no public doc states what `family_table`/`selection_report` each produce. Every neighbouring closed vocabulary (folds, regimes, metrics, blocks, persist_taps) is enumerated with one-line meanings (C29). Wants: the refusal names the closed set, and either introspect or the guide states the two lines each selector emits. 4. **The `risk[k]` domain refusal recites all three regime rules regardless of variant.** `{"fixed":{"distance":-1.0}}` refuses with "stop length must be >= 1, k must be > 0, and a fixed-stop distance must be > 0" — two clauses name knobs the fixed variant does not have. The serde sibling (`unknown variant`) is already per-variant; the domain refusal should name only the violated variant's rule. context: routed from the harvest-2026-07-26 fieldtest at cycle close; items 1+2 sit in the same `parse_override_tokens`/refusal-prose seam the in-cycle B2 fix touched.
Author
Collaborator

Two additions from the external fieldtest (2026-07-26), same exec seam

(a) Field evidence for the --override pointer in the free-knobs refusal. The external tester hit the pre-harvest form of the refusal (… bind them in the blueprint or vary them as campaign axes) and resolved it by hand-editing bind clauses into the document. The 2026-07-26 harvest already appended a single bound knob can be overridden with --override — no action needed; recording that the pointer addresses an observed dead-end path.

(b) Bundle-widening candidate: --override naming an OPEN knob is accepted, then refused dishonestly. override_paths accepts an axis that names an open knob (open-space match → continue, crates/aura-runner/src/member.rs:826-828 — it is only bound-space names that become reopen paths), so on the exec blueprint leg the closed-blueprint guard (crates/aura-cli/src/main.rs:1288-1297, free.len() != paths.len()) then refuses with N free knob(s) — bind them … even though the caller supplied a value for exactly that free knob. Fork, not decided here: either make that refusal honest for the value-was-given case, or implement the real feature — let --override close open knobs on the exec leg (the external tester's --mock-binds ask; reference semantics stay intact — the manifest already lands overridden values in params and the topo hash names the base document).

## Two additions from the external fieldtest (2026-07-26), same exec seam **(a) Field evidence for the `--override` pointer in the free-knobs refusal.** The external tester hit the pre-harvest form of the refusal (`… bind them in the blueprint or vary them as campaign axes`) and resolved it by hand-editing bind clauses into the document. The 2026-07-26 harvest already appended `a single bound knob can be overridden with --override` — no action needed; recording that the pointer addresses an observed dead-end path. **(b) Bundle-widening candidate: `--override` naming an OPEN knob is accepted, then refused dishonestly.** `override_paths` accepts an axis that names an open knob (open-space match → `continue`, `crates/aura-runner/src/member.rs:826-828` — it is only bound-space names that become reopen paths), so on the exec blueprint leg the closed-blueprint guard (`crates/aura-cli/src/main.rs:1288-1297`, `free.len() != paths.len()`) then refuses with `N free knob(s) — bind them …` even though the caller supplied a value for exactly that free knob. Fork, not decided here: either make that refusal honest for the value-was-given case, or implement the real feature — let `--override` close open knobs on the exec leg (the external tester's `--mock-binds` ask; reference semantics stay intact — the manifest already lands overridden values in `params` and the topo hash names the base document).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#345