Leapfrog Design System · @leapfrog/ui-core
From a Figma frame to a pinned commit in production — every stage, every gate, and who holds each key. Eight stages, one direction, no step skipped.
color.brand.primary #005390, the Nunito Sans UI stack, and the 10px uppercase label convention — pulled from tokens/leapfrog.tokens.json.
Stage 1 · Intake
Design work enters from three sources and converges into the same machine-readable form: component specs and tokens. Nothing enters as loose opinion.
Source
Figma Design
Token and component extraction from the source files — Leapfrog › Design System 2 and Leapfrog – V3. Evidence lives in docs/extraction-notes.md and per-component *-figma-audit.md files.
Source
Figma Make
Generated apps audited for reusable patterns — e.g. domains/invoices/figma-make-audit.md, the SimpleAP prototype lineage.
Source
App handoffs
Product apps file generic design decisions (SimpleAP → docs/ds-handoff/). Intake accepts product-neutral patterns and rejects app-specific content.
Converges into
Specs + tokens
components/**/*.yaml component specs and tokens/leapfrog.tokens.json — tokens first, then intent, then atomic classification.
Stage 2 · Develop
Work happens in isolated worktrees on named branches. Neither lane touches main directly — it's the stable integration base.
ds-builder lane
ds-builder/<topic>
Owns fundamentals: tokens, src/ui runtime, Storybook stories in src/review, public API surface. Registered in CloudOps builders/ds-builder.md.
Frontier lane
codex/frontier-<topic>
Experiments that consume only public contracts — exports, tokens, CSS, API report. Never DS internals. Files promotion requests instead of editing fundamentals.
In practice
13 live worktrees
Each branch checked out in its own worktree beside the canonical repo — enterprise grid, typed filters, IA graph, storybook remediation, release prep.
package.json, .storybook/*, src/ui/index.ts, the API report) require explicit PR notes — they're the cross-lane contract surface.Stage 3 · Validate
CI runs a deterministic chain — a change that breaks fidelity, contracts, or the export surface never reaches review. Sonar tracks the consumable surface separately.
Inside check:storybook
Build + fidelity + a11y gate + spec-trace + interaction contracts + interaction tests.
Inside check:package
Consumption, token/grid/rendering contracts, export-surface parity — keeps review-only organisms out of the runtime API.
Inside check:release-readiness
Source boundaries, runtime promotion rules, CSS contracts, IA dependency audit.
Stage 4 · Review & merge
Storybook is the canonical review environment; the review checklist covers tokens, atoms, molecules, and AI-readiness. Merging isn't the finish line — readiness is.
Review
Storybook + checklist
npm run storybook; a11y addon, test runner, docs. Checklist: docs/review-checklist.md.
Merge
Into protected main
Per the two-lane merge policy. Main stays deployable.
Maturity recorded
component-readiness.yaml
Consumers gate adoption on this file — not on the merge.
Readiness ladder
Stage 5 · Version
Every governed public-surface change carries a changeset even while the package is private. The API Extractor report is the drift alarm on the public surface.
Patch
Fixes & fidelity
Bug fixes, visual fidelity corrections, docs.
Minor
Additive surface
New components, variants, additive props, new tokens.
Major
Breaking surface
Removed exports, renamed props, changed defaults, removed token paths. Minimum one minor of deprecation first.
"private": true. release:packages is provenance-ready and waiting on the @pp/* registry decision (CloudOps #13). Until then, versioning is bookkeeping for the future package.Stage 6 · Promote to company
After CI passes on canonical main, a workflow opens (or updates) a sync PR against the company repo. Your devs decide when it lands. The commit SHA is the contract.
Trigger
CI green on main
Canonical Leapfrog DS repo (origin slug rename pending).
mirror-company.yml
Sync branch updated
mirror/canonical-main pushed by leapfrog-mirror-bot; PR opened into company main. No direct pushes, no tags mirrored, no ref deletion.
Company repo
Procurementpartners/design-system
Devs merge deliberately. Consumers pin only after the sync PR merges.
Stage 7 · Governed release
A governed release is a coordination record, not just a deploy. Every builder lane accounts for itself before anything promotes.
1 · Assign
Release ID
releases/<domain>/<id>/ created by Cloud Ops.
2 · Account
All lanes contribute
Every builder submits a contribution or not-applicable. No silent lanes.
3 · Reconcile
Evidence assembled
Notes, manifest, evidence vs actual commits and deployments.
4 · Human gate
Dave approves
The one non-automatable step, by design.
5 · Promote
QA + snapshot
Immutable source tag, QA promotion, bundled company publication under the same ID, smoke verification, rollback pointers.
Stage 8 · Consume & deploy
Apps take the system as a pinned read-only submodule behind an app-owned adapter. Feature code sees @/ui — never the raw system, never AG Grid directly.
The pin
design-system/ submodule
The commit SHA is the contract. Upgrades are deliberate: bump → pnpm sync:design-system → typecheck/test/build → visual QA vs Storybook → commit pointer + generated files together.
The boundary
App adapter src/ui/
Feature code imports @/ui only. No design-system/**, no AG Grid packages, no scaffolding leaks.
The surface
Vercel from main
Storybook + Frontier deploy per the deployment policy: health checks, smoke table, rollback runbook.
pnpm add @leapfrog/ui-core@<approved-version> once the registry decision lands.The whole board
Intake
Figma Design · Figma Make · app handoffs → specs + tokens
Develop
ds-builder/* + codex/frontier-* worktrees
Validate
9-gate CI chain + Sonar
Review
Storybook → merge → readiness ladder
Version
Changesets · API report · publish blocked
Mirror
Sync PR to company repo — proposed, never pushed
Release
CloudOps record → Dave approves → QA + snapshot
Consume
Pinned submodule + adapter → Vercel production
System view · Node editor workspace
Every system as a node, every contract as a wire. Drag nodes, pan the canvas, zoom with the buttons — the wires follow.
Leapfrog › DS 2 · V3 source files
Generated app prototypes
SimpleAP → docs/ds-handoff/
Leapfrog DS repo · tokens · specs · src/ui · src/review · API report
ci.yml · 9-gate chain + Sonar
mirror-company.yml · leapfrog-mirror-bot · proposes, never pushes
Procurementpartners/design-system · devs merge deliberately
Builder registry · release records · environment registry
The one non-automatable node
design-system/ submodule pin · src/ui adapter boundary
AG Grid · Gauge consumers
DS surface (Storybook + Frontier) · app environments · smoke + rollback
Known drift · July 2026
naming · decided
Consolidating to Leapfrog
Decision made: Convergence is decommissioned — Leapfrog only. Pending cleanup: rename the GitHub origin (Convergence_Design_System → Leapfrog), retire the convergence-design-system.vercel.app alias, and align the deployment-policy doc with the registry on leapfrog-design-system.vercel.app.
process
The release path is unexercised
No DS change has ever flowed through a CloudOps release end-to-end — every record so far marks ds-builder not-applicable. The bundled company publication step exists only on paper.
distribution
Package consumption is aspirational
pnpm add @leapfrog/ui-core is documented as preferred but publishing is disabled — blocked on the @pp/* registry decision (CloudOps #13).
tooling
No publish workflow exists
Release governance requires a tag/publish CI workflow before flipping private: false. Only ci.yml and mirror-company.yml exist today.
For the product & technology teams
Everything referenced in this walkthrough, one click away.
Leapfrog Design System
Leapfrog Storybook
leapfrog-design-system.vercel.appThe component library — every atom, molecule, and organism with live controls, a11y, and interaction tests.
Team access FRLeapfrog Frontier
leapfrog-design-system.vercel.app/frontier/The experimentation surface — patterns composed from public contracts before they promote into the system.
Team accessLive product surfaces
SimpleAP · Prototype
ap-proto.1z2y3x.comThe flagship consumer app — invoice processing on the Leapfrog grid, pinned to the design system.
Team SSO QASimpleAP · QA
ap-qa.1z2y3x.comThe QA environment for AP automation, one promotion tier ahead of prototype.
Team SSO BGBudget vs Spend · AG Grid
bvs-ag-grid.vercel.appBudget-versus-spend analysis on the enterprise grid.
Live BVBudget vs Spend · Gauge
bvs-gauge.vercel.appThe gauge visualization surface for budget tracking.
Live1z2y3x.com — the root of the same domain the product environments run under.