Distribution And Quality Gates
Distribution is the hidden hard part. A stack is not viable until you know how users get a release build and how you prove it works.
Gates By Family
| Family | Minimum gate |
|---|---|
| Static/content | Build output exists, internal/protected route works, links resolve |
| PWA | HTTPS, manifest, service worker, offline fallback, target-browser install test |
| Android native | Release build, device/emulator smoke test, permissions declared, Play policy reviewed |
| iOS native | Archive build, simulator/device smoke, signing/provisioning path known |
| Expo/React Native | Development build or EAS build path, platform smoke tests, update policy known |
| Flutter | Platform release build for target OS, plugin/native integration smoke test |
| Tauri | Platform bundle, CSP/capabilities reviewed, signing/updater path known |
| Electron | Packaged app, security checklist, updater/signing path, performance smoke test |
| Windows App SDK | MSIX/package or unpackaged deployment decision, runtime deployment path, WinUI test constraints known |
| CLI | Install path, help text, exit codes, smoke command, release binary/package |
| Backend/API | Deployment, migrations, health check, logs, backup/export, auth/secret checks |
| AI-native | Tool sandbox, connector scope, audit logs, secret handling, workspace isolation smoke test |
Universal Definition Of Done
Create command:
Dev command:
Test command:
Lint/format command:
Build command:
Package command:
Release/distribution path:
Manual device/browser/runtime gate:
Known blocked gate:
Manual Gates Are Valid
Some gates require accounts, devices, store consoles, certificates, or paid services. Record them explicitly instead of pretending automation covers them.
Gotcha: If the first real package happens at launch week, the stack decision was not validated. Package early, even with a throwaway app.