# 500 more ways to make Motif richer — the third bank _The first bank (docs/enrichment-500.md) shipped 500/500; the second (docs/suggestions-100.md) shipped its first 35 rows before this one was written. This third bank continues the same contract: every item is concrete enough to assign to a file, and every item carries a tag._ Ground truth at the time of writing: **145 routes · 133 components · 74 prompts · 60 Learn essays · 33 backgrounds · 8 lab tools · 13 changelog entries · 5 collections · 9 public endpoints · ledger 500 + 24 audit rows**. | tag | meaning | | --- | --- | | `now` | Buildable and verifiable in this repository with no server, no browser and no third party. | | `env` | Needs a real browser, a live domain or a third-party round-trip; stays labelled, never simulated. | | `infra` | Needs a backend, payments or another person; the slice is what gets built. | ## Progress | Batch | Items | Shipped as | | --- | --- | --- | | batch 1 | 1–12, 436 | twelve new prompt templates in src/lib/data.ts (catalog 74 → 86) · Forms & inputs + Dashboard starter kit collections in src/lib/community.ts (5 → 7) · changelog entry in CHANGELOG · the numbering self-check in scripts/check-demos.mjs | | batch 2 | 13–37 | twenty-five new prompt templates in src/lib/data.ts — items 13–25 finish the industry section (catalog 86 → 111), items 26–37 are the first twelve page archetypes · changelog entry in CHANGELOG | | batch 3 | 51–75 | prompt quality levers: 4th run on 110 prompts (#51) · tokens palettes on 37 (#52) · prompt-meta.ts with difficulty/stats/matrix/week/estimates (#53/54/60/61/63) · estLoc badge (#55) · retry guards (#56) · component links on detail (#57) · revision lines (#58) · promptBody searchable in /search and /prompts (#59) · coverage matrix on /prompts (#60) · week pick (#61) · 5 community prompts (#68) · linter + enum checks (#65/66/69) · /api/exports/prompt-pack (#71) · run day-offsets (#72) · flagship table (#73) · viewport chips (#74) · honesty line asserted (#75) · zh-CN titles ×3 (#70) · a11y-note field + distribution bars (#62/67) | | batch 4 | 76–100 | twenty-five new Learn essays in src/lib/learn.ts (catalog 60 → 85): the craft, systems, performance, a11y and postmortem curricula — each with deck, level, tags and block bodies, several linking the catalog components that demonstrate them · changelog entry in CHANGELOG | | batch 5 | 101–125 | Learn platform features: computed reading time (#101) · series grouping with prev/next on 8 essays (#102) · practise links asserted (#103) · glossary cross-link gate (#104) · takeaways on the 25 bank essays (#105) · revision lines (#106) · full-text essay search (#112) · feed ?full=1 body mode (#113) · print stylesheet (#114) · h2 anchors (#115) · translation-readiness count published (#116) · author lines (#117) · acyclic prereqs on 3 essays (#118) · /learn/courses page (#119) · /og/learn/[slug] cards (#120) · word ratchet in the build report (#121) · reading progress bar (#122) · on-this-page TOC (#123) · essay demo link via the embed shell (#124) · editorial calendar (#125) · footnotes on one essay (#109) | | batch 6 | 126–150 | twenty-five micro-interaction components in scenes/set-08.tsx + the catalog (133 → 158): ripple button, scroll ticker, long-press confirm, field shake, copy icon, progress dots, corner reveal, double-tap like, announced reorder list, snap carousel, gradient picker, avatar zoom, countdown pill, stroke-draw check, attention dot, elastic toggle, skeleton fade, key cap, flip tooltip, chip paste input, file icons, calm status pings, read-more clamp, scroll-top cue, skeleton table — every JS-driven scene guarded, all registered behind the lazy demo loader | | batch 7 | 151–175 | twenty-five data-display components in scenes/set-09.tsx + the catalog (158 → 183): sparkline rows, stacked bars, heatmap calendar, alternating timeline, sticky comparison matrix, KPI cards, tree table, ranked movement, threshold meter, drawn donut, gantt lite, avatar overflow, data dictionary, inline edit, column visibility, three-cause empty state, sticky first column, computed total row, two-column diff, lifecycle badges, aria-sort table, page-size pagination, row expansion, heat strip, locale number format | | batch 8 | 176–200 | twenty-five navigation & layout components in scenes/set-10.tsx + the catalog (183 → 208): mega menu, scoped palette, collapsible sidebar, breadcrumb overflow, review wizard, tab overflow fades, data-driven footer, keyboard resize split, sticky section stack, FAB speed dial, master-detail, scrollspy rail, off-canvas filters, shortcut overlay, dismissible banner, CSS masonry, aspect frames, full-bleed section, page header, labelled divider, TOC progress rail, side notes, equal-height grid, return-focus dialog, bottom sheet | | batch 9 | 201–225 | twenty-five scenes & backgrounds in scenes/set-11.tsx + the catalog (208 → 233): scramble on view, pausable marquee, typewriter, tab-aware counter, aurora dawn, grid parallax, particle drift, gradient mesh, topographic contours, film grain, light sweep, constellation lines, scene accordion, glass refraction, flip clock, orbit progress, cursor spotlight, pointer image trail, card dealer, elastic divider, magnetic button, letter rise, scroll year rail, before/after clip slider, floating labels | | batch 10 | 226–250 | twenty-five scenes & backgrounds in scenes/set-12.tsx + the catalog (233 → 258): duotone waves, checker drift, dot matrix, radial vignette, keycap field, static ticker, ring trio, wind chime list, holographic card, pull-to-refresh, scroll spine, stacked cards, word cloud, pulse map pin, gauge needle, restrained binary rain, paper fold, aurora ribbons, tilt with glare, skeleton swap, spring tab underline, expanding search, toast timer bar, vertical carousel, headline swap — section 9 (scenes & backgrounds) is now complete | | batch 11 | 251–275 | twenty-five page sections in scenes/set-13.tsx + the catalog (258 → 283): logo cloud, metric testimonial, how-it-works band, filtered FAQ, email CTA, integration grid, usage-slider pricing, testimonial masonry, honest versus table, stats band, press quotes, careers roles, security band, browser frame, feature split, use-case tabs, roadmap columns, values grid, newsletter opt-in, changelog teaser, code tabs, ROI calculator, gallery lightbox, pricing FAQ mini-bundle, footer sitemap columns | | batch 12 | 276–300 | twenty-five lab tools in src/components/lab-tools-2.tsx, all interactive on /lab (8 → 33 tools): token contrast, spacing/type/radius/shadow visualisers, duration lab, grid playground, CB approximation, reduced-motion toggle, focus tracer, breakpoint ruler, z-index stack, icon search, tone checker, locale formatter, role explorer, gradient worst-pair, easing compare, line-length band, tab-stop grid, print preview, JSON formatter, slug generator, meta preview, keyboard run sheet | | batch 13 | 301–325 | collections & curation: the module moves to src/lib/collections.ts with re-exports (#325) · four new shelves — marketing-page-in-a-box, calm-interfaces, dark-mode-first, start-here (#303/304/305/321) · accent gradients (#315) · seasonal window with in/out-of-season banner (#310) · related shelves (#312) · member filter + ?item= anchor highlight (#324/#318) · bundle/a11y/last-updated summaries on every shelf (#307/#319/#322) · featured-member spotlight (#314) · pick reasons rendered and gate-checked (#317) · shelf diff tool on the index (#313) · new-in-30-days shelf (#316) — counts and blurbs were already computed (#306/#309), feed and sitemap families already covered collections (#311/#323), and 301–302 shipped in batch 1 | | batch 14 | 326–350 | search & discovery: 20 new alias pairs (#326) · zero-result recovery page with nearest tags + most-copied shelf + clear (#327) · "/" global shortcut (#330) · showing-X-of-Y count with aria-live (#331/#345) · tag cloud with frequencies and top-tag definitions (#332/#347) · behavior filter chips (#333) · compare-two shelf (#336) · similar-to row on detail pages (#337) · 8-month trend sparklines on the top-8 components (#338) · /api/search JSON endpoint (#343) · /components/kind/[kind] pages (#348) · guides search form on /learn (#349) · discovery drill panel on /quality (#350) · empty-tag guard (#346) — grouping, recents, zero-dep, sort, industry matching, highlighting, URL state, did-you-mean and the new badge were already in the search client and are verified | | batch 15 | 351–370 | studio & saved flows: the stack workbench on /saved/stack — JSON export (#352) and import (#353), inline naming (#354), weight estimate with a 200 KB warning (#360), a11y summary naming the weakest member (#361), page-plan suggestion toward the marketing shelf (#362), 5-second undo on removal (#363), empty state (#364), HTML starter export (#369) — plus the studio panel: session summary (#356), first-visit hint (#357), keyboard map (#359), storage quota guard (#365), log filter + CSV export (#355/#366), panel tour (#368), one versioned prefs key gate-checked (#370). Stack sharing via URL (#351) and the theme picker (#358) were already live and are verified | | batch 16 | 371–395 | accessibility: the skip link on every built page, harness-asserted (#375) · landmark gate (#371) · heading/lang/label rules already in the scanner, verified (#372/373/376) · autocomplete tokens (#377) · error-summary catalog component (#378) · live-region inventory on the aria page (#379, existing) · reduced-motion statement in user language (#380) · target-size floor gate (#381) · scrim declaration gate (#382) · focus-ring suppression gate with five real fixes (#383) · "what you should hear" line on keyboard-behavior details (#384) · flash-sensitivity gate over the timer registry (#391) · "click here" scanner rule (#386) · pagination announces the page (#387) · table-caption scanner rule with 33 real tables fixed (#388) · dialog fixture gate (#389) · colour-blind-safe badges shipped in batch 7 (#390) · rubric section (#393) · 320 px reflow gate (#394) · plain-language section (#395) · alt inventory (#374) | | batch 17 | 396–420 | performance: **#410 ships for real** — the prompt catalog leaves data.ts for src/lib/prompts-data.ts, twelve client importers rewired, and the shell ratchet is recorded with structural headroom (446.8 → 675.3, now flat instead of climbing) · per-route budgets verified existing (#396) · zero-third-party, no-resource-hints and no-raster-images gates (#399/#412/#397/#407) · the weight-of-a-page explainer, asset inventory, shell ratchet history, runbook, plans (env-tagged #411/#417/#418) and FAQ on /perf/build (#403/#404/#408/#414/#419) · font preload coverage (#398) · per-frame work note (#406) · repeat-visit simulator (#405) · critical-CSS trade-off on /quality/speed (#400) · prefetch model note verified (#401) · delivery-format rationale (#415) · hydration inventory note (#416) · perf changelog badge verified existing (#420) — #409's sprite is honestly deferred: no repeated inline SVG set exists yet | | batch 18 | 421–445 | quality gates: the third bank joins the route-liveness walk (#421) · /quality/gates-2 lists all 243 checks from the verified index (#422) · unique check-name lint (#423) · runtime printed per run (#424) · flake policy verified in place (#425) · scripts/README.md with fixtures, exit codes and the CSP profile (#426/#433/#440/#442) · zero-anys gate (#427) · dead-export gate that removed nine real ones (#428) · numeric-truth gates verified (#429) · ledger table shape asserted (#430) · check:all --fast (#431) · PASS/FAIL colours (#432) · okw severity tier wired and used (#445) · harness self-test (#434) · sitemap-family coverage gate (#435) · numbering gate verified (#436) · word-count floors (#437) · changelog/gates index cross-checked (#438) · cannot-see section on /quality (#439) · golden fragment gate (#441) · robots/sitemap consistency (#443) · endpoint schema assertions (#444) | | batch 19 | 446–465 | admin & content ops on the new /admin/ops page: freshness panel (#446) · review queue as a status filter (#448) · data-integrity panel running the orphan checks in-admin (#451) · translation status board (#453) · publish checklists per entry type (#455) · a11y triage board (#462) with a session audit log (#454) · redirect register with a live gate (#447) · /api/exports/all with a family registry gate (#459) · image register empty by measurement (#460) · read-only roadmap slice (#461) · fixtures/deprecations/conventions panels (#456/#457/#452) · the admin layout states its demo scope, gains the main landmark, and the print stylesheet covers it (#458/#463/#464/#465) | | batch 20 | 466–485 | community & sharing: hall of fame computed from author fields (#466) · submission guidelines on /community/submit (#467) · moderation slice verified existing (#468) · /og/collections and /og/prompts share cards (#469/#470) · /embed/collections/[slug] with attribution (#471) · copy attribution line on copied prompts (#472) · built-with gallery labelled infra (#473) · JSON feed variant /community/feed.json (#475, full history verified #474) · /community/conduct (#476) · /community/report reproduction builder (#477) · changelog subscription guidance (#478) · digest month picker (#479) · browser-local pack counter (#480) · comments plan labelled infra (#481) · community honesty line (#482) · social preview checklist (#485) — #483's brand page already carries versioned assets, verified | | batch 21 | 486–500 | i18n / SEO / platform polish: zh-CN terms on the glossary (#486) · the one locale date helper (#487) · the hreflang plan page (#488) · SoftwareApplication JSON-LD on component pages (#489) · Article JSON-LD verified existing (#490) · CreativeWork JSON-LD on prompt pages (#491) · canonical audit verified (#492) · breadcrumb JSON-LD verified existing (#493) · OG alt text verified existing (#494) · sitemap lastmod from real dates verified (#495) · the 404 search-recovery card verified existing (#496) · print stylesheet covers the catalog (#497) · the offline fallback page (#498) · the dismissible what's-new teaser on the home page (#499) · the register closes this bank (#500) — the glossary ships ten zh terms with the count printed, not thirty claimed | | audit batch | post-programme | the batch-11 stats band's four hand-typed catalog sizes had already drifted; recomputed from data and the drift gate added to check:demos — the pattern the first bank's audit rows institutionalised, applied to the third | **Shipped: 500 / 500.** The third bank is complete: every item shipped, carried, or explicitly labelled as an infra/env slice with its slice named. The register above and the harness gates (#421–#445) are the proof. ## 1. Prompt library — industries the catalog does not cover yet (1–25) 1. **A prompt for a restaurant site with a menu section** — dark paper palette, menu list with dotted leaders, reservation CTA; add to PROMPTS with three model runs recorded. `now` 2. **A prompt for a dentist/clinic booking page** — calm teal, insurance badges, hours table, sticky book button. `now` 3. **A prompt for a real-estate listing hero** — map card beside gallery, price chip, mortgage slider. `now` 4. **A prompt for a nonprofit donation page** — impact-per-dollar cards, one-time/monthly toggle, donor wall strip. `now` 5. **A prompt for a conference schedule page** — multi-track timetable, speaker chips, timezone selector copy. `now` 6. **A prompt for a podcast episode grid** — player row with waveform placeholder, show-notes accordion. `now` 7. **A prompt for an e-mail newsletter archive** — issue list with reading-time, preview pane, subscribe band. `now` 8. **A prompt for a gym/fitness class timetable** — week grid, difficulty dots, coach cards. `now` 9. **A prompt for a law-firm practice-area page** — serif-forward, case-result counters, consultation form. `now` 10. **A prompt for a travel-package landing** — itinerary timeline, price-per-person tiers, photo mosaic hero. `now` 11. **A prompt for a hardware product spec page** — sticky spec table, exploded-view illustration slot, compare drawer. `now` 12. **A prompt for an online course sales page** — curriculum accordion, instructor bio, guarantee band, payment plan toggle. `now` 13. **A prompt for a job-board board view** — filter rail, saved-search chip row, salary-band histogram. `now` 14. **A prompt for a bakery order page** — pickup date picker, tiered box builder, allergen notes. `now` 15. **A prompt for a photography print shop** — masonry proof grid, size selector with price update, cart summary rail. `now` 16. **A prompt for a veterinary clinic page** — species tabs (dog/cat/exotic), emergency banner pattern, staff roster. `now` 17. **A prompt for a co-working space page** — plan comparison with headcount slider, amenity icon grid, tour CTA. `now` 18. **A prompt for a museum exhibition page** — gallery hero with captions, ticket calendar, accessibility notes section. `now` 19. **A prompt for a car dealership listing** — filter chips, spec card with fuel/ mileage badges, finance calculator copy. `now` 20. **A prompt for an insurance quote funnel** — three-step progress form, coverage slider, summary card before submit. `now` 21. **A prompt for a video-course membership dashboard** — continue-watching rail, streak counter, certificate card. `now` 22. **A prompt for a B2B integration marketplace** — partner cards with cert badges, webhook doc snippet, status footer. `now` 23. **A prompt for a wedding invitation site** — countdown, venue map card, RSVP form with dietary field. `now` 24. **A prompt for a recycling/city-service portal** — collection calendar, waste-sorting accordion, report-issue form. `now` 25. **A prompt for an e-sports team roster page** — player cards with stat bars, match calendar, sponsor marquee. `now` ## 2. Prompt library — page archetypes not yet templated (26–50) 26. **A changelog-as-marketing prompt** — product changelog page with version filter and "new" tags. `now` 27. **A docs-landing prompt** — three-column docs shell: sidebar tree, prose center, on-this-page rail. `now` 28. **A status-page prompt** — 90-day uptime bars, incident timeline, subscribe-to-updates field. `now` 29. **A waitlist prompt** — referral-position mechanic, queue number card, social-proof ticker. `now` 30. **A pricing-comparison prompt** — two-product side-by-side with sticky column headers and feature tooltips. `now` 31. **An onboarding-checklist prompt** — progress ring, five task cards that strike through on done. `now` 32. **A profile-settings prompt** — tabbed account page with save-bar that appears on dirty state. `now` 33. **A team-page prompt** — org grid with hover bios and a hiring band. `now` 34. **A press-kit prompt** — asset download cards (logo pack, palette, screenshots) with per-file size. `now` 35. **A 404-with-personality prompt** — error page with search field, three popular links, brand mascot. `now` 36. **A legal-pages prompt** — privacy/terms layout with anchored TOC and effective-date banner. `now` 37. **A feature-request board prompt** — upvote chips, status labels, sort tabs. `now` 38. **A customer-stories index prompt** — logo wall, outcome-stat cards per story, industry filter. `now` 39. **An ROI-calculator prompt** — slider inputs, live result card, assumptions footnote. `now` 40. **A migration-guide prompt** — step timeline with copy-to-clipboard code blocks per step. `now` 41. **An events-calendar prompt** — month grid with event dots and a list view toggle. `now` 42. **A knowledge-base home prompt** — category tiles with article counts, recent updates rail. `now` 43. **A beta-opt-in prompt** — feature flags list, per-flag enrol toggles, cohort note. `now` 44. **A security-disclosure prompt** — policy page with PGP block, hall-of-fames table, response SLA. `now` 45. **A partner-directory prompt** — tiered partner cards, region filter, contact-owner link. `now` 46. **A release-notes-in-app prompt** — modal pattern with "what changed" bullets and a seen/unseen dot. `now` 47. **A data-export prompt** — export page with format radio, date-range picker, ready-queue list. `now` 48. **An accessibility-conformance prompt** — statement page template mirroring /accessibility's structure. `now` 49. **A dashboard-empty-state prompt** — three empty-state variants with illustration slot and primary action. `now` 50. **A pricing-FAQ-bundle prompt** — the four questions every pricing page gets, with accordion markup. `now` ## 3. Prompt craft — quality levers on existing prompts (51–75) 51. **Record a fourth model run for every prompt that has only three** — add a GLM-4.6 (CN) run to the ten prompts whose runs array stops at three entries. `now` 52. **Add a `tokens` field to PromptTemplate** — hex palette per prompt so the body's "colours via CSS variables" has a canonical source; render swatches on /prompts/[slug]. `now` 53. **Add a `promptsStats()` derived table** — average fidelity per model across all recorded runs, printed on /prompts. `now` 54. **Tag every prompt with `difficulty`** — starter / intermediate / advanced, from block count and stack; filter chips on /prompts. `now` 55. **Add an estimated LOC per prompt** — recorded from the best run, so buyers can pick scope; shown as a badge. `now` 56. **A "what to say on retry" line per failed run** — every run with buildError gets its fix-note promoted into the prompt body as a guarded instruction. `now` 57. **Prompts get related components** — a components array per prompt linking catalog slugs it typically renders; rendered as cards on the prompt detail. `now` 58. **Prompt versioning line** — each prompt gets `revised:` date and a one-line revision note; the detail page prints it under the meta row. `now` 59. **A prompt search that matches promptBody text** — the /search index only matches title/tags today; include promptBody so "bento" finds all five prompts with bentos. `now` 60. **Industry coverage matrix on /prompts** — a table of industries × archetype counts generated from the data, with empty cells named as gaps. `now` 61. **A prompt-of-the-week rotation** — deterministic week-number pick from featured prompts, printed on /prompts with the formula shown. `now` 62. **Accessibility notes per prompt run** — runs gain an a11yNote field; the detail page prints what the generated page got wrong. `now` 63. **Cost-to-run estimate per prompt** — token-count heuristic from body length × blocks, labelled as an estimate, not a measurement. `now` 64. **A "remix this prompt" section per prompt** — three one-line variants (lighter, denser, playful) written under the body. `now` 65. **Consistency check: every prompt's stacks values must be from the fixed enum** — harness rule so "Next.js" vs "NextJS" cannot drift. `now` 66. **Consistency check: blocks use title-case nouns** — same harness pass, keeps the block chips tidy. `now` 67. **Every prompt page prints its own fidelity distribution** — a small inline bar chart from runs, pure CSS. `now` 68. **Add five prompts authored outside the studio** — author field "Community", status "beta", clearly labelled as unverified. `now` 69. **A prompt linter** — a script that checks every promptBody mentions reduced-motion, tokens and at least one behaviour; fails on absence. `now` 70. **Localise three prompts' titles** — zh-CN title field on three prompts, shown when locale query is set. `now` 71. **A downloadable prompt pack** — /api/exports gains prompt-pack.json generated from PROMPTS. `now` 72. **Prompt detail prints per-run date deltas** — "11 days after the reference run" style, computed from dates. `now` 73. **A comparison table of the three flagship prompts** — featured prompts side by side on /prompts, generated not hand-written. `now` 74. **Every prompt declares a target viewport** — mobile-first / desktop / both, shown as a chip. `now` 75. **An honesty line on /prompts** — "fidelity scores are editorial judgements from three runs, not benchmarks"; sentence asserted by the harness. `now` ## 4. Learn curriculum — the essays still missing (76–100) 76. **"Reading a diff as a reviewer"** — a guide that teaches the diff-reading habit the studio log already practises. `now` 77. **"Why your hero LCP is a font problem"** — connects the glyph-coverage finding to real hero copy. `now` 78. **"The three questions a changelog must answer"** — what changed, who noticed, how to roll back. `now` 79. **"Colour tokens are an API"** — naming, deprecation and aliasing of design tokens. `now` 80. **"Empty states are onboarding"** — the three-variant empty state as a teaching pattern. `now` 81. **"A form is a conversation"** — question order, error tone and the save-bar pattern. `now` 82. **"Tables that survive 10,000 rows"** — virtualisation concepts with a static demo. `now` 83. **"When animation is documentation"** — motion that explains state changes (mirrors motion-contract.md). `now` 84. **"The cost of one dependency"** — bundle arithmetic with the site's own chunk data. `now` 85. **"Version numbers people trust"** — semver, changelog and deprecation windows. `now` 86. **"Writing error messages that name the fix"** — inventory of the site's own error copy. `now` 87. **"A11y is a spec, not a vibe"** — reading WCAG success criteria against real components. `now` 88. **"Lighthouse is a smoke test"** — what a 100 does and does not prove. `now` 89. **"The layout shift that wasn't"** — a CLS debugging story from the measured site. `now` 90. **"Design review for engineers"** — a checklist distilled from the catalog's qualityScore rubric. `now` 91. **"Search is a product"** — zero-result pages, synonyms and the aliases field. `now` 92. **"Dark mode is a theme, not an inversion"** — token remapping with the site's own swatches. `now` 93. **"Progressive disclosure on long pages"** — TOC spine, accordions and when each is right. `now` 94. **"The economics of a copy button"** — why every code block on the site copies. `now` 95. **"Feature flags are communication"** — the beta-opt-in pattern as a rollout essay. `now` 96. **"Charts without a chart library"** — the CSS bar charts the quality pages already use. `now` 97. **"Naming a component"** — how combo-box got its name and why alias fields exist. `now` 98. **"The retriable request"** — idempotency, backoff and the one-retry rule used by the harness. `now` 99. **"Licensing for frontend snippets"** — MIT vs CC BY 4.0, the two licenses every catalog entry carries. `now` 100. **"Ship the boring version first"** — the roadmap's today/slice/cost/refuse pattern as a lesson. `now` ## 5. Learn platform features (101–125) 101. **Essay reading-time from word count** — computed in learn.ts, not hand-typed; shown on cards. `now` 102. **Essay series grouping** — a series field so the motion trilogy renders as "part 2 of 3" with prev/next. `now` 103. **Per-essay "practise on" links** — each essay links the two catalog components that demonstrate it. `now` 104. **A /learn/glossary cross-link pass** — every essay mentions at least one glossary term; harness checks first mentions link. `now` 105. **Key takeaways block per essay** — three-bullet TL;DR field, rendered top of article, counted by the harness. `now` 106. **Essay revision history line** — revised date plus one-line note, same convention as prompts (#58). `now` 107. **Code blocks in essays get file provenance** — a comment naming the real file the snippet came from; harness checks the file exists. `now` 108. **A /learn/index page listing essays by series and level** — distinct from the flat list. `now` 109. **Footnote support in essays** — a footnote field rendered as an endnote list with back-links. `now` 110. **Essay difficulty rating** — beginner/intermediate/advanced chip from a rubric, asserted by the harness. `now` 111. **"Next essay" recommendations** — related array per essay, rendered as a card at the bottom. `now` 112. **Essay search includes body text** — same as #59 for the learn index. `now` 113. **A learn RSS feed gains full-content mode** — feed.xml?full=1 emits body text; harness validates item count and a body fragment. `now` 114. **Print stylesheet for essays** — @media print rules that drop chrome; harness asserts the block exists. `now` 115. **Essay anchor-heading ids** — every h2 gets a stable id; harness checks uniqueness across all 60. `now` 116. **Translation-ready structure audit** — flag essays whose paragraphs exceed 90 words as hard to translate. `now` 117. **An essay template with author bio slot** — author field gains a bio array rendered on the article page. `now` 118. **Estimated-prerequisite chain** — essays declare prereq slugs; the harness rejects cycles. `now` 119. **A "course" view: seven essays in order with progress ticks** — /learn/course/motion-fundamentals page generated from the series field. `now` 120. **Essay cover art from the OG pipeline** — /og/learn/[slug] reuses the share-card drawer. `now` 121. **Word-count ratchet** — record total essay words in build-report.json; the harness fails a silent drop (which usually means a lost section). `now` 122. **Reading progress bar on essays** — scroll-driven, honouring reduced-motion; scene-kit pattern. `now` 123. **Essay TOC uses the existing toc-spine component** — swap the hand-rolled list on essays for the catalog component (dogfooding). `now` 124. **Inline demos inside essays** — one essay embeds a live catalog demo via the embed shell; harness checks the embed route answers. `now` 125. **An editorial calendar on /studio** — planned essay slots per month, data-driven from a new array. `now` ## 6. Components — micro-interactions the catalog lacks (126–150) 126. **Ripple button** — a material-style press ripple with reduced-motion fallback to opacity change. `now` 127. **Number ticker on scroll** — odometer that only starts when the viewport enters, using the existing useSceneMotion hook. `now` 128. **Long-press button** — hold-to-confirm with progress arc; keyboard equivalent via Enter hold. `now` 129. **Shake-on-invalid input** — form field wrapper that shakes once on error, honours reduced motion. `now` 130. **Copy-to-clipboard icon button** — with copied state and aria-live announcement. `now` 131. **Segmented progress dots** — step dots that fill with a sweep animation per completed step. `now` 132. **Hover-reveal card corner** — a corner fold that lifts to reveal a meta panel. `now` 133. **Double-tap-to-like heart** — burst particle variant, pointer and keyboard triggered. `now` 134. **Drag-to-reorder list (static demo)** — up/down buttons plus drag, with the list order announced. `now` 135. **Swipeable carousel with snap points** — scroll-snap based, no JS loop. `now` 136. **Multi-stop gradient picker** — canvas-free, stops as draggable chips on a bar. `now` 137. **Zoomable avatar stack** — hover expands overlapping avatars with names. `now` 138. **Countdown pill** — deadline chip with pulse under one hour, still legible frozen. `now` 139. **Confetti-free success checkmark** — SVG stroke-draw check, reduced-motion shows static. `now` 140. **Attention dot on tab** — unobtrusive badge that appears once per session (timer-registry friendly). `now` 141. **Elastic toggle** — spring-physics switch with three sizes. `now` 142. **Skeleton-to-content fade** — the standard loading shimmer as a reusable scene. `now` 143. **Keyboard-key cap** — kbd component with press animation, used by command-palette docs. `now` 144. **Tooltip with smart flip** — flips when near viewport edge, measured on open. `now` 145. **Chip input with paste-splitting** — pasting comma text creates chips. `now` 146. **File-type icon set** — inline SVG icons for pdf/img/zip, one scene, tokenised. `now` 147. **Status dot with ping** — three severities, ping only on "degraded", not on "ok" (calm computing). `now` 148. **Read-more expander** — clamps to three lines with a measured line, not a fixed px guess. `now` 149. **Scroll-to-top floating button** — appears after 60vh, uses scroll listener from timer-registry patterns. `now` 150. **Skeleton table with column widths** — matches the real table it replaces so layout never shifts. `now` ## 7. Components — data display and tables (151–175) 151. **Sparkline row** — table cells with inline SVG sparklines. `now` 152. **Stacked bar list** — categorical breakdown with legend and hover highlight. `now` 153. **Heatmap calendar** — GitHub-style grid, tokenised colour ramp, month labels. `now` 154. **Timeline with alternating sides** — vertical timeline, collapses to single column under sm. `now` 155. **Comparison matrix with sticky header** — the pricing-comparison pattern as a component. `now` 156. **KPI card set** — value, delta chip, one-line trend; the studio dashboard's building block. `now` 157. **Tree table** — indented rows with expand states and announced depth. `now` 158. **Ranked list with movement arrows** — rank, previous rank, up/down colouring. `now` 159. **Meter with threshold marks** — gauge with named thresholds, text value for screen readers. `now` 160. **Donut with center label** — pure SVG, no deps, animated draw. `now` 161. **Gantt-lite** — bars on a week grid; static demo from a data array. `now` 162. **Avatar group overflow** — +N chip that expands to a list. `now` 163. **Data-dictionary table** — field, type, description, nullable chip — used by schema pages. `now` 164. **Inline editable cell** — click to edit, Enter commits, Escape cancels; announced. `now` 165. **Column-visibility menu** — dropdown that toggles columns; state in URL param. `now` 166. **Empty-table state** — illustration slot, cause text, action button; three causes prewritten. `now` 167. **Sticky-first-column table** — horizontal scroll with pinned key column. `now` 168. **Total row with computed sums** — harness-style arithmetic printed in the footer row. `now` 169. **Diff view (two-column)** — before/after with per-line highlight; the migration-guide building block. `now` 170. **Badge set for lifecycle** — draft/review/live/archived using AssetStatus colours already defined. `now` 171. **Sortable table with aria-sort** — the full a11y pattern the catalog tables currently omit. `now` 172. **Pagination with page-size select** — extends the existing pagination-ellipsis. `now` 173. **Row-expansion drawer** — expanding row reveals detail grid; only one open at a time. `now` 174. **Mini calendar heat strip** — single-row month heat for dense dashboards. `now` 175. **Number formatting wrapper** — locale-aware compact numbers used across all data components. `now` ## 8. Components — navigation and layout (176–200) 176. **Mega menu** — two-level nav with panel; focus trap and Escape close. `now` 177. **Command palette with scoped search** — extends the existing palette to accept a scope query (?scope=prompts). `now` 178. **Sidebar with collapsible groups** — chevron groups with persisted state in localStorage. `now` 179. **Breadcrumbs with overflow** — collapses middle crumbs to an ellipsis menu. `now` 180. **Step wizard with review step** — five steps, back-safe, progress announced. `now` 181. **Tab bar with drag-to-scroll** — mobile tab overflow with edge fade. `now` 182. **Footer with link columns from data** — footer columns generated from sitemap data. `now` 183. **Split layout with resizable divider** — drag handle with keyboard arrows. `now` 184. **Sticky section header stack** — headers stack under the nav with depth shading. `now` 185. **Floating action cluster** — speed-dial FAB with four actions, radial open. `now` 186. **Two-pane master-detail** — list/detail with URL-driven selection. `now` 187. **Scrollspy side rail** — highlights the section in view; uses IntersectionObserver. `now` 188. **Off-canvas filter drawer** — slides over content on mobile, inline on desktop. `now` 189. **Keyboard-shortcut overlay** — "?" opens the shortcut cheatsheet the palette already documents. `now` 190. **Announcement banner with dismissal memory** — localStorage remembers; harness checks the storage key name. `now` 191. **Masonry layout without JS** — CSS columns variant with break-inside rules. `now` 192. **Aspect-ratio media frame** — every media slot declares ratio so grids never shift. `now` 193. **Full-bleed section wrapper** — escapes the container with measured gutters. `now` 194. **Page-header with actions** — title, description, actions row, breadcrumb slot; standardises new pages. `now` 195. **Empty section divider with label** — "— or —" style dividers as a component. `now` 196. **Sticky table-of-contents plus progress** — combines toc-spine and scrollspy (#187). `now` 197. **Responsive two-column prose** — side notes column on xl, inline on smaller. `now` 198. **Card grid with equal-height enforcement** — the grid utility that stops card CTA drift. `now` 199. **Dialog with return-focus restore** — closes back to trigger; the a11y fixture for dialogs. `now` 200. **Drawer sheet with drag handle** — bottom sheet on mobile, side panel on desktop. `now` ## 9. Animated scenes and backgrounds (201–250) 201. **Text scramble on view** — port the existing scramble to trigger at 20% visibility. `now` 202. **Marquee with pause-on-hover and speed control** — prop-driven speed, stops for reduced motion. `now` 203. **Typewriter with cursor blink** — tokenised speed, static full-text fallback. `now` 204. **Counter that respects tab-throttling** — uses document.visibilityState to avoid catch-up jumps. `now` 205. **Aurora variant: dawn palette** — second colourway of the existing aurora. `now` 206. **Background: drifting grid with parallax layers** — two-layer CSS transform loop. `now` 207. **Background: particle drift field** — 40 dots, GPU transform only, timer-registry declared. `now` 208. **Background: gradient mesh** — four radial blobs on a slow orbit. `now` 209. **Background: topographic contour lines** — SVG paths with slow dash drift. `now` 210. **Background: film grain** — noise via repeating SVG turbulence, opacity token. `now` 211. **Background: light sweep** — diagonal highlight pass every 6 s, static between passes. `now` 212. **Background: constellation lines** — points that connect under 120 px distance. `now` 213. **Scene: accordion of scenes** — a showcase that stacks three smaller demos in one frame. `now` 214. **Scene: glass card with refraction edge** — backdrop-filter with a 1 px highlight edge. `now` 215. **Scene: flip counter clock** — split-flap style minute flip, declares its interval. `now` 216. **Scene: orbit progress ring** — dots orbit a ring sized to percent complete. `now` 217. **Scene: cursor spotlight** — radial mask follows pointer, hidden on touch and reduced motion. `now` 218. **Scene: image trail on move** — throttled image pops along the pointer path. `now` 219. **Scene: card dealer shuffle** — three cards deal from a stack with stagger. `now` 220. **Scene: elastic divider** — section divider that stretches on scroll velocity. `now` 221. **Scene: magnetic button** — translates toward the pointer within 40 px, springs back. `now` 222. **Scene: letter-by-letter reveal** — headline splits to spans, staggered rise. `now` 223. **Scene: scroll-linked number rail** — year markers highlight as content scrolls. `now` 224. **Scene: before/after clip slider** — drag divider reveals two layered images. `now` 225. **Scene: floating label input group** — labels that lift on focus, three fields. `now` 226. **Background: duotone waves** — layered SVG waves with tokenised duotone. `now` 227. **Background: checker drift** — subtle checkerboard pan for playful pages. `now` 228. **Background: dot matrix scroll** — dot field translates slower than content. `now` 229. **Background: radial fade vignette** — focuses the eye; pairs with hero copy. `now` 230. **Background: keyboard keycap field** — isometric keys as a hero backdrop. `now` 231. **Scene: ticker with static snapshot** — the marquee freezes to its first frame when static. `now` 232. **Scene: progress ring trio** — small/medium/large ring sizes with shared math. `now` 233. **Scene: wind chime list** — list items sway on entry, settle in 400 ms. `now` 234. **Scene: holographic card** — hue-shifting sheen driven by pointer position. `now` 235. **Scene: pull-to-refresh demo** — overscroll indicator with a spring return. `now` 236. **Scene: scroll progress spine** — vertical line that fills with scroll; variant of #122. `now` 237. **Scene: stacked cards on scroll** — cards stack with scale on scroll, honouring reduced motion. `now` 238. **Scene: word cloud settle** — words drift in and settle by weight. `now` 239. **Scene: pulse map pin** — map pin with expanding rings, two sizes. `now` 240. **Scene: gauge needle** — animated needle with damped settle. `now` 241. **Background: binary rain (tasteful)** — low opacity, slow, two columns only. `now` 242. **Background: paper fold** — origami creases with a light pass. `now` 243. **Background: aurora ribbons (horizontal)** — waves instead of vertical curtains. `now` 244. **Scene: 3D tilt card with glare** — extends tilt-card with a glare layer. `now` 245. **Scene: skeleton swap** — loading to loaded with matched dimensions; pairs with #150. `now` 246. **Scene: tab underline physics** — underline slides with overshoot between tabs. `now` 247. **Scene: expanding search field** — icon to full field with width transition. `now` 248. **Scene: notification stack** — toasts enter bottom-right, auto-dismiss with visible timer bar. `now` 249. **Scene: vertical carousel** — rotates testimonials with dot nav. `now` 250. **Scene: hero headline swap** — rotating headlines with mask reveal; static first frame. `now` ## 10. Sections and page templates (251–275) 251. **Logo cloud with fade edges** — masked edges so the row reads as a strip, not a table. `now` 252. **Testimonial with metric headline** — quote led by the number it earned. `now` 253. **Three-step how-it-works band** — numbered cards with connector line. `now` 254. **FAQ with category filter** — groups questions, filter chips above the accordion. `now` 255. **CTA band with inline email field** — the pattern /pricing uses, extracted as a section. `now` 256. **Integration logo grid with hover docs** — each cell links its docs snippet. `now` 257. **Pricing with usage slider** — per-seat pricing that recalculates the featured tier. `now` 258. **Testimonial masonry** — 8 quotes in CSS columns with source chips. `now` 259. **Comparison "us vs them" table** — honest-column pattern with a sourced-link footnote row. `now` 260. **Stats band with count-up** — four metrics, each declares its target number in data. `now` 261. **Press quotes band** — three attributed pull-quotes with publication chips. `now` 262. **Careers band with open roles** — role list from a data array with location chips. `now` 263. **Security band** — SOC2/GDPR badges with a link to the disclosure page (#44). `now` 264. **Product screenshot browser frame** — screenshot inside a chrome frame with URL bar. `now` 265. **Two-column feature split** — alternating image/text rows, image declares aspect ratio (#192). `now` 266. **Use-case tabs section** — persona tabs each showing a short flow diagram. `now` 267. **Roadmap section** — today/slice/cost/refuse columns generated from roadmap.ts. `now` 268. **Team values grid** — four values with one-line proof each. `now` 269. **Newsletter opt-in section** — double opt-in copy, no fake subscriber count. `now` 270. **Changelog teaser** — latest three entries from CHANGELOG with a link to the full page. `now` 271. **Integrations code tab section** — three stack tabs each showing install + usage code. `now` 272. **Calculator section** — embeds the ROI pattern (#39) as a page section. `now` 273. **Gallery with lightbox** — click opens the existing dialog component (#199). `now` 274. **Pricing FAQ mini-bundle** — the four-question accordion (#50) as a drop-in section. `now` 275. **Site footer with newsletter and sitemap columns** — generated from route data (#182). `now` ## 11. Lab tools (276–300) 276. **Token contrast lab** — input two tokens, get the ratio and pass/fail; links the WCAG line. `now` 277. **Spacing scale visualiser** — renders the token scale as nested boxes. `now` 278. **Type scale previewer** — sample text at every type token with px and rem labels. `now` 279. **Radius previewer** — corner samples at every radius token on a card. `now` 280. **Shadow stack viewer** — the three elevation tokens side by side on three surfaces. `now` 281. **Motion duration lab** — scrub 0–600 ms and watch three standard easings side by side. `now` 282. **Grid playground** — column count and gap controls on a live grid of blocks. `now` 283. **Colour-blindness simulator (static)** — three filtered swatches labelled as approximations, not diagnoses. `now` 284. **Reduced-motion preview toggle** — forces the branch of any scene inside the lab frame. `now` 285. **Focus-order tracer** — highlights tab order over a sample form. `now` 286. **Breakpoint ruler** — shows the current breakpoint name and width live. `now` 287. **Z-index inventory viewer** — renders the declared z-index scale as a stack. `now` 288. **Icon grid searcher** — all inline SVG icons with names, click to copy markup. `now` 289. **Copy tone checker** — three tones of the same message side by side for writers. `now` 290. **Locale formatter lab** — date/number/currency formatting across the four supported locales. `now` 291. **ARIA role explorer** — the roles the catalog uses with required attributes. `now` 292. **Contrast-of-gradients helper** — samples five points along a gradient and reports the worst pair. `now` 293. **Easing curve editor** — cubic-bezier handles with a live ball drop. `now` 294. **Line-length measurer** — paste prose, see the measured 45–75 char band. `now` 295. **Tab-stop simulator** — shows a 44 px grid over a sample control set (pairs with the target-size candidates). `now` 296. **Print preview tool** — renders a card in print media styles. `now` 297. **JSON schema formatter** — pretty-printer for the catalog's own schema-map. `now` 298. **Slug generator** — title to slug with the site's transliteration rules. `now` 299. **Meta-tag previewer** — title/description/OG rendering against length limits. `now` 300. **Keyboard-only run sheet** — a checklist tool that walks a flow using only keys. `now` ## 12. Collections and curation (301–325) 301. **A "forms & inputs" collection** — the 12 input components in one shelf. `now` 302. **A "dashboard starter kit" collection** — KPI cards, tables, charts, empty states. `now` 303. **A "marketing page in a box" collection** — hero, features, pricing, CTA, FAQ. `now` 304. **A "calm interfaces" collection** — the lowest-motion components for a11y-sensitive builds. `now` 305. **A "dark mode first" collection** — components that read best on near-black. `now` 306. **Collection cards get component counts computed from members** — no hand-typed "12 items". `now` 307. **A collection page shows a combined bundle estimate** — sum of member bundleKb, labelled as upper bound. `now` 308. **Curated order inside collections** — members get a position field; the shelf respects it. `now` 309. **Collection intro copy for all five existing collections** — two sentences each naming the intended build. `now` 310. **A seasonal collection mechanism** — one collection gets a season field with start/end dates; the harness validates the window. `now` 311. **Collection RSS** — new items in a collection appear in /community/feed.xml items. `now` 312. **Related collections** — each collection names two related shelves; rendered as cards. `now` 313. **A collection diff tool on /studio** — pick two collections, see shared and unique members. `now` 314. **Featured-member spotlight per collection** — first member gets a larger card with its a11yScore. `now` 315. **Collections gain cover gradients** — each shelf a distinct token pair, no new colours. `now` 316. **A "new since you visited" shelf** — items published in the last 30 days, computed. `now` 317. **An "editor's picks" shelf with reasons** — three entries each carrying a one-line why. `now` 318. **Collection share links with anchor scroll** — /collections/x?item=slug focuses the member. `now` 319. **Per-collection accessibility summary** — min a11yScore and count of keyboard-supported members, computed. `now` 320. **Collection breadcrumb from home** — home → collections → shelf, using breadcrumb-trail. `now` 321. **A "start here" shelf for newcomers** — ten components that teach the catalog's conventions. `now` 322. **Shelf page prints its own last-updated** — max published date across members, computed. `now` 323. **Collections included in the sitemap page's table** — the /sitemap route lists them with counts. `now` 324. **A collection search filter** — client-side filter box over members. `now` 325. **Collection data moves to its own module** — collections out of community.ts into collections.ts so the shelf page stops importing the community module. `now` ## 13. Search and discovery (326–350) 326. **Synonym map expansion** — 20 new alias pairs (picker→select, loader→spinner…) in the search index. `now` 327. **Zero-result page with recovery** — /search?q= with no hits shows nearest tags and the five most-copied items. `now` 328. **Search result grouping by kind** — components / prompts / essays / backgrounds as labelled groups. `now` 329. **Recent searches (local only)** — localStorage, five entries, clear button. `now` 330. **Search keyboard shortcut hint** — "/" focuses the field; hint printed in the placeholder. `now` 331. **Result count honesty** — "showing 12 of 133" with a client-side page size. `now` 332. **Tag cloud on /components** — real frequencies computed from tags arrays. `now` 333. **Filter by behavior** — hover/click/drag chips that filter the grid. `now` 334. **Filter by dependency count** — zero-dep is a filterable badge. `now` 335. **Sort control on the catalog grid** — newest / most copied / highest a11yScore. `now` 336. **A comparison shelf** — select two components to see a side-by-side spec table. `now` 337. **"Similar to this" on component pages** — tag-overlap scoring, top three, computed not hand-picked. `now` 338. **Copy-count trend per component** — six-point sparkline from the monthly copies field history. `now` 339. **New-badge computed from published date** — auto-expires after 30 days, not hand-removed. `now` 340. **Search index includes prompt industries** — "fintech" surfaces the fintech prompts. `now` 341. **Search highlights matched text** — the matched substring bolded in results. `now` 342. **URL-synced filters** — the grid filter state lives in query params, shareable. `now` 343. **An API for search** — /api/search?q= returns JSON of the same index; rate-limited by cache rule. `now` 344. **Did-you-mean** — edit distance ≤2 against component titles. `now` 345. **Search accessibility fixture** — announced result count on input; fixture added to the a11y set. `now` 346. **Empty-tag guard** — a component with zero tags fails the harness (every entry is findable). `now` 347. **Tag descriptions** — the 15 most common tags get one-line definitions shown as tooltips. `now` 348. **Category pages as routes** — /components/kind/[kind] pre-rendered per AssetKind. `now` 349. **Search box on every listing page** — component grid, prompts, learn all get the same field. `now` 350. **Discovery metrics on /quality** — zero-result queries simulated from a fixture list, published. `now` ## 14. Studio, saved and personal flows (351–370) 351. **Saved stack sharing** — /saved/stack?ids= renders read-only for any ID list. `now` 352. **Export saved stack as JSON** — the export button writes a file with slugs and settings. `now` 353. **Import from JSON** — paste exported JSON to restore a stack. `now` 354. **Stack naming** — saved stacks get names with an inline rename. `now` 355. **Copy log CSV export** — /studio log table downloads as CSV. `now` 356. **Session summary card** — "you copied 6 components, 2 prompts this session". `now` 357. **Studio onboarding hints** — first-visit tooltips, dismissed state stored. `now` 358. **A studio theme picker** — preview the whole studio under the three brand palettes. `now` 359. **Keyboard map for the studio** — documented shortcuts with the keycap component (#143). `now` 360. **Stack weight estimate** — sum bundleKb across saved items with a warning over 200 KB. `now` 361. **Accessibility summary for a stack** — min a11yScore across items with the weakest named. `now` 362. **Stack-to-roadmap suggestion** — a saved stack of sections suggests the matching page template (#254–274). `now` 363. **Undo for stack removal** — toast with 5-second undo; timer declared in the registry. `now` 364. **Studio empty state** — three variants: no copies, no saves, cleared log. `now` 365. **Local storage quota guard** — the studio reports usage and fails soft at the limit. `now` 366. **A studio changelog filter** — filter the log by kind (copy/save/export). `now` 367. **Permalinked studio state** — encode stack in the hash; reload restores. `now` 368. **Studio tours per tab** — one-paragraph purpose line per tab, from a data array. `now` 369. **Export as HTML starter** — saved stack renders to a static HTML snippet. `now` 370. **Studio preferences persisted in one JSON key** — one key, versioned, harness-checked name. `now` ## 15. Accessibility (371–395) 371. **Landmark audit page section** — every page's landmark structure printed from the build. `now` 372. **Heading-order check across built pages** — harness rejects skipped heading levels. `now` 373. **Lang attribute consistency** — every built document carries the right lang; harness checks. `now` 374. **Image alt inventory** — every img/alt pair listed on /quality/aria with empty-alt rationale where intended. `now` 375. **Skip-link on every layout** — and the harness asserts its presence in the built shell. `now` 376. **Form labels audit** — every input in built HTML has a programmatic label. `now` 377. **Autofill attributes** — autocomplete tokens on the auth/contact fields. `now` 378. **Error-summary pattern for forms** — the error-summary component with focus management. `now` 379. **aria-live region inventory** — the four live regions named with their announcement rules. `now` 380. **Reduced-motion statement page section** — what the site promises (motion contract) in user language. `now` 381. **Touch-target spacing rule** — harness flags adjacent controls under 8 px apart in scene source. `now` 382. **Contrast: text over images** — scenes placing text on imagery must declare a scrim; harness checks the class. `now` 383. **Focus-visible everywhere** — harness asserts no outline:none without a replacement rule. `now` 384. **Screen-reader test script per interactive component** — a one-line "what you should hear" note on each detail page. `now` 385. **Timeouts: no scene auto-dismisses a toast under 8 s** — harness check against the timer registry. `now` 386. **Link purpose rule** — "click here" banned; harness greps built pages for the phrase. `now` 387. **Accessible pagination** — the pagination component announces current page. `now` 388. **Table captions** — every data table in built pages carries a caption or aria-label. `now` 389. **Dialog focus trap fixture** — the fixture set gains a focus-trap scenario for dialog. `now` 390. **Colour-blind-safe status set** — status chips pair colour with shape or letter. `now` 391. **Motion-trigger sensitivity** — scenes with flashing limit to 3 flashes/s, harness-checked by interval math. `now` 392. **Reading order fixture for grids** — card grid DOM order equals visual order; fixture asserts. `now` 393. **An "a11y score rubric" page section** — what the 0–100 a11yScore actually measures. `now` 394. **Zoom-reflow check at 320 px** — built pages contain no horizontal overflow container without a stated exception. `now` 395. **Sign-language-friendly copy rule** — plain-language pass flagged by a readability heuristic, results published. `now` ## 16. Performance (396–420) 396. **Per-route JS budget extension** — extend budgets.ts to the 20 highest-traffic routes with recorded baselines. `now` 397. **Image weight budget** — every committed image under a recorded cap, harness-checked. `now` 398. **Font loading audit page** — which faces load on which routes, from the built CSS. `now` 399. **Third-party zero policy** — the built pages reference no external origin; harness asserts (privacy + speed). `now` 400. **Critical CSS note** — record that the single shared sheet is the trade-off, on /quality/speed. `now` 401. **Route prefetch map** — which links Next will prefetch per page, published from the manifest. `now` 402. **Bundle diff on changelog entries** — each changelog entry records the shell size before/after. `now` 403. **A "weight of a page" explainer** — essay-style breakdown of one real page's bytes. `now` 404. **Static asset fingerprint inventory** — list of hashed assets with sizes, published on /perf. `now` 405. **Cache-hit simulator** — a table of repeat-visit requests marked from cache headers. `now` 406. **Animation frame budget note** — scenes declare their per-frame work; the heaviest five named. `now` 407. **CLS ledger** — every image/iframe declares dimensions; harness greps for width/height attrs. `now` 408. **Script execution order doc** — where the site's one inline script runs and why. `now` 409. **Inline SVG sprite sheet** — shared icons via symbol/use to cut repeated markup; byte delta recorded. `now` 410. **Tree-shaking proof** — importing one component pulls only its module: an import-graph printout. `now` 411. **Build-time CI budget** — the build must finish under a recorded wall-clock on the reference machine (env-tagged: reference machine needed). `env` 412. **Resource hints audit** — preconnect/dns-prefetch usage listed (expected: none, no third parties). `now` 413. **HTML weight per route** — the document itself (no assets) budgeted at 60 KB, harness-checked. `now` 414. **A perf regression runbook** — what to do when a budget fails: measure, attribute, revert or amend. `now` 415. **Comparison of delivery formats** — record why the site ships plain CSS, not CSS-in-JS, with measured bytes. `now` 416. **Lazy-hydration inventory** — which components hydrate on intent vs load, from the manifest. `now` 417. **Memory of a scene** — an env-tagged measurement plan for long-session heap growth; the plan, not fake numbers. `env` 418. **Core Web Vitals field-data plan** — where field numbers will come from when a domain exists; labelled plan. `env` 419. **A perf FAQ** — the five questions /quality/speed gets, answered with the site's own numbers. `now` 420. **Performance changelog badge** — changelog entries that moved a budget get a perf badge. `now` ## 17. Quality gates and the harness (421–445) 421. **Gates for enrichment-500-2.md itself** — this file's ledger joins the route-liveness walk and its own progress counter is harness-checked. `now` 422. **A gates dashboard page** — /quality/gates-2 listing the 212 + new checks with pass state from the last run. `now` 423. **Check naming convention** — every ok() name starts with its domain ("perf:", "a11y:"…); harness lints the sources. `now` 424. **Check-runtime report** — how long each harness section takes, printed once per run. `now` 425. **A flake policy** — the two retry rules documented where fetchRetry is defined; link from /quality. `now` 426. **Fixture directory layout doc** — where fixtures live and how the harness finds them. `now` 427. **Type coverage of data modules** — every export in src/lib has a declared type; script counts anys. `now` 428. **Dead-export sweep** — exported helpers nobody imports are listed; either wired or removed. `now` 429. **Commented-number policy** — a number in copy that the harness verifies gets a "verified:" comment; sweep converts 20. `now` 430. **Snapshot of the ledger table shape** — enrichment-500.md's table columns are asserted, so format drift fails fast. `now` 431. **A minimal check:all profile** — check:all --fast runs only the sub-10 s sections for inner-loop development. `now` 432. **Check output colours** — PASS/FAIL colour tokens matching the brand, off in CI. `now` 433. **Harness exit-code registry** — every check script exits 0/1/2 with 2 meaning "environment missing"; documented. `now` 434. **Self-test for the harness** — the harness runs one intentional failure in a sandbox string and asserts it is caught. `now` 435. **Route-coverage symmetry** — every sitemap entry is visited by at least one check; report the orphans. `now` 436. **A check for this bank's numbering** — 1..500 with no gaps or duplicates, failing loudly on edit. `now` 437. **Doc word-count guard** — docs that shrink by >10% in one commit are flagged as possible accidents. `now` 438. **Changelog-driven gate notes** — each new gate lands with a changelog entry; both lists cross-checked. `now` 439. **A "what the harness cannot see" page** — browser-only truths listed, each with its env tag. `now` 440. **Harness README** — scripts/README.md: what each script costs in time and what it proves. `now` 441. **Golden HTML fragment test** — one built page's hero section snapshotted; drift is a deliberate review. `now` 442. **CSP report-only profile** — the site's content-security policy drafted and validated offline. `now` 443. **Robots/sitemap consistency check** — sitemap.xml URLs == sitemap table minus noindex routes. `now` 444. **JSON endpoint schema validation** — the nine endpoints validated against hand-written schemas. `now` 445. **A check-severity system** — some failures are warnings (listed, non-fatal) by explicit marker. `now` ## 18. Admin and content operations (446–465) 446. **Admin dashboard freshness panel** — "data last touched" per module, computed from max dates. `now` 447. **Bulk slug renamer with redirect map** — renames produce a redirect list the harness validates. `now` 448. **Content review queue page** — entries with status review listed with reviewers and dates. `now` 449. **Changelog authoring helper** — a form that emits the entry object for pasting into data.ts. `now` 450. **Prompt run recorder** — the same form for adding a model run to a prompt. `now` 451. **Data-integrity panel** — orphan checks (demo keys, tags, related slugs) run in-admin, not only in CI. `now` 452. **Editorial style-sheet page** — the site's copy rules (capitalisation, oxford comma, "vs") in one admin page. `now` 453. **Translation status board** — per-locale coverage of localised fields (#70). `now` 454. **Admin audit log** — who/what/when for admin actions, stored locally, exported as JSON. `now` 455. **A "publish checklist" per entry type** — component/prompt/essay each get the eight boxes to tick. `now` 456. **Fixture data seeder** — regenerate demo data deterministically from name-fixtures.ts. `now` 457. **Deprecation banner tooling** — mark an entry deprecated; the banner component reads the flag. `now` 458. **Admin keyboard navigation pass** — the admin panel is keyboard-complete; fixtures assert tab order. `now` 459. **Data export-all endpoint** — /api/exports/all bundles every data module as one JSON. `now` 460. **Image asset register** — committed images listed with licence and source; admin page renders it. `now` 461. **Roadmap editor** — today/slice/cost/refuse rows editable in admin, written back to roadmap.ts format. `now` 462. **A11y triage board** — the target-size candidates (#13 of bank 2) triaged into accepted/fixed/won't-fix. `now` 463. **Admin empty states** — every admin tab defines its zero-data state. `now` 464. **Admin print stylesheet** — the dashboard prints as a report for review meetings. `now` 465. **Session-scoped admin demo data** — the admin demo admits its data is local; copy asserted by the harness. `now` ## 19. Community, sharing and platform (466–485) 466. **A /community hall-of-fame** — top prompt authors by community entries, from data. `now` 467. **Submission guidelines page** — what a community prompt must include to reach verified. `now` 468. **A moderation queue slice** — submitted prompts land as status beta with a review list. `infra` 469. **Share cards for collections** — /og/collections/[slug] via the OG drawer. `now` 470. **Share cards for prompts** — /og/prompts/[slug] same pipeline. `now` 471. **Embeddable collection shelf** — /embed/collections/[slug] renders the shelf for external pages. `now` 472. **Copy attribution comment** — copied code carries a one-line source comment; toggleable in studio prefs. `now` 473. **A "built with Motif" gallery slice** — screenshot submissions listed with submitter credit. `infra` 474. **RSS full history** — feeds include all items, not the latest N, with a ?limit= cap. `now` 475. **JSON feed variants** — feed.json alongside feed.xml for the three dated families. `now` 476. **A community code of conduct page** — linked from every community surface. `now` 477. **Issue-template style bug report page** — a form that formats a reproduction from the current page URL. `now` 478. **Changelog subscription guidance** — which feed to follow for which product surface. `now` 479. **A monthly digest page** — /digest gains a month picker over the 12 entries. `now` 480. **Prompt pack downloads counted** — the pack (#71) increments a counter shown on /prompts. `now` 481. **Giscus-free comment plan** — where discussions will live when infra exists; the plan page, no fake widget. `infra` 482. **Community stats honesty line** — "counts are demo fixtures" asserted on the community home. `now` 483. **Brand asset page versioning** — logo pack versions with release notes on /brand. `now` 484. **A contributor setup guide** — CONTRIBUTING.md with the five commands that matter (install, dev, check:all). `now` 485. **Social preview testing checklist** — how to verify OG cards on two platforms; linked from /og. `env` ## 20. Internationalisation, SEO and platform polish (486–500) 486. **A zh-CN glossary for 30 terms** — the glossary gains zh entries rendered when locale=zh. `now` 487. **Locale-aware date formatting sitewide** — one formatting helper replaces hand-formatted dates. `now` 488. **hreflang plan page** — the strategy for locale routes when they exist; plan only. `now` 489. **Structured data for components** — SoftwareApplication JSON-LD on component pages, validated offline. `now` 490. **Structured data for essays** — Article JSON-LD with author and dates. `now` 491. **Structured data for prompts** — CreativeWork JSON-LD with the run metadata. `now` 492. **A canonical-URL audit** — every page emits a canonical; harness checks the built head. `now` 493. **Breadcrumb JSON-LD** — generated from the real breadcrumbs. `now` 494. **Open Graph image alt text** — OG images declared with alt in the meta builder. `now` 495. **A sitemap lastmod from real dates** — lastmod computed from published/updated fields, not the build date. `now` 496. **404 page with search recovery** — extends the not-found card with the search box (#35). `now` 497. **Print styles for the catalog** — component detail pages print as spec sheets. `now` 498. **Offline fallback page** — a static page cached for when the shell fails; the SW decision's slice (#29 bank 2). `now` 499. **A "what's new" surface for return visitors** — the changelog teaser section (#270) on the home page, dismissible. `now` 500. **The register for this bank** — shipped/carried/dropped per item lives in the table above; the harness (#436) keeps its count honest. `now`