exec surface polish: refusal prose, discovery hints, and the unresolved-target exit partition #342

Open
opened 2026-07-25 23:48:46 +02:00 by claude · 1 comment
Collaborator

Bundled friction/spec-gap findings from the #319 retirement field test (2026-07-25, corpus fieldtests/cycle-319-sugar-retirement/). None is a bug; each names a place where the surviving surface under-explains itself to a source-blind consumer.

  1. Retired-verb refusals teach nothing. aura run … refuses via bare clap, whose suggestion machinery tips runs — never exec or the document path. The no-tombstone shape is a deliberate, spec-ratified #319 decision (retired verbs refuse as unknown commands, no alias, no tombstone prose), so this item is recorded as field evidence against that decision, not as a settled task: whether a transition hint is warranted is part of the milestone-level A/B judgement against the pre-sugar-retirement baseline.
  2. Kind-mismatched override leaks a debug struct. --override with a value of the wrong scalar kind prints ParamKindMismatch { slot: 0, … } and reads as if the blueprint were at fault; wants the prose treatment every other refusal in the family already has.
  3. An op-script handed to exec gets "blueprint document is not valid JSON". The file IS valid JSON (an op-script array); the retired sweep intake used to answer this exact mistake with a build-first hint. The blueprint leg should recognize the array form and point at aura graph build.
  4. Wrong-class target refusals name neither the target nor the found kind. Handing exec a process document (or another kind-bearing non-campaign document) refuses without saying what was found or which classes are executable.
  5. Exit partition for unresolvable targets is unconstrained (C14). Whether an unresolvable target (no such file, no such id) and a wrong-kind target exit 1 or 2 is currently accidental; C14 should pin the class boundary so scripts can rely on it.

Context: the surviving refusal batteries themselves tested clean in the same field test (12 target-class probes, the --override refusal family on both legs); this list is the polish tail.

Bundled friction/spec-gap findings from the #319 retirement field test (2026-07-25, corpus `fieldtests/cycle-319-sugar-retirement/`). None is a bug; each names a place where the surviving surface under-explains itself to a source-blind consumer. 1. **Retired-verb refusals teach nothing.** `aura run …` refuses via bare clap, whose suggestion machinery tips `runs` — never `exec` or the document path. The no-tombstone shape is a deliberate, spec-ratified #319 decision (retired verbs refuse as unknown commands, no alias, no tombstone prose), so this item is recorded as field evidence against that decision, not as a settled task: whether a transition hint is warranted is part of the milestone-level A/B judgement against the `pre-sugar-retirement` baseline. 2. **Kind-mismatched override leaks a debug struct.** `--override` with a value of the wrong scalar kind prints `ParamKindMismatch { slot: 0, … }` and reads as if the blueprint were at fault; wants the prose treatment every other refusal in the family already has. 3. **An op-script handed to `exec` gets "blueprint document is not valid JSON".** The file IS valid JSON (an op-script array); the retired sweep intake used to answer this exact mistake with a build-first hint. The blueprint leg should recognize the array form and point at `aura graph build`. 4. **Wrong-class target refusals name neither the target nor the found kind.** Handing `exec` a process document (or another kind-bearing non-campaign document) refuses without saying what was found or which classes are executable. 5. **Exit partition for unresolvable targets is unconstrained (C14).** Whether an unresolvable target (no such file, no such id) and a wrong-`kind` target exit 1 or 2 is currently accidental; C14 should pin the class boundary so scripts can rely on it. Context: the surviving refusal batteries themselves tested clean in the same field test (12 target-class probes, the `--override` refusal family on both legs); this list is the polish tail.
Author
Collaborator

Milestone-fieldtest addendum (2026-07-26, corpus fieldtests/milestone-42-sugar-retirement/)

Six further friction findings and one documentation gap from the M42 A/B run, same polish class as the list above:

  1. The retired-verb refusals never name exec (the A/B run confirms item 1 empirically: a returning sugar user gets no re-route at all).
  2. A campaign requesting emit: selection_report silently emits nothing — no refusal, no output, no hint which emit tokens exist.
  3. The emit and axis-kind refusals enumerate no valid tokens (contrast the did-you-mean the axis-path refusal already has).
  4. --override refusal prose says "axis" where the user typed an override.
  5. aura chart does not enumerate the recorded taps of a handle when the requested tap is absent.
  6. The scaffolded starter blueprint declares no taps and the scaffold text never mentions graph build, so the op-script route is invisible from the scaffold alone.
  7. (doc gap) The per-stage JSON envelope on exec's stdout ({"campaign_run":…} and the member lines) is undocumented on the surviving surface.

Of the original list, item 2 (ParamKindMismatch debug struct) was fixed in-cycle after the milestone run re-classified it as a bug; the remainder stands. The cold-start step count (28 commands to a first family, 5 dead ends, vs ~3 on the sugar-era baseline) is the quantitative weight behind items 1/6.

## Milestone-fieldtest addendum (2026-07-26, corpus `fieldtests/milestone-42-sugar-retirement/`) Six further friction findings and one documentation gap from the M42 A/B run, same polish class as the list above: 6. The retired-verb refusals never name `exec` (the A/B run confirms item 1 empirically: a returning sugar user gets no re-route at all). 7. A campaign requesting `emit: selection_report` silently emits nothing — no refusal, no output, no hint which emit tokens exist. 8. The `emit` and axis-`kind` refusals enumerate no valid tokens (contrast the did-you-mean the axis-path refusal already has). 9. `--override` refusal prose says "axis" where the user typed an override. 10. `aura chart` does not enumerate the recorded taps of a handle when the requested tap is absent. 11. The scaffolded starter blueprint declares no taps and the scaffold text never mentions `graph build`, so the op-script route is invisible from the scaffold alone. 12. (doc gap) The per-stage JSON envelope on `exec`'s stdout (`{"campaign_run":…}` and the member lines) is undocumented on the surviving surface. Of the original list, item 2 (`ParamKindMismatch` debug struct) was fixed in-cycle after the milestone run re-classified it as a bug; the remainder stands. The cold-start step count (28 commands to a first family, 5 dead ends, vs ~3 on the sugar-era baseline) is the quantitative weight behind items 1/6.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#342