Skip to main content
A Singapore Government Agency Website
SLP-10L1 · mandatoryjudgmentAnti-slop

Complex multi-section tasks get a page, not a modal

Fails when: modal with its own scrollbar and column layout

Requirement

Give any task with multiple sections, its own scrolling, or a column layout a page of its own. Modals are for single decisions and short, focused inputs — not for forms that have grown chapters.

Rationale

The mega-modal is a recognisable AI-UI tell, and a genuinely worse surface: it traps a complex task in a constrained viewport, breaks deep-linking and back-button behaviour, stacks scrollbars, and turns an accidental backdrop click into lost work. People doing real work deserve a URL, full width, and a browser history entry.

Passes when / Fails when

Passes:

  • A confirm dialog with one decision and two buttons (CMP-2 surfaces).
  • A short single-purpose input in a modal — rename a project, pick a date.
  • A multi-section "set up new project" task implemented as its own page with a clear way back.

Fails:

  • A modal containing tabs, accordions, or a two-column form.
  • A modal with its own scrollbar because the content outgrew the viewport.
  • A wizard inside a dialog where closing it discards three steps of input.

Evaluator guidance

Judge the task, not the pixel count. Signals that it needed a page: more than one logical section or heading inside the dialog; internal scrolling at 768 width; any column layout; input that would hurt to lose on an accidental dismiss. A long-ish but single-purpose surface (one field plus help text) can stay a modal — flag only when sections, scrolling, or columns appear. If the plan proposes a modal for a flow with three or more steps, raise it at the plan phase, before implementation. This is L1: a deviation needs a documented waiver with a named approver, e.g. a platform constraint that genuinely prevents a routed page.

Also available as Markdown · catalog.yaml