Let a grant declare its own value-taking flags #335
No reviewers
Labels
No labels
burndown-2026-06
burndown-2026-08
sunday-sprint
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/umbra!335
Loading…
Reference in a new issue
No description provided.
Delete branch "umbra/claude/ee98-valueflag"
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?
positionals()consulted one hardcoded table to know that--region us-east-1is two tokens rather than a flag and a positional. Every entry in it is an AWS CLI global. So forkubectl get pods --context ser8it returned:and an
argNguard read the flag's value believing it read a resource name.Nothing is broken today. No kubectl grant carries such a guard, and
whenon a flag selector never consults the table (flagValue()scans argv directly), which is why the guard in agentic-os#1349 binds correctly. This is the trap laid for whoever writes the next one, and it fails in the direction that does not announce itself.Two halves, because either alone still permits a silent bind
value-flag <name>on a grant, merged over the built-ins, so a guardfile states its own tool's shape instead of inheriting one vendor's.argN/any-argwhile allowing a long flag that neither the table nor its own list names is rejected when the guardfile parses. The arity cannot be inferred from the flag, and guessing is exactly what produced the silence. Declaring it either way is the fix - as a value-taker so the value is consumed, or to state that it is boolean.Runtime behavior is unchanged for every guardfile that parses today.
Measured
Three tests cover it, including that a flag selector still needs no declaration, so the fix does not tax the guards that were never affected.
docs/execverb.mdalready predicted this: the table "is one vendor's shape and belongs in the guardfile" (umbra#282). It does now.Refs coilyco-flight-deck/agentic-os#1351