All docs

Docs

Spring Design Library — Phase Playbook

Audience: Product, design, engineering, QA
Purpose: Detailed tasks, expected outcomes, testing, and exit criteria for each wave
Last updated: June 2026


How to use this document

Each section maps to a milestone in 02-roadmap-and-milestones.md. For every wave:

  1. Complete action items in order where dependencies exist.
  2. Run tests before claiming exit criteria met.
  3. Update personal-loan-appflow-master-plan.md when AppFlow status changes.

Phase 0 — Publish sprint (Weeks 1–2)

Dates: Jun 29 – Jul 13, 2026
Milestone: M1 — Application Flow publish
Inspired risk focus: Value + Usability (can we demo the product story?)

Objective

Ship a clickable, stakeholder-ready Application Flow that proves the design system works as a product building block.

Action items

IDTaskOwnerFiles / locationDepends on
P0-1Build step 1 landing (start)Engineer + DesignerAppFlowStartScreen.tsx, personalLoanFlow.tsFigma landing node
P0-2Analyzing → outcome demo routingEngineerAppFlowAnalyzingApplicationScreen.tsx, options helperP0-1
P0-3Verify bank prototype ContinueEngineerAppFlowVerifyBankScreen.tsx
P0-4Confirm standalone app parityEngineerapps/personal-loan, @spring/personal-loan-appflowP0-1, P0-2, P0-3
P0-5Manual walkthrough checklistPM + DesignerAppendix belowP0-1–P0-4
P0-6Component swap efficiency auditDesigner + EngineerSpreadsheet per screenP0-4
P0-7Validation gateEngineerCI-localAll above

P0-2 approach options (pick one)

OptionDescriptionPros
A — Query param?outcome=success|foundation|declined auto-redirect after delayClean for demos
B — Dev buttonsIn-screen "Simulate approved / declined / foundation"Easier stakeholder testing

P0-1 acceptance

  • Email/value prop + CTA → name
  • Shell progress ~7%
  • Mobile floating CTA
  • Registered in personalLoanFlow.ts with status: 'ready'

Component swap efficiency test

Run during the publish sprint to validate DS product efficiency.

TestMethodPass criteria
Coverage auditInventory each AppFlow screen → @spring/ds-react imports vs raw HTML/custom≥90% interactive UI uses DS components
Swap testPick 3 screens; replace one custom element with nearest DS componentSwap in <2 hours; no visual regression in PageMapPopup
Token complianceScan for hardcoded hex outside token fallbacksNo new literals; log existing for P2 cleanup
Restyle testChange one semantic token → npm run tokens:sync → restart devAppFlow restyles globally without per-screen edits

Testing

npm run lint
npm run build
npm run build:personal-loan

Manual walkthrough (minimum paths):

  1. Happy path: start → name → loan-amount → … → verify-income → analyzing → application-success
  2. Declined outcome: analyzing → application-declined
  3. Foundation cross-sell: analyzing → application-foundation
  4. Flow map: click tile → Open view → mobile toggle
  5. Standalone: repeat path 1 on /personal-loans/start

Exit criteria (M1)

  • All P0 action items complete
  • Component coverage ≥90%
  • Walkthrough checklist signed by PM + designer
  • lint + build pass for both apps

Manual walkthrough checklist (appendix)

#StepDesktopMobile popupPass
1Start landing renders; CTA → name
2Name → loan-amount → purpose-of-loan chain
3Employment branch (at least one path)
4Verify bank → verify identity (not dead-end)
5Analyzing → each outcome without manual URL
6Flow map tile preview matches live step
7Standalone app matches gallery flow

Phase 1 — Internal validation loop (Weeks 3–4)

Dates: Jul 14 – Jul 27, 2026
Milestone: M2 — Internal validation complete
Inspired risk focus: Value + Usability + Business viability

Objective

Gather structured feedback from designers, stakeholders, and developers; produce a risk-ranked backlog.

Action items

IDTaskOwnerOutput
W1-1Schedule designer review (90 min)PMCalendar invite + PageMapPopup demo
W1-2Schedule stakeholder demo (60 min)PMEnd-to-end narrative script
W1-3Schedule developer architecture review (90 min)PM + Eng leadArchitecture notes
W1-4Run feedback sessionsAllSession notes per template below
W1-5Prioritize backlog by four risksPMRanked backlog in master plan or tracker
W1-6Begin P1 delivery (parallel)EngineerSee P1 tasks below

P1 parallel delivery (if capacity allows)

