Quality Gates

Run the smallest check set that proves the claim you are making.

Always Required

dart format lib test
flutter analyze
flutter test

These gates prove static quality and local unit/widget behavior. They do not prove native plugins, release builds, store readiness, or performance.

Target Smoke Gates

TargetMinimum smoke
Androidflutter run -d <android-device> plus release APK/AAB build before release
iOSRun on simulator/device from macOS/Xcode path; archive before release
Webflutter build web, serve build/web with a static server, smoke in target browsers
WindowsBuild/package on Windows, validate MSIX/AppX path if store-bound
macOSBuild/archive on macOS with signing path understood
LinuxBuild and package through the chosen distribution route, often Snap for official docs

Release Gates

AreaEvidence
Build modeProfile-mode measurement for performance, release-mode artifact for deployment
Platform APIsPermission denied/granted paths and plugin failure paths tested
Local dataMigration, export, restore, and wipe behavior tested
AccessibilityScreen reader smoke, labels, tap targets, contrast, scaling
PerformanceReal device or representative hardware, not only emulator/debug
StoreApp ID, version, signing, icons, privacy/data declarations, screenshots

Agent Done Statement

When an AI agent claims done, it should include:

Validated: flutter analyze, flutter test
Smoke target: Android emulator Pixel_7 API_35
Not validated: iOS release, web build, desktop packages
Known blockers: Apple signing unavailable on this machine

Gotcha: “All tests pass” usually means flutter test only. Ask which target, which build mode, and which artifact.