Follow-up assigned by the decision-control implementation spec (DESIGN_decision-control.md section 7, PR7 notes).
The decision-control stack unifies the header decision surface on every annotate surface and both code-review destinations, but plan review deliberately kept its incumbent header (Approve / Request Changes plus the Add Feedback First dialog) because plan mode was out of the stack's scope.
Remaining work:
- Wire plan review's header onto buildDecisionSpec / DecisionControl (empty state [Approve], feedback state [Send Feedback n], caret alternates), reusing the deny/approve transports unchanged.
- The Add Feedback First dialog dies with the adoption: the adaptive primary makes the zero-feedback deny path unrepresentable, which is the dialog's whole job.
- Mod+Enter follows the visible-primary rule with the confirm-dialog sentinel guard, matching the other surfaces.
Two related deferred items to consider bundling:
- packages/ui/components/html-viewer/HtmlViewer.tsx mints global-comment ids with Date.now(); the equivalent Viewer.tsx site moved to crypto.randomUUID() in the stack. Same treatment applies.
- Annotate's two positive-finish decision kinds (feedback without a gate, approved with one) remain transport-shaped; an additive flag on /api/feedback in both runtimes would reconcile them if ever desired.
Follow-up assigned by the decision-control implementation spec (DESIGN_decision-control.md section 7, PR7 notes).
The decision-control stack unifies the header decision surface on every annotate surface and both code-review destinations, but plan review deliberately kept its incumbent header (Approve / Request Changes plus the Add Feedback First dialog) because plan mode was out of the stack's scope.
Remaining work:
Two related deferred items to consider bundling: