Parent: T9 (#9) · Importance: Must have · Size: M · Depends on: nothing. 9e fills the preset slot.
Why. Clicking a type tile in the add-question picker commits immediately. There is no step for
required, hint or validation, and the new row is appended after the hidden __* outputs, off-screen,
with no scroll and no highlight. The author does not know the question was added, let alone where.
This is a P0 cold-start blocker from the 2026-10-01 UX review.
Scope.
Not in scope. Validation presets (9e). Field picker (9c). Changing which types the palette offers.
Acceptance.
- Add age (integer) from the picker with required and a hint set in the configure step; the new
row appears directly after the row the author was on, scrolled into view and highlighted.
- The sheet on disk has the row in that position with
required and hint::<lang> set; every
other row is byte-identical.
- Adding inside a group keeps
begin group / end group paired (structuralBalance test passes).
- Playwright covers the journey end to end.
Validate.
pnpm typecheck && pnpm lint
pnpm --filter @cht-ui/shared build && pnpm --filter @cht-ui/shared test
pnpm --filter @cht-ui/client test:e2e
Plan: docs/plans/9_complex_logic_calculation_relevant_constraint/README.md · Analysis: validation-rules-v2.md §"UI/UX" finding 3, §"UX changes" 4; QuestionTypePicker.tsx.
Parent: T9 (#9) · Importance: Must have · Size: M · Depends on: nothing. 9e fills the preset slot.
Why. Clicking a type tile in the add-question picker commits immediately. There is no step for
required, hint or validation, and the new row is appended after the hidden
__*outputs, off-screen,with no scroll and no highlight. The author does not know the question was added, let alone where.
This is a P0 cold-start blocker from the 2026-10-01 UX review.
Scope.
checkbox, hint, and a Validation slot. In this slice the slot shows the current constraint
builder; 9e replaces it with presets. The step is skippable with one key for authors who want
the one-click behaviour.
⚠ Insert inside a group must keep the group's begin and end rows balanced.
Not in scope. Validation presets (9e). Field picker (9c). Changing which types the palette offers.
Acceptance.
row appears directly after the row the author was on, scrolled into view and highlighted.
requiredandhint::<lang>set; everyother row is byte-identical.
begin group/end grouppaired (structuralBalancetest passes).Validate.
Plan:
docs/plans/9_complex_logic_calculation_relevant_constraint/README.md· Analysis:validation-rules-v2.md§"UI/UX" finding 3, §"UX changes" 4;QuestionTypePicker.tsx.