Appearance
26.0.1 — Scope
Status: 🔵 draft · Target: 2026-08-15 · Scope freeze: 2026-08-11 · Type: train_monthly
The first release governed by the Release Management System. It is also the release that makes the system usable, since the deploy pipeline cannot run until the branch model is reconciled.
Scope is NOT yet agreed — this release has not passed G0
scope[] is deliberately empty. The owner asked to brainstorm candidate features before locking the list, so the date currently has no commitment behind it (risk R2). The 2026-08-11 freeze holds regardless: whatever is agreed at G0 must fit inside the remaining window, not the other way round.
Objectives
- Establish a governed, auditable path to production and prove it by using it.
- Reconcile the branch model so
deploy-prodcan run at all. - Ship the first production build of the merchant app to Android, iOS and Web together.
Scope
Filled at G0. Every item references an existing QRS-###.
| QRS | Item | Owner | Acceptance criteria | Depends on |
|---|---|---|---|---|
| pending brainstorm |
Candidates identified, not yet accepted
Recorded so the brainstorm starts from evidence rather than memory. Listing is not acceptance.
| Candidate | State today |
|---|---|
| Google sign-in | Works; device-verified on Android |
| Onboarding persistence (QRS-281/282) | Built; not device-verified |
| Vertical/archetype wiring (QRS-249) | Built; not device-verified |
| Sign-out fix | Built; not device-verified |
profileService / settingsService / accountService real | Not started — all three are stubs |
| Kill switch (QRS-291) | Built; not device-verified, not promoted |
| Versioning + deploy pipeline | Done |
| Native parity CI (QRS-295) | Workflow exists, never executed; statically reviewed and hardened 2026-08-02 |
| Feature flags (QRS-296) | Not started — no mechanism exists anywhere in the codebase |
Why QRS-295/296 are candidates for this release specifically
Both fall out of retiring the platform-exception path, and neither is a feature — they are what make the standard affordable to keep.
- QRS-296 (feature flags) is arguably a precondition, not an enhancement. With no exception path and no flag, a platform blocker found after the 2026-08-11 freeze has exactly one remedy: revert merged code under release pressure. That is the situation in which gates get bypassed, and this release is the one meant to prove the gates work.
- QRS-295 (native parity CI) is the recurring cost. Until it is green, every release — starting with this one — pays a manual three-surface pass to produce G3 evidence. It is owner-gated because it spends Actions minutes, and QRS-263 exhausted the quota once.
Neither is proposed as accepted scope here. They are on the table because deferring them has a named cost that lands inside this release, which is the only thing that distinguishes a real candidate from a wish.
Known to be out of reach for this release
| Item | Why |
|---|---|
| Public Setu Card | apps/web is 10 README files — no code, no package.json |
| Real dashboard | Needs the ADR-0010 analytics read model, which does not exist |
| Reminders | Service stubbed, and manage-reminder vs manage-reminders is unresolved (QRS-286) |
| Email OTP | Blocked at the SMTP layer (QRS-285, owner track — risk R4) |
| Digital Menu, billing | R2 scope / ADR-0002 |
Success criteria
Filled at G0. Must be measurable and checkable at G5.
- [ ] pending
Milestones
| Date | Milestone | Gate |
|---|---|---|
| tbd | Scope agreed | G0 |
| 2026-08-11 | Scope freeze | G1 |
| tbd | Code complete | G2 |
| tbd | UAT / readiness review | G3 |
| tbd | Go/no-go | G4 |
| tbd | Closure | G5 |
Scope-change log
| Date | Request | Triggers fired | Decision | Rationale |
|---|---|---|---|---|
Out of scope
See the table above. Recorded explicitly so "we forgot" and "we decided not to" stay distinguishable.