IDTaskSource
P1-1Build complete-skipped-steps (step 21)Master plan P1
P1-2Wire skip/recovery pathsMaster plan P1
P1-3Purpose variant flag on loan-amountMaster plan P1
P1-4Mobile pass on high-traffic screensMaster plan P1
P1-5Promote loan-amount, purpose-of-loan to readyMaster plan P1

Review session templates

Designer review

TopicQuestions
Visual fidelityDoes each screen match Figma intent?
Token fitAre colours/spacing from tokens, not literals?
State coverageHover, focus, error, disabled — what's missing?
Component reuseAny screen using custom UI that should be DS?

Output: Design sign-off OR numbered change list with screen slugs.

Stakeholder demo

TopicQuestions
NarrativeDoes the flow tell a coherent product story?
Conversion momentsAre trust, urgency, and clarity right at key steps?
OutcomesDo success/declined/foundation feel right?
Share readinessCan we show this outside the team?

Output: Go / no-go for broader sharing + top 3 concerns.

Developer review

TopicQuestions
Package boundariesIs DS / AppFlow / app separation clear?
ReuseCan product teams import without copying gallery code?
Integration painWhat's hardest about consuming @spring/ds-react?
CI / deployWhat's missing for production-grade pipeline?

Output: Architecture notes → input for Wave 2 RFC.

Testing

  • Re-run M1 walkthrough checklist after any P1 changes
  • Update master plan step statuses

Exit criteria (M2)

  • All three review sessions completed
  • Backlog prioritized with risk tags
  • Stakeholder go/no-go recorded
  • Master plan updated

Phase 2 — Architecture and DevOps alignment (Weeks 5–6)

Dates: Jul 28 – Aug 10, 2026
Milestone: M3 — Architecture aligned
Inspired risk focus: Feasibility

Objective

Align developers and DevOps on package consumption, CI, deployment, and publish path.

Action items

IDTaskOwnerOutput
W2-1Draft Architecture RFCEng leaddocs/planning/architecture-rfc.md (create during wave)
W2-2Review RFC with DevOpsEng + DevOpsSigned agreement
W2-3Add manual QA to CIDevOps + EngineerUpdated .github/workflows/ci.yml
W2-4Build both apps in CIDevOpsCI job covers gallery + personal-loan
W2-5Write deployment docDevOpsHosting for each app
W2-6Add manual browser journey testEngineerstart → analyzing → application-success

Architecture RFC topics

TopicCurrent stateDecision needed
Package consumptionfile: workspace, source-onlyKeep vs add tsup build
App boundariesGallery + personal-loan + appflow packageOwnership diagram
External publishNot publishedInternal registry vs npm private — criteria
Token changesManual sync + dev restartDocument in CONTRIBUTING
manual QALocal onlyCI integration

Testing

npm run lint
npm run build
npm run build:personal-loan

CI must pass on a clean PR before M3 sign-off.

Exit criteria (M3)

  • Architecture RFC approved
  • manual QA smoke in CI
  • Both apps build in CI
  • Deployment doc exists

Phase 3 — Injectable design system (Weeks 7–9)

Dates: Aug 11 – Aug 31, 2026
Milestone: M4 — Injectable DS proven
Inspired risk focus: Feasibility + Value

Objective

Prove Spring look-and-feel can be applied to any host app — even when not all components exist.

Adoption layers

LayerWhat shipsHost requirementsAvailable today
L1 — Tokenscss-variables.css + Tailwind themeCSS import + Tailwind configYes
L2 — PrimitivesTypography/spacing utilitiesTailwind + token CSSYes
L3 — Component bridgeMapping doc: DS ↔ fallbackReact + optional packagePartial
L4 — Full DS@spring/ds-react installReact 19, Next transpileAfter M3 publish decision

Action items

IDTaskOwnerOutput
W3-1Write injectable DS guideEngineerinjectable-ds-guide.md
W3-2Pilot A — blank Next.js + L1EngineerTiming log + screenshots
W3-3Pilot B — vibe-coded page + L1+L2Designer + EngineerTiming log + before/after
W3-4Pilot C — confirm standalone appEngineerParity checklist
W3-5Component gap matrixDesignerDS component vs fallback table
W3-6Define fallback rulesPM + DesignerWhen to use raw HTML vs wait for DS

Pilot pass criteria

  • External-style app reaches typography/color/spacing parity in <4 hours using L1+L2 alone
  • Gap matrix covers all AppFlow-critical inputs (TextField, SpringButton, modals, etc.)

Testing

PilotStepsMeasure
ANew Next.js app → import token CSS → style a formTime to Spring look
BAI-generated page → apply L1+L2 → compare to galleryTime + visual diff
CRun personal-loan outside gallery chromeFeature parity checklist

