Audience: Leadership, product, design, engineering
Purpose: Define when to do rebranding, feature development, and usability enhancement — and what gates must pass first
Last updated: June 2026
Framework reference: Marty Cagan, Inspired — four risks (value, usability, feasibility, viability)
Executive summary
Not every improvement should happen at once. This framework prevents:
- Rebranding too early — before the DS can be injected anywhere
- Feature sprawl — before the prototype proves value
- UX churn without baseline — before stakeholders have walked the flow
Rule of thumb: Publish the Application Flow first (M1). Then iterate in 2-week waves using the gates below.
Decision matrix
| Activity | When to start | Required gate | Stop if | Primary risk addressed |
|---|---|---|---|---|
| Application Flow publish | Now (Week 1–2) | P0 scope locked | Blocking gaps unresolved | Value |
| Feature development (new screens, components, flows) | After M2 validation | Stakeholders walked the flow; backlog prioritized | No prototype baseline | Value + Feasibility |
| Usability enhancement (copy, layout, persona variants) | Continuous from M2 | Baseline prototype exists | No comparison point | Usability + Value |
| Architecture / DevOps work | M3 (Week 5–6) | M2 dev review notes exist | Publish not done | Feasibility |
| Injectable DS adoption | M4 (Week 7–9) | M3 RFC approved | Architecture undecided | Feasibility |
| Playground / vibe coding | M5 (Week 10–12) | M2 feedback loop live | No graduation path defined | Value (discovery) |
| Rebranding / new application brand | M6 (Week 13–15) | M4 injectable guide validated | Core AppFlow not publish-quality | Feasibility + Viability |
| Theme switching | M6 | Same as rebranding | L1–L2 adoption not proven | Feasibility |
| Token changes | Anytime | PM + design approval | Hardcoded literals dominate codebase | Feasibility |
| Package graduation (playground → DS) | When component ready | Playground approval goal met | Single-use experiment only | Feasibility |
| External npm publish | After M3 | Architecture RFC signed | Internal consumption still broken | Feasibility |
1. Feature development
Definition
Building new product capabilities: screens, flow steps, components, routing branches, integrations.
When to start
After M2 (internal validation) — not before stakeholders have walked the published AppFlow.
Gate checklist
- M1 publish complete — end-to-end demo works
- Stakeholder review completed — go/no-go recorded
- Backlog item tagged with risk it addresses (value / usability / feasibility / viability)
- Engineering feasibility confirmed (reuse vs new component decision)
Prioritization (Inspired)
Rank features by risk reduction, not by loudest request:
| Priority | If the feature… |
|---|---|
| P0 | Unblocks demo narrative or stakeholder sign-off |
| P1 | Closes spec gap vs production routing doc |
| P2 | Quality/maintainability (mobile pass, manual QA, token cleanup) |
| P3 | Nice-to-have exploration |
Examples in this project
| Feature | Wave | Why now |
|---|---|---|
start landing, analyzing routing | M1 (P0) | Blocks publish |
complete-skipped-steps, skip paths | M2 (P1) | Spec completeness after validation |
| New input component from Figma | M5+ | After playground validates need |
| Production Flinks integration | Out of scope | Different product team |
Stop signals
- Stakeholders have not seen the current prototype
- Feature duplicates existing DS component without justification
- No designer sign-off on Figma source
2. Usability enhancement
Definition
Improving how users experience the product: copy tone, layout emphasis, trust/urgency framing, persona variants, drop-off reduction, declined/success state refinement.
When to start
Continuous from M2 onward — with spikes after each review cycle.
Unlike feature development, usability work can run in parallel with delivery once a baseline prototype exists.
Gate checklist
- Baseline prototype published (M1)
- Persona or segment identified (if variant)
- Change maps to UX strategy pillar (ux-strategy-logic.md)
- Designer approves copy/layout delta
Sources of truth
| Source | Use for |
|---|---|
| ux-strategy-logic.md | Trust, velocity, rejection logic pillars |
| user-insights-report.md | Persona variants (Steady Earner, Second-Chance Seeker, etc.) |
| Review session feedback | Specific screen-level changes |
| Figma approved designs | Direct implementation when complete |
Cadence
| Trigger | Action |
|---|---|
| End of M2 reviews | Batch usability items into Wave 1 backlog |
| After each 2-week wave | Re-run walkthrough; capture new friction |
| New persona request | Use variant matrix; do not change base flow without approval |
Stop signals
- No baseline to compare against (pre-M1)
- Change contradicts approved Figma without UX deviation approval
- Purely cosmetic with no measurable UX intent
3. Rebranding and theme switching
Definition
- Rebranding: New application identity (Foundation, DPP partner, co-brand)
- Theme switching: Runtime or build-time swap of brand tokens while keeping shared layout/spacing/components
When to start
M6 (Week 13–15) only — after injectable DS is proven (M4) and architecture is aligned (M3).
Why not earlier
| If rebranding happens too early… | Consequence |
|---|---|
| Before L1–L2 injectability works | Partner apps fork their own colours instead of using tokens |
| Before AppFlow is publish-quality | Multiple brands inherit broken flows |
| Before component coverage is solid | Each brand needs custom UI patches |
| Before architecture RFC | Duplicate token files across repos |
This aligns with Inspired: solve feasibility before scaling variants.
Prerequisites (all must pass)
- M1 — AppFlow publish-quality
- M3 — Architecture RFC approved
- M4 — Injectable guide validated; L1 restyle in <4h
- Token architecture supports semantic brand overrides
- DS covers AppFlow critical path (inputs, actions, modals)
Implementation rules
| Rule | Detail |
|---|---|
| Token overrides, not forks | Partner brands change --spring-semantic-* brand tokens; do not fork components |
| DPP flows | Ask for partner-specific token overrides per project-context.md |
| Layout unchanged | Spacing, typography scale, and component anatomy stay shared |
| Foundation as pilot | Use existing Foundation flow as second-brand proof before DPP |
| Gallery switcher | Dev/demo toggle only until production theming spec exists |
Testing before sign-off
- Switch theme → AppFlow restyles without code changes per screen
- Partner override affects brand tokens only
- Default Spring theme — M1 walkthrough still passes
- L1+L2 injectable adoption still works with theme active
Stop signals
- M4 not complete
- Hardcoded brand colours still in components (P2 cleanup incomplete)
- No partner token spec for DPP
4. Other common decisions
Token changes
| When | Anytime a visual primitive needs to change |
| Gate | PM + design approval; never silent agent changes |
| Process | Edit design-tokens.mjs → npm run tokens:sync → restart dev → clear .next before production build |
| Stop if | Hardcoded literals would remain dominant after change |
Playground → package graduation
| When | Component has full state coverage + token fit + designer approval |
| Gate | Playground project approvalGoal met |
| Process | Playground experiment → PR to @spring/ds-react → gallery doc → Code Connect if applicable |
| Stop if | Used in only one experiment; missing error/disabled states |
External npm publish
| When | After M3 architecture RFC defines publish path |
| Gate | Internal consumption stable; CI green; build step decision made (tsup or source-only) |
| Stop if | L1+L2 injectability not documented — teams can adopt via CSS without npm |
Production backend integration
| When | Production product team scope — not design library |
| Gate | N/A for this project |
| Note | Gallery AppFlow is visual prototype only |
Visual timeline of decision gates
flowchart TD
publish[M1PublishAppFlow]
validate[M2InternalValidation]
arch[M3Architecture]
inject[M4InjectableDS]
playground[M5Playground]
theme[M6RebrandTheme]
publish --> validate
validate --> features[FeatureDevelopment]
validate --> usability[UsabilityEnhancement]
validate --> arch
arch --> inject
inject --> theme
validate --> playground
inject --> playground
features -.->|"gate: M2 backlog"| features
usability -.->|"gate: M1 baseline"| usability
theme -.->|"gate: M3+M4"| theme
Quick reference card (for meetings)
Boss asks: "Can we rebrand for Partner X next sprint?"
→ No, unless M4 injectable guide is done. Earliest: M6 (Oct 2026). Partner can use L1 tokens as interim.
Boss asks: "Can we add feature Y?"
→ Yes if M2 validation prioritized it and it reduces a named risk. No if stakeholders haven't walked the flow.
Boss asks: "Can we improve copy on step Z?"
→ Yes anytime after M1 publish. Use UX strategy + persona docs.
Boss asks: "Can we publish the design system to npm?"
→ After M3 architecture RFC — not before CI and consumption model are settled.
Boss asks: "When is the Application Flow live?"
→ M1 target: Jul 13, 2026 (1–2 weeks from kickoff). Prototype, not production.
Related documents
| Document | Role |
|---|---|
| 01-project-overview-and-goals.md | Vision and OKRs |
| 02-roadmap-and-milestones.md | Milestone dates |
| 03-phase-playbook.md | Tasks and testing per wave |
| ux-strategy-logic.md | UX pillars for usability decisions |
| project-context.md | DPP / partner token rules |