Parent
#85
What to build
The flags the shell's built-in commands still parse by hand become real flags, so they behave the way every other flag in the CLI does. The release channel flag on module installation, the update-everything flag, and the non-interactive login flag all gain the spellings a user expects — an equals form, a negatable boolean where that reads naturally, and a clear error when a value is missing rather than a hand-written special case.
This is the only user-visible parsing change in #85, which is why it is its own ticket. A user who has been writing these flags in the one spelling that previously worked keeps working; what changes is that the spellings that previously failed now succeed, and the failures that remain are reported uniformly with recovery guidance and the usage exit class.
After this, no shell command scans its own argument list. The only remaining hand-written argument handling in the shell is at the product namespace boundary, which is deliberate and is removed by #86.
Acceptance criteria
Blocked by
Parent
#85
What to build
The flags the shell's built-in commands still parse by hand become real flags, so they behave the way every other flag in the CLI does. The release channel flag on module installation, the update-everything flag, and the non-interactive login flag all gain the spellings a user expects — an equals form, a negatable boolean where that reads naturally, and a clear error when a value is missing rather than a hand-written special case.
This is the only user-visible parsing change in #85, which is why it is its own ticket. A user who has been writing these flags in the one spelling that previously worked keeps working; what changes is that the spellings that previously failed now succeed, and the failures that remain are reported uniformly with recovery guidance and the usage exit class.
After this, no shell command scans its own argument list. The only remaining hand-written argument handling in the shell is at the product namespace boundary, which is deliberate and is removed by #86.
Acceptance criteria
Blocked by