v1.0.0Pass or fail. Evidence before opinion.
Quality is pass/fail. Scores prioritize work; they never override a blocking failure. This standard is derived from the frozen Archic Design System gate and is machine-readable so every runner evaluates the same contract.
88Total checks
19Automated
55Hybrid
A · Brand coherence
8 checks- The identity is consistent across every page and every statehybrid
- Typefaces used as specified — no stray system fonts, no unintended weightshybrid
- Colours from the token set only — no hardcoded hex anywhere (`grep -rE "#[0-9a-fA-F]{3,8}" src/` returns only tokens and documented exceptions)automated
- Tone of voice consistent — including error messages, empty states, confirmation emails and the 404manual
- Iconography consistent in weight, size, terminals and metaphorhybrid
- Favicon, app icons, OG images all present and correctautomated
- The site would look wrong with a competitor's logo on ithybrid
- **Direction Vector divergence check passed and recorded** in the project registryhybrid
B · Visual craft
12 checks- All alignments correct — optically, not just mathematicallyhybrid
- Spacing from the scale everywhere; no arbitrary valueshybrid
- Rhythm consistent page to pagehybrid
- Hierarchy clear on every screen (blur test at 12 px produces the intended grouping)manual
- No orphans in headlines or pull quotes at any breakpointhybrid
- Tracking correct at every sizehybrid
- All images ≥2× density; no compression artefacts, no upscaling, no soft downscaleshybrid
- Crops correct at every breakpoint — **looked at, not assumed**manual
- Consistent grade across the whole image sethybrid
- Aspect ratios consistent within each sethybrid
- No layout shift on load — watch it load, don't just read the CLS numbermanual
- Text never sits on an unmanaged photographmanual
C · Interaction
10 checks- Every interactive element has all six stateshybrid
- Hover ≤140 ms, everywherehybrid
- Focus visible on every element, ≥3:1, never removedhybrid
- Loading states hold layout — button widths do not changehybrid
- Transitions consistent with the declared motion intensityhybrid
- Dialogs: focus trapped, restored, Escape closes, scroll locked without shifthybrid
- Drawers slide from their own edge; swipe-dismiss on touchhybrid
- No hover-only information or actionshybrid
- Feedback within 100 ms of every actionhybrid
- Repeated-path interactions under 200 mshybrid
D · UX
11 checks- Primary task completable in the minimum reasonable stepshybrid
- Navigation clear; current location always evidenthybrid
- One primary action per viewhybrid
- Every form: validation, errors, success, preserved inputhybrid
- Every error says what happened, why, and what to do nexthybrid
- Every empty state designed, not defaultedhybrid
- Destructive actions reversible or specifically confirmedhybrid
- Back button works; scroll position restoredhybrid
- Deep links work, including filtered viewshybrid
- 404 and 500 pages designed and helpfulhybrid
- The interaction signature exists and works on touchhybrid
E · Responsive
10 checks- 320 px — no horizontal overflow anywhereautomated
- 375 px — the mobile composition, not a squeezehybrid
- 768 px — decided explicitly, not left to chancehybrid
- 1024 / 1440 / 2560 pxhybrid
- Landscape phone (short viewport — sticky headers do not eat the screen)hybrid
- 200% browser zoom — nothing lost, nothing overlappingautomated
- Touch targets ≥44 px, ≥8 px apartautomated
- Sticky elements do not cover content; safe areas respectedhybrid
- Tables have a real mobile strategyhybrid
- Forms usable with the on-screen keyboard openhybrid
F · Content
10 checks- Zero Lorem ipsum, zero placeholder images, zero `TODO`automated
- Every headline passes the find-and-replace testhybrid
- Zero banned phrases from the anti-slop registryhybrid
- Spelling and grammar checked by a native speaker, in every languagemanual
- All facts verified with the client — prices, hours, addresses, phone numbers, names, dateshybrid
- **Every phone number dialled. Every email sent to. Every link clicked.**manual
- Every map pin checked against the real addressmanual
- Legal pages present and current (privacy, cookies, terms, and for Spain: aviso legal / LSSI)hybrid
- Every language complete — no untranslated stringshybrid
- Copyright year correct and auto-updatingautomated
G · Technical
17 checks- LCP ≤2.0 s, INP ≤200 ms, CLS ≤0.05 on a mid-tier Android over 4Ghybrid
- Lighthouse ≥90 performance, ≥95 accessibility, ≥95 best practices, ≥95 SEOautomated
- axe DevTools: zero violationsautomated
- Primary task completable by keyboard alonehybrid
- Screen reader tested on the primary flowmanual
- Reduced motion verified **by using the site with it enabled**automated
- Semantic HTML; one `<h1>`; no skipped heading levelsautomated
- Meta titles and descriptions unique and written, not generatedautomated
- OG and Twitter cards present, tested in a real previewhybrid
- Structured data where relevant (LocalBusiness, Restaurant, Product, Article)hybrid
- `sitemap.xml`, `robots.txt`, canonical URLsautomated
- 301s from any old URLshybrid
- HTTPS, HSTS, security headersautomated
- Forms tested end to end — **including that the email actually arrives**manual
- Analytics and RUM installed and firinghybrid
- Cookie consent compliant and not blocking renderingmanual
- Tested in Safari, Chrome, Firefox, and Safari iOSmanual
H · System integrity
9 checks- `node tools/validate-project.mjs project.config.json` exits 0hybrid
- `styles/foundation.css` and `styles/semantic-contract.css` match the frozen Archic release (`verify-client-foundation.mjs`)automated
- Semantic contract validator passes — every brand role explicitly mappedautomated
- `node tools/contrast.mjs styles/brand.css` exits 0 for the default theme **and every additional theme** (WCAG + APCA)hybrid
- No out-of-sRGB gamut failures in contrast validationautomated
- `node tools/static-audit.mjs .` has zero blocking findingsautomated
- No arbitrary z-index values outside the scaleautomated
- Brand file header complete: vector, archetype, fonts, licences, contrast verification datehybrid
- Asset provenance exists and matches the declared prototype/production policymanual
I · Polish pass
blockingNothing feels like a template, demo or unfinished product.