Exit criteria (M4)

  • Injectable guide published
  • Pilots A, B, C pass
  • Gap matrix complete
  • M3 RFC gate satisfied (no premature npm publish)

Phase 4 — Playground and vibe coding (Weeks 10–12)

Dates: Sep 1 – Sep 21, 2026
Milestone: M5 — Playground operational
Inspired risk focus: Value (discovery lane) + Usability

Objective

Operationalize the Playground as the discovery lane where anyone can vibe-code before package graduation.

Current base

  • Registry: apps/design-library/src/gallery/playground/playgroundProjects.ts
  • Categories: Components, Pages, Live Prototyping
  • 3 existing projects (Bloom V1/V2, application-flow live prototype)

Action items

IDTaskOwnerOutput
W4-1Document submission workflowPMTemplate in playbook or CONTRIBUTING
W4-2Define status lifecyclePMexploration → pending-approval → graduated
W4-3Document graduation pathEngineerPlayground → package PR → gallery doc
W4-4Run one full graduation cycleDesigner + Engineer≥1 component or page in package
W4-5Embed preview guidePMHow to share ?embed=1 URLs
W4-6Connect agentic workflowEng leadLink to operational-manifesto.md

Graduation criteria (component → package)

  • Full state coverage (default, hover, focus, disabled, error where applicable)
  • Token fit — no raw hex
  • Designer approval goal met in playground project
  • Gallery doc page created
  • Exported from packages/spring-ds-react/src/index.ts

Testing

Run one end-to-end cycle:

  1. Create playground project (exploration)
  2. Vibe-code or agent-generate UI
  3. Designer review → pending-approval
  4. Engineer PR to package
  5. Gallery doc page live

Exit criteria (M5)

  • Workflow documented
  • ≥1 graduation completed
  • Embed URLs verified for stakeholder review

Inspired note: Playground is discovery — unapproved playground code is not production DS.


Phase 5 — Multi-brand and theme switching (Weeks 13–15)

Dates: Sep 22 – Oct 12, 2026
Milestone: M6 — Multi-brand theme demo
Inspired risk focus: Feasibility + Business viability (DPP/partner)

Objective

Demonstrate theme switching when core DS is stable and injectability is proven.

Prerequisites (gates)

  • M4 injectable guide validated
  • Token architecture supports semantic overrides (--spring-semantic-*)
  • AppFlow critical path covered by DS components

Action items

IDTaskOwnerOutput
W5-1Theme provider patternEngineerdata-theme CSS variable swap at root
W5-2Gallery theme switcherEngineer + DesignerToggle on foundation + AppFlow demo
W5-3Foundation flow as second brandDesigner/library/page/appflow/foundation themed
W5-4Partner override specPM + DesignerDPP token override rules (not forked components)
W5-5Screenshot diff testQA3 screens × N themes

Testing

TestPass criteria
Theme switchAppFlow restyles without per-screen code changes
Partner overrideOnly brand tokens change; layout/spacing unchanged
Injectable compatibilityL1+L2 adoption still works with theme swap
RegressionM1 walkthrough still passes on default theme

Exit criteria (M6)

  • Theme switcher demo in gallery
  • Foundation brand pilot complete
  • Partner override spec documented
  • No regression on default Spring theme

Cross-cutting testing matrix

LayerWhatWhenCommand / method
BuildNo regressionsEvery PRnpm run lint && npm run build
VisualStep previewAppFlow workPageMapPopup mobile/desktop
JourneyEnd-to-end click-throughM1, M3+manual browser or manual checklist
Component swapDS efficiencyM1 sprintCoverage audit spreadsheet
TokenGlobal restyleToken changestokens:sync + clear .next + visual check
InjectableExternal adoptionM4Pilot timing benchmarks
HumanStakeholder sign-offM2, each wave endReview session templates

Team responsibilities by wave

RoleM1 publishM2 validationM3 archM4 injectM5 playgroundM6 theme
PMChecklist, scope lockFacilitate reviewsRFC inputPilot criteriaWorkflow ownerPartner spec
DesignerStart screen, QALead reviewToken gapsPilot B, gap matrixExperimentsTheme visuals
EngineerP0 tasksP1 parallelRFC, CI, manual QAPilots, guideGraduation PRTheme provider
DevOpsCI, deploy docPublish pathHosting themes
StakeholderDemo + sign-offBrand approval

Related documents

DocumentRole
02-roadmap-and-milestones.mdDates and milestone summary
04-product-decision-framework.mdWhen to rebrand vs feature vs UX
personal-loan-appflow-master-plan.mdP0/P1/P2 engineering detail
review-checklist.mdPre-PR quality gate