exec refusal-prose polish round 2: override prose branches, emit discovery, per-variant risk rules #345
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bundled friction findings from the harvest-2026-07-26 per-cycle fieldtest (corpus
fieldtests/harvest-2026-07-26/, replay viahv_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.The free-knob refusal recommends the flag the consumer just used.
exec <bp> --override fast.length=7on a blueprint whosefast.lengthis FREE returns the byte-identical bare-invocation refusal, ending "a single bound knob can be overridden with --override" — never saying that--overridereopens 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).The blueprint leg's unknown-path override diagnostic says "axis".
--override nosuch.param=3on the single-run leg refuses withaura: 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.presentation.emithas no discovery path. The refusalpresentation.emit: unknown kind "bogus_table"names no roster;campaign introspect --unwiredenumerates persist_taps but not emit; no public doc states whatfamily_table/selection_reporteach 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.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.Two additions from the external fieldtest (2026-07-26), same exec seam
(a) Field evidence for the
--overridepointer 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 appendeda 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:
--overridenaming an OPEN knob is accepted, then refused dishonestly.override_pathsaccepts 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 withN 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--overrideclose open knobs on the exec leg (the external tester's--mock-bindsask; reference semantics stay intact — the manifest already lands overridden values inparamsand the topo hash names the base document).