Python gr2 is now the active UX authority. We need the declarative workspace flow to live under the same Python CLI surface as workspace/lane/review/hooks.
Scope:
- add
gr2 spec show
- add
gr2 spec validate
- add
gr2 plan
- add
gr2 apply
- keep command names/JSON shapes as the Python contract
- do not preserve Rust-only UX assumptions unless they still fit the Python-first model
Why:
- current gr2 authority is split across Python and Rust
- this is the main blocker to treating Python gr2 as one coherent product surface
- Rust can be ported/reimplemented later behind the proven interface
Acceptance:
- normal workspace flow can stay entirely inside Python gr2 for spec->plan->apply
- output is usable by both humans and agents
- no dependence on the shipped Rust gr2 binary
Python gr2 is now the active UX authority. We need the declarative workspace flow to live under the same Python CLI surface as workspace/lane/review/hooks.
Scope:
gr2 spec showgr2 spec validategr2 plangr2 applyWhy:
Acceptance: