Build progress
The factory is built as a ladder. Each layer is made only from the validated layer below it, and each has a gate a robot checks. We review each size of part once — never each finished page.
Five adversarial reviewers audited Design System, 159 Themes, Atoms, Molecules + heroes. Fixed: status-badge WCAG contrast (new -strong/on-status token pairs, all 159 themes), --wv-muted body contrast (72%->90%), focus rings for EVERY interactive atom + inputs (WCAG 2.4.7), honesty props made required (OpenStatus/LanguageBadge/LicenseMark no longer assert facts by default), shared Icon + Surface atoms (killed the icon drift + card duplication), Field ARIA + error fallback, StarRating SR label, rating clamp, phone-mask leak, reduced-motion guard, removed the duplicate recovery/ dir. Full record: OPPOSITIONAL-PASS-layers-0-3-2026-07-11.md. Known-honest: the recovered heroes are frozen static (their own colors, not the token chain) and geometry space/radius scales await Layer-4 adoption.
The heroes were traced to Open Design (project Components_WebVegas) + the webvegas-housekeeper-template repo, and factory.webvegas.io was a MANUAL static project disconnected from git. Fixed: the 48-hero gallery was recovered into public/heroes, and the factory.webvegas.io domain was moved onto the git-auto-deploy project (webvegas-components). Now every merge auto-updates factory.webvegas.io — no more hand deploys, no more divergence. Full trace: SYSTEM-MAP.md.
The tokens + rules everything reads (--wv-*).
Done means: Paint-lint passes (0 raw colors); token contract frozen. · built by Claude
159 value-sets that repaint everything at once.
Done means: Every theme fills the whole token contract; theme-switch never breaks. · built by Claude
Smallest parts: button, input, badge, seal, phone, rating, price.
Done means: Token-only, exported, renders across 3 canary themes, 44px tap, a11y. · built by OD taste → Claude built
Small reusable combos of atoms (the daisy-chain).
Done means: Composed ONLY from atoms; token-only; renders across themes. · built by Claude
Page sections: hero, service grid, FAQ, quote form, footer.
Done means: Each composed ONLY from molecules + atoms (no hand-coded parts). · built by Claude (OD refines look)
A page skeleton: which organisms, in what order.
Done means: References only existing organisms; structure only, no content/paint. · built by Claude
A locked wireframe + content slots, per page TYPE.
Done means: Fills from a content schema; stamps with ANY theme; no manual layout. · built by Claude (OD finishing pass)
One template + one client's content + one theme.
Done means: Renders from data + theme with zero code edits. · built by Claude
A whole trade's site = a bundle of page templates.
Done means: Complete set of page types for the trade. · built by Claude
Site template + client content + theme = the deliverable.
Done means: Produced by configuration, not by hand. · built by Claude (OD polish)
Live source of truth: this page reads data/factory-progress.ts. The full walkable plan is FACTORY-BUILD-PLAN.md.