Development record
A verb's required arguments are learned from its first refusal, not from its help, because the bare help carries no worked example.
A verb's required arguments are learned from its first refusal, not from its help, because the bare help carries no worked example.
Observed resolving issues during an autonomous run. abcd capture resolve requires --impact and --grounds; the operator discovered both by being refused, once each, and only then assembled a working invocation. The flags are listed, so the help is not wrong — it is that a list of flags does not say which combination constitutes a legal call, and the cheapest way to find out is to run the verb and read the error. For an agent this is not merely inelegant: each refusal costs a round trip, and the text being filed has to be re-sent with it.
The same shape recurs across the record verbs, whose calls carry several interdependent flags and whose refusals are the only place the dependency is stated.
Wanted: one worked example per verb in its own --help output — the shortest legal invocation, with the required flags filled in. It is a line of text per verb and it removes the refusal-as-documentation loop entirely.
Distinct from the sibling finding that abcd does not name its own adjacent capabilities: that one is about a verb the operator never learns exists, this one is about a verb they have found and cannot call. The remedies differ — a worked example in the verb's own help, versus a cross-pointer between verbs — so they are filed apart.
Grounds
- pursued: a caller assembles a legal call from the help without a refusal; a verb with a required input and no example, or an example missing a required flag, would show it wrong
Frontmatter
| id | iss-2609100508565741 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2609100508565741-required-flags-are-learned-from-the.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2609260002152124Two verbs' Use lines under-declare what the verb requires, so the usage line, the worked example check and the aggregated refusal all read a requirement set smaller than the one the verb enforces. history discard refuses without --yes on every call while its Use line is discard <staged-filename>; capture disposition requires --grounds on every state except held, which requires --exit-condition instead, while its Use line brackets both as optional. Confirmed at 6e4eca9a while writing the worked examples for iss-2609100508565741: a disposition example without --grounds and a discard example without --yes are both refused.