cli: refuse every global flag no verb can honor #151
No reviewers
Labels
No labels
priority/P0
priority/P1
priority/P2
release/v0.1.0
status/blocked
status/planned
type/bug
type/design
type/test-gap
type/tracker
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis!151
Loading…
Reference in a new issue
No description provided.
Delete branch "docs/global-flag-matrix-136"
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?
Fixes #136.
Three verb forms silently dropped a global flag:
felis --versionanswersbefore dispatch and ignored all four, while
completionsand__mangenignored the carrier flags (
--host,--socket,--ssh-arg). They nowrefuse what they cannot honor, exit
2, like every other verb that neitherreads nor forwards a global. The per-arm checks move into
verb_refusing_carrier, a twin ofverb_reading_no_config; both areexhaustive over
Cmd, so a new verb cannot land without deciding its cells,and a table-driven test walks every verb form against every global.
Doc cascade:
docs/reference/cli.mdgains a placement matrix stating everyverb/flag cell (forwarded, read, dials, refused) plus the
frontendandcompletionsparagraphs that were only implicit;docs/reference/control-surfaces.mdpoints at the matrix;
CHANGELOG.mdrecords the three newly refused forms;skills/felis/SKILL.mdrecords thatfelis --versionrefuses the globals.Verified: just check green (fmt, clippy, nextest, deny, proto-compat);
reviewed by pi luna + pi sol; docs proofread by Gemini gemini-3.8-flash-high
Deferred
two reference pages; the matrix is normative lookup material with no new
argument, so doc-cascade's default-to-no-record gate applies.
carrier bucket — the per-flag distinction for
__complete-sessions(
--socketdials vs--host/--ssh-arggive no candidates) is alreadypinned end-to-end by pre-existing, untouched tests in
cli_sessions.rs;refactoring the new table-driven unit test's granularity goes beyond issue
#136's criteria, since the real behavior is not unguarded.
combined with the verb — the finding's own verification shows that parse +
refuse combination is already pinned end-to-end in
cli_sessions.rs,matching the round-1 precedent where a sibling asymmetry finding was
deferred on the same grounds; fixing it would duplicate coverage rather
than close a gap.