Reference — generated from the toolkit
Source of truth: toolkit/gates/refinement-exit.md. Edit it there; this page is regenerated on build.
Gate: Refinement Exit
Transition: Refinement → Flow-state / Production Owner: Senior Dev (Lead) + Product Owner Runs: once, when a build is raised from acceptable to good
Purpose
Confirm the directed refinement passes (performance, accessibility, resilience, observability) have actually raised quality against ISO/IEC 25010 — not open-ended polishing, but named passes with an exit bar.
Entry criteria
- Merge gate green on all changes in scope.
- Directed refinement passes run as skills ("performance pass", "a11y pass", etc.).
Exit criteria
- Performance within budget (p95 latency targets met; N+1 audit clean; Core Web Vitals where applicable).
- Full state coverage — empty / error / loading — verified on key screens.
- WCAG 2.2 AA audit passed (automated + manual keyboard/screen-reader charter).
- Logging and alert quality reviewed; golden signals emitting.
- Hotspot / complexity review done.
Evidence required
- Performance report, a11y audit, observability check.
Automated vs human
| Check | Automated in CI | Human sign-off |
|---|---|---|
| Perf budgets, a11y regressions | ✅ | — |
| "Good enough to ship" bar | — | Lead Dev + PO + SME |
Sign-off & waiver
- Signs: Senior Dev (Lead), Product Owner, SME.
- May waive: PO may accept a named polish item as a Flow-state backlog entry (it does not block), recorded so it isn't lost.
- Waiver record: logged in
toolkit/registers/with expiry.