@tryvitris/website-harness 0.0.0-stage → 0.1.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1303) hide show
  1. package/CONTRIBUTING.md +7 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE +17 -0
  4. package/README.md +139 -2
  5. package/agent/EVALUATION.md +23 -0
  6. package/agent/PROMPT.md +13 -0
  7. package/agent/STATE.json +109 -0
  8. package/agent/WORKFLOW.md +108 -0
  9. package/agent/evals/preview.md +5 -0
  10. package/agent/graph.yaml +752 -0
  11. package/agent/guardrails.md +10 -0
  12. package/agent/refs/accessibility.md +9 -0
  13. package/agent/refs/art-direction.md +15 -0
  14. package/agent/refs/brand.md +3 -0
  15. package/agent/refs/browser.md +15 -0
  16. package/agent/refs/business.md +9 -0
  17. package/agent/refs/components.md +42 -0
  18. package/agent/refs/compose.md +10 -0
  19. package/agent/refs/contracts.md +32 -0
  20. package/agent/refs/copy.md +14 -0
  21. package/agent/refs/counterpoint.md +3 -0
  22. package/agent/refs/critic.md +29 -0
  23. package/agent/refs/design-calibration.md +31 -0
  24. package/agent/refs/design-feedback.md +13 -0
  25. package/agent/refs/design-quality.md +33 -0
  26. package/agent/refs/design-synthesis.md +9 -0
  27. package/agent/refs/direction.md +29 -0
  28. package/agent/refs/feedback-fulfillment.md +7 -0
  29. package/agent/refs/geo.md +7 -0
  30. package/agent/refs/harvest.md +7 -0
  31. package/agent/refs/icons.md +102 -0
  32. package/agent/refs/images.md +3 -0
  33. package/agent/refs/implement.md +24 -0
  34. package/agent/refs/industry-reference-shortlist.md +64 -0
  35. package/agent/refs/inspiration.md +17 -0
  36. package/agent/refs/interpret.md +3 -0
  37. package/agent/refs/jev.md +166 -0
  38. package/agent/refs/launch.md +11 -0
  39. package/agent/refs/layout.md +7 -0
  40. package/agent/refs/media.md +35 -0
  41. package/agent/refs/motif.md +3 -0
  42. package/agent/refs/motion-count.md +13 -0
  43. package/agent/refs/motion-image.md +12 -0
  44. package/agent/refs/motion-numeric.md +14 -0
  45. package/agent/refs/motion-page.md +23 -0
  46. package/agent/refs/motion-process.md +12 -0
  47. package/agent/refs/motion-sequence.md +7 -0
  48. package/agent/refs/motion-text.md +12 -0
  49. package/agent/refs/motion.md +11 -0
  50. package/agent/refs/narrative.md +9 -0
  51. package/agent/refs/performance.md +36 -0
  52. package/agent/refs/preview.md +3 -0
  53. package/agent/refs/production-quality.md +33 -0
  54. package/agent/refs/psychology.md +3 -0
  55. package/agent/refs/refine.md +14 -0
  56. package/agent/refs/research.md +7 -0
  57. package/agent/refs/sections.md +6 -0
  58. package/agent/refs/seo.md +9 -0
  59. package/agent/refs/storyboard.md +27 -0
  60. package/agent/refs/template-adaptation.md +42 -0
  61. package/agent/refs/template-from-url.md +91 -0
  62. package/agent/refs/template-library.md +32 -0
  63. package/agent/refs/template-motion.md +44 -0
  64. package/agent/refs/theme-selection.md +13 -0
  65. package/agent/refs/ui-ux.md +7 -0
  66. package/agent/refs/usability.md +5 -0
  67. package/agent/refs/variant-directions.md +20 -0
  68. package/agent/refs/write.md +6 -0
  69. package/agent/request.json +11 -0
  70. package/agent/workflow.json +4 -0
  71. package/bin/api/agent/artifacts.js +38 -0
  72. package/bin/api/agent/evaluate.js +55 -0
  73. package/bin/api/agent/grade.js +51 -0
  74. package/bin/api/agent/graph.js +16 -0
  75. package/bin/api/cli/api.js +104 -0
  76. package/bin/api/cli.js +48 -0
  77. package/bin/api/contracts.js +22 -0
  78. package/bin/api/engine.js +53 -0
  79. package/bin/api/hosting.js +40 -0
  80. package/bin/api/icons.js +57 -0
  81. package/bin/api/index.js +20 -0
  82. package/bin/api/references.js +45 -0
  83. package/bin/api/render.js +61 -0
  84. package/bin/api/schema.js +68 -0
  85. package/bin/api/theme.js +9 -0
  86. package/bin/api/types.js +8 -0
  87. package/bin/chunks/chunk-2NW7KSPA.js +17 -0
  88. package/bin/chunks/chunk-34H54KEY.js +45 -0
  89. package/bin/chunks/chunk-3CTBXY5K.js +22313 -0
  90. package/bin/chunks/chunk-42IXFXUD.js +1141 -0
  91. package/bin/chunks/chunk-4DM5TTLG.js +219 -0
  92. package/bin/chunks/chunk-4GZCAWWK.js +327 -0
  93. package/bin/chunks/chunk-54JC5L35.js +493 -0
  94. package/bin/chunks/chunk-5OOPJNGN.js +511 -0
  95. package/bin/chunks/chunk-6A3VWYMF.js +28 -0
  96. package/bin/chunks/chunk-6H3T46F5.js +25 -0
  97. package/bin/chunks/chunk-7FS67SRF.js +12 -0
  98. package/bin/chunks/chunk-7VLBEAFW.js +56 -0
  99. package/bin/chunks/chunk-ANMJRJQ5.js +31 -0
  100. package/bin/chunks/chunk-AUO5I56E.js +118774 -0
  101. package/bin/chunks/chunk-B5I45LFD.js +619 -0
  102. package/bin/chunks/chunk-BBV7PMFC.js +185 -0
  103. package/bin/chunks/chunk-BIEDSEL2.js +8 -0
  104. package/bin/chunks/chunk-CBEJZO4L.js +67 -0
  105. package/bin/chunks/chunk-DRJQ4OOU.js +514 -0
  106. package/bin/chunks/chunk-DSS2U2OM.js +115 -0
  107. package/bin/chunks/chunk-E5Y46VBX.js +678 -0
  108. package/bin/chunks/chunk-FOXUQXTV.js +278 -0
  109. package/bin/chunks/chunk-FYN4T4SV.js +4900 -0
  110. package/bin/chunks/chunk-G7MNMULR.js +192 -0
  111. package/bin/chunks/chunk-GVNIL34R.js +78 -0
  112. package/bin/chunks/chunk-GZDLXYZV.js +3425 -0
  113. package/bin/chunks/chunk-HNORQ74T.js +40 -0
  114. package/bin/chunks/chunk-IKNMBGGD.js +217 -0
  115. package/bin/chunks/chunk-JCRGE6AL.js +14 -0
  116. package/bin/chunks/chunk-LKN75JGA.js +63 -0
  117. package/bin/chunks/chunk-M2ETYSVJ.js +176 -0
  118. package/bin/chunks/chunk-M4LNHYYR.js +177 -0
  119. package/bin/chunks/chunk-PRLL7B63.js +113 -0
  120. package/bin/chunks/chunk-R7YELY3C.js +923 -0
  121. package/bin/chunks/chunk-T6PE4KN4.js +277 -0
  122. package/bin/chunks/chunk-T7DGRVTP.js +458 -0
  123. package/bin/chunks/chunk-TY33XMHW.js +239 -0
  124. package/bin/chunks/chunk-VH7PM7KJ.js +179 -0
  125. package/bin/chunks/chunk-WEFDVXFX.js +65 -0
  126. package/bin/chunks/chunk-XGTHGWPW.js +90 -0
  127. package/bin/chunks/chunk-XL2DRAYI.js +39 -0
  128. package/bin/chunks/chunk-YCVGD2CG.js +2751 -0
  129. package/bin/chunks/chunk-YQYHROLZ.js +1023 -0
  130. package/bin/chunks/chunk-YYPYYOEV.js +34 -0
  131. package/bin/chunks/chunk-Z2UNY47A.js +2418 -0
  132. package/bin/chunks/design-context-store-IAT2P2OC.js +39 -0
  133. package/bin/chunks/packets-VBMY4SQJ.js +53 -0
  134. package/bin/chunks/policy-2I37JUU3.js +18 -0
  135. package/bin/chunks/preparation-S4MG3RPL.js +93 -0
  136. package/bin/chunks/questions-HKELBDFL.js +120 -0
  137. package/bin/chunks/state-GDL6CCJI.js +20 -0
  138. package/bin/chunks/template-gallery-ET76ERZQ.js +140 -0
  139. package/bin/cloudflare/backend.js +24421 -0
  140. package/bin/cloudflare/blake3.wasm +0 -0
  141. package/bin/cloudflare/forms-test.js +429 -0
  142. package/bin/cloudflare/templates.js +100 -0
  143. package/bin/types/scripts/lib/r2.d.ts +7 -0
  144. package/bin/types/scripts/onboard/browser.d.ts +9 -0
  145. package/bin/types/scripts/onboard/crawl.d.ts +35 -0
  146. package/bin/types/scripts/onboard/images.d.ts +19 -0
  147. package/bin/types/scripts/onboard/prompt.d.ts +10 -0
  148. package/bin/types/scripts/onboard/run.d.ts +47 -0
  149. package/bin/types/src/agent/adaptation-checkpoint.d.ts +70 -0
  150. package/bin/types/src/agent/added-media.d.ts +31 -0
  151. package/bin/types/src/agent/api-contracts.d.ts +2 -0
  152. package/bin/types/src/agent/art-direction-policy.d.ts +9 -0
  153. package/bin/types/src/agent/art-direction.d.ts +253 -0
  154. package/bin/types/src/agent/artifacts.d.ts +602 -0
  155. package/bin/types/src/agent/browser-motion-journey.d.ts +59 -0
  156. package/bin/types/src/agent/browser-motion.d.ts +40 -0
  157. package/bin/types/src/agent/browser-timeout.d.ts +4 -0
  158. package/bin/types/src/agent/composition-authoring.d.ts +12 -0
  159. package/bin/types/src/agent/composition-context.d.ts +63 -0
  160. package/bin/types/src/agent/composition-contract.d.ts +4 -0
  161. package/bin/types/src/agent/composition-decisions.d.ts +43 -0
  162. package/bin/types/src/agent/composition-preflight.d.ts +16 -0
  163. package/bin/types/src/agent/creative-change-context.d.ts +21 -0
  164. package/bin/types/src/agent/creative-context.d.ts +56 -0
  165. package/bin/types/src/agent/creative-contract.d.ts +123 -0
  166. package/bin/types/src/agent/creative-efficiency.d.ts +18 -0
  167. package/bin/types/src/agent/creative-evidence.d.ts +57 -0
  168. package/bin/types/src/agent/creative-objective.d.ts +33 -0
  169. package/bin/types/src/agent/creative-profile.d.ts +81 -0
  170. package/bin/types/src/agent/creative-prompts.d.ts +7 -0
  171. package/bin/types/src/agent/creative-render-bindings.d.ts +13 -0
  172. package/bin/types/src/agent/creative-revision.d.ts +33 -0
  173. package/bin/types/src/agent/creative-skills.d.ts +25 -0
  174. package/bin/types/src/agent/cursor-hook.d.ts +182 -0
  175. package/bin/types/src/agent/design-bundle.d.ts +24 -0
  176. package/bin/types/src/agent/design-calibration.d.ts +43 -0
  177. package/bin/types/src/agent/design-cli.d.ts +5 -0
  178. package/bin/types/src/agent/design-comparison.d.ts +63 -0
  179. package/bin/types/src/agent/design-context-packet.d.ts +82 -0
  180. package/bin/types/src/agent/design-context-store.d.ts +14 -0
  181. package/bin/types/src/agent/design-context.d.ts +85 -0
  182. package/bin/types/src/agent/design-contracts.d.ts +35 -0
  183. package/bin/types/src/agent/design-copy.d.ts +29 -0
  184. package/bin/types/src/agent/design-feedback.d.ts +91 -0
  185. package/bin/types/src/agent/design-knowledge.d.ts +124 -0
  186. package/bin/types/src/agent/design-quality.d.ts +143 -0
  187. package/bin/types/src/agent/design-review-server.d.ts +13 -0
  188. package/bin/types/src/agent/design-run.d.ts +174 -0
  189. package/bin/types/src/agent/design-synthesis.d.ts +76 -0
  190. package/bin/types/src/agent/design-usage.d.ts +38 -0
  191. package/bin/types/src/agent/editorial.d.ts +11 -0
  192. package/bin/types/src/agent/evaluate.d.ts +28 -0
  193. package/bin/types/src/agent/grade.d.ts +16 -0
  194. package/bin/types/src/agent/graph.d.ts +82 -0
  195. package/bin/types/src/agent/industry/document.d.ts +10 -0
  196. package/bin/types/src/agent/industry/interactions.d.ts +2 -0
  197. package/bin/types/src/agent/industry/markup.d.ts +14 -0
  198. package/bin/types/src/agent/industry/registry.d.ts +2 -0
  199. package/bin/types/src/agent/industry/render-style.d.ts +3 -0
  200. package/bin/types/src/agent/industry/ridgeline/browse.d.ts +2 -0
  201. package/bin/types/src/agent/industry/ridgeline/diagrams.d.ts +9 -0
  202. package/bin/types/src/agent/industry/ridgeline/facts.d.ts +61 -0
  203. package/bin/types/src/agent/industry/ridgeline/pages/company.d.ts +5 -0
  204. package/bin/types/src/agent/industry/ridgeline/pages/home.d.ts +1 -0
  205. package/bin/types/src/agent/industry/ridgeline/pages/journal.d.ts +24 -0
  206. package/bin/types/src/agent/industry/ridgeline/pages/services.d.ts +6 -0
  207. package/bin/types/src/agent/industry/ridgeline/photo.d.ts +18 -0
  208. package/bin/types/src/agent/industry/ridgeline/script.d.ts +1 -0
  209. package/bin/types/src/agent/industry/ridgeline/site.d.ts +2 -0
  210. package/bin/types/src/agent/industry/ridgeline/style.d.ts +1 -0
  211. package/bin/types/src/agent/industry/ridgeline/theme.d.ts +4 -0
  212. package/bin/types/src/agent/industry/seven/barber-club.d.ts +2 -0
  213. package/bin/types/src/agent/industry/seven/barber-corner.d.ts +2 -0
  214. package/bin/types/src/agent/industry/seven/barber-form.d.ts +2 -0
  215. package/bin/types/src/agent/industry/seven/browse.d.ts +4 -0
  216. package/bin/types/src/agent/industry/seven/construction-built.d.ts +2 -0
  217. package/bin/types/src/agent/industry/seven/construction-craft.d.ts +2 -0
  218. package/bin/types/src/agent/industry/seven/construction-siteworks.d.ts +3 -0
  219. package/bin/types/src/agent/industry/seven/electrical-circuit.d.ts +2 -0
  220. package/bin/types/src/agent/industry/seven/electrical-light.d.ts +3 -0
  221. package/bin/types/src/agent/industry/seven/electrical-power.d.ts +3 -0
  222. package/bin/types/src/agent/industry/seven/hvac-climate.d.ts +3 -0
  223. package/bin/types/src/agent/industry/seven/hvac-dispatch.d.ts +2 -0
  224. package/bin/types/src/agent/industry/seven/hvac-seasonal.d.ts +2 -0
  225. package/bin/types/src/agent/industry/seven/interactions.d.ts +2 -0
  226. package/bin/types/src/agent/industry/seven/landscape-atlas.d.ts +4 -0
  227. package/bin/types/src/agent/industry/seven/landscape-courtyard.d.ts +3 -0
  228. package/bin/types/src/agent/industry/seven/landscape-seasons.d.ts +3 -0
  229. package/bin/types/src/agent/industry/seven/legal-casework.d.ts +2 -0
  230. package/bin/types/src/agent/industry/seven/legal-counsel.d.ts +2 -0
  231. package/bin/types/src/agent/industry/seven/legal-table.d.ts +2 -0
  232. package/bin/types/src/agent/industry/seven/medical-continuum.d.ts +2 -0
  233. package/bin/types/src/agent/industry/seven/medical-movement.d.ts +2 -0
  234. package/bin/types/src/agent/industry/seven/medical-neighborhood.d.ts +2 -0
  235. package/bin/types/src/agent/industry/seven/primitives.d.ts +31 -0
  236. package/bin/types/src/agent/industry/seven/registry.d.ts +4 -0
  237. package/bin/types/src/agent/industry/seven/theme.d.ts +3 -0
  238. package/bin/types/src/agent/industry/sites/common-ground.d.ts +2 -0
  239. package/bin/types/src/agent/industry/sites/coordination.d.ts +2 -0
  240. package/bin/types/src/agent/industry/sites/everyday.d.ts +2 -0
  241. package/bin/types/src/agent/industry/sites/independent.d.ts +2 -0
  242. package/bin/types/src/agent/industry/sites/mainstage.d.ts +2 -0
  243. package/bin/types/src/agent/industry/sites/neighborhood.d.ts +2 -0
  244. package/bin/types/src/agent/industry/sites/next-chapter.d.ts +2 -0
  245. package/bin/types/src/agent/industry/sites/practice-notes.d.ts +2 -0
  246. package/bin/types/src/agent/industry/sites/property-desk.d.ts +2 -0
  247. package/bin/types/src/agent/industry/sites/residence.d.ts +2 -0
  248. package/bin/types/src/agent/industry/sites/risk-office.d.ts +2 -0
  249. package/bin/types/src/agent/industry/sites/workshop.d.ts +2 -0
  250. package/bin/types/src/agent/industry/types.d.ts +48 -0
  251. package/bin/types/src/agent/invocation-budget.d.ts +32 -0
  252. package/bin/types/src/agent/jev/agent-usage.d.ts +165 -0
  253. package/bin/types/src/agent/jev/batching.d.ts +101 -0
  254. package/bin/types/src/agent/jev/block-catalog.d.ts +95 -0
  255. package/bin/types/src/agent/jev/bounds.d.ts +30 -0
  256. package/bin/types/src/agent/jev/budget.d.ts +76 -0
  257. package/bin/types/src/agent/jev/business-draft.d.ts +103 -0
  258. package/bin/types/src/agent/jev/calibration.d.ts +131 -0
  259. package/bin/types/src/agent/jev/client.d.ts +52 -0
  260. package/bin/types/src/agent/jev/component-select.d.ts +102 -0
  261. package/bin/types/src/agent/jev/config.d.ts +52 -0
  262. package/bin/types/src/agent/jev/consistency.d.ts +105 -0
  263. package/bin/types/src/agent/jev/content-checks.d.ts +121 -0
  264. package/bin/types/src/agent/jev/creative.d.ts +81 -0
  265. package/bin/types/src/agent/jev/critic-report.d.ts +132 -0
  266. package/bin/types/src/agent/jev/extraction.d.ts +84 -0
  267. package/bin/types/src/agent/jev/goals.d.ts +43 -0
  268. package/bin/types/src/agent/jev/html-tree.d.ts +28 -0
  269. package/bin/types/src/agent/jev/indexing.d.ts +51 -0
  270. package/bin/types/src/agent/jev/ledger.d.ts +154 -0
  271. package/bin/types/src/agent/jev/media.d.ts +62 -0
  272. package/bin/types/src/agent/jev/observations.d.ts +26 -0
  273. package/bin/types/src/agent/jev/ownership.d.ts +74 -0
  274. package/bin/types/src/agent/jev/packets.d.ts +124 -0
  275. package/bin/types/src/agent/jev/policy.d.ts +83 -0
  276. package/bin/types/src/agent/jev/questions.d.ts +244 -0
  277. package/bin/types/src/agent/jev/ranking.d.ts +129 -0
  278. package/bin/types/src/agent/jev/repair.d.ts +73 -0
  279. package/bin/types/src/agent/jev/review.d.ts +37 -0
  280. package/bin/types/src/agent/jev/security.d.ts +28 -0
  281. package/bin/types/src/agent/jev/semantic-lifecycle.d.ts +19 -0
  282. package/bin/types/src/agent/jev/semantic-tasks.d.ts +89 -0
  283. package/bin/types/src/agent/jev/service-registry.d.ts +98 -0
  284. package/bin/types/src/agent/jev/state.d.ts +104 -0
  285. package/bin/types/src/agent/jev/types.d.ts +190 -0
  286. package/bin/types/src/agent/jev/visible-assertions.d.ts +84 -0
  287. package/bin/types/src/agent/kernel-commands.d.ts +2 -0
  288. package/bin/types/src/agent/kit-runtime.d.ts +12 -0
  289. package/bin/types/src/agent/legacy-definitions/theme-art.d.ts +5 -0
  290. package/bin/types/src/agent/legacy-definitions/theme-commissions.d.ts +1 -0
  291. package/bin/types/src/agent/legacy-definitions/theme-compositions-extremes.d.ts +7 -0
  292. package/bin/types/src/agent/legacy-definitions/theme-compositions-graphic.d.ts +2 -0
  293. package/bin/types/src/agent/legacy-definitions/theme-compositions-reading.d.ts +2 -0
  294. package/bin/types/src/agent/legacy-definitions/theme-compositions-service-extremes.d.ts +2 -0
  295. package/bin/types/src/agent/legacy-definitions/theme-compositions-service-people.d.ts +2 -0
  296. package/bin/types/src/agent/legacy-definitions/theme-compositions-service-programme.d.ts +3 -0
  297. package/bin/types/src/agent/legacy-definitions/theme-compositions-service-project.d.ts +2 -0
  298. package/bin/types/src/agent/legacy-definitions/theme-compositions-service-season.d.ts +2 -0
  299. package/bin/types/src/agent/legacy-definitions/theme-compositions-tactile.d.ts +2 -0
  300. package/bin/types/src/agent/legacy-definitions/theme-compositions.d.ts +2 -0
  301. package/bin/types/src/agent/legacy-definitions/theme-legacy-specimens.d.ts +8 -0
  302. package/bin/types/src/agent/legacy-definitions/theme-library-legacy.d.ts +20 -0
  303. package/bin/types/src/agent/legacy-definitions/theme-library-release2.d.ts +3 -0
  304. package/bin/types/src/agent/legacy-definitions/theme-service-art.d.ts +7 -0
  305. package/bin/types/src/agent/legacy-definitions/theme-service-commissions.d.ts +1 -0
  306. package/bin/types/src/agent/legacy-definitions/theme-specimen-base.d.ts +1 -0
  307. package/bin/types/src/agent/legacy-definitions/theme-specimens.d.ts +2 -0
  308. package/bin/types/src/agent/legacy-definitions/theme-suite-data.d.ts +25 -0
  309. package/bin/types/src/agent/legacy-definitions/theme-suite-style.d.ts +1 -0
  310. package/bin/types/src/agent/legacy-definitions/theme-suites-checkpoint.d.ts +14 -0
  311. package/bin/types/src/agent/legacy-definitions/theme-suites-graphic.d.ts +2 -0
  312. package/bin/types/src/agent/legacy-definitions/theme-suites-information.d.ts +2 -0
  313. package/bin/types/src/agent/legacy-definitions/theme-suites-local.d.ts +2 -0
  314. package/bin/types/src/agent/legacy-definitions/theme-suites-material.d.ts +2 -0
  315. package/bin/types/src/agent/legacy-definitions/theme-suites-practice.d.ts +2 -0
  316. package/bin/types/src/agent/legacy-definitions/theme-suites-spatial.d.ts +2 -0
  317. package/bin/types/src/agent/legacy-definitions/theme-suites.d.ts +3 -0
  318. package/bin/types/src/agent/lifecycle.d.ts +136 -0
  319. package/bin/types/src/agent/lighthouse-browser.d.ts +5 -0
  320. package/bin/types/src/agent/media-format.d.ts +5 -0
  321. package/bin/types/src/agent/migration-links.d.ts +4 -0
  322. package/bin/types/src/agent/motion-composition.d.ts +22 -0
  323. package/bin/types/src/agent/motion-knowledge.d.ts +3 -0
  324. package/bin/types/src/agent/motion-plan.d.ts +6 -0
  325. package/bin/types/src/agent/performance.d.ts +52 -0
  326. package/bin/types/src/agent/playwright-runtime.d.ts +8 -0
  327. package/bin/types/src/agent/preparation.d.ts +193 -0
  328. package/bin/types/src/agent/preview.d.ts +1 -0
  329. package/bin/types/src/agent/production-quality.d.ts +72 -0
  330. package/bin/types/src/agent/reference-contract.d.ts +3 -0
  331. package/bin/types/src/agent/reference-fit.d.ts +50 -0
  332. package/bin/types/src/agent/reference-library.d.ts +313 -0
  333. package/bin/types/src/agent/reference-studies.d.ts +110 -0
  334. package/bin/types/src/agent/refine.d.ts +348 -0
  335. package/bin/types/src/agent/result-manifest.d.ts +38 -0
  336. package/bin/types/src/agent/runner.d.ts +10 -0
  337. package/bin/types/src/agent/site-inputs.d.ts +26 -0
  338. package/bin/types/src/agent/source-manifest.d.ts +9 -0
  339. package/bin/types/src/agent/state-transition.d.ts +16 -0
  340. package/bin/types/src/agent/storyboard-media.d.ts +11 -0
  341. package/bin/types/src/agent/study-render.d.ts +27 -0
  342. package/bin/types/src/agent/template-adaptation.d.ts +69 -0
  343. package/bin/types/src/agent/template-motion.d.ts +59 -0
  344. package/bin/types/src/agent/theme-art-direction.d.ts +2 -0
  345. package/bin/types/src/agent/theme-art.d.ts +1 -0
  346. package/bin/types/src/agent/theme-assets.d.ts +36 -0
  347. package/bin/types/src/agent/theme-browse.d.ts +67 -0
  348. package/bin/types/src/agent/theme-cloud-resources.d.ts +7 -0
  349. package/bin/types/src/agent/theme-cloud.d.ts +41 -0
  350. package/bin/types/src/agent/theme-commissions.d.ts +1 -0
  351. package/bin/types/src/agent/theme-compositions-extremes.d.ts +1 -0
  352. package/bin/types/src/agent/theme-compositions.d.ts +1 -0
  353. package/bin/types/src/agent/theme-identity.d.ts +23 -0
  354. package/bin/types/src/agent/theme-layout-roles.d.ts +7 -0
  355. package/bin/types/src/agent/theme-legacy-specimens.d.ts +1 -0
  356. package/bin/types/src/agent/theme-library-legacy.d.ts +1 -0
  357. package/bin/types/src/agent/theme-library-release2.d.ts +1 -0
  358. package/bin/types/src/agent/theme-library.d.ts +60 -0
  359. package/bin/types/src/agent/theme-page-manifest.d.ts +26 -0
  360. package/bin/types/src/agent/theme-picker-model.d.ts +51 -0
  361. package/bin/types/src/agent/theme-picker-runtime.d.ts +1 -0
  362. package/bin/types/src/agent/theme-picker-selection-runtime.d.ts +1 -0
  363. package/bin/types/src/agent/theme-picker-shell.d.ts +7 -0
  364. package/bin/types/src/agent/theme-picker-styles.d.ts +1 -0
  365. package/bin/types/src/agent/theme-picker.d.ts +20 -0
  366. package/bin/types/src/agent/theme-preview.d.ts +26 -0
  367. package/bin/types/src/agent/theme-release2/assets.d.ts +22 -0
  368. package/bin/types/src/agent/theme-release2/specimens.d.ts +2 -0
  369. package/bin/types/src/agent/theme-release2/theme-art.d.ts +5 -0
  370. package/bin/types/src/agent/theme-release2/theme-compositions-extremes.d.ts +7 -0
  371. package/bin/types/src/agent/theme-release2/theme-compositions-graphic.d.ts +2 -0
  372. package/bin/types/src/agent/theme-release2/theme-compositions-reading.d.ts +2 -0
  373. package/bin/types/src/agent/theme-release2/theme-compositions-tactile.d.ts +2 -0
  374. package/bin/types/src/agent/theme-release2/theme-compositions.d.ts +3 -0
  375. package/bin/types/src/agent/theme-release2/theme-specimen-base.d.ts +1 -0
  376. package/bin/types/src/agent/theme-release3/theme-art-direction.d.ts +2 -0
  377. package/bin/types/src/agent/theme-release3/theme-art.d.ts +5 -0
  378. package/bin/types/src/agent/theme-release3/theme-assets.d.ts +121 -0
  379. package/bin/types/src/agent/theme-release3/theme-compositions-extremes.d.ts +7 -0
  380. package/bin/types/src/agent/theme-release3/theme-compositions-graphic.d.ts +2 -0
  381. package/bin/types/src/agent/theme-release3/theme-compositions-reading.d.ts +2 -0
  382. package/bin/types/src/agent/theme-release3/theme-compositions-service-extremes.d.ts +2 -0
  383. package/bin/types/src/agent/theme-release3/theme-compositions-service-people.d.ts +2 -0
  384. package/bin/types/src/agent/theme-release3/theme-compositions-service-programme.d.ts +2 -0
  385. package/bin/types/src/agent/theme-release3/theme-compositions-service-project.d.ts +2 -0
  386. package/bin/types/src/agent/theme-release3/theme-compositions-service-season.d.ts +2 -0
  387. package/bin/types/src/agent/theme-release3/theme-compositions-tactile.d.ts +2 -0
  388. package/bin/types/src/agent/theme-release3/theme-compositions.d.ts +2 -0
  389. package/bin/types/src/agent/theme-release3/theme-identity.d.ts +23 -0
  390. package/bin/types/src/agent/theme-release3/theme-library.d.ts +4 -0
  391. package/bin/types/src/agent/theme-release3/theme-service-art.d.ts +7 -0
  392. package/bin/types/src/agent/theme-release3/theme-specimen-base.d.ts +1 -0
  393. package/bin/types/src/agent/theme-release3/theme-specimens.d.ts +2 -0
  394. package/bin/types/src/agent/theme-selection.d.ts +75 -0
  395. package/bin/types/src/agent/theme-service-art.d.ts +1 -0
  396. package/bin/types/src/agent/theme-specimen-base.d.ts +1 -0
  397. package/bin/types/src/agent/theme-specimens.d.ts +1 -0
  398. package/bin/types/src/agent/theme-suite-data.d.ts +1 -0
  399. package/bin/types/src/agent/theme-suite-identity.d.ts +42 -0
  400. package/bin/types/src/agent/theme-suite-primitives.d.ts +14 -0
  401. package/bin/types/src/agent/theme-suite-renderer.d.ts +8 -0
  402. package/bin/types/src/agent/theme-suite-style.d.ts +1 -0
  403. package/bin/types/src/agent/theme-suites.d.ts +1 -0
  404. package/bin/types/src/agent/theme-thumbnails.d.ts +8 -0
  405. package/bin/types/src/agent/trace.d.ts +337 -0
  406. package/bin/types/src/agent/workflow-config.d.ts +25 -0
  407. package/bin/types/src/agent/workflow.d.ts +104 -0
  408. package/bin/types/src/blocks/library-profile.d.ts +9 -0
  409. package/bin/types/src/blocks/metadata.d.ts +65 -0
  410. package/bin/types/src/build/index.d.ts +29 -0
  411. package/bin/types/src/build/responsive-media.d.ts +19 -0
  412. package/bin/types/src/build/serve.d.ts +4 -0
  413. package/bin/types/src/build/static-output.d.ts +2 -0
  414. package/bin/types/src/build/verified.d.ts +1 -0
  415. package/bin/types/src/cli/api.d.ts +17 -0
  416. package/bin/types/src/cli/deploy.d.ts +21 -0
  417. package/bin/types/src/cli/doctor.d.ts +16 -0
  418. package/bin/types/src/cli/events.d.ts +16 -0
  419. package/bin/types/src/cli/feedback.d.ts +21 -0
  420. package/bin/types/src/cli/forms.d.ts +16 -0
  421. package/bin/types/src/cli/index.d.ts +1 -0
  422. package/bin/types/src/cli/lifecycle.d.ts +18 -0
  423. package/bin/types/src/cli/preserve.d.ts +8 -0
  424. package/bin/types/src/cli/preview.d.ts +14 -0
  425. package/bin/types/src/cli/refine.d.ts +41 -0
  426. package/bin/types/src/cli/root.d.ts +3 -0
  427. package/bin/types/src/cli/run.d.ts +30 -0
  428. package/bin/types/src/cli/share.d.ts +17 -0
  429. package/bin/types/src/cli/site-create.d.ts +24 -0
  430. package/bin/types/src/cli/site-migrate.d.ts +11 -0
  431. package/bin/types/src/cli/status.d.ts +8 -0
  432. package/bin/types/src/cli/types.d.ts +34 -0
  433. package/bin/types/src/cli/upgrade.d.ts +11 -0
  434. package/bin/types/src/cli/verify.d.ts +17 -0
  435. package/bin/types/src/cli/workflow-argv.d.ts +2 -0
  436. package/bin/types/src/compile/flatten.d.ts +23 -0
  437. package/bin/types/src/compile/frontmatter.d.ts +10 -0
  438. package/bin/types/src/compile/icons.d.ts +2 -0
  439. package/bin/types/src/compile/paths.d.ts +4 -0
  440. package/bin/types/src/compile/primitives.d.ts +2 -0
  441. package/bin/types/src/compile/scroll-motion.d.ts +14 -0
  442. package/bin/types/src/compile/site.d.ts +40 -0
  443. package/bin/types/src/editing/identity.d.ts +7 -0
  444. package/bin/types/src/editing/manifest.d.ts +38 -0
  445. package/bin/types/src/engine/checks.d.ts +2 -0
  446. package/bin/types/src/engine/contracts.d.ts +104 -0
  447. package/bin/types/src/engine/impact.d.ts +3 -0
  448. package/bin/types/src/engine/index.d.ts +70 -0
  449. package/bin/types/src/engine/revision.d.ts +5 -0
  450. package/bin/types/src/forms/cloudflare.d.ts +24 -0
  451. package/bin/types/src/forms/config.d.ts +34 -0
  452. package/bin/types/src/forms/frontend.d.ts +9 -0
  453. package/bin/types/src/html.d.ts +3 -0
  454. package/bin/types/src/icons/catalog.d.ts +28 -0
  455. package/bin/types/src/icons/coverage.d.ts +12 -0
  456. package/bin/types/src/icons/drawing.d.ts +7 -0
  457. package/bin/types/src/icons/duotone.d.ts +4 -0
  458. package/bin/types/src/icons/index.d.ts +37 -0
  459. package/bin/types/src/icons/industry-refinements-v4.d.ts +4 -0
  460. package/bin/types/src/icons/industry-review.d.ts +11 -0
  461. package/bin/types/src/icons/industry.d.ts +2 -0
  462. package/bin/types/src/icons/refinements.d.ts +5 -0
  463. package/bin/types/src/icons/studio-industry-review.d.ts +9 -0
  464. package/bin/types/src/icons/studio-industry.d.ts +5 -0
  465. package/bin/types/src/icons/studio.d.ts +34 -0
  466. package/bin/types/src/integrations/cloudflare-pages.d.ts +10 -0
  467. package/bin/types/src/integrations/deployment-smoke.d.ts +11 -0
  468. package/bin/types/src/integrations/hosting.d.ts +33 -0
  469. package/bin/types/src/integrations/wrangler-command.d.ts +5 -0
  470. package/bin/types/src/knowledge/artifact-order.d.ts +1 -0
  471. package/bin/types/src/knowledge/artifact.d.ts +11 -0
  472. package/bin/types/src/knowledge/composition.d.ts +54 -0
  473. package/bin/types/src/knowledge/contracts.d.ts +111 -0
  474. package/bin/types/src/knowledge/explain.d.ts +6 -0
  475. package/bin/types/src/knowledge/pack.d.ts +32 -0
  476. package/bin/types/src/knowledge/selection.d.ts +18 -0
  477. package/bin/types/src/knowledge/site-widgets.d.ts +6 -0
  478. package/bin/types/src/onboard/brief.d.ts +182 -0
  479. package/bin/types/src/onboard/classify.d.ts +31 -0
  480. package/bin/types/src/onboard/crawl-order.d.ts +7 -0
  481. package/bin/types/src/onboard/extract.d.ts +102 -0
  482. package/bin/types/src/onboard/harvest-inventory.d.ts +84 -0
  483. package/bin/types/src/onboard/outline.d.ts +13 -0
  484. package/bin/types/src/onboard/quality.d.ts +6 -0
  485. package/bin/types/src/onboard/shortlist.d.ts +11 -0
  486. package/bin/types/src/onboard/social.d.ts +15 -0
  487. package/bin/types/src/onboard/visual-hints.d.ts +12 -0
  488. package/bin/types/src/preserve/build.d.ts +1 -0
  489. package/bin/types/src/preserve/capture.d.ts +21 -0
  490. package/bin/types/src/preserve/components.d.ts +10 -0
  491. package/bin/types/src/preserve/config.d.ts +53 -0
  492. package/bin/types/src/preserve/embeds.d.ts +15 -0
  493. package/bin/types/src/preserve/hovers.d.ts +10 -0
  494. package/bin/types/src/preserve/react-capabilities.d.ts +2 -0
  495. package/bin/types/src/preserve/runtime.d.ts +2 -0
  496. package/bin/types/src/preserve/source-defects.d.ts +4 -0
  497. package/bin/types/src/preserve/supplement.d.ts +3 -0
  498. package/bin/types/src/preserve/verify.d.ts +29 -0
  499. package/bin/types/src/render.d.ts +10 -0
  500. package/bin/types/src/runtime/beacon.d.ts +2 -0
  501. package/bin/types/src/runtime/before-after.d.ts +2 -0
  502. package/bin/types/src/runtime/carousel.d.ts +2 -0
  503. package/bin/types/src/runtime/cookie-compliance.d.ts +14 -0
  504. package/bin/types/src/runtime/experience.d.ts +4 -0
  505. package/bin/types/src/runtime/header.d.ts +2 -0
  506. package/bin/types/src/runtime/leads.d.ts +2 -0
  507. package/bin/types/src/runtime/lightbox.d.ts +2 -0
  508. package/bin/types/src/runtime/scroll-motion.generated.d.ts +4 -0
  509. package/bin/types/src/runtime/tabs.d.ts +2 -0
  510. package/bin/types/src/schema.d.ts +27 -0
  511. package/bin/types/src/stock/library.d.ts +14 -0
  512. package/bin/types/src/stock/search.d.ts +30 -0
  513. package/bin/types/src/stock/selection.d.ts +30 -0
  514. package/bin/types/src/stock/types.d.ts +54 -0
  515. package/bin/types/src/theme.d.ts +3 -0
  516. package/bin/types/src/types.d.ts +115 -0
  517. package/bin/types/src/upgrade/kit.d.ts +48 -0
  518. package/bin/vitris-art.js +192 -0
  519. package/bin/vitris-blocks.js +238 -0
  520. package/bin/vitris-build.js +24 -0
  521. package/bin/vitris-catalog.js +49 -0
  522. package/bin/vitris-content-coverage.js +21 -0
  523. package/bin/vitris-create-site.js +86 -0
  524. package/bin/vitris-cursor-hook.js +61 -0
  525. package/bin/vitris-eval.js +76 -0
  526. package/bin/vitris-go.js +99 -0
  527. package/bin/vitris-harvest.js +184 -0
  528. package/bin/vitris-icons.js +168 -0
  529. package/bin/vitris-knowledge.js +43 -0
  530. package/bin/vitris-launch-preflight.js +964 -0
  531. package/bin/vitris-media-serve.js +50 -0
  532. package/bin/vitris-migrate-site.js +20 -0
  533. package/bin/vitris-motion-view.js +80 -0
  534. package/bin/vitris-prepare-media.js +64 -0
  535. package/bin/vitris-preview.js +36 -0
  536. package/bin/vitris-references.js +173 -0
  537. package/bin/vitris-refresh.js +50 -0
  538. package/bin/vitris-sign-publish-bundle.js +64 -0
  539. package/bin/vitris-stock.js +161 -0
  540. package/bin/vitris-templates.js +261 -0
  541. package/bin/vitris-themes.js +321 -0
  542. package/bin/vitris-upgrade.js +50 -0
  543. package/bin/vitris-verify-browser.js +662 -0
  544. package/bin/vitris-verify-performance.js +44 -0
  545. package/bin/vitris.js +50 -0
  546. package/blocks/CONVENTIONS.md +121 -0
  547. package/blocks/INDEX.md +130 -0
  548. package/blocks/about/about-awards/README.md +36 -0
  549. package/blocks/about/about-awards/styles.css +13 -0
  550. package/blocks/about/about-awards/template.html +1 -0
  551. package/blocks/about/about-credentials/README.md +33 -0
  552. package/blocks/about/about-credentials/block.meta.json +85 -0
  553. package/blocks/about/about-credentials/styles.css +4 -0
  554. package/blocks/about/about-credentials/template.html +1 -0
  555. package/blocks/about/about-founder/README.md +35 -0
  556. package/blocks/about/about-founder/styles.css +9 -0
  557. package/blocks/about/about-founder/template.html +1 -0
  558. package/blocks/about/about-mission/README.md +31 -0
  559. package/blocks/about/about-mission/styles.css +5 -0
  560. package/blocks/about/about-mission/template.html +1 -0
  561. package/blocks/about/about-statement/README.md +28 -0
  562. package/blocks/about/about-statement/styles.css +7 -0
  563. package/blocks/about/about-statement/template.html +1 -0
  564. package/blocks/about/about-story/README.md +35 -0
  565. package/blocks/about/about-story/styles.css +5 -0
  566. package/blocks/about/about-story/template.html +1 -0
  567. package/blocks/about/about-timeline/README.md +33 -0
  568. package/blocks/about/about-timeline/styles.css +8 -0
  569. package/blocks/about/about-timeline/template.html +1 -0
  570. package/blocks/about/about-values/README.md +31 -0
  571. package/blocks/about/about-values/styles.css +3 -0
  572. package/blocks/about/about-values/template.html +1 -0
  573. package/blocks/blog/blog-featured/README.md +39 -0
  574. package/blocks/blog/blog-featured/styles.css +12 -0
  575. package/blocks/blog/blog-featured/template.html +1 -0
  576. package/blocks/blog/blog-index/README.md +34 -0
  577. package/blocks/blog/blog-index/styles.css +6 -0
  578. package/blocks/blog/blog-index/template.html +1 -0
  579. package/blocks/blog/blog-post-header/README.md +31 -0
  580. package/blocks/blog/blog-post-header/styles.css +8 -0
  581. package/blocks/blog/blog-post-header/template.html +1 -0
  582. package/blocks/contact/contact-cards/README.md +32 -0
  583. package/blocks/contact/contact-cards/styles.css +7 -0
  584. package/blocks/contact/contact-cards/template.html +1 -0
  585. package/blocks/contact/contact-chips/README.md +41 -0
  586. package/blocks/contact/contact-chips/styles.css +13 -0
  587. package/blocks/contact/contact-chips/template.html +1 -0
  588. package/blocks/contact/contact-hours/README.md +41 -0
  589. package/blocks/contact/contact-hours/block.meta.json +87 -0
  590. package/blocks/contact/contact-hours/styles.css +8 -0
  591. package/blocks/contact/contact-hours/template.html +1 -0
  592. package/blocks/contact/contact-map/README.md +39 -0
  593. package/blocks/contact/contact-map/styles.css +10 -0
  594. package/blocks/contact/contact-map/template.html +1 -0
  595. package/blocks/contact/contact-offices/README.md +32 -0
  596. package/blocks/contact/contact-offices/styles.css +8 -0
  597. package/blocks/contact/contact-offices/template.html +1 -0
  598. package/blocks/contact/contact-phone-first/README.md +33 -0
  599. package/blocks/contact/contact-phone-first/block.meta.json +86 -0
  600. package/blocks/contact/contact-phone-first/styles.css +11 -0
  601. package/blocks/contact/contact-phone-first/template.html +1 -0
  602. package/blocks/contact/contact-split/README.md +43 -0
  603. package/blocks/contact/contact-split/styles.css +12 -0
  604. package/blocks/contact/contact-split/template.html +1 -0
  605. package/blocks/contact/contact-visit/README.md +36 -0
  606. package/blocks/contact/contact-visit/block.meta.json +88 -0
  607. package/blocks/contact/contact-visit/styles.css +13 -0
  608. package/blocks/contact/contact-visit/template.html +1 -0
  609. package/blocks/contact/service-areas/README.md +32 -0
  610. package/blocks/contact/service-areas/styles.css +9 -0
  611. package/blocks/contact/service-areas/template.html +1 -0
  612. package/blocks/content/glossary/README.md +35 -0
  613. package/blocks/content/glossary/styles.css +6 -0
  614. package/blocks/content/glossary/template.html +1 -0
  615. package/blocks/content/list-split/README.md +33 -0
  616. package/blocks/content/list-split/styles.css +13 -0
  617. package/blocks/content/list-split/template.html +1 -0
  618. package/blocks/content/prose-split/README.md +32 -0
  619. package/blocks/content/prose-split/styles.css +12 -0
  620. package/blocks/content/prose-split/template.html +1 -0
  621. package/blocks/content/specification-ledger/README.md +32 -0
  622. package/blocks/content/specification-ledger/block.meta.json +85 -0
  623. package/blocks/content/specification-ledger/styles.css +10 -0
  624. package/blocks/content/specification-ledger/template.html +1 -0
  625. package/blocks/cta/cta-band/README.md +33 -0
  626. package/blocks/cta/cta-band/styles.css +11 -0
  627. package/blocks/cta/cta-band/template.html +1 -0
  628. package/blocks/cta/cta-card/README.md +35 -0
  629. package/blocks/cta/cta-card/styles.css +8 -0
  630. package/blocks/cta/cta-card/template.html +1 -0
  631. package/blocks/cta/cta-floating-bar/README.md +28 -0
  632. package/blocks/cta/cta-floating-bar/styles.css +8 -0
  633. package/blocks/cta/cta-floating-bar/template.html +1 -0
  634. package/blocks/cta/cta-inline/README.md +30 -0
  635. package/blocks/cta/cta-inline/styles.css +9 -0
  636. package/blocks/cta/cta-inline/template.html +1 -0
  637. package/blocks/cta/cta-newsletter/README.md +34 -0
  638. package/blocks/cta/cta-newsletter/styles.css +8 -0
  639. package/blocks/cta/cta-newsletter/template.html +1 -0
  640. package/blocks/cta/cta-photo-fan/README.md +36 -0
  641. package/blocks/cta/cta-photo-fan/styles.css +14 -0
  642. package/blocks/cta/cta-photo-fan/template.html +1 -0
  643. package/blocks/cta/cta-split/README.md +38 -0
  644. package/blocks/cta/cta-split/styles.css +10 -0
  645. package/blocks/cta/cta-split/template.html +1 -0
  646. package/blocks/faq/faq-accordion/README.md +36 -0
  647. package/blocks/faq/faq-accordion/styles.css +6 -0
  648. package/blocks/faq/faq-accordion/template.html +1 -0
  649. package/blocks/faq/faq-grouped/README.md +40 -0
  650. package/blocks/faq/faq-grouped/styles.css +20 -0
  651. package/blocks/faq/faq-grouped/template.html +1 -0
  652. package/blocks/faq/faq-split/README.md +37 -0
  653. package/blocks/faq/faq-split/styles.css +5 -0
  654. package/blocks/faq/faq-split/template.html +1 -0
  655. package/blocks/faq/faq-tabs/README.md +36 -0
  656. package/blocks/faq/faq-tabs/styles.css +3 -0
  657. package/blocks/faq/faq-tabs/template.html +1 -0
  658. package/blocks/feature/feature-bento/README.md +33 -0
  659. package/blocks/feature/feature-bento/styles.css +7 -0
  660. package/blocks/feature/feature-bento/template.html +1 -0
  661. package/blocks/feature/feature-compare-table/README.md +44 -0
  662. package/blocks/feature/feature-compare-table/styles.css +15 -0
  663. package/blocks/feature/feature-compare-table/template.html +1 -0
  664. package/blocks/feature/feature-comparison/README.md +34 -0
  665. package/blocks/feature/feature-comparison/styles.css +6 -0
  666. package/blocks/feature/feature-comparison/template.html +1 -0
  667. package/blocks/feature/feature-grid-3/README.md +34 -0
  668. package/blocks/feature/feature-grid-3/styles.css +8 -0
  669. package/blocks/feature/feature-grid-3/template.html +1 -0
  670. package/blocks/feature/feature-icon-list/README.md +39 -0
  671. package/blocks/feature/feature-icon-list/styles.css +9 -0
  672. package/blocks/feature/feature-icon-list/template.html +1 -0
  673. package/blocks/feature/feature-spotlight/README.md +39 -0
  674. package/blocks/feature/feature-spotlight/styles.css +5 -0
  675. package/blocks/feature/feature-spotlight/template.html +1 -0
  676. package/blocks/feature/feature-stats-band/README.md +33 -0
  677. package/blocks/feature/feature-stats-band/styles.css +8 -0
  678. package/blocks/feature/feature-stats-band/template.html +1 -0
  679. package/blocks/feature/feature-tabs/README.md +38 -0
  680. package/blocks/feature/feature-tabs/styles.css +7 -0
  681. package/blocks/feature/feature-tabs/template.html +1 -0
  682. package/blocks/feature/feature-thumb-list/README.md +38 -0
  683. package/blocks/feature/feature-thumb-list/styles.css +13 -0
  684. package/blocks/feature/feature-thumb-list/template.html +1 -0
  685. package/blocks/feature/feature-zigzag/README.md +31 -0
  686. package/blocks/feature/feature-zigzag/styles.css +6 -0
  687. package/blocks/feature/feature-zigzag/template.html +1 -0
  688. package/blocks/footer/footer-columns/README.md +39 -0
  689. package/blocks/footer/footer-columns/styles.css +16 -0
  690. package/blocks/footer/footer-columns/template.html +1 -0
  691. package/blocks/footer/footer-compact/README.md +33 -0
  692. package/blocks/footer/footer-compact/styles.css +12 -0
  693. package/blocks/footer/footer-compact/template.html +1 -0
  694. package/blocks/footer/footer-cta/README.md +37 -0
  695. package/blocks/footer/footer-cta/styles.css +18 -0
  696. package/blocks/footer/footer-cta/template.html +1 -0
  697. package/blocks/footer/footer-social/README.md +37 -0
  698. package/blocks/footer/footer-social/styles.css +17 -0
  699. package/blocks/footer/footer-social/template.html +1 -0
  700. package/blocks/footer/footer-wordmark/README.md +40 -0
  701. package/blocks/footer/footer-wordmark/styles.css +19 -0
  702. package/blocks/footer/footer-wordmark/template.html +1 -0
  703. package/blocks/gallery/gallery-before-after/README.md +31 -0
  704. package/blocks/gallery/gallery-before-after/styles.css +6 -0
  705. package/blocks/gallery/gallery-before-after/template.html +1 -0
  706. package/blocks/gallery/gallery-carousel/README.md +32 -0
  707. package/blocks/gallery/gallery-carousel/styles.css +7 -0
  708. package/blocks/gallery/gallery-carousel/template.html +1 -0
  709. package/blocks/gallery/gallery-grid/README.md +39 -0
  710. package/blocks/gallery/gallery-grid/styles.css +13 -0
  711. package/blocks/gallery/gallery-grid/template.html +1 -0
  712. package/blocks/gallery/gallery-masonry/README.md +33 -0
  713. package/blocks/gallery/gallery-masonry/styles.css +4 -0
  714. package/blocks/gallery/gallery-masonry/template.html +1 -0
  715. package/blocks/gallery/gallery-mosaic-split/README.md +40 -0
  716. package/blocks/gallery/gallery-mosaic-split/styles.css +15 -0
  717. package/blocks/gallery/gallery-mosaic-split/template.html +1 -0
  718. package/blocks/hero/hero-asymmetric/README.md +34 -0
  719. package/blocks/hero/hero-asymmetric/styles.css +13 -0
  720. package/blocks/hero/hero-asymmetric/template.html +10 -0
  721. package/blocks/hero/hero-before-after/README.md +38 -0
  722. package/blocks/hero/hero-before-after/styles.css +8 -0
  723. package/blocks/hero/hero-before-after/template.html +19 -0
  724. package/blocks/hero/hero-editorial/README.md +34 -0
  725. package/blocks/hero/hero-editorial/block.meta.json +85 -0
  726. package/blocks/hero/hero-editorial/styles.css +6 -0
  727. package/blocks/hero/hero-editorial/template.html +10 -0
  728. package/blocks/hero/hero-evidence/README.md +32 -0
  729. package/blocks/hero/hero-evidence/block.meta.json +85 -0
  730. package/blocks/hero/hero-evidence/styles.css +13 -0
  731. package/blocks/hero/hero-evidence/template.html +1 -0
  732. package/blocks/hero/hero-form/README.md +46 -0
  733. package/blocks/hero/hero-form/styles.css +11 -0
  734. package/blocks/hero/hero-form/template.html +15 -0
  735. package/blocks/hero/hero-menu/README.md +36 -0
  736. package/blocks/hero/hero-menu/styles.css +7 -0
  737. package/blocks/hero/hero-menu/template.html +10 -0
  738. package/blocks/hero/hero-overlay/README.md +35 -0
  739. package/blocks/hero/hero-overlay/styles.css +14 -0
  740. package/blocks/hero/hero-overlay/template.html +10 -0
  741. package/blocks/hero/hero-page/README.md +35 -0
  742. package/blocks/hero/hero-page/styles.css +19 -0
  743. package/blocks/hero/hero-page/template.html +1 -0
  744. package/blocks/hero/hero-product/README.md +41 -0
  745. package/blocks/hero/hero-product/styles.css +11 -0
  746. package/blocks/hero/hero-product/template.html +14 -0
  747. package/blocks/hero/hero-service/README.md +37 -0
  748. package/blocks/hero/hero-service/block.meta.json +85 -0
  749. package/blocks/hero/hero-service/styles.css +17 -0
  750. package/blocks/hero/hero-service/template.html +1 -0
  751. package/blocks/hero/hero-split/README.md +36 -0
  752. package/blocks/hero/hero-split/styles.css +7 -0
  753. package/blocks/hero/hero-split/template.html +11 -0
  754. package/blocks/hero/hero-statement/README.md +33 -0
  755. package/blocks/hero/hero-statement/styles.css +8 -0
  756. package/blocks/hero/hero-statement/template.html +1 -0
  757. package/blocks/hero/hero-stats/README.md +37 -0
  758. package/blocks/hero/hero-stats/styles.css +10 -0
  759. package/blocks/hero/hero-stats/template.html +10 -0
  760. package/blocks/hero/hero-video-still/README.md +36 -0
  761. package/blocks/hero/hero-video-still/styles.css +9 -0
  762. package/blocks/hero/hero-video-still/template.html +13 -0
  763. package/blocks/icons.md +44 -0
  764. package/blocks/incentives/incentive-banner/README.md +28 -0
  765. package/blocks/incentives/incentive-banner/styles.css +7 -0
  766. package/blocks/incentives/incentive-banner/template.html +1 -0
  767. package/blocks/incentives/incentive-cards/README.md +31 -0
  768. package/blocks/incentives/incentive-cards/styles.css +4 -0
  769. package/blocks/incentives/incentive-cards/template.html +1 -0
  770. package/blocks/navbar/nav-announcement/README.md +35 -0
  771. package/blocks/navbar/nav-announcement/styles.css +10 -0
  772. package/blocks/navbar/nav-announcement/template.html +14 -0
  773. package/blocks/navbar/nav-centered/README.md +35 -0
  774. package/blocks/navbar/nav-centered/styles.css +11 -0
  775. package/blocks/navbar/nav-centered/template.html +12 -0
  776. package/blocks/navbar/nav-minimal/README.md +29 -0
  777. package/blocks/navbar/nav-minimal/styles.css +5 -0
  778. package/blocks/navbar/nav-minimal/template.html +6 -0
  779. package/blocks/navbar/nav-split/README.md +34 -0
  780. package/blocks/navbar/nav-split/styles.css +11 -0
  781. package/blocks/navbar/nav-split/template.html +11 -0
  782. package/blocks/navbar/nav-utility/README.md +37 -0
  783. package/blocks/navbar/nav-utility/styles.css +17 -0
  784. package/blocks/navbar/nav-utility/template.html +12 -0
  785. package/blocks/pricing/menu-featured/README.md +34 -0
  786. package/blocks/pricing/menu-featured/styles.css +4 -0
  787. package/blocks/pricing/menu-featured/template.html +1 -0
  788. package/blocks/pricing/menu-sections/README.md +33 -0
  789. package/blocks/pricing/menu-sections/styles.css +9 -0
  790. package/blocks/pricing/menu-sections/template.html +1 -0
  791. package/blocks/pricing/pricing-table/README.md +40 -0
  792. package/blocks/pricing/pricing-table/styles.css +9 -0
  793. package/blocks/pricing/pricing-table/template.html +1 -0
  794. package/blocks/pricing/pricing-tiers/README.md +34 -0
  795. package/blocks/pricing/pricing-tiers/styles.css +7 -0
  796. package/blocks/pricing/pricing-tiers/template.html +1 -0
  797. package/blocks/pricing/pricing-toggle/README.md +34 -0
  798. package/blocks/pricing/pricing-toggle/styles.css +10 -0
  799. package/blocks/pricing/pricing-toggle/template.html +1 -0
  800. package/blocks/process/process-carousel/README.md +33 -0
  801. package/blocks/process/process-carousel/styles.css +5 -0
  802. package/blocks/process/process-carousel/template.html +1 -0
  803. package/blocks/process/process-split/README.md +35 -0
  804. package/blocks/process/process-split/styles.css +6 -0
  805. package/blocks/process/process-split/template.html +1 -0
  806. package/blocks/process/process-stepper/README.md +40 -0
  807. package/blocks/process/process-stepper/styles.css +11 -0
  808. package/blocks/process/process-stepper/template.html +1 -0
  809. package/blocks/process/process-steps/README.md +35 -0
  810. package/blocks/process/process-steps/styles.css +6 -0
  811. package/blocks/process/process-steps/template.html +1 -0
  812. package/blocks/process/process-sticky/README.md +38 -0
  813. package/blocks/process/process-sticky/styles.css +12 -0
  814. package/blocks/process/process-sticky/template.html +1 -0
  815. package/blocks/process/process-timeline/README.md +35 -0
  816. package/blocks/process/process-timeline/styles.css +10 -0
  817. package/blocks/process/process-timeline/template.html +1 -0
  818. package/blocks/services/services-cards/README.md +34 -0
  819. package/blocks/services/services-cards/styles.css +3 -0
  820. package/blocks/services/services-cards/template.html +1 -0
  821. package/blocks/services/services-carousel/README.md +34 -0
  822. package/blocks/services/services-carousel/styles.css +6 -0
  823. package/blocks/services/services-carousel/template.html +1 -0
  824. package/blocks/services/services-list/README.md +32 -0
  825. package/blocks/services/services-list/block.meta.json +85 -0
  826. package/blocks/services/services-list/styles.css +10 -0
  827. package/blocks/services/services-list/template.html +1 -0
  828. package/blocks/services/services-menu/README.md +39 -0
  829. package/blocks/services/services-menu/styles.css +6 -0
  830. package/blocks/services/services-menu/template.html +1 -0
  831. package/blocks/services/services-packages/README.md +34 -0
  832. package/blocks/services/services-packages/styles.css +6 -0
  833. package/blocks/services/services-packages/template.html +1 -0
  834. package/blocks/services/services-panels/README.md +36 -0
  835. package/blocks/services/services-panels/styles.css +15 -0
  836. package/blocks/services/services-panels/template.html +1 -0
  837. package/blocks/services/services-photo-grid/README.md +39 -0
  838. package/blocks/services/services-photo-grid/styles.css +10 -0
  839. package/blocks/services/services-photo-grid/template.html +1 -0
  840. package/blocks/services/services-priority/README.md +33 -0
  841. package/blocks/services/services-priority/block.meta.json +86 -0
  842. package/blocks/services/services-priority/styles.css +16 -0
  843. package/blocks/services/services-priority/template.html +1 -0
  844. package/blocks/stats/stats-cards/README.md +31 -0
  845. package/blocks/stats/stats-cards/styles.css +4 -0
  846. package/blocks/stats/stats-cards/template.html +1 -0
  847. package/blocks/stats/stats-mosaic/README.md +27 -0
  848. package/blocks/stats/stats-mosaic/styles.css +9 -0
  849. package/blocks/stats/stats-mosaic/template.html +1 -0
  850. package/blocks/stats/stats-row/README.md +29 -0
  851. package/blocks/stats/stats-row/styles.css +8 -0
  852. package/blocks/stats/stats-row/template.html +1 -0
  853. package/blocks/stats/stats-split/README.md +35 -0
  854. package/blocks/stats/stats-split/styles.css +3 -0
  855. package/blocks/stats/stats-split/template.html +1 -0
  856. package/blocks/team/team-featured/README.md +42 -0
  857. package/blocks/team/team-featured/styles.css +9 -0
  858. package/blocks/team/team-featured/template.html +1 -0
  859. package/blocks/team/team-grid/README.md +35 -0
  860. package/blocks/team/team-grid/styles.css +8 -0
  861. package/blocks/team/team-grid/template.html +1 -0
  862. package/blocks/team/team-list/README.md +32 -0
  863. package/blocks/team/team-list/styles.css +7 -0
  864. package/blocks/team/team-list/template.html +1 -0
  865. package/blocks/testimonial/testimonial-carousel/README.md +32 -0
  866. package/blocks/testimonial/testimonial-carousel/styles.css +7 -0
  867. package/blocks/testimonial/testimonial-carousel/template.html +1 -0
  868. package/blocks/testimonial/testimonial-grid/README.md +32 -0
  869. package/blocks/testimonial/testimonial-grid/styles.css +5 -0
  870. package/blocks/testimonial/testimonial-grid/template.html +1 -0
  871. package/blocks/testimonial/testimonial-mosaic/README.md +38 -0
  872. package/blocks/testimonial/testimonial-mosaic/styles.css +14 -0
  873. package/blocks/testimonial/testimonial-mosaic/template.html +1 -0
  874. package/blocks/testimonial/testimonial-platform/README.md +34 -0
  875. package/blocks/testimonial/testimonial-platform/styles.css +17 -0
  876. package/blocks/testimonial/testimonial-platform/template.html +1 -0
  877. package/blocks/testimonial/testimonial-rating/README.md +28 -0
  878. package/blocks/testimonial/testimonial-rating/styles.css +6 -0
  879. package/blocks/testimonial/testimonial-rating/template.html +1 -0
  880. package/blocks/testimonial/testimonial-spotlight/README.md +31 -0
  881. package/blocks/testimonial/testimonial-spotlight/styles.css +9 -0
  882. package/blocks/testimonial/testimonial-spotlight/template.html +1 -0
  883. package/blocks/testimonial/testimonial-switcher/README.md +39 -0
  884. package/blocks/testimonial/testimonial-switcher/styles.css +23 -0
  885. package/blocks/testimonial/testimonial-switcher/template.html +1 -0
  886. package/blocks/testimonial/testimonial-wall/README.md +34 -0
  887. package/blocks/testimonial/testimonial-wall/styles.css +7 -0
  888. package/blocks/testimonial/testimonial-wall/template.html +1 -0
  889. package/blocks/trust-strip/trust-badges/README.md +30 -0
  890. package/blocks/trust-strip/trust-badges/styles.css +5 -0
  891. package/blocks/trust-strip/trust-badges/template.html +1 -0
  892. package/blocks/trust-strip/trust-certs/README.md +31 -0
  893. package/blocks/trust-strip/trust-certs/styles.css +12 -0
  894. package/blocks/trust-strip/trust-certs/template.html +1 -0
  895. package/blocks/trust-strip/trust-logos/README.md +32 -0
  896. package/blocks/trust-strip/trust-logos/styles.css +5 -0
  897. package/blocks/trust-strip/trust-logos/template.html +1 -0
  898. package/blocks/trust-strip/trust-quote/README.md +29 -0
  899. package/blocks/trust-strip/trust-quote/styles.css +5 -0
  900. package/blocks/trust-strip/trust-quote/template.html +1 -0
  901. package/blocks/trust-strip/trust-reviews/README.md +35 -0
  902. package/blocks/trust-strip/trust-reviews/styles.css +9 -0
  903. package/blocks/trust-strip/trust-reviews/template.html +1 -0
  904. package/blocks/work/case-alternating/README.md +34 -0
  905. package/blocks/work/case-alternating/block.meta.json +86 -0
  906. package/blocks/work/case-alternating/styles.css +7 -0
  907. package/blocks/work/case-alternating/template.html +1 -0
  908. package/blocks/work/case-carousel/README.md +26 -0
  909. package/blocks/work/case-carousel/styles.css +7 -0
  910. package/blocks/work/case-carousel/template.html +1 -0
  911. package/blocks/work/case-header/README.md +38 -0
  912. package/blocks/work/case-header/styles.css +18 -0
  913. package/blocks/work/case-header/template.html +1 -0
  914. package/blocks/work/project-evidence/README.md +35 -0
  915. package/blocks/work/project-evidence/block.meta.json +87 -0
  916. package/blocks/work/project-evidence/styles.css +12 -0
  917. package/blocks/work/project-evidence/template.html +1 -0
  918. package/blocks/work/project-grid/README.md +38 -0
  919. package/blocks/work/project-grid/styles.css +9 -0
  920. package/blocks/work/project-grid/template.html +1 -0
  921. package/cloudflare/wrangler.forms-test.jsonc +19 -0
  922. package/cloudflare/wrangler.jsonc +14 -0
  923. package/cloudflare/wrangler.templates.jsonc +6 -0
  924. package/design-system/MASTER.md +76 -0
  925. package/design-system/calibration/v2/accuracy.html +1 -0
  926. package/design-system/calibration/v2/accuracy.png +0 -0
  927. package/design-system/calibration/v2/manifest.json +88 -0
  928. package/design-system/calibration/v2/probe.png +0 -0
  929. package/design-system/calibration/v2/vitris-northline-counsel-home-1280-viewport.png +0 -0
  930. package/design-system/calibration/v2/vitris-northline-counsel-home-375-viewport.png +0 -0
  931. package/design-system/calibration/v2/vitris-northline-counsel-planning-1280-viewport.png +0 -0
  932. package/design-system/calibration/v2/vitris-northline-counsel-planning-375-viewport.png +0 -0
  933. package/design-system/calibration/v2/vitris-tide-and-slate-home-1280-viewport.png +0 -0
  934. package/design-system/calibration/v2/vitris-tide-and-slate-home-375-viewport.png +0 -0
  935. package/design-system/calibration/v2/vitris-tide-and-slate-project-1280-viewport.png +0 -0
  936. package/design-system/calibration/v2/vitris-tide-and-slate-project-375-viewport.png +0 -0
  937. package/design-system/compositions/v1/README.md +13 -0
  938. package/design-system/compositions/v1/northline-counsel/components/contact-phone-first/styles.css +11 -0
  939. package/design-system/compositions/v1/northline-counsel/components/contact-phone-first/template.html +1 -0
  940. package/design-system/compositions/v1/northline-counsel/components/contact-visit/styles.css +13 -0
  941. package/design-system/compositions/v1/northline-counsel/components/contact-visit/template.html +1 -0
  942. package/design-system/compositions/v1/northline-counsel/components/footer-compact/styles.css +12 -0
  943. package/design-system/compositions/v1/northline-counsel/components/footer-compact/template.html +1 -0
  944. package/design-system/compositions/v1/northline-counsel/components/hero-evidence/styles.css +13 -0
  945. package/design-system/compositions/v1/northline-counsel/components/hero-evidence/template.html +1 -0
  946. package/design-system/compositions/v1/northline-counsel/components/hero-page/styles.css +19 -0
  947. package/design-system/compositions/v1/northline-counsel/components/hero-page/template.html +1 -0
  948. package/design-system/compositions/v1/northline-counsel/components/nav-split/styles.css +11 -0
  949. package/design-system/compositions/v1/northline-counsel/components/nav-split/template.html +11 -0
  950. package/design-system/compositions/v1/northline-counsel/components/services-priority/styles.css +16 -0
  951. package/design-system/compositions/v1/northline-counsel/components/services-priority/template.html +1 -0
  952. package/design-system/compositions/v1/northline-counsel/components/specification-ledger/styles.css +10 -0
  953. package/design-system/compositions/v1/northline-counsel/components/specification-ledger/template.html +1 -0
  954. package/design-system/compositions/v1/northline-counsel/direction.md +5 -0
  955. package/design-system/compositions/v1/northline-counsel/fixture-brief.json +10 -0
  956. package/design-system/compositions/v1/northline-counsel/media-inventory.json +1 -0
  957. package/design-system/compositions/v1/northline-counsel/pages/index.html +11 -0
  958. package/design-system/compositions/v1/northline-counsel/pages/planning.html +11 -0
  959. package/design-system/compositions/v1/northline-counsel/selection-receipt.json +36 -0
  960. package/design-system/compositions/v1/northline-counsel/site.json +1 -0
  961. package/design-system/compositions/v1/northline-counsel/storyboard.md +12 -0
  962. package/design-system/compositions/v1/northline-counsel/theme/defaults.json +1 -0
  963. package/design-system/compositions/v1/source-ledger.json +18 -0
  964. package/design-system/compositions/v1/tide-and-slate/components/contact-phone-first/styles.css +11 -0
  965. package/design-system/compositions/v1/tide-and-slate/components/contact-phone-first/template.html +1 -0
  966. package/design-system/compositions/v1/tide-and-slate/components/footer-compact/styles.css +12 -0
  967. package/design-system/compositions/v1/tide-and-slate/components/footer-compact/template.html +1 -0
  968. package/design-system/compositions/v1/tide-and-slate/components/hero-page/styles.css +19 -0
  969. package/design-system/compositions/v1/tide-and-slate/components/hero-page/template.html +1 -0
  970. package/design-system/compositions/v1/tide-and-slate/components/hero-split/styles.css +7 -0
  971. package/design-system/compositions/v1/tide-and-slate/components/hero-split/template.html +11 -0
  972. package/design-system/compositions/v1/tide-and-slate/components/nav-split/styles.css +11 -0
  973. package/design-system/compositions/v1/tide-and-slate/components/nav-split/template.html +11 -0
  974. package/design-system/compositions/v1/tide-and-slate/components/project-evidence/styles.css +12 -0
  975. package/design-system/compositions/v1/tide-and-slate/components/project-evidence/template.html +1 -0
  976. package/design-system/compositions/v1/tide-and-slate/components/services-priority/styles.css +16 -0
  977. package/design-system/compositions/v1/tide-and-slate/components/services-priority/template.html +1 -0
  978. package/design-system/compositions/v1/tide-and-slate/components/specification-ledger/styles.css +10 -0
  979. package/design-system/compositions/v1/tide-and-slate/components/specification-ledger/template.html +1 -0
  980. package/design-system/compositions/v1/tide-and-slate/direction.md +5 -0
  981. package/design-system/compositions/v1/tide-and-slate/fixture-brief.json +10 -0
  982. package/design-system/compositions/v1/tide-and-slate/media/teaching/slate-roof-finished.webp +0 -0
  983. package/design-system/compositions/v1/tide-and-slate/media/teaching/slate-roof-finished.webp.provenance.json +9 -0
  984. package/design-system/compositions/v1/tide-and-slate/media/teaching/slate-roof-work.webp +0 -0
  985. package/design-system/compositions/v1/tide-and-slate/media/teaching/slate-roof-work.webp.provenance.json +9 -0
  986. package/design-system/compositions/v1/tide-and-slate/media-inventory.json +7 -0
  987. package/design-system/compositions/v1/tide-and-slate/pages/index.html +10 -0
  988. package/design-system/compositions/v1/tide-and-slate/pages/project.html +10 -0
  989. package/design-system/compositions/v1/tide-and-slate/site.json +1 -0
  990. package/design-system/compositions/v1/tide-and-slate/storyboard.md +12 -0
  991. package/design-system/compositions/v1/tide-and-slate/theme/defaults.json +1 -0
  992. package/design-system/compositions/v2/catalog.json +4018 -0
  993. package/design-system/compositions/v2/clearwell-directory/components/study-clearwell-directory/styles.css +3 -0
  994. package/design-system/compositions/v2/clearwell-directory/components/study-clearwell-directory/template.html +1 -0
  995. package/design-system/compositions/v2/clearwell-directory/pages/detail/index.html +5 -0
  996. package/design-system/compositions/v2/clearwell-directory/pages/index.html +5 -0
  997. package/design-system/compositions/v2/clearwell-directory/site.json +7 -0
  998. package/design-system/compositions/v2/clearwell-directory/study.json +244 -0
  999. package/design-system/compositions/v2/clearwell-directory/theme/defaults.json +16 -0
  1000. package/design-system/compositions/v2/clearwell-letter/components/study-clearwell-letter/styles.css +2 -0
  1001. package/design-system/compositions/v2/clearwell-letter/components/study-clearwell-letter/template.html +1 -0
  1002. package/design-system/compositions/v2/clearwell-letter/pages/detail/index.html +5 -0
  1003. package/design-system/compositions/v2/clearwell-letter/pages/index.html +5 -0
  1004. package/design-system/compositions/v2/clearwell-letter/site.json +7 -0
  1005. package/design-system/compositions/v2/clearwell-letter/study.json +236 -0
  1006. package/design-system/compositions/v2/clearwell-letter/theme/defaults.json +16 -0
  1007. package/design-system/compositions/v2/dock-radio/components/study-dock-radio/styles.css +2 -0
  1008. package/design-system/compositions/v2/dock-radio/components/study-dock-radio/template.html +1 -0
  1009. package/design-system/compositions/v2/dock-radio/media/teaching/original-tone-study.wav +0 -0
  1010. package/design-system/compositions/v2/dock-radio/media/teaching/original-tone-study.wav.provenance.json +6 -0
  1011. package/design-system/compositions/v2/dock-radio/pages/detail/index.html +5 -0
  1012. package/design-system/compositions/v2/dock-radio/pages/index.html +5 -0
  1013. package/design-system/compositions/v2/dock-radio/site.json +7 -0
  1014. package/design-system/compositions/v2/dock-radio/study.json +288 -0
  1015. package/design-system/compositions/v2/dock-radio/theme/defaults.json +16 -0
  1016. package/design-system/compositions/v2/fen-repair/components/study-fen-repair/styles.css +2 -0
  1017. package/design-system/compositions/v2/fen-repair/components/study-fen-repair/template.html +1 -0
  1018. package/design-system/compositions/v2/fen-repair/media/teaching/slate-roof-finished.webp +0 -0
  1019. package/design-system/compositions/v2/fen-repair/media/teaching/slate-roof-finished.webp.provenance.json +9 -0
  1020. package/design-system/compositions/v2/fen-repair/media/teaching/slate-roof-work.webp +0 -0
  1021. package/design-system/compositions/v2/fen-repair/media/teaching/slate-roof-work.webp.provenance.json +9 -0
  1022. package/design-system/compositions/v2/fen-repair/pages/detail/index.html +5 -0
  1023. package/design-system/compositions/v2/fen-repair/pages/index.html +5 -0
  1024. package/design-system/compositions/v2/fen-repair/site.json +7 -0
  1025. package/design-system/compositions/v2/fen-repair/study.json +236 -0
  1026. package/design-system/compositions/v2/fen-repair/theme/defaults.json +16 -0
  1027. package/design-system/compositions/v2/hearth-plane/components/study-hearth-plane/styles.css +2 -0
  1028. package/design-system/compositions/v2/hearth-plane/components/study-hearth-plane/template.html +1 -0
  1029. package/design-system/compositions/v2/hearth-plane/pages/detail/index.html +5 -0
  1030. package/design-system/compositions/v2/hearth-plane/pages/index.html +5 -0
  1031. package/design-system/compositions/v2/hearth-plane/site.json +7 -0
  1032. package/design-system/compositions/v2/hearth-plane/study.json +238 -0
  1033. package/design-system/compositions/v2/hearth-plane/theme/defaults.json +16 -0
  1034. package/design-system/compositions/v2/lacuna-objects/components/study-lacuna-objects/styles.css +2 -0
  1035. package/design-system/compositions/v2/lacuna-objects/components/study-lacuna-objects/template.html +1 -0
  1036. package/design-system/compositions/v2/lacuna-objects/pages/detail/index.html +5 -0
  1037. package/design-system/compositions/v2/lacuna-objects/pages/index.html +5 -0
  1038. package/design-system/compositions/v2/lacuna-objects/site.json +7 -0
  1039. package/design-system/compositions/v2/lacuna-objects/study.json +242 -0
  1040. package/design-system/compositions/v2/lacuna-objects/theme/defaults.json +16 -0
  1041. package/design-system/compositions/v2/loop-room/components/study-loop-room/styles.css +2 -0
  1042. package/design-system/compositions/v2/loop-room/components/study-loop-room/template.html +1 -0
  1043. package/design-system/compositions/v2/loop-room/pages/detail/index.html +5 -0
  1044. package/design-system/compositions/v2/loop-room/pages/index.html +5 -0
  1045. package/design-system/compositions/v2/loop-room/site.json +7 -0
  1046. package/design-system/compositions/v2/loop-room/study.json +253 -0
  1047. package/design-system/compositions/v2/loop-room/theme/defaults.json +16 -0
  1048. package/design-system/compositions/v2/manifest.json +740 -0
  1049. package/design-system/compositions/v2/mara-reading-room/components/study-mara-reading-room/styles.css +2 -0
  1050. package/design-system/compositions/v2/mara-reading-room/components/study-mara-reading-room/template.html +1 -0
  1051. package/design-system/compositions/v2/mara-reading-room/pages/detail/index.html +5 -0
  1052. package/design-system/compositions/v2/mara-reading-room/pages/index.html +5 -0
  1053. package/design-system/compositions/v2/mara-reading-room/site.json +7 -0
  1054. package/design-system/compositions/v2/mara-reading-room/study.json +246 -0
  1055. package/design-system/compositions/v2/mara-reading-room/theme/defaults.json +16 -0
  1056. package/design-system/compositions/v2/mara-specimen/components/study-mara-specimen/styles.css +3 -0
  1057. package/design-system/compositions/v2/mara-specimen/components/study-mara-specimen/template.html +1 -0
  1058. package/design-system/compositions/v2/mara-specimen/pages/detail/index.html +5 -0
  1059. package/design-system/compositions/v2/mara-specimen/pages/index.html +5 -0
  1060. package/design-system/compositions/v2/mara-specimen/site.json +7 -0
  1061. package/design-system/compositions/v2/mara-specimen/study.json +244 -0
  1062. package/design-system/compositions/v2/mara-specimen/theme/defaults.json +16 -0
  1063. package/design-system/compositions/v2/margin-journal/components/study-margin-journal/styles.css +2 -0
  1064. package/design-system/compositions/v2/margin-journal/components/study-margin-journal/template.html +1 -0
  1065. package/design-system/compositions/v2/margin-journal/pages/detail/index.html +5 -0
  1066. package/design-system/compositions/v2/margin-journal/pages/index.html +5 -0
  1067. package/design-system/compositions/v2/margin-journal/site.json +7 -0
  1068. package/design-system/compositions/v2/margin-journal/study.json +242 -0
  1069. package/design-system/compositions/v2/margin-journal/theme/defaults.json +16 -0
  1070. package/design-system/compositions/v2/night-orchard/components/study-night-orchard/styles.css +2 -0
  1071. package/design-system/compositions/v2/night-orchard/components/study-night-orchard/template.html +1 -0
  1072. package/design-system/compositions/v2/night-orchard/pages/detail/index.html +5 -0
  1073. package/design-system/compositions/v2/night-orchard/pages/index.html +5 -0
  1074. package/design-system/compositions/v2/night-orchard/site.json +7 -0
  1075. package/design-system/compositions/v2/night-orchard/study.json +247 -0
  1076. package/design-system/compositions/v2/night-orchard/theme/defaults.json +16 -0
  1077. package/design-system/compositions/v2/previews/clearwell-directory-home-1440.png +0 -0
  1078. package/design-system/compositions/v2/previews/clearwell-directory-home-390.png +0 -0
  1079. package/design-system/compositions/v2/previews/clearwell-directory-interior-1440.png +0 -0
  1080. package/design-system/compositions/v2/previews/clearwell-directory-interior-390.png +0 -0
  1081. package/design-system/compositions/v2/previews/clearwell-letter-home-1440.png +0 -0
  1082. package/design-system/compositions/v2/previews/clearwell-letter-home-390.png +0 -0
  1083. package/design-system/compositions/v2/previews/clearwell-letter-interior-1440.png +0 -0
  1084. package/design-system/compositions/v2/previews/clearwell-letter-interior-390.png +0 -0
  1085. package/design-system/compositions/v2/previews/dock-radio-home-1440.png +0 -0
  1086. package/design-system/compositions/v2/previews/dock-radio-home-390.png +0 -0
  1087. package/design-system/compositions/v2/previews/dock-radio-interior-1440.png +0 -0
  1088. package/design-system/compositions/v2/previews/dock-radio-interior-390.png +0 -0
  1089. package/design-system/compositions/v2/previews/fen-repair-home-1440.png +0 -0
  1090. package/design-system/compositions/v2/previews/fen-repair-home-390.png +0 -0
  1091. package/design-system/compositions/v2/previews/fen-repair-interior-1440.png +0 -0
  1092. package/design-system/compositions/v2/previews/fen-repair-interior-390.png +0 -0
  1093. package/design-system/compositions/v2/previews/hearth-plane-home-1440.png +0 -0
  1094. package/design-system/compositions/v2/previews/hearth-plane-home-390.png +0 -0
  1095. package/design-system/compositions/v2/previews/hearth-plane-interior-1440.png +0 -0
  1096. package/design-system/compositions/v2/previews/hearth-plane-interior-390.png +0 -0
  1097. package/design-system/compositions/v2/previews/lacuna-objects-home-1440.png +0 -0
  1098. package/design-system/compositions/v2/previews/lacuna-objects-home-390.png +0 -0
  1099. package/design-system/compositions/v2/previews/lacuna-objects-interior-1440.png +0 -0
  1100. package/design-system/compositions/v2/previews/lacuna-objects-interior-390.png +0 -0
  1101. package/design-system/compositions/v2/previews/loop-room-home-1440.png +0 -0
  1102. package/design-system/compositions/v2/previews/loop-room-home-390.png +0 -0
  1103. package/design-system/compositions/v2/previews/loop-room-interior-1440.png +0 -0
  1104. package/design-system/compositions/v2/previews/loop-room-interior-390.png +0 -0
  1105. package/design-system/compositions/v2/previews/mara-reading-room-home-1440.png +0 -0
  1106. package/design-system/compositions/v2/previews/mara-reading-room-home-390.png +0 -0
  1107. package/design-system/compositions/v2/previews/mara-reading-room-interior-1440.png +0 -0
  1108. package/design-system/compositions/v2/previews/mara-reading-room-interior-390.png +0 -0
  1109. package/design-system/compositions/v2/previews/mara-specimen-home-1440.png +0 -0
  1110. package/design-system/compositions/v2/previews/mara-specimen-home-390.png +0 -0
  1111. package/design-system/compositions/v2/previews/mara-specimen-interior-1440.png +0 -0
  1112. package/design-system/compositions/v2/previews/mara-specimen-interior-390.png +0 -0
  1113. package/design-system/compositions/v2/previews/margin-journal-home-1440.png +0 -0
  1114. package/design-system/compositions/v2/previews/margin-journal-home-390.png +0 -0
  1115. package/design-system/compositions/v2/previews/margin-journal-interior-1440.png +0 -0
  1116. package/design-system/compositions/v2/previews/margin-journal-interior-390.png +0 -0
  1117. package/design-system/compositions/v2/previews/night-orchard-home-1440.png +0 -0
  1118. package/design-system/compositions/v2/previews/night-orchard-home-390.png +0 -0
  1119. package/design-system/compositions/v2/previews/night-orchard-interior-1440.png +0 -0
  1120. package/design-system/compositions/v2/previews/night-orchard-interior-390.png +0 -0
  1121. package/design-system/compositions/v2/previews/relay-workflow-home-1440.png +0 -0
  1122. package/design-system/compositions/v2/previews/relay-workflow-home-390.png +0 -0
  1123. package/design-system/compositions/v2/previews/relay-workflow-interior-1440.png +0 -0
  1124. package/design-system/compositions/v2/previews/relay-workflow-interior-390.png +0 -0
  1125. package/design-system/compositions/v2/previews/rivet-components-home-1440.png +0 -0
  1126. package/design-system/compositions/v2/previews/rivet-components-home-390.png +0 -0
  1127. package/design-system/compositions/v2/previews/rivet-components-interior-1440.png +0 -0
  1128. package/design-system/compositions/v2/previews/rivet-components-interior-390.png +0 -0
  1129. package/design-system/compositions/v2/previews/signal-fair-home-1440.png +0 -0
  1130. package/design-system/compositions/v2/previews/signal-fair-home-390.png +0 -0
  1131. package/design-system/compositions/v2/previews/signal-fair-interior-1440.png +0 -0
  1132. package/design-system/compositions/v2/previews/signal-fair-interior-390.png +0 -0
  1133. package/design-system/compositions/v2/previews/sundial-goods-home-1440.png +0 -0
  1134. package/design-system/compositions/v2/previews/sundial-goods-home-390.png +0 -0
  1135. package/design-system/compositions/v2/previews/sundial-goods-interior-1440.png +0 -0
  1136. package/design-system/compositions/v2/previews/sundial-goods-interior-390.png +0 -0
  1137. package/design-system/compositions/v2/previews/thread-mender-home-1440.png +0 -0
  1138. package/design-system/compositions/v2/previews/thread-mender-home-390.png +0 -0
  1139. package/design-system/compositions/v2/previews/thread-mender-interior-1440.png +0 -0
  1140. package/design-system/compositions/v2/previews/thread-mender-interior-390.png +0 -0
  1141. package/design-system/compositions/v2/relay-workflow/components/study-relay-workflow/styles.css +2 -0
  1142. package/design-system/compositions/v2/relay-workflow/components/study-relay-workflow/template.html +1 -0
  1143. package/design-system/compositions/v2/relay-workflow/pages/detail/index.html +5 -0
  1144. package/design-system/compositions/v2/relay-workflow/pages/index.html +5 -0
  1145. package/design-system/compositions/v2/relay-workflow/site.json +7 -0
  1146. package/design-system/compositions/v2/relay-workflow/study.json +283 -0
  1147. package/design-system/compositions/v2/relay-workflow/theme/defaults.json +16 -0
  1148. package/design-system/compositions/v2/rivet-components/components/study-rivet-components/styles.css +2 -0
  1149. package/design-system/compositions/v2/rivet-components/components/study-rivet-components/template.html +1 -0
  1150. package/design-system/compositions/v2/rivet-components/pages/detail/index.html +5 -0
  1151. package/design-system/compositions/v2/rivet-components/pages/index.html +5 -0
  1152. package/design-system/compositions/v2/rivet-components/site.json +7 -0
  1153. package/design-system/compositions/v2/rivet-components/study.json +241 -0
  1154. package/design-system/compositions/v2/rivet-components/theme/defaults.json +16 -0
  1155. package/design-system/compositions/v2/signal-fair/components/study-signal-fair/styles.css +2 -0
  1156. package/design-system/compositions/v2/signal-fair/components/study-signal-fair/template.html +1 -0
  1157. package/design-system/compositions/v2/signal-fair/pages/detail/index.html +5 -0
  1158. package/design-system/compositions/v2/signal-fair/pages/index.html +5 -0
  1159. package/design-system/compositions/v2/signal-fair/site.json +7 -0
  1160. package/design-system/compositions/v2/signal-fair/study.json +271 -0
  1161. package/design-system/compositions/v2/signal-fair/theme/defaults.json +16 -0
  1162. package/design-system/compositions/v2/sundial-goods/components/study-sundial-goods/styles.css +2 -0
  1163. package/design-system/compositions/v2/sundial-goods/components/study-sundial-goods/template.html +1 -0
  1164. package/design-system/compositions/v2/sundial-goods/pages/detail/index.html +5 -0
  1165. package/design-system/compositions/v2/sundial-goods/pages/index.html +5 -0
  1166. package/design-system/compositions/v2/sundial-goods/site.json +7 -0
  1167. package/design-system/compositions/v2/sundial-goods/study.json +247 -0
  1168. package/design-system/compositions/v2/sundial-goods/theme/defaults.json +16 -0
  1169. package/design-system/compositions/v2/thread-mender/components/study-thread-mender/styles.css +2 -0
  1170. package/design-system/compositions/v2/thread-mender/components/study-thread-mender/template.html +1 -0
  1171. package/design-system/compositions/v2/thread-mender/pages/detail/index.html +5 -0
  1172. package/design-system/compositions/v2/thread-mender/pages/index.html +5 -0
  1173. package/design-system/compositions/v2/thread-mender/site.json +7 -0
  1174. package/design-system/compositions/v2/thread-mender/study.json +253 -0
  1175. package/design-system/compositions/v2/thread-mender/theme/defaults.json +16 -0
  1176. package/design-system/knowledge/v1/README.md +8 -0
  1177. package/design-system/knowledge/v1/catalog.json +479 -0
  1178. package/design-system/knowledge/v1/demonstrations/assets/teaching-slate-slope.png +0 -0
  1179. package/design-system/knowledge/v1/demonstrations/assets/teaching-slate-slope.provenance.json +12 -0
  1180. package/design-system/knowledge/v1/demonstrations/mobile-strong.html +50 -0
  1181. package/design-system/knowledge/v1/demonstrations/mobile-weak.html +50 -0
  1182. package/design-system/knowledge/v1/demonstrations/project-strong.html +50 -0
  1183. package/design-system/knowledge/v1/demonstrations/project-weak.html +50 -0
  1184. package/design-system/knowledge/v1/demonstrations/repeat-strong.html +50 -0
  1185. package/design-system/knowledge/v1/demonstrations/repeat-weak.html +50 -0
  1186. package/design-system/knowledge/v1/demonstrations/services-strong.html +50 -0
  1187. package/design-system/knowledge/v1/demonstrations/services-weak.html +50 -0
  1188. package/design-system/knowledge/v1/demonstrations/sparse-strong.html +50 -0
  1189. package/design-system/knowledge/v1/demonstrations/sparse-weak.html +50 -0
  1190. package/design-system/knowledge/v1/demonstrations/type-strong.html +50 -0
  1191. package/design-system/knowledge/v1/demonstrations/type-weak.html +50 -0
  1192. package/design-system/knowledge/v1/manifest.json +88 -0
  1193. package/design-system/knowledge/v1/observations/mobile-strong-1080.png +0 -0
  1194. package/design-system/knowledge/v1/observations/mobile-strong-375.png +0 -0
  1195. package/design-system/knowledge/v1/observations/mobile-weak-1080.png +0 -0
  1196. package/design-system/knowledge/v1/observations/mobile-weak-375.png +0 -0
  1197. package/design-system/knowledge/v1/observations/project-strong-1080.png +0 -0
  1198. package/design-system/knowledge/v1/observations/project-strong-375.png +0 -0
  1199. package/design-system/knowledge/v1/observations/project-weak-1080.png +0 -0
  1200. package/design-system/knowledge/v1/observations/project-weak-375.png +0 -0
  1201. package/design-system/knowledge/v1/observations/type-strong-1080.png +0 -0
  1202. package/design-system/knowledge/v1/observations/type-strong-375.png +0 -0
  1203. package/design-system/knowledge/v1/observations/type-weak-1080.png +0 -0
  1204. package/design-system/knowledge/v1/observations/type-weak-375.png +0 -0
  1205. package/design-system/knowledge/v2/added-lessons.json +30 -0
  1206. package/design-system/knowledge/v2/assets.json +14 -0
  1207. package/design-system/knowledge/v2/fixtures/contact-alternate.html +17 -0
  1208. package/design-system/knowledge/v2/fixtures/contact-broken.html +15 -0
  1209. package/design-system/knowledge/v2/fixtures/contact-valid.html +20 -0
  1210. package/design-system/knowledge/v2/fixtures/contrast-cases.html +10 -0
  1211. package/design-system/knowledge/v2/island-audit.json +12 -0
  1212. package/design-system/knowledge/v2/lesson-extensions.json +158 -0
  1213. package/design-system/knowledge/v2/manifest.json +52 -0
  1214. package/design-system/knowledge/v2/replacements.json +14 -0
  1215. package/design-system/knowledge/v2/requirements.json +345 -0
  1216. package/design-system/knowledge/v2/sources.json +182 -0
  1217. package/design-system/knowledge/v3/catalog.json +1232 -0
  1218. package/design-system/knowledge/v3/examples/catalog.json +799 -0
  1219. package/design-system/knowledge/v3/lessons/cmp-collection-structure.md +17 -0
  1220. package/design-system/knowledge/v3/lessons/cmp-comparison.md +17 -0
  1221. package/design-system/knowledge/v3/lessons/cmp-contextual-action.md +17 -0
  1222. package/design-system/knowledge/v3/lessons/cmp-contrastive-critique.md +17 -0
  1223. package/design-system/knowledge/v3/lessons/cmp-disclosure.md +17 -0
  1224. package/design-system/knowledge/v3/lessons/cmp-evidence-form.md +17 -0
  1225. package/design-system/knowledge/v3/lessons/cmp-image-art-direction.md +17 -0
  1226. package/design-system/knowledge/v3/lessons/cmp-image-sequence.md +17 -0
  1227. package/design-system/knowledge/v3/lessons/cmp-interactive-explanation.md +17 -0
  1228. package/design-system/knowledge/v3/lessons/cmp-local-information.md +17 -0
  1229. package/design-system/knowledge/v3/lessons/cmp-motion-continuity.md +17 -0
  1230. package/design-system/knowledge/v3/lessons/cmp-narrative-continuity.md +17 -0
  1231. package/design-system/knowledge/v3/lessons/cmp-navigation.md +17 -0
  1232. package/design-system/knowledge/v3/lessons/cmp-page-rhythm.md +17 -0
  1233. package/design-system/knowledge/v3/lessons/cmp-process.md +17 -0
  1234. package/design-system/knowledge/v3/lessons/cmp-proof-adjacency.md +17 -0
  1235. package/design-system/knowledge/v3/lessons/cmp-responsive-recomposition.md +17 -0
  1236. package/design-system/knowledge/v3/lessons/cmp-semantic-grouping.md +17 -0
  1237. package/design-system/knowledge/v3/lessons/cmp-shared-alignment.md +17 -0
  1238. package/design-system/knowledge/v3/lessons/cmp-sparse-media.md +17 -0
  1239. package/design-system/knowledge/v3/lessons/cmp-surfaces-motifs.md +17 -0
  1240. package/design-system/knowledge/v3/lessons/cmp-text-shape.md +17 -0
  1241. package/design-system/knowledge/v3/lessons/cmp-type-roles.md +17 -0
  1242. package/design-system/knowledge/v3/lessons/cmp-unequal-emphasis.md +17 -0
  1243. package/design-system/knowledge/v3/manifest.json +117 -0
  1244. package/design-system/knowledge/v3/sources.json +425 -0
  1245. package/design-system/references/v1/README.md +27 -0
  1246. package/design-system/references/v1/catalog.json +20035 -0
  1247. package/design-system/references/v1/manifest.json +10 -0
  1248. package/design-system/references/v2/README.md +27 -0
  1249. package/design-system/references/v2/catalog.json +27382 -0
  1250. package/design-system/references/v2/manifest.json +11 -0
  1251. package/design-system/references/v3/README.md +27 -0
  1252. package/design-system/references/v3/catalog.json +27628 -0
  1253. package/design-system/references/v3/manifest.json +11 -0
  1254. package/docs/CLI.md +299 -0
  1255. package/docs/CLOUDFLARE.md +53 -0
  1256. package/docs/CONTACT-FORMS.md +161 -0
  1257. package/docs/DISTRIBUTION.md +70 -0
  1258. package/docs/ENGINE.md +28 -0
  1259. package/docs/PRESERVE.md +59 -0
  1260. package/docs/SECURITY.md +23 -0
  1261. package/docs/STOCK-MEDIA.md +66 -0
  1262. package/licenses/blake3-wasm-LICENSE +21 -0
  1263. package/licenses/entities-LICENSE +11 -0
  1264. package/licenses/parse5-LICENSE +19 -0
  1265. package/migrations/0001_init.sql +90 -0
  1266. package/migrations/0002_analytics.sql +50 -0
  1267. package/migrations/0003_site_updates.sql +29 -0
  1268. package/migrations/0004_contact_forms.sql +75 -0
  1269. package/migrations/0005_auth.sql +20 -0
  1270. package/package.json +229 -6
  1271. package/src/runtime/beacon.ts +329 -0
  1272. package/src/runtime/before-after.ts +48 -0
  1273. package/src/runtime/carousel.ts +20 -0
  1274. package/src/runtime/cookie-compliance.ts +50 -0
  1275. package/src/runtime/counter.ts +2 -0
  1276. package/src/runtime/editor.ts +72 -0
  1277. package/src/runtime/experience.ts +57 -0
  1278. package/src/runtime/header.ts +46 -0
  1279. package/src/runtime/leads.ts +102 -0
  1280. package/src/runtime/lightbox.ts +26 -0
  1281. package/src/runtime/reveal.ts +2 -0
  1282. package/src/runtime/scroll-motion.controller.js +100 -0
  1283. package/src/runtime/scroll-motion.count.js +21 -0
  1284. package/src/runtime/scroll-motion.generated.ts +5 -0
  1285. package/src/runtime/scroll-motion.vanilla.js +45 -0
  1286. package/src/runtime/tabs.ts +40 -0
  1287. package/src/stock/catalog.json +5445 -0
  1288. package/src/stock/coverage.json +18 -0
  1289. package/src/stock/picker.css +118 -0
  1290. package/src/stock/picker.js +191 -0
  1291. package/templates/site/.env.example +6 -0
  1292. package/templates/site/.github/workflows/deploy.yml +59 -0
  1293. package/templates/site/AGENTS.md +35 -0
  1294. package/templates/site/CLAUDE.md +5 -0
  1295. package/templates/site/GEMINI.md +5 -0
  1296. package/templates/site/README.md +55 -0
  1297. package/templates/site/components/README.md +18 -0
  1298. package/templates/site/gitignore +10 -0
  1299. package/templates/site/launch.json +14 -0
  1300. package/templates/site/package.json +36 -0
  1301. package/templates/site/pages/README.md +31 -0
  1302. package/templates/site/site.json +10 -0
  1303. package/templates/site/theme/defaults.json +17 -0
@@ -0,0 +1,4018 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "release": "2026-10-05.1",
4
+ "status": "16 pairs compiled and assistant visually reviewed; human preference pending",
5
+ "studies": [
6
+ {
7
+ "id": "clearwell-directory",
8
+ "revision": 1,
9
+ "title": "Clearwell / task directory",
10
+ "primaryFamily": "civic",
11
+ "assetMinimum": "none",
12
+ "fitSignals": [
13
+ "professional-service",
14
+ "type-content",
15
+ "real-copy",
16
+ "process",
17
+ "comparison",
18
+ "sparse-media",
19
+ "action"
20
+ ],
21
+ "visitorTasks": [
22
+ "Evaluate a practice",
23
+ "Understand a process"
24
+ ],
25
+ "organizingIdea": "Start with the visitor’s bookkeeping decision; service choices lead before explanatory prose.",
26
+ "brief": {
27
+ "fictional": true,
28
+ "facts": {
29
+ "name": "Clearwell",
30
+ "offer": "Bookkeeping for independent studios",
31
+ "scope": [
32
+ "Monthly reconciliation",
33
+ "Monthly reporting",
34
+ "Year-end handover"
35
+ ],
36
+ "excludes": [
37
+ "Tax returns",
38
+ "Investment advice"
39
+ ],
40
+ "process": [
41
+ "Bring a sample of your records",
42
+ "Agree scope together",
43
+ "Set a monthly handover"
44
+ ],
45
+ "contact": "hello@example.test",
46
+ "media": []
47
+ },
48
+ "factsHash": "a27aeea57fb381f20268557ae9c788abd1219ad30cc1b8b09c3177b633f782d5",
49
+ "mediaHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
50
+ },
51
+ "provenance": {
52
+ "content": "Original fictional teaching content authored for Vitris; never customer facts",
53
+ "media": "No imagery required",
54
+ "rights": "Original Vitris teaching source; customer reuse requires adapting facts"
55
+ },
56
+ "storyboard": {
57
+ "homepage": [
58
+ "What needs clearing up?",
59
+ "Keep the month clear",
60
+ "Prepare the handover",
61
+ "A small start, with a clear scope."
62
+ ],
63
+ "interior": [
64
+ "A month you can read.",
65
+ "Monthly support",
66
+ "At year end",
67
+ "Before a conversation"
68
+ ],
69
+ "mobile": "Content order is preserved; side navigation and supporting columns reflow into the document. No essential hover interactions."
70
+ },
71
+ "designDecisions": "Start with the visitor’s bookkeeping decision; service choices lead before explanatory prose.",
72
+ "lessonIds": [
73
+ "cmp-collection-structure",
74
+ "cmp-navigation",
75
+ "cmp-unequal-emphasis"
76
+ ],
77
+ "referenceIds": [
78
+ "gov-uk"
79
+ ],
80
+ "sourcePath": "clearwell-directory",
81
+ "homepage": "/",
82
+ "interior": "/detail",
83
+ "status": "compiled, automated checks passed, assistant visual review recorded; human preference pending",
84
+ "humanPreference": null,
85
+ "renderEvidence": [
86
+ {
87
+ "route": "/",
88
+ "viewport": {
89
+ "width": 1440,
90
+ "height": 900
91
+ },
92
+ "capturedAt": "2026-10-05T15:54:32.050Z",
93
+ "browser": "153.0.8010.12",
94
+ "preview": {
95
+ "path": "previews/clearwell-directory-home-1440.png",
96
+ "sha256": "87d3936eca6c20977ba4a5a6c16691d0e96f1c52dbc5537d21bf5e8f0ff0d5bd"
97
+ },
98
+ "compiledHash": "8017741066cfe8419fea6c635774f2917fc0c231693fac3618b419c1ef4a613a",
99
+ "automated": {
100
+ "errors": [],
101
+ "axeViolations": [],
102
+ "metrics": {
103
+ "overflow": false,
104
+ "h1": 1,
105
+ "brokenImages": [],
106
+ "internalLinks": [
107
+ "/",
108
+ "/detail",
109
+ "/detail#monthly",
110
+ "/detail#handover",
111
+ "/detail"
112
+ ]
113
+ },
114
+ "firstFocus": {
115
+ "tag": "A",
116
+ "text": "Skip to content",
117
+ "outline": "solid",
118
+ "width": "2px"
119
+ }
120
+ },
121
+ "visualReview": {
122
+ "assessor": "assistant",
123
+ "reviewedAt": "2026-10-05T16:08:16.889952+00:00",
124
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
125
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
126
+ }
127
+ },
128
+ {
129
+ "route": "/",
130
+ "viewport": {
131
+ "width": 390,
132
+ "height": 844
133
+ },
134
+ "capturedAt": "2026-10-05T15:54:33.029Z",
135
+ "browser": "153.0.8010.12",
136
+ "preview": {
137
+ "path": "previews/clearwell-directory-home-390.png",
138
+ "sha256": "1d0f0bf4a0fd0bd0ccf306077a9062aeda56efa0495d148df1502615a11ed67e"
139
+ },
140
+ "compiledHash": "8017741066cfe8419fea6c635774f2917fc0c231693fac3618b419c1ef4a613a",
141
+ "automated": {
142
+ "errors": [],
143
+ "axeViolations": [],
144
+ "metrics": {
145
+ "overflow": false,
146
+ "h1": 1,
147
+ "brokenImages": [],
148
+ "internalLinks": [
149
+ "/",
150
+ "/detail",
151
+ "/detail#monthly",
152
+ "/detail#handover",
153
+ "/detail"
154
+ ]
155
+ },
156
+ "firstFocus": {
157
+ "tag": "A",
158
+ "text": "Skip to content",
159
+ "outline": "solid",
160
+ "width": "2px"
161
+ }
162
+ },
163
+ "visualReview": {
164
+ "assessor": "assistant",
165
+ "reviewedAt": "2026-10-05T16:08:16.889952+00:00",
166
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
167
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
168
+ }
169
+ },
170
+ {
171
+ "route": "/detail",
172
+ "viewport": {
173
+ "width": 1440,
174
+ "height": 900
175
+ },
176
+ "capturedAt": "2026-10-05T15:54:34.048Z",
177
+ "browser": "153.0.8010.12",
178
+ "preview": {
179
+ "path": "previews/clearwell-directory-interior-1440.png",
180
+ "sha256": "5941cac13da2891565504e803fb74afae65119ce7898032c736eb7d3b70d954b"
181
+ },
182
+ "compiledHash": "da9297a73504f383348cedd14bc1f208638bfabae48bcd7560bd88ba53b69b33",
183
+ "automated": {
184
+ "errors": [],
185
+ "axeViolations": [],
186
+ "metrics": {
187
+ "overflow": false,
188
+ "h1": 1,
189
+ "brokenImages": [],
190
+ "internalLinks": [
191
+ "/",
192
+ "/detail"
193
+ ]
194
+ },
195
+ "firstFocus": {
196
+ "tag": "A",
197
+ "text": "Skip to content",
198
+ "outline": "solid",
199
+ "width": "2px"
200
+ }
201
+ },
202
+ "visualReview": {
203
+ "assessor": "assistant",
204
+ "reviewedAt": "2026-10-05T16:08:16.889952+00:00",
205
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
206
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
207
+ }
208
+ },
209
+ {
210
+ "route": "/detail",
211
+ "viewport": {
212
+ "width": 390,
213
+ "height": 844
214
+ },
215
+ "capturedAt": "2026-10-05T15:54:35.016Z",
216
+ "browser": "153.0.8010.12",
217
+ "preview": {
218
+ "path": "previews/clearwell-directory-interior-390.png",
219
+ "sha256": "1a18a58c78c8d59b0569b73a9ec7f2e74f337a584b01738bb82c50fbe75f8899"
220
+ },
221
+ "compiledHash": "da9297a73504f383348cedd14bc1f208638bfabae48bcd7560bd88ba53b69b33",
222
+ "automated": {
223
+ "errors": [],
224
+ "axeViolations": [],
225
+ "metrics": {
226
+ "overflow": false,
227
+ "h1": 1,
228
+ "brokenImages": [],
229
+ "internalLinks": [
230
+ "/",
231
+ "/detail"
232
+ ]
233
+ },
234
+ "firstFocus": {
235
+ "tag": "A",
236
+ "text": "Skip to content",
237
+ "outline": "solid",
238
+ "width": "2px"
239
+ }
240
+ },
241
+ "visualReview": {
242
+ "assessor": "assistant",
243
+ "reviewedAt": "2026-10-05T16:08:16.889952+00:00",
244
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
245
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
246
+ }
247
+ }
248
+ ]
249
+ },
250
+ {
251
+ "id": "clearwell-letter",
252
+ "revision": 1,
253
+ "title": "Clearwell / working letter",
254
+ "primaryFamily": "text-first",
255
+ "assetMinimum": "none",
256
+ "fitSignals": [
257
+ "professional-service",
258
+ "type-content",
259
+ "real-copy",
260
+ "process",
261
+ "comparison",
262
+ "sparse-media",
263
+ "action"
264
+ ],
265
+ "visitorTasks": [
266
+ "Evaluate a practice",
267
+ "Understand a process"
268
+ ],
269
+ "organizingIdea": "A personal explanatory letter develops the responsibility relationship; an attached scope note supports comparison.",
270
+ "brief": {
271
+ "fictional": true,
272
+ "facts": {
273
+ "name": "Clearwell",
274
+ "offer": "Bookkeeping for independent studios",
275
+ "scope": [
276
+ "Monthly reconciliation",
277
+ "Monthly reporting",
278
+ "Year-end handover"
279
+ ],
280
+ "excludes": [
281
+ "Tax returns",
282
+ "Investment advice"
283
+ ],
284
+ "process": [
285
+ "Bring a sample of your records",
286
+ "Agree scope together",
287
+ "Set a monthly handover"
288
+ ],
289
+ "contact": "hello@example.test",
290
+ "media": []
291
+ },
292
+ "factsHash": "a27aeea57fb381f20268557ae9c788abd1219ad30cc1b8b09c3177b633f782d5",
293
+ "mediaHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
294
+ },
295
+ "provenance": {
296
+ "content": "Original fictional teaching content authored for Vitris; never customer facts",
297
+ "media": "No imagery required",
298
+ "rights": "Original Vitris teaching source; customer reuse requires adapting facts"
299
+ },
300
+ "storyboard": {
301
+ "homepage": [
302
+ "Let’s make senseof the month.",
303
+ "The scope note"
304
+ ],
305
+ "interior": [
306
+ "A month you can read.",
307
+ "Monthly support",
308
+ "At year end",
309
+ "Before a conversation"
310
+ ],
311
+ "mobile": "Content order is preserved; side navigation and supporting columns reflow into the document. No essential hover interactions."
312
+ },
313
+ "designDecisions": "A personal explanatory letter develops the responsibility relationship; an attached scope note supports comparison.",
314
+ "lessonIds": [
315
+ "cmp-type-roles",
316
+ "cmp-page-rhythm",
317
+ "cmp-sparse-media"
318
+ ],
319
+ "referenceIds": [
320
+ "gov-uk"
321
+ ],
322
+ "sourcePath": "clearwell-letter",
323
+ "homepage": "/",
324
+ "interior": "/detail",
325
+ "status": "compiled, automated checks passed, assistant visual review recorded; human preference pending",
326
+ "humanPreference": null,
327
+ "renderEvidence": [
328
+ {
329
+ "route": "/",
330
+ "viewport": {
331
+ "width": 1440,
332
+ "height": 900
333
+ },
334
+ "capturedAt": "2026-10-05T15:53:13.575Z",
335
+ "browser": "153.0.8010.12",
336
+ "preview": {
337
+ "path": "previews/clearwell-letter-home-1440.png",
338
+ "sha256": "d32fcd28eb0c63b8fc3e798752ae9b1614410cbfb36bb2d6944a06813e15b6c5"
339
+ },
340
+ "compiledHash": "7dfa963fc571965b983f088234cb2ba4da4ae291271aecd71d70c216f39a3f9e",
341
+ "automated": {
342
+ "errors": [],
343
+ "axeViolations": [],
344
+ "metrics": {
345
+ "overflow": false,
346
+ "h1": 1,
347
+ "brokenImages": [],
348
+ "internalLinks": [
349
+ "/",
350
+ "/detail",
351
+ "/detail"
352
+ ]
353
+ },
354
+ "firstFocus": {
355
+ "tag": "A",
356
+ "text": "Skip to content",
357
+ "outline": "solid",
358
+ "width": "2px"
359
+ }
360
+ },
361
+ "visualReview": {
362
+ "assessor": "assistant",
363
+ "reviewedAt": "2026-10-05T16:08:16.890952+00:00",
364
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
365
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
366
+ }
367
+ },
368
+ {
369
+ "route": "/",
370
+ "viewport": {
371
+ "width": 390,
372
+ "height": 844
373
+ },
374
+ "capturedAt": "2026-10-05T15:53:14.622Z",
375
+ "browser": "153.0.8010.12",
376
+ "preview": {
377
+ "path": "previews/clearwell-letter-home-390.png",
378
+ "sha256": "b55ad3915a88c22306d0d834b51cf1a6a4bae3d891b61af2e3d031c5c9c216f2"
379
+ },
380
+ "compiledHash": "7dfa963fc571965b983f088234cb2ba4da4ae291271aecd71d70c216f39a3f9e",
381
+ "automated": {
382
+ "errors": [],
383
+ "axeViolations": [],
384
+ "metrics": {
385
+ "overflow": false,
386
+ "h1": 1,
387
+ "brokenImages": [],
388
+ "internalLinks": [
389
+ "/",
390
+ "/detail",
391
+ "/detail"
392
+ ]
393
+ },
394
+ "firstFocus": {
395
+ "tag": "A",
396
+ "text": "Skip to content",
397
+ "outline": "solid",
398
+ "width": "2px"
399
+ }
400
+ },
401
+ "visualReview": {
402
+ "assessor": "assistant",
403
+ "reviewedAt": "2026-10-05T16:08:16.890952+00:00",
404
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
405
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
406
+ }
407
+ },
408
+ {
409
+ "route": "/detail",
410
+ "viewport": {
411
+ "width": 1440,
412
+ "height": 900
413
+ },
414
+ "capturedAt": "2026-10-05T15:53:15.720Z",
415
+ "browser": "153.0.8010.12",
416
+ "preview": {
417
+ "path": "previews/clearwell-letter-interior-1440.png",
418
+ "sha256": "5d5a7eeb2e01b74a381c42a4b6e75702db848306d9e6d146d7c3bfea4e29b94c"
419
+ },
420
+ "compiledHash": "f910fb4536f582d97d039789ee344a1a623108f01ffdea060d76d0945983dbaa",
421
+ "automated": {
422
+ "errors": [],
423
+ "axeViolations": [],
424
+ "metrics": {
425
+ "overflow": false,
426
+ "h1": 1,
427
+ "brokenImages": [],
428
+ "internalLinks": [
429
+ "/"
430
+ ]
431
+ },
432
+ "firstFocus": {
433
+ "tag": "A",
434
+ "text": "Skip to content",
435
+ "outline": "solid",
436
+ "width": "2px"
437
+ }
438
+ },
439
+ "visualReview": {
440
+ "assessor": "assistant",
441
+ "reviewedAt": "2026-10-05T16:08:16.890952+00:00",
442
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
443
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
444
+ }
445
+ },
446
+ {
447
+ "route": "/detail",
448
+ "viewport": {
449
+ "width": 390,
450
+ "height": 844
451
+ },
452
+ "capturedAt": "2026-10-05T15:53:16.750Z",
453
+ "browser": "153.0.8010.12",
454
+ "preview": {
455
+ "path": "previews/clearwell-letter-interior-390.png",
456
+ "sha256": "e3954d607bf5eff2200f67ff9b42d833731ec1b5236e9c1b94de655986f0a786"
457
+ },
458
+ "compiledHash": "f910fb4536f582d97d039789ee344a1a623108f01ffdea060d76d0945983dbaa",
459
+ "automated": {
460
+ "errors": [],
461
+ "axeViolations": [],
462
+ "metrics": {
463
+ "overflow": false,
464
+ "h1": 1,
465
+ "brokenImages": [],
466
+ "internalLinks": [
467
+ "/"
468
+ ]
469
+ },
470
+ "firstFocus": {
471
+ "tag": "A",
472
+ "text": "Skip to content",
473
+ "outline": "solid",
474
+ "width": "2px"
475
+ }
476
+ },
477
+ "visualReview": {
478
+ "assessor": "assistant",
479
+ "reviewedAt": "2026-10-05T16:08:16.890952+00:00",
480
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
481
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
482
+ }
483
+ }
484
+ ]
485
+ },
486
+ {
487
+ "id": "mara-specimen",
488
+ "revision": 1,
489
+ "title": "Mara Vale / typographic index",
490
+ "primaryFamily": "expressive-type",
491
+ "assetMinimum": "one-image",
492
+ "fitSignals": [
493
+ "professional-service",
494
+ "type-content",
495
+ "real-copy",
496
+ "process",
497
+ "collection",
498
+ "sparse-media",
499
+ "action"
500
+ ],
501
+ "visitorTasks": [
502
+ "Evaluate a practice",
503
+ "Understand a process"
504
+ ],
505
+ "organizingIdea": "Selected work is the introduction; large project titles function as a navigable index with quieter project metadata.",
506
+ "brief": {
507
+ "fictional": true,
508
+ "facts": {
509
+ "name": "Mara Vale",
510
+ "offer": "Independent information design",
511
+ "projects": [
512
+ {
513
+ "name": "Field Notes",
514
+ "type": "Wayfinding study",
515
+ "year": "2025"
516
+ },
517
+ {
518
+ "name": "Open Table",
519
+ "type": "Publication study",
520
+ "year": "2026"
521
+ }
522
+ ],
523
+ "method": [
524
+ "Collect the material",
525
+ "Find the hierarchy",
526
+ "Test the reading"
527
+ ],
528
+ "contact": "mara@example.test",
529
+ "media": [
530
+ "Original SVG reading diagram"
531
+ ]
532
+ },
533
+ "factsHash": "9545037fbd8c521a1bb28851165d50edb2cb39a42ddf48cf98dfa73d959bdf57",
534
+ "mediaHash": "67f1f059df254741da210de09c6b30d8a5073023a40c56d786e33b358a25af7f"
535
+ },
536
+ "provenance": {
537
+ "content": "Original fictional teaching content authored for Vitris; never customer facts",
538
+ "media": "Original authored SVG; no external assets or fonts",
539
+ "rights": "Original Vitris teaching source; customer reuse requires adapting facts"
540
+ },
541
+ "storyboard": {
542
+ "homepage": [
543
+ "FieldNotes ↗",
544
+ "Open Table ↗",
545
+ "Collect. Order. Read."
546
+ ],
547
+ "interior": [
548
+ "Field Notes",
549
+ "Collect the material",
550
+ "Find the hierarchy",
551
+ "Test the reading",
552
+ "Open Table"
553
+ ],
554
+ "mobile": "Content order is preserved; side navigation and supporting columns reflow into the document. No essential hover interactions."
555
+ },
556
+ "designDecisions": "Selected work is the introduction; large project titles function as a navigable index with quieter project metadata.",
557
+ "lessonIds": [
558
+ "cmp-type-roles",
559
+ "cmp-collection-structure",
560
+ "cmp-image-art-direction"
561
+ ],
562
+ "referenceIds": [
563
+ "pangram-pangram",
564
+ "big"
565
+ ],
566
+ "sourcePath": "mara-specimen",
567
+ "homepage": "/",
568
+ "interior": "/detail",
569
+ "status": "compiled, automated checks passed, assistant visual review recorded; human preference pending",
570
+ "humanPreference": null,
571
+ "renderEvidence": [
572
+ {
573
+ "route": "/",
574
+ "viewport": {
575
+ "width": 1440,
576
+ "height": 900
577
+ },
578
+ "capturedAt": "2026-10-05T15:54:36.097Z",
579
+ "browser": "153.0.8010.12",
580
+ "preview": {
581
+ "path": "previews/mara-specimen-home-1440.png",
582
+ "sha256": "870b84d710fb860f4574c28a34b7702816e3fc3bd673a45a76a8c87fc38b3f1a"
583
+ },
584
+ "compiledHash": "3550c2c0427190939af5e2c16fc3ca4b34e1cfaf580730b51f2e0034d60ed483",
585
+ "automated": {
586
+ "errors": [],
587
+ "axeViolations": [],
588
+ "metrics": {
589
+ "overflow": false,
590
+ "h1": 1,
591
+ "brokenImages": [],
592
+ "internalLinks": [
593
+ "/",
594
+ "/detail",
595
+ "/detail#reading"
596
+ ]
597
+ },
598
+ "firstFocus": {
599
+ "tag": "A",
600
+ "text": "Skip to content",
601
+ "outline": "solid",
602
+ "width": "2px"
603
+ }
604
+ },
605
+ "visualReview": {
606
+ "assessor": "assistant",
607
+ "reviewedAt": "2026-10-05T16:08:16.890952+00:00",
608
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
609
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
610
+ }
611
+ },
612
+ {
613
+ "route": "/",
614
+ "viewport": {
615
+ "width": 390,
616
+ "height": 844
617
+ },
618
+ "capturedAt": "2026-10-05T15:54:37.062Z",
619
+ "browser": "153.0.8010.12",
620
+ "preview": {
621
+ "path": "previews/mara-specimen-home-390.png",
622
+ "sha256": "3d99a6e7ebed0e109a836fc666d2201288fe1978527cdcf9e368ef981bfc1fdd"
623
+ },
624
+ "compiledHash": "3550c2c0427190939af5e2c16fc3ca4b34e1cfaf580730b51f2e0034d60ed483",
625
+ "automated": {
626
+ "errors": [],
627
+ "axeViolations": [],
628
+ "metrics": {
629
+ "overflow": false,
630
+ "h1": 1,
631
+ "brokenImages": [],
632
+ "internalLinks": [
633
+ "/",
634
+ "/detail",
635
+ "/detail#reading"
636
+ ]
637
+ },
638
+ "firstFocus": {
639
+ "tag": "A",
640
+ "text": "Skip to content",
641
+ "outline": "solid",
642
+ "width": "2px"
643
+ }
644
+ },
645
+ "visualReview": {
646
+ "assessor": "assistant",
647
+ "reviewedAt": "2026-10-05T16:08:16.890952+00:00",
648
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
649
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
650
+ }
651
+ },
652
+ {
653
+ "route": "/detail",
654
+ "viewport": {
655
+ "width": 1440,
656
+ "height": 900
657
+ },
658
+ "capturedAt": "2026-10-05T15:54:38.097Z",
659
+ "browser": "153.0.8010.12",
660
+ "preview": {
661
+ "path": "previews/mara-specimen-interior-1440.png",
662
+ "sha256": "4226936502a7e3a66d3583c8ad9a0ffe52a0eb95cd8cb95c145f7e5db72778a6"
663
+ },
664
+ "compiledHash": "0c529b140a31111b9ea69d9885a5ab579f061eecb9e0e1cacad1c8642dfe602d",
665
+ "automated": {
666
+ "errors": [],
667
+ "axeViolations": [],
668
+ "metrics": {
669
+ "overflow": false,
670
+ "h1": 1,
671
+ "brokenImages": [],
672
+ "internalLinks": [
673
+ "/"
674
+ ]
675
+ },
676
+ "firstFocus": {
677
+ "tag": "A",
678
+ "text": "Skip to content",
679
+ "outline": "solid",
680
+ "width": "2px"
681
+ }
682
+ },
683
+ "visualReview": {
684
+ "assessor": "assistant",
685
+ "reviewedAt": "2026-10-05T16:08:16.890952+00:00",
686
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
687
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
688
+ }
689
+ },
690
+ {
691
+ "route": "/detail",
692
+ "viewport": {
693
+ "width": 390,
694
+ "height": 844
695
+ },
696
+ "capturedAt": "2026-10-05T15:54:39.130Z",
697
+ "browser": "153.0.8010.12",
698
+ "preview": {
699
+ "path": "previews/mara-specimen-interior-390.png",
700
+ "sha256": "8f4946d321695e6ad527752a34242ea3dc28668d70a9016b30218e5fa685a437"
701
+ },
702
+ "compiledHash": "0c529b140a31111b9ea69d9885a5ab579f061eecb9e0e1cacad1c8642dfe602d",
703
+ "automated": {
704
+ "errors": [],
705
+ "axeViolations": [],
706
+ "metrics": {
707
+ "overflow": false,
708
+ "h1": 1,
709
+ "brokenImages": [],
710
+ "internalLinks": [
711
+ "/"
712
+ ]
713
+ },
714
+ "firstFocus": {
715
+ "tag": "A",
716
+ "text": "Skip to content",
717
+ "outline": "solid",
718
+ "width": "2px"
719
+ }
720
+ },
721
+ "visualReview": {
722
+ "assessor": "assistant",
723
+ "reviewedAt": "2026-10-05T16:08:16.890952+00:00",
724
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
725
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
726
+ }
727
+ }
728
+ ]
729
+ },
730
+ {
731
+ "id": "mara-reading-room",
732
+ "revision": 1,
733
+ "title": "Mara Vale / editorial reading room",
734
+ "primaryFamily": "editorial",
735
+ "assetMinimum": "one-image",
736
+ "fitSignals": [
737
+ "professional-service",
738
+ "type-content",
739
+ "real-copy",
740
+ "process",
741
+ "collection",
742
+ "sparse-media",
743
+ "action"
744
+ ],
745
+ "visitorTasks": [
746
+ "Evaluate a practice",
747
+ "Understand a process"
748
+ ],
749
+ "organizingIdea": "An editorial opening explains the reading practice, then pairs a feature diagram with a quiet publication index.",
750
+ "brief": {
751
+ "fictional": true,
752
+ "facts": {
753
+ "name": "Mara Vale",
754
+ "offer": "Independent information design",
755
+ "projects": [
756
+ {
757
+ "name": "Field Notes",
758
+ "type": "Wayfinding study",
759
+ "year": "2025"
760
+ },
761
+ {
762
+ "name": "Open Table",
763
+ "type": "Publication study",
764
+ "year": "2026"
765
+ }
766
+ ],
767
+ "method": [
768
+ "Collect the material",
769
+ "Find the hierarchy",
770
+ "Test the reading"
771
+ ],
772
+ "contact": "mara@example.test",
773
+ "media": [
774
+ "Original SVG reading diagram"
775
+ ]
776
+ },
777
+ "factsHash": "9545037fbd8c521a1bb28851165d50edb2cb39a42ddf48cf98dfa73d959bdf57",
778
+ "mediaHash": "67f1f059df254741da210de09c6b30d8a5073023a40c56d786e33b358a25af7f"
779
+ },
780
+ "provenance": {
781
+ "content": "Original fictional teaching content authored for Vitris; never customer facts",
782
+ "media": "Original authored SVG; no external assets or fonts",
783
+ "rights": "Original Vitris teaching source; customer reuse requires adapting facts"
784
+ },
785
+ "storyboard": {
786
+ "homepage": [
787
+ "A place forclear reading.",
788
+ "The words come first.",
789
+ "Open Table"
790
+ ],
791
+ "interior": [
792
+ "Field Notes",
793
+ "Collect the material",
794
+ "Find the hierarchy",
795
+ "Test the reading",
796
+ "Open Table"
797
+ ],
798
+ "mobile": "Content order is preserved; side navigation and supporting columns reflow into the document. No essential hover interactions."
799
+ },
800
+ "designDecisions": "An editorial opening explains the reading practice, then pairs a feature diagram with a quiet publication index.",
801
+ "lessonIds": [
802
+ "cmp-type-roles",
803
+ "cmp-page-rhythm",
804
+ "cmp-semantic-grouping"
805
+ ],
806
+ "referenceIds": [
807
+ "pangram-pangram",
808
+ "gov-uk"
809
+ ],
810
+ "sourcePath": "mara-reading-room",
811
+ "homepage": "/",
812
+ "interior": "/detail",
813
+ "status": "compiled, automated checks passed, assistant visual review recorded; human preference pending",
814
+ "humanPreference": null,
815
+ "renderEvidence": [
816
+ {
817
+ "route": "/",
818
+ "viewport": {
819
+ "width": 1440,
820
+ "height": 900
821
+ },
822
+ "capturedAt": "2026-10-05T15:53:22.106Z",
823
+ "browser": "153.0.8010.12",
824
+ "preview": {
825
+ "path": "previews/mara-reading-room-home-1440.png",
826
+ "sha256": "10becbd3cd86191681ab7b339d21f2294a5896c8d4f9b33f8e0b230e6335360e"
827
+ },
828
+ "compiledHash": "d6e61b142238664635d0fb9abc3330a9b24a7fa97ad957cda98f73c2d6a7397b",
829
+ "automated": {
830
+ "errors": [],
831
+ "axeViolations": [],
832
+ "metrics": {
833
+ "overflow": false,
834
+ "h1": 1,
835
+ "brokenImages": [],
836
+ "internalLinks": [
837
+ "/",
838
+ "/detail",
839
+ "/detail",
840
+ "/detail#reading"
841
+ ]
842
+ },
843
+ "firstFocus": {
844
+ "tag": "A",
845
+ "text": "Skip to content",
846
+ "outline": "solid",
847
+ "width": "2px"
848
+ }
849
+ },
850
+ "visualReview": {
851
+ "assessor": "assistant",
852
+ "reviewedAt": "2026-10-05T16:08:16.891949+00:00",
853
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
854
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
855
+ }
856
+ },
857
+ {
858
+ "route": "/",
859
+ "viewport": {
860
+ "width": 390,
861
+ "height": 844
862
+ },
863
+ "capturedAt": "2026-10-05T15:53:23.136Z",
864
+ "browser": "153.0.8010.12",
865
+ "preview": {
866
+ "path": "previews/mara-reading-room-home-390.png",
867
+ "sha256": "628943d761b44a0ff9ea6f67438644088dd4aea25ab3f94d682253dd5b282374"
868
+ },
869
+ "compiledHash": "d6e61b142238664635d0fb9abc3330a9b24a7fa97ad957cda98f73c2d6a7397b",
870
+ "automated": {
871
+ "errors": [],
872
+ "axeViolations": [],
873
+ "metrics": {
874
+ "overflow": false,
875
+ "h1": 1,
876
+ "brokenImages": [],
877
+ "internalLinks": [
878
+ "/",
879
+ "/detail",
880
+ "/detail",
881
+ "/detail#reading"
882
+ ]
883
+ },
884
+ "firstFocus": {
885
+ "tag": "A",
886
+ "text": "Skip to content",
887
+ "outline": "solid",
888
+ "width": "2px"
889
+ }
890
+ },
891
+ "visualReview": {
892
+ "assessor": "assistant",
893
+ "reviewedAt": "2026-10-05T16:08:16.891949+00:00",
894
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
895
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
896
+ }
897
+ },
898
+ {
899
+ "route": "/detail",
900
+ "viewport": {
901
+ "width": 1440,
902
+ "height": 900
903
+ },
904
+ "capturedAt": "2026-10-05T15:53:24.219Z",
905
+ "browser": "153.0.8010.12",
906
+ "preview": {
907
+ "path": "previews/mara-reading-room-interior-1440.png",
908
+ "sha256": "4c0e6792a4ea164e2508bd5f9effb2c6f5beb296ed5c204f6dfd5fbe4205e0f3"
909
+ },
910
+ "compiledHash": "334230bc6e564fccb2ead7487b90160cc85e9c906bb42c4b2b4726ad01fdb3df",
911
+ "automated": {
912
+ "errors": [],
913
+ "axeViolations": [],
914
+ "metrics": {
915
+ "overflow": false,
916
+ "h1": 1,
917
+ "brokenImages": [],
918
+ "internalLinks": [
919
+ "/"
920
+ ]
921
+ },
922
+ "firstFocus": {
923
+ "tag": "A",
924
+ "text": "Skip to content",
925
+ "outline": "solid",
926
+ "width": "2px"
927
+ }
928
+ },
929
+ "visualReview": {
930
+ "assessor": "assistant",
931
+ "reviewedAt": "2026-10-05T16:08:16.891949+00:00",
932
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
933
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
934
+ }
935
+ },
936
+ {
937
+ "route": "/detail",
938
+ "viewport": {
939
+ "width": 390,
940
+ "height": 844
941
+ },
942
+ "capturedAt": "2026-10-05T15:53:25.285Z",
943
+ "browser": "153.0.8010.12",
944
+ "preview": {
945
+ "path": "previews/mara-reading-room-interior-390.png",
946
+ "sha256": "3ba40e8377097ea807292773529bc01ef6415f04367eaec62c10fbf711739ae7"
947
+ },
948
+ "compiledHash": "334230bc6e564fccb2ead7487b90160cc85e9c906bb42c4b2b4726ad01fdb3df",
949
+ "automated": {
950
+ "errors": [],
951
+ "axeViolations": [],
952
+ "metrics": {
953
+ "overflow": false,
954
+ "h1": 1,
955
+ "brokenImages": [],
956
+ "internalLinks": [
957
+ "/"
958
+ ]
959
+ },
960
+ "firstFocus": {
961
+ "tag": "A",
962
+ "text": "Skip to content",
963
+ "outline": "solid",
964
+ "width": "2px"
965
+ }
966
+ },
967
+ "visualReview": {
968
+ "assessor": "assistant",
969
+ "reviewedAt": "2026-10-05T16:08:16.891949+00:00",
970
+ "scope": "desktop/mobile full-page contact-sheet inspection; text hierarchy, reading order, overflow and matched-pair distinction",
971
+ "assessment": "Clear organization and readable narrow layout; no visual collision observed. Functional checks are automated, human preference is pending."
972
+ }
973
+ }
974
+ ]
975
+ },
976
+ {
977
+ "id": "fen-repair",
978
+ "revision": 1,
979
+ "title": "Fen Repair / documentary record",
980
+ "primaryFamily": "documentary",
981
+ "assetMinimum": "multiple-images",
982
+ "fitSignals": [
983
+ "real-copy",
984
+ "type-content",
985
+ "action",
986
+ "approved-image",
987
+ "multiple-images",
988
+ "proof",
989
+ "professional-service",
990
+ "process"
991
+ ],
992
+ "visitorTasks": [
993
+ "inspect-work",
994
+ "understand-process"
995
+ ],
996
+ "organizingIdea": "Lead with related work and finished-area views; the interior turns them into a documented process.",
997
+ "brief": {
998
+ "fictional": true,
999
+ "facts": {
1000
+ "name": "Fen Repair",
1001
+ "offer": "Slate roof repairs for small buildings",
1002
+ "project": "A teaching repair sequence",
1003
+ "scope": [
1004
+ "Inspect the damaged area",
1005
+ "Agree the repair scope",
1006
+ "Replace affected slates",
1007
+ "Document the completed area"
1008
+ ],
1009
+ "contact": "fen@example.test",
1010
+ "restriction": "Synthetic teaching images; no actual customer work or performance claims"
1011
+ },
1012
+ "factsHash": "95b5b04b8b53b73b50d3047c653fbc92ce40955aeab4ad6b5a345c0e4095c23f",
1013
+ "mediaHash": "7ecd23d3447a10474807e823bfd0a329f017f8ca7fe14e8d6a0e5fe3cb76bf7f"
1014
+ },
1015
+ "provenance": {
1016
+ "content": "Original fictional Vitris teaching brief and copy; no customer claims.",
1017
+ "media": "Existing original Vitris synthetic teaching roof images, with source provenance copied; never actual customer proof.",
1018
+ "rights": "Original Vitris teaching material; factual adaptation required for customer use."
1019
+ },
1020
+ "storyboard": {
1021
+ "homepage": [
1022
+ "work/finished relationship",
1023
+ "repair scope",
1024
+ "conversation preparation"
1025
+ ],
1026
+ "interior": [
1027
+ "scope title",
1028
+ "inspection/photo/process",
1029
+ "completed area",
1030
+ "handover"
1031
+ ],
1032
+ "mobile": "At narrow width, the repair-stage sequence stays intact while the photo mosaic and offset handover become document flow."
1033
+ },
1034
+ "designDecisions": "Lead with related work and finished-area views; the interior turns them into a documented process.",
1035
+ "lessonIds": [
1036
+ "cmp-image-sequence",
1037
+ "cmp-process",
1038
+ "cmp-proof-adjacency"
1039
+ ],
1040
+ "referenceIds": [
1041
+ "studio-gerosa",
1042
+ "baggu"
1043
+ ],
1044
+ "sourcePath": "fen-repair",
1045
+ "homepage": "/",
1046
+ "interior": "/detail",
1047
+ "status": "compiled and automated/assistant visually reviewed; human preference pending",
1048
+ "humanPreference": null,
1049
+ "renderEvidence": [
1050
+ {
1051
+ "route": "/",
1052
+ "viewport": {
1053
+ "width": 1440,
1054
+ "height": 900
1055
+ },
1056
+ "capturedAt": "2026-10-05T16:48:35.472Z",
1057
+ "browser": "153.0.8010.12",
1058
+ "preview": {
1059
+ "path": "previews/fen-repair-home-1440.png",
1060
+ "sha256": "9ae1f1bb988411134b0a590711b538b3c590853c8d9bb6c5ee69f512e0d1875f"
1061
+ },
1062
+ "compiledHash": "508d55108be5e945500bf7fb885dada6b9f948d11bbf8889b2d5521d14f3d656",
1063
+ "automated": {
1064
+ "errors": [],
1065
+ "axeViolations": [],
1066
+ "metrics": {
1067
+ "overflow": false,
1068
+ "h1": 1,
1069
+ "brokenImages": [],
1070
+ "internalLinks": [
1071
+ "/",
1072
+ "/detail",
1073
+ "/detail"
1074
+ ]
1075
+ },
1076
+ "firstFocus": {
1077
+ "tag": "A",
1078
+ "text": "Skip to content",
1079
+ "outline": "solid",
1080
+ "width": "2px"
1081
+ },
1082
+ "disclosures": []
1083
+ },
1084
+ "visualReview": {
1085
+ "assessor": "assistant",
1086
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1087
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1088
+ "assessment": "Full-page desktop/mobile contact sheets inspected. Work/finished photo relationship and sequential mobile process are readable. Repaired mobile header spacing re-inspected at full resolution. Synthetic images remain explicitly teaching-only."
1089
+ }
1090
+ },
1091
+ {
1092
+ "route": "/",
1093
+ "viewport": {
1094
+ "width": 390,
1095
+ "height": 844
1096
+ },
1097
+ "capturedAt": "2026-10-05T16:48:36.565Z",
1098
+ "browser": "153.0.8010.12",
1099
+ "preview": {
1100
+ "path": "previews/fen-repair-home-390.png",
1101
+ "sha256": "a180d9ec0eb67df2d1d5f9d852753f6d50f8dd6ebfda80aa41376ac15adbcabb"
1102
+ },
1103
+ "compiledHash": "508d55108be5e945500bf7fb885dada6b9f948d11bbf8889b2d5521d14f3d656",
1104
+ "automated": {
1105
+ "errors": [],
1106
+ "axeViolations": [],
1107
+ "metrics": {
1108
+ "overflow": false,
1109
+ "h1": 1,
1110
+ "brokenImages": [],
1111
+ "internalLinks": [
1112
+ "/",
1113
+ "/detail",
1114
+ "/detail"
1115
+ ]
1116
+ },
1117
+ "firstFocus": {
1118
+ "tag": "A",
1119
+ "text": "Skip to content",
1120
+ "outline": "solid",
1121
+ "width": "2px"
1122
+ },
1123
+ "disclosures": []
1124
+ },
1125
+ "visualReview": {
1126
+ "assessor": "assistant",
1127
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1128
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1129
+ "assessment": "Full-page desktop/mobile contact sheets inspected. Work/finished photo relationship and sequential mobile process are readable. Repaired mobile header spacing re-inspected at full resolution. Synthetic images remain explicitly teaching-only."
1130
+ }
1131
+ },
1132
+ {
1133
+ "route": "/detail",
1134
+ "viewport": {
1135
+ "width": 1440,
1136
+ "height": 900
1137
+ },
1138
+ "capturedAt": "2026-10-05T16:48:37.916Z",
1139
+ "browser": "153.0.8010.12",
1140
+ "preview": {
1141
+ "path": "previews/fen-repair-interior-1440.png",
1142
+ "sha256": "ae39e22c046db9eebf5ec67172777ba64aaefd26d002ca88bd256dc3ade86e31"
1143
+ },
1144
+ "compiledHash": "9101751ea03be6de05b1fb555d0f9fc50af0deeb9fd7d263767889dfe5b5667f",
1145
+ "automated": {
1146
+ "errors": [],
1147
+ "axeViolations": [],
1148
+ "metrics": {
1149
+ "overflow": false,
1150
+ "h1": 1,
1151
+ "brokenImages": [],
1152
+ "internalLinks": [
1153
+ "/"
1154
+ ]
1155
+ },
1156
+ "firstFocus": {
1157
+ "tag": "A",
1158
+ "text": "Skip to content",
1159
+ "outline": "solid",
1160
+ "width": "2px"
1161
+ },
1162
+ "disclosures": []
1163
+ },
1164
+ "visualReview": {
1165
+ "assessor": "assistant",
1166
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1167
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1168
+ "assessment": "Full-page desktop/mobile contact sheets inspected. Work/finished photo relationship and sequential mobile process are readable. Repaired mobile header spacing re-inspected at full resolution. Synthetic images remain explicitly teaching-only."
1169
+ }
1170
+ },
1171
+ {
1172
+ "route": "/detail",
1173
+ "viewport": {
1174
+ "width": 390,
1175
+ "height": 844
1176
+ },
1177
+ "capturedAt": "2026-10-05T16:48:39.017Z",
1178
+ "browser": "153.0.8010.12",
1179
+ "preview": {
1180
+ "path": "previews/fen-repair-interior-390.png",
1181
+ "sha256": "c397fde8afb5e009104f3f324c7111454f5464ada9216c49d9947b52e50b7412"
1182
+ },
1183
+ "compiledHash": "9101751ea03be6de05b1fb555d0f9fc50af0deeb9fd7d263767889dfe5b5667f",
1184
+ "automated": {
1185
+ "errors": [],
1186
+ "axeViolations": [],
1187
+ "metrics": {
1188
+ "overflow": false,
1189
+ "h1": 1,
1190
+ "brokenImages": [],
1191
+ "internalLinks": [
1192
+ "/"
1193
+ ]
1194
+ },
1195
+ "firstFocus": {
1196
+ "tag": "A",
1197
+ "text": "Skip to content",
1198
+ "outline": "solid",
1199
+ "width": "2px"
1200
+ },
1201
+ "disclosures": []
1202
+ },
1203
+ "visualReview": {
1204
+ "assessor": "assistant",
1205
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1206
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1207
+ "assessment": "Full-page desktop/mobile contact sheets inspected. Work/finished photo relationship and sequential mobile process are readable. Repaired mobile header spacing re-inspected at full resolution. Synthetic images remain explicitly teaching-only."
1208
+ }
1209
+ }
1210
+ ]
1211
+ },
1212
+ {
1213
+ "id": "rivet-components",
1214
+ "revision": 1,
1215
+ "title": "Rivet / specification system",
1216
+ "primaryFamily": "industrial",
1217
+ "assetMinimum": "none",
1218
+ "fitSignals": [
1219
+ "real-copy",
1220
+ "type-content",
1221
+ "action",
1222
+ "sparse-media",
1223
+ "collection",
1224
+ "comparison"
1225
+ ],
1226
+ "visitorTasks": [
1227
+ "compare-options",
1228
+ "inspect-specification"
1229
+ ],
1230
+ "organizingIdea": "Make the dimensioned object and its specification the opening; explanations follow the selection task.",
1231
+ "brief": {
1232
+ "fictional": true,
1233
+ "facts": {
1234
+ "name": "Rivet Components",
1235
+ "offer": "Invented workshop support brackets",
1236
+ "series": "R-120",
1237
+ "material": "Aluminium",
1238
+ "dimensions": "120 × 60 mm",
1239
+ "mounting": "Two 6 mm fixing holes",
1240
+ "restriction": "Teaching specification, not a manufactured or certified product",
1241
+ "contact": "rivet@example.test"
1242
+ },
1243
+ "factsHash": "73efccc366d34b7a78dcdd4076321f2a39e7687d1bdcb85c760f4f0aa24105f0",
1244
+ "mediaHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
1245
+ },
1246
+ "provenance": {
1247
+ "content": "Original fictional Vitris teaching brief and copy; no customer claims.",
1248
+ "media": "Original inline SVG diagrams and/or text; no external imagery or type assets.",
1249
+ "rights": "Original Vitris teaching material; factual adaptation required for customer use."
1250
+ },
1251
+ "storyboard": {
1252
+ "homepage": [
1253
+ "series identification",
1254
+ "dimension diagram",
1255
+ "facts table",
1256
+ "selection explanation"
1257
+ ],
1258
+ "interior": [
1259
+ "spec identity",
1260
+ "drawing/ledger",
1261
+ "application boundary",
1262
+ "disclosure/inquiry"
1263
+ ],
1264
+ "mobile": "The drawing scales within its frame; specification stays a real table. Side identification stacks before drawing and application."
1265
+ },
1266
+ "designDecisions": "Make the dimensioned object and its specification the opening; explanations follow the selection task.",
1267
+ "lessonIds": [
1268
+ "cmp-comparison",
1269
+ "cmp-interactive-explanation",
1270
+ "cmp-evidence-form"
1271
+ ],
1272
+ "referenceIds": [],
1273
+ "sourcePath": "rivet-components",
1274
+ "homepage": "/",
1275
+ "interior": "/detail",
1276
+ "status": "compiled and automated/assistant visually reviewed; human preference pending",
1277
+ "humanPreference": null,
1278
+ "renderEvidence": [
1279
+ {
1280
+ "route": "/",
1281
+ "viewport": {
1282
+ "width": 1440,
1283
+ "height": 900
1284
+ },
1285
+ "capturedAt": "2026-10-05T16:48:40.156Z",
1286
+ "browser": "153.0.8010.12",
1287
+ "preview": {
1288
+ "path": "previews/rivet-components-home-1440.png",
1289
+ "sha256": "2cf539d22d7e078ed27542da783c00a854fb35bd076f967513de0df1cbf058fc"
1290
+ },
1291
+ "compiledHash": "dec99b25b09f62a453a04a1209d4b967f9aebf5c1f0e7797a211d6cb3d7f92e9",
1292
+ "automated": {
1293
+ "errors": [],
1294
+ "axeViolations": [],
1295
+ "metrics": {
1296
+ "overflow": false,
1297
+ "h1": 1,
1298
+ "brokenImages": [],
1299
+ "internalLinks": [
1300
+ "/",
1301
+ "/detail",
1302
+ "/detail"
1303
+ ]
1304
+ },
1305
+ "firstFocus": {
1306
+ "tag": "A",
1307
+ "text": "Skip to content",
1308
+ "outline": "solid",
1309
+ "width": "2px"
1310
+ },
1311
+ "disclosures": []
1312
+ },
1313
+ "visualReview": {
1314
+ "assessor": "assistant",
1315
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1316
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1317
+ "assessment": "Desktop/mobile home and interior inspected. Dimension diagram and specification ledger preserve order. Repaired second fixing hole re-inspected on desktop home and mobile interior. Diagram is fictional and supplies no manufacturing assurance."
1318
+ }
1319
+ },
1320
+ {
1321
+ "route": "/",
1322
+ "viewport": {
1323
+ "width": 390,
1324
+ "height": 844
1325
+ },
1326
+ "capturedAt": "2026-10-05T16:48:41.185Z",
1327
+ "browser": "153.0.8010.12",
1328
+ "preview": {
1329
+ "path": "previews/rivet-components-home-390.png",
1330
+ "sha256": "24d2ac431d17ccda5a4fd46357bd7c45537e8a4cb35cf21f629006fed8909871"
1331
+ },
1332
+ "compiledHash": "dec99b25b09f62a453a04a1209d4b967f9aebf5c1f0e7797a211d6cb3d7f92e9",
1333
+ "automated": {
1334
+ "errors": [],
1335
+ "axeViolations": [],
1336
+ "metrics": {
1337
+ "overflow": false,
1338
+ "h1": 1,
1339
+ "brokenImages": [],
1340
+ "internalLinks": [
1341
+ "/",
1342
+ "/detail",
1343
+ "/detail"
1344
+ ]
1345
+ },
1346
+ "firstFocus": {
1347
+ "tag": "A",
1348
+ "text": "Skip to content",
1349
+ "outline": "solid",
1350
+ "width": "2px"
1351
+ },
1352
+ "disclosures": []
1353
+ },
1354
+ "visualReview": {
1355
+ "assessor": "assistant",
1356
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1357
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1358
+ "assessment": "Desktop/mobile home and interior inspected. Dimension diagram and specification ledger preserve order. Repaired second fixing hole re-inspected on desktop home and mobile interior. Diagram is fictional and supplies no manufacturing assurance."
1359
+ }
1360
+ },
1361
+ {
1362
+ "route": "/detail",
1363
+ "viewport": {
1364
+ "width": 1440,
1365
+ "height": 900
1366
+ },
1367
+ "capturedAt": "2026-10-05T16:48:42.307Z",
1368
+ "browser": "153.0.8010.12",
1369
+ "preview": {
1370
+ "path": "previews/rivet-components-interior-1440.png",
1371
+ "sha256": "244c0e17329969255367915592219ec220e6983d36467645e7f488d20e17a779"
1372
+ },
1373
+ "compiledHash": "e47ceb13b9ea81fb1ec044fcf641761912addeee09ab1566b430a882f2f15fc3",
1374
+ "automated": {
1375
+ "errors": [],
1376
+ "axeViolations": [],
1377
+ "metrics": {
1378
+ "overflow": false,
1379
+ "h1": 1,
1380
+ "brokenImages": [],
1381
+ "internalLinks": [
1382
+ "/"
1383
+ ]
1384
+ },
1385
+ "firstFocus": {
1386
+ "tag": "A",
1387
+ "text": "Ask about the specification →",
1388
+ "outline": "solid",
1389
+ "width": "3px"
1390
+ },
1391
+ "disclosures": [
1392
+ {
1393
+ "label": "What this teaching specification does not establish",
1394
+ "keyboardToggle": true,
1395
+ "focusVisible": true
1396
+ }
1397
+ ]
1398
+ },
1399
+ "visualReview": {
1400
+ "assessor": "assistant",
1401
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1402
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1403
+ "assessment": "Desktop/mobile home and interior inspected. Dimension diagram and specification ledger preserve order. Repaired second fixing hole re-inspected on desktop home and mobile interior. Diagram is fictional and supplies no manufacturing assurance."
1404
+ }
1405
+ },
1406
+ {
1407
+ "route": "/detail",
1408
+ "viewport": {
1409
+ "width": 390,
1410
+ "height": 844
1411
+ },
1412
+ "capturedAt": "2026-10-05T16:48:43.401Z",
1413
+ "browser": "153.0.8010.12",
1414
+ "preview": {
1415
+ "path": "previews/rivet-components-interior-390.png",
1416
+ "sha256": "7f56af78d0673218eebcb823d170ad66d375f14d8ef31739c7394e0336997141"
1417
+ },
1418
+ "compiledHash": "e47ceb13b9ea81fb1ec044fcf641761912addeee09ab1566b430a882f2f15fc3",
1419
+ "automated": {
1420
+ "errors": [],
1421
+ "axeViolations": [],
1422
+ "metrics": {
1423
+ "overflow": false,
1424
+ "h1": 1,
1425
+ "brokenImages": [],
1426
+ "internalLinks": [
1427
+ "/"
1428
+ ]
1429
+ },
1430
+ "firstFocus": {
1431
+ "tag": "A",
1432
+ "text": "Ask about the specification →",
1433
+ "outline": "solid",
1434
+ "width": "3px"
1435
+ },
1436
+ "disclosures": [
1437
+ {
1438
+ "label": "What this teaching specification does not establish",
1439
+ "keyboardToggle": true,
1440
+ "focusVisible": true
1441
+ }
1442
+ ]
1443
+ },
1444
+ "visualReview": {
1445
+ "assessor": "assistant",
1446
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1447
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1448
+ "assessment": "Desktop/mobile home and interior inspected. Dimension diagram and specification ledger preserve order. Repaired second fixing hole re-inspected on desktop home and mobile interior. Diagram is fictional and supplies no manufacturing assurance."
1449
+ }
1450
+ }
1451
+ ]
1452
+ },
1453
+ {
1454
+ "id": "relay-workflow",
1455
+ "revision": 1,
1456
+ "title": "Relay / workflow demonstration",
1457
+ "primaryFamily": "technical",
1458
+ "assetMinimum": "none",
1459
+ "fitSignals": [
1460
+ "real-copy",
1461
+ "type-content",
1462
+ "action",
1463
+ "sparse-media",
1464
+ "product-ui",
1465
+ "process"
1466
+ ],
1467
+ "visitorTasks": [
1468
+ "explore-product",
1469
+ "understand-process"
1470
+ ],
1471
+ "organizingIdea": "Lead with a concrete workflow surface, then explain its state transitions; the interior is a guided demonstration.",
1472
+ "brief": {
1473
+ "fictional": true,
1474
+ "facts": {
1475
+ "name": "Relay",
1476
+ "offer": "Fictional studio handover workflow",
1477
+ "records": [
1478
+ {
1479
+ "task": "Outline",
1480
+ "state": "Collected"
1481
+ },
1482
+ {
1483
+ "task": "Review",
1484
+ "state": "Ready"
1485
+ },
1486
+ {
1487
+ "task": "Handover",
1488
+ "state": "Next"
1489
+ }
1490
+ ],
1491
+ "process": [
1492
+ "Collect",
1493
+ "Review",
1494
+ "Handover"
1495
+ ],
1496
+ "restriction": "Static illustrative interface, no connected account or live project",
1497
+ "contact": "relay@example.test"
1498
+ },
1499
+ "factsHash": "a2f658d0d6df23ba09277f5686471e2f98587c7178ee1ff30c924dbc2eb3353b",
1500
+ "mediaHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
1501
+ },
1502
+ "provenance": {
1503
+ "content": "Original fictional Vitris teaching brief and copy; no customer claims.",
1504
+ "media": "Original inline SVG diagrams and/or text; no external imagery or type assets.",
1505
+ "rights": "Original Vitris teaching material; factual adaptation required for customer use."
1506
+ },
1507
+ "storyboard": {
1508
+ "homepage": [
1509
+ "product proposition",
1510
+ "illustrative workspace",
1511
+ "state explanation",
1512
+ "boundary"
1513
+ ],
1514
+ "interior": [
1515
+ "guided disclosures",
1516
+ "workspace recap",
1517
+ "application notes"
1518
+ ],
1519
+ "mobile": "The workspace sidebar becomes a context strip above the table; guided state explanations stack. Native disclosure controls remain keyboard usable."
1520
+ },
1521
+ "designDecisions": "Lead with a concrete workflow surface, then explain its state transitions; the interior is a guided demonstration.",
1522
+ "lessonIds": [
1523
+ "cmp-evidence-form",
1524
+ "cmp-interactive-explanation",
1525
+ "cmp-process"
1526
+ ],
1527
+ "referenceIds": [
1528
+ "linear"
1529
+ ],
1530
+ "sourcePath": "relay-workflow",
1531
+ "homepage": "/",
1532
+ "interior": "/detail",
1533
+ "status": "compiled and automated/assistant visually reviewed; human preference pending",
1534
+ "humanPreference": null,
1535
+ "renderEvidence": [
1536
+ {
1537
+ "route": "/",
1538
+ "viewport": {
1539
+ "width": 1440,
1540
+ "height": 900
1541
+ },
1542
+ "capturedAt": "2026-10-05T16:48:44.572Z",
1543
+ "browser": "153.0.8010.12",
1544
+ "preview": {
1545
+ "path": "previews/relay-workflow-home-1440.png",
1546
+ "sha256": "9f07b4e37cb8a0a73093bbe921859efc1b3248eac168d0f96e8b346bcd037e23"
1547
+ },
1548
+ "compiledHash": "0c30ccd3eebe5bba826196c012fc59f8b4adf9e1054288c206231109f5cea80a",
1549
+ "automated": {
1550
+ "errors": [],
1551
+ "axeViolations": [],
1552
+ "metrics": {
1553
+ "overflow": false,
1554
+ "h1": 1,
1555
+ "brokenImages": [],
1556
+ "internalLinks": [
1557
+ "/",
1558
+ "/detail",
1559
+ "/detail",
1560
+ "/detail"
1561
+ ]
1562
+ },
1563
+ "firstFocus": {
1564
+ "tag": "A",
1565
+ "text": "Skip to content",
1566
+ "outline": "solid",
1567
+ "width": "2px"
1568
+ },
1569
+ "disclosures": []
1570
+ },
1571
+ "visualReview": {
1572
+ "assessor": "assistant",
1573
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1574
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1575
+ "assessment": "Desktop/mobile home and interior contact sheets inspected. Workspace context precedes state table on narrow layouts; disclosures precede recap. Static demonstration boundary visible. Native disclosure keyboard activation and visible focus passed automated checks."
1576
+ }
1577
+ },
1578
+ {
1579
+ "route": "/",
1580
+ "viewport": {
1581
+ "width": 390,
1582
+ "height": 844
1583
+ },
1584
+ "capturedAt": "2026-10-05T16:48:45.618Z",
1585
+ "browser": "153.0.8010.12",
1586
+ "preview": {
1587
+ "path": "previews/relay-workflow-home-390.png",
1588
+ "sha256": "b1be668d42924fb73aba9d75a4eb98554147603533d66e539f627192188a30f4"
1589
+ },
1590
+ "compiledHash": "0c30ccd3eebe5bba826196c012fc59f8b4adf9e1054288c206231109f5cea80a",
1591
+ "automated": {
1592
+ "errors": [],
1593
+ "axeViolations": [],
1594
+ "metrics": {
1595
+ "overflow": false,
1596
+ "h1": 1,
1597
+ "brokenImages": [],
1598
+ "internalLinks": [
1599
+ "/",
1600
+ "/detail",
1601
+ "/detail",
1602
+ "/detail"
1603
+ ]
1604
+ },
1605
+ "firstFocus": {
1606
+ "tag": "A",
1607
+ "text": "Skip to content",
1608
+ "outline": "solid",
1609
+ "width": "2px"
1610
+ },
1611
+ "disclosures": []
1612
+ },
1613
+ "visualReview": {
1614
+ "assessor": "assistant",
1615
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1616
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1617
+ "assessment": "Desktop/mobile home and interior contact sheets inspected. Workspace context precedes state table on narrow layouts; disclosures precede recap. Static demonstration boundary visible. Native disclosure keyboard activation and visible focus passed automated checks."
1618
+ }
1619
+ },
1620
+ {
1621
+ "route": "/detail",
1622
+ "viewport": {
1623
+ "width": 1440,
1624
+ "height": 900
1625
+ },
1626
+ "capturedAt": "2026-10-05T16:48:46.844Z",
1627
+ "browser": "153.0.8010.12",
1628
+ "preview": {
1629
+ "path": "previews/relay-workflow-interior-1440.png",
1630
+ "sha256": "e4369f2b8ae94366e4227c44b25a5c16c5f66ccaa2d684af58c3c31a9b286f45"
1631
+ },
1632
+ "compiledHash": "ec6e79e93d0170efcb2fa375d1d31d3c3a4b733cb1791bd866dc70eb66251a4f",
1633
+ "automated": {
1634
+ "errors": [],
1635
+ "axeViolations": [],
1636
+ "metrics": {
1637
+ "overflow": false,
1638
+ "h1": 1,
1639
+ "brokenImages": [],
1640
+ "internalLinks": [
1641
+ "/",
1642
+ "/detail",
1643
+ "/detail"
1644
+ ]
1645
+ },
1646
+ "firstFocus": {
1647
+ "tag": "A",
1648
+ "text": "Inspect this workflow →",
1649
+ "outline": "solid",
1650
+ "width": "3px"
1651
+ },
1652
+ "disclosures": [
1653
+ {
1654
+ "label": "01 / Collect",
1655
+ "keyboardToggle": true,
1656
+ "focusVisible": true
1657
+ },
1658
+ {
1659
+ "label": "02 / Review",
1660
+ "keyboardToggle": true,
1661
+ "focusVisible": true
1662
+ },
1663
+ {
1664
+ "label": "03 / Handover",
1665
+ "keyboardToggle": true,
1666
+ "focusVisible": true
1667
+ }
1668
+ ]
1669
+ },
1670
+ "visualReview": {
1671
+ "assessor": "assistant",
1672
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1673
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1674
+ "assessment": "Desktop/mobile home and interior contact sheets inspected. Workspace context precedes state table on narrow layouts; disclosures precede recap. Static demonstration boundary visible. Native disclosure keyboard activation and visible focus passed automated checks."
1675
+ }
1676
+ },
1677
+ {
1678
+ "route": "/detail",
1679
+ "viewport": {
1680
+ "width": 390,
1681
+ "height": 844
1682
+ },
1683
+ "capturedAt": "2026-10-05T16:48:48.002Z",
1684
+ "browser": "153.0.8010.12",
1685
+ "preview": {
1686
+ "path": "previews/relay-workflow-interior-390.png",
1687
+ "sha256": "3d69422afda4d559f60353dff28be99b31e3d83862cf37847a8cd72d27a2eb6e"
1688
+ },
1689
+ "compiledHash": "ec6e79e93d0170efcb2fa375d1d31d3c3a4b733cb1791bd866dc70eb66251a4f",
1690
+ "automated": {
1691
+ "errors": [],
1692
+ "axeViolations": [],
1693
+ "metrics": {
1694
+ "overflow": false,
1695
+ "h1": 1,
1696
+ "brokenImages": [],
1697
+ "internalLinks": [
1698
+ "/",
1699
+ "/detail",
1700
+ "/detail"
1701
+ ]
1702
+ },
1703
+ "firstFocus": {
1704
+ "tag": "A",
1705
+ "text": "Inspect this workflow →",
1706
+ "outline": "solid",
1707
+ "width": "3px"
1708
+ },
1709
+ "disclosures": [
1710
+ {
1711
+ "label": "01 / Collect",
1712
+ "keyboardToggle": true,
1713
+ "focusVisible": true
1714
+ },
1715
+ {
1716
+ "label": "02 / Review",
1717
+ "keyboardToggle": true,
1718
+ "focusVisible": true
1719
+ },
1720
+ {
1721
+ "label": "03 / Handover",
1722
+ "keyboardToggle": true,
1723
+ "focusVisible": true
1724
+ }
1725
+ ]
1726
+ },
1727
+ "visualReview": {
1728
+ "assessor": "assistant",
1729
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1730
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1731
+ "assessment": "Desktop/mobile home and interior contact sheets inspected. Workspace context precedes state table on narrow layouts; disclosures precede recap. Static demonstration boundary visible. Native disclosure keyboard activation and visible focus passed automated checks."
1732
+ }
1733
+ }
1734
+ ]
1735
+ },
1736
+ {
1737
+ "id": "margin-journal",
1738
+ "revision": 1,
1739
+ "title": "Margin / annotated reading",
1740
+ "primaryFamily": "editorial",
1741
+ "assetMinimum": "none",
1742
+ "fitSignals": [
1743
+ "real-copy",
1744
+ "type-content",
1745
+ "action",
1746
+ "sparse-media",
1747
+ "collection"
1748
+ ],
1749
+ "visitorTasks": [
1750
+ "read-deeply",
1751
+ "find-article"
1752
+ ],
1753
+ "organizingIdea": "An issue contents list introduces the publication; interior marginal notes support a sustained reading column.",
1754
+ "brief": {
1755
+ "fictional": true,
1756
+ "facts": {
1757
+ "name": "Margin Journal",
1758
+ "issue": "01",
1759
+ "theme": "Reading the ordinary",
1760
+ "essays": [
1761
+ "A room for a paragraph",
1762
+ "What a caption holds",
1763
+ "The pause between pages"
1764
+ ],
1765
+ "restriction": "Fictional publication with original teaching essays; no attributed external author",
1766
+ "contact": "margin@example.test"
1767
+ },
1768
+ "factsHash": "8b7b043dc169db75778163a813e38d726dc43dc7a0f3edcdd70d8703893081f4",
1769
+ "mediaHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
1770
+ },
1771
+ "provenance": {
1772
+ "content": "Original fictional Vitris teaching brief and copy; no customer claims.",
1773
+ "media": "Original inline SVG diagrams and/or text; no external imagery or type assets.",
1774
+ "rights": "Original Vitris teaching material; factual adaptation required for customer use."
1775
+ },
1776
+ "storyboard": {
1777
+ "homepage": [
1778
+ "issue identity",
1779
+ "editor note",
1780
+ "contents",
1781
+ "colophon"
1782
+ ],
1783
+ "interior": [
1784
+ "essay title",
1785
+ "margin note and reading column",
1786
+ "caption/reflection sections",
1787
+ "contents return"
1788
+ ],
1789
+ "mobile": "Issue columns become editor introduction then contents; the margin note precedes the reading passage. Article measure remains readable without decorative imagery."
1790
+ },
1791
+ "designDecisions": "An issue contents list introduces the publication; interior marginal notes support a sustained reading column.",
1792
+ "lessonIds": [
1793
+ "cmp-type-roles",
1794
+ "cmp-text-shape",
1795
+ "cmp-page-rhythm",
1796
+ "cmp-semantic-grouping"
1797
+ ],
1798
+ "referenceIds": [
1799
+ "avery-review",
1800
+ "good-and-common"
1801
+ ],
1802
+ "sourcePath": "margin-journal",
1803
+ "homepage": "/",
1804
+ "interior": "/detail",
1805
+ "status": "compiled and automated/assistant visually reviewed; human preference pending",
1806
+ "humanPreference": null,
1807
+ "renderEvidence": [
1808
+ {
1809
+ "route": "/",
1810
+ "viewport": {
1811
+ "width": 1440,
1812
+ "height": 900
1813
+ },
1814
+ "capturedAt": "2026-10-05T16:48:49.124Z",
1815
+ "browser": "153.0.8010.12",
1816
+ "preview": {
1817
+ "path": "previews/margin-journal-home-1440.png",
1818
+ "sha256": "d67228352002fb6f38830e9cd2652b48de11088593a095835f08b8f404861683"
1819
+ },
1820
+ "compiledHash": "945a0c92cef7279b20240e2695e75ee61a100a85b990a448bd4315fdbb159054",
1821
+ "automated": {
1822
+ "errors": [],
1823
+ "axeViolations": [],
1824
+ "metrics": {
1825
+ "overflow": false,
1826
+ "h1": 1,
1827
+ "brokenImages": [],
1828
+ "internalLinks": [
1829
+ "/",
1830
+ "/detail",
1831
+ "/detail",
1832
+ "/detail#caption",
1833
+ "/detail#pause"
1834
+ ]
1835
+ },
1836
+ "firstFocus": {
1837
+ "tag": "A",
1838
+ "text": "Skip to content",
1839
+ "outline": "solid",
1840
+ "width": "2px"
1841
+ },
1842
+ "disclosures": []
1843
+ },
1844
+ "visualReview": {
1845
+ "assessor": "assistant",
1846
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1847
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1848
+ "assessment": "Desktop/mobile home and interior contact sheets inspected. Issue contents replace promotional sections; marginal note precedes narrow reading column. Title/body measures, section anchors and return-to-contents are clear."
1849
+ }
1850
+ },
1851
+ {
1852
+ "route": "/",
1853
+ "viewport": {
1854
+ "width": 390,
1855
+ "height": 844
1856
+ },
1857
+ "capturedAt": "2026-10-05T16:48:50.137Z",
1858
+ "browser": "153.0.8010.12",
1859
+ "preview": {
1860
+ "path": "previews/margin-journal-home-390.png",
1861
+ "sha256": "aa4e38f35f14cf3aa1ec143614d8ee7d47db20aafa9fc0bf1664891464500d9e"
1862
+ },
1863
+ "compiledHash": "945a0c92cef7279b20240e2695e75ee61a100a85b990a448bd4315fdbb159054",
1864
+ "automated": {
1865
+ "errors": [],
1866
+ "axeViolations": [],
1867
+ "metrics": {
1868
+ "overflow": false,
1869
+ "h1": 1,
1870
+ "brokenImages": [],
1871
+ "internalLinks": [
1872
+ "/",
1873
+ "/detail",
1874
+ "/detail",
1875
+ "/detail#caption",
1876
+ "/detail#pause"
1877
+ ]
1878
+ },
1879
+ "firstFocus": {
1880
+ "tag": "A",
1881
+ "text": "Skip to content",
1882
+ "outline": "solid",
1883
+ "width": "2px"
1884
+ },
1885
+ "disclosures": []
1886
+ },
1887
+ "visualReview": {
1888
+ "assessor": "assistant",
1889
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1890
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1891
+ "assessment": "Desktop/mobile home and interior contact sheets inspected. Issue contents replace promotional sections; marginal note precedes narrow reading column. Title/body measures, section anchors and return-to-contents are clear."
1892
+ }
1893
+ },
1894
+ {
1895
+ "route": "/detail",
1896
+ "viewport": {
1897
+ "width": 1440,
1898
+ "height": 900
1899
+ },
1900
+ "capturedAt": "2026-10-05T16:48:51.231Z",
1901
+ "browser": "153.0.8010.12",
1902
+ "preview": {
1903
+ "path": "previews/margin-journal-interior-1440.png",
1904
+ "sha256": "72d05587c1aa8f3f102aac723c6e040c314fa8ebd31446063d7331aa5a8bd44e"
1905
+ },
1906
+ "compiledHash": "47f29c68faf9a4d6acb58e75aed07f350e83f627f62dbc443c26d8f4a86b6072",
1907
+ "automated": {
1908
+ "errors": [],
1909
+ "axeViolations": [],
1910
+ "metrics": {
1911
+ "overflow": false,
1912
+ "h1": 1,
1913
+ "brokenImages": [],
1914
+ "internalLinks": [
1915
+ "/",
1916
+ "/",
1917
+ "/"
1918
+ ]
1919
+ },
1920
+ "firstFocus": {
1921
+ "tag": "A",
1922
+ "text": "Skip to content",
1923
+ "outline": "solid",
1924
+ "width": "2px"
1925
+ },
1926
+ "disclosures": []
1927
+ },
1928
+ "visualReview": {
1929
+ "assessor": "assistant",
1930
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1931
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1932
+ "assessment": "Desktop/mobile home and interior contact sheets inspected. Issue contents replace promotional sections; marginal note precedes narrow reading column. Title/body measures, section anchors and return-to-contents are clear."
1933
+ }
1934
+ },
1935
+ {
1936
+ "route": "/detail",
1937
+ "viewport": {
1938
+ "width": 390,
1939
+ "height": 844
1940
+ },
1941
+ "capturedAt": "2026-10-05T16:48:52.370Z",
1942
+ "browser": "153.0.8010.12",
1943
+ "preview": {
1944
+ "path": "previews/margin-journal-interior-390.png",
1945
+ "sha256": "3a82447bbc918d2473de69bdc9a1085402322ffbd285ea2b2a4b76d0557e7934"
1946
+ },
1947
+ "compiledHash": "47f29c68faf9a4d6acb58e75aed07f350e83f627f62dbc443c26d8f4a86b6072",
1948
+ "automated": {
1949
+ "errors": [],
1950
+ "axeViolations": [],
1951
+ "metrics": {
1952
+ "overflow": false,
1953
+ "h1": 1,
1954
+ "brokenImages": [],
1955
+ "internalLinks": [
1956
+ "/",
1957
+ "/",
1958
+ "/"
1959
+ ]
1960
+ },
1961
+ "firstFocus": {
1962
+ "tag": "A",
1963
+ "text": "Skip to content",
1964
+ "outline": "solid",
1965
+ "width": "2px"
1966
+ },
1967
+ "disclosures": []
1968
+ },
1969
+ "visualReview": {
1970
+ "assessor": "assistant",
1971
+ "reviewedAt": "2026-10-05T16:49:42.892180+00:00",
1972
+ "scope": "desktop/mobile homepage/interior full-page render review; batch contact-sheet comparison",
1973
+ "assessment": "Desktop/mobile home and interior contact sheets inspected. Issue contents replace promotional sections; marginal note precedes narrow reading column. Title/body measures, section anchors and return-to-contents are clear."
1974
+ }
1975
+ }
1976
+ ]
1977
+ },
1978
+ {
1979
+ "id": "hearth-plane",
1980
+ "revision": 1,
1981
+ "title": "Hearth Plane / project threshold",
1982
+ "primaryFamily": "swiss",
1983
+ "assetMinimum": "none",
1984
+ "fitSignals": [
1985
+ "professional-service",
1986
+ "inspect-work",
1987
+ "process",
1988
+ "type-content",
1989
+ "real-copy",
1990
+ "action",
1991
+ "sparse-media"
1992
+ ],
1993
+ "visitorTasks": [
1994
+ "inspect-work",
1995
+ "evaluate-service"
1996
+ ],
1997
+ "organizingIdea": "A persistent practice margin gives most of the opening to a project elevation; the interior develops constraints before design decisions.",
1998
+ "brief": {
1999
+ "fictional": true,
2000
+ "facts": {
2001
+ "name": "Hearth Plane",
2002
+ "offer": "Small-building architecture practice",
2003
+ "projects": [
2004
+ "Courtyard study",
2005
+ "Workshop canopy",
2006
+ "Reading annex"
2007
+ ],
2008
+ "projectScope": "A shaded court and a shared threshold",
2009
+ "projectStatus": "Fictional concept study",
2010
+ "contact": "hearth@example.test"
2011
+ },
2012
+ "factsHash": "1c82cc3c52aad5dd5bf400219cd38866454b5e759a9786d52c329d644e0e9148",
2013
+ "mediaHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
2014
+ },
2015
+ "provenance": {
2016
+ "content": "Original fictional Vitris teaching brief and authored copy; operational details, dimensions and offers are invented and must never populate customer inventories.",
2017
+ "media": "Original inline SVG illustrations authored for this release; no external photographs, branding or type assets.",
2018
+ "rights": "Original Vitris teaching material; factual adaptation required for customer use."
2019
+ },
2020
+ "storyboard": {
2021
+ "homepage": [
2022
+ "practice margin",
2023
+ "courtyard illustration",
2024
+ "project explanation",
2025
+ "other studies",
2026
+ "conversation preparation"
2027
+ ],
2028
+ "interior": [
2029
+ "project metadata",
2030
+ "elevation",
2031
+ "decisions",
2032
+ "return to studies"
2033
+ ],
2034
+ "mobile": "Practice margin becomes compact identity/task strip before project; project diagram stays above caption and interpretation."
2035
+ },
2036
+ "designDecisions": "A persistent practice margin gives most of the opening to a project elevation; the interior develops constraints before design decisions.",
2037
+ "lessonIds": [
2038
+ "cmp-collection-structure",
2039
+ "cmp-image-sequence",
2040
+ "cmp-responsive-recomposition"
2041
+ ],
2042
+ "referenceIds": [
2043
+ "big",
2044
+ "scullion"
2045
+ ],
2046
+ "sourcePath": "hearth-plane",
2047
+ "homepage": "/",
2048
+ "interior": "/detail",
2049
+ "status": "compiled and automated/assistant visually reviewed; human preference pending",
2050
+ "humanPreference": null,
2051
+ "renderEvidence": [
2052
+ {
2053
+ "route": "/",
2054
+ "viewport": {
2055
+ "width": 1440,
2056
+ "height": 900
2057
+ },
2058
+ "capturedAt": "2026-10-05T18:23:34.351Z",
2059
+ "browser": "153.0.8010.12",
2060
+ "preview": {
2061
+ "path": "previews/hearth-plane-home-1440.png",
2062
+ "sha256": "4596a48562e1b56b47c73a5508026c6f4dcfcac34cb4a5dec7d0599dc602e07c"
2063
+ },
2064
+ "compiledHash": "3b3a6cbfcb16ea809a1a712e7281342ad6e56a43675b76cb90b1d3b724c1bb0f",
2065
+ "automated": {
2066
+ "errors": [],
2067
+ "axeViolations": [],
2068
+ "metrics": {
2069
+ "overflow": false,
2070
+ "h1": 1,
2071
+ "brokenImages": [],
2072
+ "internalLinks": [
2073
+ "/",
2074
+ "/detail",
2075
+ "/detail"
2076
+ ]
2077
+ },
2078
+ "firstFocus": {
2079
+ "tag": "A",
2080
+ "text": "Skip to content",
2081
+ "outline": "solid",
2082
+ "width": "2px"
2083
+ },
2084
+ "disclosures": []
2085
+ },
2086
+ "visualReview": {
2087
+ "assessor": "assistant",
2088
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2089
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2090
+ "assessment": "All four full-page views visually inspected in contact sheet. Wide practice margin and project elevation carry opening; narrow practice tasks precede project and caption. Project metadata and design decisions stay readable at both sizes. The sketch is explicitly invented and has no dimensions/performance claims."
2091
+ }
2092
+ },
2093
+ {
2094
+ "route": "/",
2095
+ "viewport": {
2096
+ "width": 390,
2097
+ "height": 844
2098
+ },
2099
+ "capturedAt": "2026-10-05T18:23:35.443Z",
2100
+ "browser": "153.0.8010.12",
2101
+ "preview": {
2102
+ "path": "previews/hearth-plane-home-390.png",
2103
+ "sha256": "bcc267d7335f0bdec1247a79061c4596e9817b1bde2e52d3ba6a27132b3afc9a"
2104
+ },
2105
+ "compiledHash": "3b3a6cbfcb16ea809a1a712e7281342ad6e56a43675b76cb90b1d3b724c1bb0f",
2106
+ "automated": {
2107
+ "errors": [],
2108
+ "axeViolations": [],
2109
+ "metrics": {
2110
+ "overflow": false,
2111
+ "h1": 1,
2112
+ "brokenImages": [],
2113
+ "internalLinks": [
2114
+ "/",
2115
+ "/detail",
2116
+ "/detail"
2117
+ ]
2118
+ },
2119
+ "firstFocus": {
2120
+ "tag": "A",
2121
+ "text": "Skip to content",
2122
+ "outline": "solid",
2123
+ "width": "2px"
2124
+ },
2125
+ "disclosures": []
2126
+ },
2127
+ "visualReview": {
2128
+ "assessor": "assistant",
2129
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2130
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2131
+ "assessment": "All four full-page views visually inspected in contact sheet. Wide practice margin and project elevation carry opening; narrow practice tasks precede project and caption. Project metadata and design decisions stay readable at both sizes. The sketch is explicitly invented and has no dimensions/performance claims."
2132
+ }
2133
+ },
2134
+ {
2135
+ "route": "/detail",
2136
+ "viewport": {
2137
+ "width": 1440,
2138
+ "height": 900
2139
+ },
2140
+ "capturedAt": "2026-10-05T18:23:36.598Z",
2141
+ "browser": "153.0.8010.12",
2142
+ "preview": {
2143
+ "path": "previews/hearth-plane-interior-1440.png",
2144
+ "sha256": "85fc84324227b4a32325d664e1099d34b0e25b1d6721b55b32dab5afbde5e597"
2145
+ },
2146
+ "compiledHash": "943976eb2aa05cdae5af4d51d4780ba7fd06c5e9da45909d5ce188a7d00ec2e5",
2147
+ "automated": {
2148
+ "errors": [],
2149
+ "axeViolations": [],
2150
+ "metrics": {
2151
+ "overflow": false,
2152
+ "h1": 1,
2153
+ "brokenImages": [],
2154
+ "internalLinks": [
2155
+ "/",
2156
+ "/"
2157
+ ]
2158
+ },
2159
+ "firstFocus": {
2160
+ "tag": "A",
2161
+ "text": "Skip to content",
2162
+ "outline": "solid",
2163
+ "width": "2px"
2164
+ },
2165
+ "disclosures": []
2166
+ },
2167
+ "visualReview": {
2168
+ "assessor": "assistant",
2169
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2170
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2171
+ "assessment": "All four full-page views visually inspected in contact sheet. Wide practice margin and project elevation carry opening; narrow practice tasks precede project and caption. Project metadata and design decisions stay readable at both sizes. The sketch is explicitly invented and has no dimensions/performance claims."
2172
+ }
2173
+ },
2174
+ {
2175
+ "route": "/detail",
2176
+ "viewport": {
2177
+ "width": 390,
2178
+ "height": 844
2179
+ },
2180
+ "capturedAt": "2026-10-05T18:23:37.743Z",
2181
+ "browser": "153.0.8010.12",
2182
+ "preview": {
2183
+ "path": "previews/hearth-plane-interior-390.png",
2184
+ "sha256": "8f9b1ebd34bf0707e224628690108d5f4bca9d3cbbea8dd59dcbcf70171cacf7"
2185
+ },
2186
+ "compiledHash": "943976eb2aa05cdae5af4d51d4780ba7fd06c5e9da45909d5ce188a7d00ec2e5",
2187
+ "automated": {
2188
+ "errors": [],
2189
+ "axeViolations": [],
2190
+ "metrics": {
2191
+ "overflow": false,
2192
+ "h1": 1,
2193
+ "brokenImages": [],
2194
+ "internalLinks": [
2195
+ "/",
2196
+ "/"
2197
+ ]
2198
+ },
2199
+ "firstFocus": {
2200
+ "tag": "A",
2201
+ "text": "Skip to content",
2202
+ "outline": "solid",
2203
+ "width": "2px"
2204
+ },
2205
+ "disclosures": []
2206
+ },
2207
+ "visualReview": {
2208
+ "assessor": "assistant",
2209
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2210
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2211
+ "assessment": "All four full-page views visually inspected in contact sheet. Wide practice margin and project elevation carry opening; narrow practice tasks precede project and caption. Project metadata and design decisions stay readable at both sizes. The sketch is explicitly invented and has no dimensions/performance claims."
2212
+ }
2213
+ }
2214
+ ]
2215
+ },
2216
+ {
2217
+ "id": "night-orchard",
2218
+ "revision": 1,
2219
+ "title": "Night Orchard / evening and visit",
2220
+ "primaryFamily": "hospitality",
2221
+ "assetMinimum": "none",
2222
+ "fitSignals": [
2223
+ "location",
2224
+ "action",
2225
+ "comparison",
2226
+ "real-copy",
2227
+ "type-content",
2228
+ "sparse-media"
2229
+ ],
2230
+ "visitorTasks": [
2231
+ "find-location",
2232
+ "book-inquiry",
2233
+ "compare-options"
2234
+ ],
2235
+ "organizingIdea": "A illustrated evening field carries identity and visit tasks; the interior becomes a legible menu sheet and practical access document.",
2236
+ "brief": {
2237
+ "fictional": true,
2238
+ "facts": {
2239
+ "name": "Night Orchard",
2240
+ "offer": "Fictional garden supper room",
2241
+ "address": "8 Lantern Walk, invented location",
2242
+ "hours": "Thursday–Saturday, 18:00–22:00",
2243
+ "menu": [
2244
+ {
2245
+ "dish": "Roast squash",
2246
+ "description": "White beans, greens and herbs",
2247
+ "price": "18 teaching units"
2248
+ },
2249
+ {
2250
+ "dish": "Garden plate",
2251
+ "description": "Seasonal leaves, grilled bread and house dressing",
2252
+ "price": "14 teaching units"
2253
+ },
2254
+ {
2255
+ "dish": "Pear pudding",
2256
+ "description": "Warm pear and oat crumble",
2257
+ "price": "8 teaching units"
2258
+ }
2259
+ ],
2260
+ "access": "Step-free garden entrance in fictional brief; customer verification required",
2261
+ "contact": "orchard@example.test"
2262
+ },
2263
+ "factsHash": "893d665b3db6d6418be7562028e872ab22143fc7f346cd1dc2d0ab2f7d501a3d",
2264
+ "mediaHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
2265
+ },
2266
+ "provenance": {
2267
+ "content": "Original fictional Vitris teaching brief and authored copy; operational details, dimensions and offers are invented and must never populate customer inventories.",
2268
+ "media": "Original inline SVG illustrations authored for this release; no external photographs, branding or type assets.",
2269
+ "rights": "Original Vitris teaching material; factual adaptation required for customer use."
2270
+ },
2271
+ "storyboard": {
2272
+ "homepage": [
2273
+ "evening scene and identity",
2274
+ "invitation",
2275
+ "visit strip"
2276
+ ],
2277
+ "interior": [
2278
+ "menu title",
2279
+ "dish/description/price sheet",
2280
+ "access and hours",
2281
+ "question before booking"
2282
+ ],
2283
+ "mobile": "Illustration precedes identity/task block instead of obscuring it. Menu descriptions move under dish/price; access follows the menu."
2284
+ },
2285
+ "designDecisions": "A illustrated evening field carries identity and visit tasks; the interior becomes a legible menu sheet and practical access document.",
2286
+ "lessonIds": [
2287
+ "cmp-image-art-direction",
2288
+ "cmp-contextual-action",
2289
+ "cmp-narrative-continuity"
2290
+ ],
2291
+ "referenceIds": [
2292
+ "bokman",
2293
+ "big-mamma"
2294
+ ],
2295
+ "sourcePath": "night-orchard",
2296
+ "homepage": "/",
2297
+ "interior": "/detail",
2298
+ "status": "compiled and automated/assistant visually reviewed; human preference pending",
2299
+ "humanPreference": null,
2300
+ "renderEvidence": [
2301
+ {
2302
+ "route": "/",
2303
+ "viewport": {
2304
+ "width": 1440,
2305
+ "height": 900
2306
+ },
2307
+ "capturedAt": "2026-10-05T18:23:38.960Z",
2308
+ "browser": "153.0.8010.12",
2309
+ "preview": {
2310
+ "path": "previews/night-orchard-home-1440.png",
2311
+ "sha256": "6b253f8ebed288852c7c9f54d734e2dc6c4aed6c35ec68afd88216ae9d2b0168"
2312
+ },
2313
+ "compiledHash": "e51d915ed9557a37512e3cf8ca440fb4dc789250b1926044703a807a1e6587f7",
2314
+ "automated": {
2315
+ "errors": [],
2316
+ "axeViolations": [],
2317
+ "metrics": {
2318
+ "overflow": false,
2319
+ "h1": 1,
2320
+ "brokenImages": [],
2321
+ "internalLinks": [
2322
+ "/detail",
2323
+ "/detail#visit"
2324
+ ]
2325
+ },
2326
+ "firstFocus": {
2327
+ "tag": "A",
2328
+ "text": "Skip to content",
2329
+ "outline": "solid",
2330
+ "width": "2px"
2331
+ },
2332
+ "disclosures": []
2333
+ },
2334
+ "visualReview": {
2335
+ "assessor": "assistant",
2336
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2337
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2338
+ "assessment": "All four full-page views visually inspected in contact sheet. Dark illustrated evening scene gives way to short invitation and practical visit strip; narrow identity and actions follow the scene. Interior cream menu sheet preserves dish/description/price relation, moving descriptions below dish/price on narrow. Access and inquiry remain contextual. Some header overlay text crosses branches, but labels/actions remain legible."
2339
+ }
2340
+ },
2341
+ {
2342
+ "route": "/",
2343
+ "viewport": {
2344
+ "width": 390,
2345
+ "height": 844
2346
+ },
2347
+ "capturedAt": "2026-10-05T18:23:40.025Z",
2348
+ "browser": "153.0.8010.12",
2349
+ "preview": {
2350
+ "path": "previews/night-orchard-home-390.png",
2351
+ "sha256": "4e97cc97e262a630fdcb70e846d655d0445d79f97512bb10e265ba13b8b5b2fa"
2352
+ },
2353
+ "compiledHash": "e51d915ed9557a37512e3cf8ca440fb4dc789250b1926044703a807a1e6587f7",
2354
+ "automated": {
2355
+ "errors": [],
2356
+ "axeViolations": [],
2357
+ "metrics": {
2358
+ "overflow": false,
2359
+ "h1": 1,
2360
+ "brokenImages": [],
2361
+ "internalLinks": [
2362
+ "/detail",
2363
+ "/detail#visit"
2364
+ ]
2365
+ },
2366
+ "firstFocus": {
2367
+ "tag": "A",
2368
+ "text": "Skip to content",
2369
+ "outline": "solid",
2370
+ "width": "2px"
2371
+ },
2372
+ "disclosures": []
2373
+ },
2374
+ "visualReview": {
2375
+ "assessor": "assistant",
2376
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2377
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2378
+ "assessment": "All four full-page views visually inspected in contact sheet. Dark illustrated evening scene gives way to short invitation and practical visit strip; narrow identity and actions follow the scene. Interior cream menu sheet preserves dish/description/price relation, moving descriptions below dish/price on narrow. Access and inquiry remain contextual. Some header overlay text crosses branches, but labels/actions remain legible."
2379
+ }
2380
+ },
2381
+ {
2382
+ "route": "/detail",
2383
+ "viewport": {
2384
+ "width": 1440,
2385
+ "height": 900
2386
+ },
2387
+ "capturedAt": "2026-10-05T18:23:41.156Z",
2388
+ "browser": "153.0.8010.12",
2389
+ "preview": {
2390
+ "path": "previews/night-orchard-interior-1440.png",
2391
+ "sha256": "28d4b7710f4e7138af479074e57f3e0027314a9a8098e8fb6cc3e437b0801a40"
2392
+ },
2393
+ "compiledHash": "9f6f44c0a111533dbc61540100cd506f9a77a9ce5363c890adc0b1a1c22da38d",
2394
+ "automated": {
2395
+ "errors": [],
2396
+ "axeViolations": [],
2397
+ "metrics": {
2398
+ "overflow": false,
2399
+ "h1": 1,
2400
+ "brokenImages": [],
2401
+ "internalLinks": [
2402
+ "/",
2403
+ "/"
2404
+ ]
2405
+ },
2406
+ "firstFocus": {
2407
+ "tag": "A",
2408
+ "text": "Skip to content",
2409
+ "outline": "solid",
2410
+ "width": "2px"
2411
+ },
2412
+ "disclosures": []
2413
+ },
2414
+ "visualReview": {
2415
+ "assessor": "assistant",
2416
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2417
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2418
+ "assessment": "All four full-page views visually inspected in contact sheet. Dark illustrated evening scene gives way to short invitation and practical visit strip; narrow identity and actions follow the scene. Interior cream menu sheet preserves dish/description/price relation, moving descriptions below dish/price on narrow. Access and inquiry remain contextual. Some header overlay text crosses branches, but labels/actions remain legible."
2419
+ }
2420
+ },
2421
+ {
2422
+ "route": "/detail",
2423
+ "viewport": {
2424
+ "width": 390,
2425
+ "height": 844
2426
+ },
2427
+ "capturedAt": "2026-10-05T18:23:42.212Z",
2428
+ "browser": "153.0.8010.12",
2429
+ "preview": {
2430
+ "path": "previews/night-orchard-interior-390.png",
2431
+ "sha256": "f0a57a0c47a21eb40d4f6d037a680ca47a2f9b815160dbe04c8dac2b7af8dcc8"
2432
+ },
2433
+ "compiledHash": "9f6f44c0a111533dbc61540100cd506f9a77a9ce5363c890adc0b1a1c22da38d",
2434
+ "automated": {
2435
+ "errors": [],
2436
+ "axeViolations": [],
2437
+ "metrics": {
2438
+ "overflow": false,
2439
+ "h1": 1,
2440
+ "brokenImages": [],
2441
+ "internalLinks": [
2442
+ "/",
2443
+ "/"
2444
+ ]
2445
+ },
2446
+ "firstFocus": {
2447
+ "tag": "A",
2448
+ "text": "Skip to content",
2449
+ "outline": "solid",
2450
+ "width": "2px"
2451
+ },
2452
+ "disclosures": []
2453
+ },
2454
+ "visualReview": {
2455
+ "assessor": "assistant",
2456
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2457
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2458
+ "assessment": "All four full-page views visually inspected in contact sheet. Dark illustrated evening scene gives way to short invitation and practical visit strip; narrow identity and actions follow the scene. Interior cream menu sheet preserves dish/description/price relation, moving descriptions below dish/price on narrow. Access and inquiry remain contextual. Some header overlay text crosses branches, but labels/actions remain legible."
2459
+ }
2460
+ }
2461
+ ]
2462
+ },
2463
+ {
2464
+ "id": "loop-room",
2465
+ "revision": 1,
2466
+ "title": "Loop Room / exhibition and access",
2467
+ "primaryFamily": "civic",
2468
+ "assetMinimum": "none",
2469
+ "fitSignals": [
2470
+ "location",
2471
+ "collection",
2472
+ "type-content",
2473
+ "real-copy",
2474
+ "action",
2475
+ "sparse-media"
2476
+ ],
2477
+ "visitorTasks": [
2478
+ "find-location",
2479
+ "read-deeply",
2480
+ "evaluate-service"
2481
+ ],
2482
+ "organizingIdea": "A bold exhibition title shares space with an original spatial diagram; practical visitor facts form a compact directory, and the interior joins interpretation with access.",
2483
+ "brief": {
2484
+ "fictional": true,
2485
+ "facts": {
2486
+ "name": "Loop Room",
2487
+ "offer": "Fictional community exhibition space",
2488
+ "exhibition": "Lines Between Us",
2489
+ "period": "Teaching season / no real calendar dates",
2490
+ "visitHours": "Tuesday–Sunday, 11:00–17:00",
2491
+ "admission": "Free in the fictional brief",
2492
+ "address": "12 Common Lane, invented location",
2493
+ "access": "Step-free entry and seating in fictional brief; verification required",
2494
+ "contact": "loop@example.test"
2495
+ },
2496
+ "factsHash": "91b40d8fd6d27fe6705108b6f77376840d28ee631fc70dab92e610f7c24d9064",
2497
+ "mediaHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
2498
+ },
2499
+ "provenance": {
2500
+ "content": "Original fictional Vitris teaching brief and authored copy; operational details, dimensions and offers are invented and must never populate customer inventories.",
2501
+ "media": "Original inline SVG illustrations authored for this release; no external photographs, branding or type assets.",
2502
+ "rights": "Original Vitris teaching material; factual adaptation required for customer use."
2503
+ },
2504
+ "storyboard": {
2505
+ "homepage": [
2506
+ "venue and tasks",
2507
+ "exhibition title/diagram",
2508
+ "visit essentials",
2509
+ "shared question"
2510
+ ],
2511
+ "interior": [
2512
+ "exhibition meaning",
2513
+ "looking prompts",
2514
+ "visit and access",
2515
+ "return"
2516
+ ],
2517
+ "mobile": "Exhibition title precedes its diagram. Visitor facts become labeled rows; interpretation and visit remain separate reading tasks."
2518
+ },
2519
+ "designDecisions": "A bold exhibition title shares space with an original spatial diagram; practical visitor facts form a compact directory, and the interior joins interpretation with access.",
2520
+ "lessonIds": [
2521
+ "cmp-navigation",
2522
+ "cmp-contextual-action",
2523
+ "cmp-narrative-continuity"
2524
+ ],
2525
+ "referenceIds": [
2526
+ "gov-uk",
2527
+ "ny-historical",
2528
+ "magazzino"
2529
+ ],
2530
+ "sourcePath": "loop-room",
2531
+ "homepage": "/",
2532
+ "interior": "/detail",
2533
+ "status": "compiled and automated/assistant visually reviewed; human preference pending",
2534
+ "humanPreference": null,
2535
+ "renderEvidence": [
2536
+ {
2537
+ "route": "/",
2538
+ "viewport": {
2539
+ "width": 1440,
2540
+ "height": 900
2541
+ },
2542
+ "capturedAt": "2026-10-05T18:23:43.351Z",
2543
+ "browser": "153.0.8010.12",
2544
+ "preview": {
2545
+ "path": "previews/loop-room-home-1440.png",
2546
+ "sha256": "78584586862f9b860bd085fc776ef0b3208f7cae461efb6816d53dc138bb030d"
2547
+ },
2548
+ "compiledHash": "cda090631380e44aaf7c87e07da8d4c3106b579deaf52b791d590ba7496dfbc5",
2549
+ "automated": {
2550
+ "errors": [],
2551
+ "axeViolations": [],
2552
+ "metrics": {
2553
+ "overflow": false,
2554
+ "h1": 1,
2555
+ "brokenImages": [],
2556
+ "internalLinks": [
2557
+ "/",
2558
+ "/detail#visit",
2559
+ "/detail",
2560
+ "/detail",
2561
+ "/detail#visit"
2562
+ ]
2563
+ },
2564
+ "firstFocus": {
2565
+ "tag": "A",
2566
+ "text": "Skip to content",
2567
+ "outline": "solid",
2568
+ "width": "2px"
2569
+ },
2570
+ "disclosures": []
2571
+ },
2572
+ "visualReview": {
2573
+ "assessor": "assistant",
2574
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2575
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2576
+ "assessment": "All four full-page views visually inspected in contact sheet. Exhibition type/diagram and compact visit directory support different tasks; narrow diagram follows title and essentials become labeled rows. Interior looking prompts develop the exhibition and access follows. Native disclosure Enter toggling and focus passed verifier. No real institution or access assertions supplied."
2577
+ }
2578
+ },
2579
+ {
2580
+ "route": "/",
2581
+ "viewport": {
2582
+ "width": 390,
2583
+ "height": 844
2584
+ },
2585
+ "capturedAt": "2026-10-05T18:23:44.391Z",
2586
+ "browser": "153.0.8010.12",
2587
+ "preview": {
2588
+ "path": "previews/loop-room-home-390.png",
2589
+ "sha256": "2dd1af9e349a94621b7433624073545e0b10aad5f4927129b8c728c54a019ddb"
2590
+ },
2591
+ "compiledHash": "cda090631380e44aaf7c87e07da8d4c3106b579deaf52b791d590ba7496dfbc5",
2592
+ "automated": {
2593
+ "errors": [],
2594
+ "axeViolations": [],
2595
+ "metrics": {
2596
+ "overflow": false,
2597
+ "h1": 1,
2598
+ "brokenImages": [],
2599
+ "internalLinks": [
2600
+ "/",
2601
+ "/detail#visit",
2602
+ "/detail",
2603
+ "/detail",
2604
+ "/detail#visit"
2605
+ ]
2606
+ },
2607
+ "firstFocus": {
2608
+ "tag": "A",
2609
+ "text": "Skip to content",
2610
+ "outline": "solid",
2611
+ "width": "2px"
2612
+ },
2613
+ "disclosures": []
2614
+ },
2615
+ "visualReview": {
2616
+ "assessor": "assistant",
2617
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2618
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2619
+ "assessment": "All four full-page views visually inspected in contact sheet. Exhibition type/diagram and compact visit directory support different tasks; narrow diagram follows title and essentials become labeled rows. Interior looking prompts develop the exhibition and access follows. Native disclosure Enter toggling and focus passed verifier. No real institution or access assertions supplied."
2620
+ }
2621
+ },
2622
+ {
2623
+ "route": "/detail",
2624
+ "viewport": {
2625
+ "width": 1440,
2626
+ "height": 900
2627
+ },
2628
+ "capturedAt": "2026-10-05T18:23:45.615Z",
2629
+ "browser": "153.0.8010.12",
2630
+ "preview": {
2631
+ "path": "previews/loop-room-interior-1440.png",
2632
+ "sha256": "65707345efe629ba0be040db2ede0c60d61f32e6d01f5fe12737d6480a01f064"
2633
+ },
2634
+ "compiledHash": "997da6abc8943cb4e6fc0d5b77793ef058d3ce6c3848b1589daa3948fa613c79",
2635
+ "automated": {
2636
+ "errors": [],
2637
+ "axeViolations": [],
2638
+ "metrics": {
2639
+ "overflow": false,
2640
+ "h1": 1,
2641
+ "brokenImages": [],
2642
+ "internalLinks": [
2643
+ "/",
2644
+ "/"
2645
+ ]
2646
+ },
2647
+ "firstFocus": {
2648
+ "tag": "A",
2649
+ "text": "Ask a visit question →",
2650
+ "outline": "solid",
2651
+ "width": "3px"
2652
+ },
2653
+ "disclosures": [
2654
+ {
2655
+ "label": "Access information in this fictional brief",
2656
+ "keyboardToggle": true,
2657
+ "focusVisible": true
2658
+ }
2659
+ ]
2660
+ },
2661
+ "visualReview": {
2662
+ "assessor": "assistant",
2663
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2664
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2665
+ "assessment": "All four full-page views visually inspected in contact sheet. Exhibition type/diagram and compact visit directory support different tasks; narrow diagram follows title and essentials become labeled rows. Interior looking prompts develop the exhibition and access follows. Native disclosure Enter toggling and focus passed verifier. No real institution or access assertions supplied."
2666
+ }
2667
+ },
2668
+ {
2669
+ "route": "/detail",
2670
+ "viewport": {
2671
+ "width": 390,
2672
+ "height": 844
2673
+ },
2674
+ "capturedAt": "2026-10-05T18:23:46.708Z",
2675
+ "browser": "153.0.8010.12",
2676
+ "preview": {
2677
+ "path": "previews/loop-room-interior-390.png",
2678
+ "sha256": "23e69c04837f05d2008cd3cf83d316679f7de0ad7e5979d262181d86d08cb012"
2679
+ },
2680
+ "compiledHash": "997da6abc8943cb4e6fc0d5b77793ef058d3ce6c3848b1589daa3948fa613c79",
2681
+ "automated": {
2682
+ "errors": [],
2683
+ "axeViolations": [],
2684
+ "metrics": {
2685
+ "overflow": false,
2686
+ "h1": 1,
2687
+ "brokenImages": [],
2688
+ "internalLinks": [
2689
+ "/",
2690
+ "/"
2691
+ ]
2692
+ },
2693
+ "firstFocus": {
2694
+ "tag": "A",
2695
+ "text": "Ask a visit question →",
2696
+ "outline": "solid",
2697
+ "width": "3px"
2698
+ },
2699
+ "disclosures": [
2700
+ {
2701
+ "label": "Access information in this fictional brief",
2702
+ "keyboardToggle": true,
2703
+ "focusVisible": true
2704
+ }
2705
+ ]
2706
+ },
2707
+ "visualReview": {
2708
+ "assessor": "assistant",
2709
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2710
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2711
+ "assessment": "All four full-page views visually inspected in contact sheet. Exhibition type/diagram and compact visit directory support different tasks; narrow diagram follows title and essentials become labeled rows. Interior looking prompts develop the exhibition and access follows. Native disclosure Enter toggling and focus passed verifier. No real institution or access assertions supplied."
2712
+ }
2713
+ }
2714
+ ]
2715
+ },
2716
+ {
2717
+ "id": "sundial-goods",
2718
+ "revision": 1,
2719
+ "title": "Sundial Goods / colour campaign",
2720
+ "primaryFamily": "campaign",
2721
+ "assetMinimum": "none",
2722
+ "fitSignals": [
2723
+ "collection",
2724
+ "comparison",
2725
+ "type-content",
2726
+ "real-copy",
2727
+ "action",
2728
+ "sparse-media"
2729
+ ],
2730
+ "visitorTasks": [
2731
+ "shop-collection",
2732
+ "compare-options"
2733
+ ],
2734
+ "organizingIdea": "A cropped-looking but fully readable type field meets a bold product illustration; colour choices become broad navigable fields and the interior exposes product facts before options.",
2735
+ "brief": {
2736
+ "fictional": true,
2737
+ "facts": {
2738
+ "name": "Sundial Goods",
2739
+ "offer": "Fictional everyday cotton carry bags",
2740
+ "product": "Daily Carry",
2741
+ "variants": [
2742
+ "Brick",
2743
+ "Ink",
2744
+ "Leaf"
2745
+ ],
2746
+ "dimensions": "38 × 42 cm",
2747
+ "material": "Cotton in invented brief",
2748
+ "price": "24 teaching units",
2749
+ "restriction": "No actual stock, certifications or purchasing system",
2750
+ "contact": "sundial@example.test"
2751
+ },
2752
+ "factsHash": "f1744ebac1d86003c54b90fae9b16d779784b6ae6b8ceb83fa1bfbbbb2560325",
2753
+ "mediaHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
2754
+ },
2755
+ "provenance": {
2756
+ "content": "Original fictional Vitris teaching brief and authored copy; operational details, dimensions and offers are invented and must never populate customer inventories.",
2757
+ "media": "Original inline SVG illustrations authored for this release; no external photographs, branding or type assets.",
2758
+ "rights": "Original Vitris teaching material; factual adaptation required for customer use."
2759
+ },
2760
+ "storyboard": {
2761
+ "homepage": [
2762
+ "campaign type/object",
2763
+ "wide colour choices",
2764
+ "everyday-use explanation"
2765
+ ],
2766
+ "interior": [
2767
+ "product illustration/facts",
2768
+ "colour comparison",
2769
+ "adaptation boundary"
2770
+ ],
2771
+ "mobile": "Campaign type precedes object; colour choices form two columns then explicit product detail options stack with their labels."
2772
+ },
2773
+ "designDecisions": "A cropped-looking but fully readable type field meets a bold product illustration; colour choices become broad navigable fields and the interior exposes product facts before options.",
2774
+ "lessonIds": [
2775
+ "cmp-image-art-direction",
2776
+ "cmp-comparison",
2777
+ "cmp-narrative-continuity"
2778
+ ],
2779
+ "referenceIds": [
2780
+ "baggu",
2781
+ "good-weird"
2782
+ ],
2783
+ "sourcePath": "sundial-goods",
2784
+ "homepage": "/",
2785
+ "interior": "/detail",
2786
+ "status": "compiled and automated/assistant visually reviewed; human preference pending",
2787
+ "humanPreference": null,
2788
+ "renderEvidence": [
2789
+ {
2790
+ "route": "/",
2791
+ "viewport": {
2792
+ "width": 1440,
2793
+ "height": 900
2794
+ },
2795
+ "capturedAt": "2026-10-05T18:23:47.935Z",
2796
+ "browser": "153.0.8010.12",
2797
+ "preview": {
2798
+ "path": "previews/sundial-goods-home-1440.png",
2799
+ "sha256": "488b00a962aaec743b8a47defacf057f9ae876e2abb7a47f60d9b21d9ad61621"
2800
+ },
2801
+ "compiledHash": "04eca1d4a1e6fb09c2505cbf53da9342f2665750ce07bb89f40155062f245c8b",
2802
+ "automated": {
2803
+ "errors": [],
2804
+ "axeViolations": [],
2805
+ "metrics": {
2806
+ "overflow": false,
2807
+ "h1": 1,
2808
+ "brokenImages": [],
2809
+ "internalLinks": [
2810
+ "/",
2811
+ "/detail",
2812
+ "/detail#options",
2813
+ "/detail",
2814
+ "/detail#options",
2815
+ "/detail#options",
2816
+ "/detail#options",
2817
+ "/detail"
2818
+ ]
2819
+ },
2820
+ "firstFocus": {
2821
+ "tag": "A",
2822
+ "text": "Skip to content",
2823
+ "outline": "solid",
2824
+ "width": "2px"
2825
+ },
2826
+ "disclosures": []
2827
+ },
2828
+ "visualReview": {
2829
+ "assessor": "assistant",
2830
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2831
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2832
+ "assessment": "All four full-page views visually inspected in contact sheet. Bold campaign, object illustration and broad colour choice fields give different density from conventional product cards. Narrow campaign type precedes object and swatches; product detail reverses emphasis toward object then facts. Comparison labels remain readable. Teaching stock/prices are explicit, no checkout. Loop and Sundial share a wide two-column opening, justified by poster interpretation versus merchandise comparison; later sequences, navigation and actions differ. Further batch will add non-split openings."
2833
+ }
2834
+ },
2835
+ {
2836
+ "route": "/",
2837
+ "viewport": {
2838
+ "width": 390,
2839
+ "height": 844
2840
+ },
2841
+ "capturedAt": "2026-10-05T18:23:49.127Z",
2842
+ "browser": "153.0.8010.12",
2843
+ "preview": {
2844
+ "path": "previews/sundial-goods-home-390.png",
2845
+ "sha256": "e3e3719e6ef3cd4613a7b6afe983c546c4ba09060c16116f6b105a5307392e0d"
2846
+ },
2847
+ "compiledHash": "04eca1d4a1e6fb09c2505cbf53da9342f2665750ce07bb89f40155062f245c8b",
2848
+ "automated": {
2849
+ "errors": [],
2850
+ "axeViolations": [],
2851
+ "metrics": {
2852
+ "overflow": false,
2853
+ "h1": 1,
2854
+ "brokenImages": [],
2855
+ "internalLinks": [
2856
+ "/",
2857
+ "/detail",
2858
+ "/detail#options",
2859
+ "/detail",
2860
+ "/detail#options",
2861
+ "/detail#options",
2862
+ "/detail#options",
2863
+ "/detail"
2864
+ ]
2865
+ },
2866
+ "firstFocus": {
2867
+ "tag": "A",
2868
+ "text": "Skip to content",
2869
+ "outline": "solid",
2870
+ "width": "2px"
2871
+ },
2872
+ "disclosures": []
2873
+ },
2874
+ "visualReview": {
2875
+ "assessor": "assistant",
2876
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2877
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2878
+ "assessment": "All four full-page views visually inspected in contact sheet. Bold campaign, object illustration and broad colour choice fields give different density from conventional product cards. Narrow campaign type precedes object and swatches; product detail reverses emphasis toward object then facts. Comparison labels remain readable. Teaching stock/prices are explicit, no checkout. Loop and Sundial share a wide two-column opening, justified by poster interpretation versus merchandise comparison; later sequences, navigation and actions differ. Further batch will add non-split openings."
2879
+ }
2880
+ },
2881
+ {
2882
+ "route": "/detail",
2883
+ "viewport": {
2884
+ "width": 1440,
2885
+ "height": 900
2886
+ },
2887
+ "capturedAt": "2026-10-05T18:23:50.700Z",
2888
+ "browser": "153.0.8010.12",
2889
+ "preview": {
2890
+ "path": "previews/sundial-goods-interior-1440.png",
2891
+ "sha256": "19e5e51acd93edadf369a4b64436b89b3a26904740d7fb5c4d09eb7b10194348"
2892
+ },
2893
+ "compiledHash": "8fa0c46a3333314b7ee302dfaecbdaa4fd630eaac2676bf274beafdcc06007a9",
2894
+ "automated": {
2895
+ "errors": [],
2896
+ "axeViolations": [],
2897
+ "metrics": {
2898
+ "overflow": false,
2899
+ "h1": 1,
2900
+ "brokenImages": [],
2901
+ "internalLinks": [
2902
+ "/",
2903
+ "/"
2904
+ ]
2905
+ },
2906
+ "firstFocus": {
2907
+ "tag": "A",
2908
+ "text": "Skip to content",
2909
+ "outline": "solid",
2910
+ "width": "2px"
2911
+ },
2912
+ "disclosures": []
2913
+ },
2914
+ "visualReview": {
2915
+ "assessor": "assistant",
2916
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2917
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2918
+ "assessment": "All four full-page views visually inspected in contact sheet. Bold campaign, object illustration and broad colour choice fields give different density from conventional product cards. Narrow campaign type precedes object and swatches; product detail reverses emphasis toward object then facts. Comparison labels remain readable. Teaching stock/prices are explicit, no checkout. Loop and Sundial share a wide two-column opening, justified by poster interpretation versus merchandise comparison; later sequences, navigation and actions differ. Further batch will add non-split openings."
2919
+ }
2920
+ },
2921
+ {
2922
+ "route": "/detail",
2923
+ "viewport": {
2924
+ "width": 390,
2925
+ "height": 844
2926
+ },
2927
+ "capturedAt": "2026-10-05T18:23:51.806Z",
2928
+ "browser": "153.0.8010.12",
2929
+ "preview": {
2930
+ "path": "previews/sundial-goods-interior-390.png",
2931
+ "sha256": "0479f0d3d4d18416dab6113db6685c61319e88eb2b13d6cf775547c1a96dea0c"
2932
+ },
2933
+ "compiledHash": "8fa0c46a3333314b7ee302dfaecbdaa4fd630eaac2676bf274beafdcc06007a9",
2934
+ "automated": {
2935
+ "errors": [],
2936
+ "axeViolations": [],
2937
+ "metrics": {
2938
+ "overflow": false,
2939
+ "h1": 1,
2940
+ "brokenImages": [],
2941
+ "internalLinks": [
2942
+ "/",
2943
+ "/"
2944
+ ]
2945
+ },
2946
+ "firstFocus": {
2947
+ "tag": "A",
2948
+ "text": "Skip to content",
2949
+ "outline": "solid",
2950
+ "width": "2px"
2951
+ },
2952
+ "disclosures": []
2953
+ },
2954
+ "visualReview": {
2955
+ "assessor": "assistant",
2956
+ "reviewedAt": "2026-10-05T18:25:17.945223+00:00",
2957
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
2958
+ "assessment": "All four full-page views visually inspected in contact sheet. Bold campaign, object illustration and broad colour choice fields give different density from conventional product cards. Narrow campaign type precedes object and swatches; product detail reverses emphasis toward object then facts. Comparison labels remain readable. Teaching stock/prices are explicit, no checkout. Loop and Sundial share a wide two-column opening, justified by poster interpretation versus merchandise comparison; later sequences, navigation and actions differ. Further batch will add non-split openings."
2959
+ }
2960
+ }
2961
+ ]
2962
+ },
2963
+ {
2964
+ "id": "lacuna-objects",
2965
+ "revision": 1,
2966
+ "title": "Lacuna Objects / quiet object story",
2967
+ "primaryFamily": "quiet-luxury",
2968
+ "assetMinimum": "none",
2969
+ "fitSignals": [
2970
+ "collection",
2971
+ "type-content",
2972
+ "real-copy",
2973
+ "action",
2974
+ "sparse-media"
2975
+ ],
2976
+ "visitorTasks": [
2977
+ "inspect-work",
2978
+ "explore-product"
2979
+ ],
2980
+ "organizingIdea": "The object occupies a centered field beneath restrained identity; the interior changes from isolated form to material facts rather than product-card repetition.",
2981
+ "brief": {
2982
+ "fictional": true,
2983
+ "facts": {
2984
+ "name": "Lacuna Objects",
2985
+ "offer": "Fictional small objects for living spaces",
2986
+ "object": "Arc wall shelf",
2987
+ "material": "Timber in teaching brief",
2988
+ "width": "80 cm teaching dimension",
2989
+ "finish": "Natural finish in invented brief",
2990
+ "contact": "lacuna@example.test",
2991
+ "restriction": "No real product, load rating or certification"
2992
+ },
2993
+ "factsHash": "0b6b3e0ebd55929284a23a93f0df9f93e4b0f7bef64cf7925002008e452da4b2",
2994
+ "mediaHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
2995
+ },
2996
+ "provenance": {
2997
+ "content": "Original fictional Vitris teaching brief and copy; no customer claims.",
2998
+ "media": "Original inline SVG diagrams or authored text, no external images, branding or type assets.",
2999
+ "rights": "Original Vitris teaching material; factual adaptation required for customer use."
3000
+ },
3001
+ "storyboard": {
3002
+ "homepage": [
3003
+ "quiet identity",
3004
+ "centered object proposition/diagram",
3005
+ "object story"
3006
+ ],
3007
+ "interior": [
3008
+ "object name",
3009
+ "isolated form",
3010
+ "form explanation",
3011
+ "specification questions"
3012
+ ],
3013
+ "mobile": "Centered object field stays centered; story and labeled facts turn into a readable single-column document."
3014
+ },
3015
+ "designDecisions": "The object occupies a centered field beneath restrained identity; the interior changes from isolated form to material facts rather than product-card repetition.",
3016
+ "lessonIds": [
3017
+ "cmp-unequal-emphasis",
3018
+ "cmp-image-art-direction",
3019
+ "cmp-narrative-continuity"
3020
+ ],
3021
+ "referenceIds": [
3022
+ "r100",
3023
+ "doc"
3024
+ ],
3025
+ "sourcePath": "lacuna-objects",
3026
+ "homepage": "/",
3027
+ "interior": "/detail",
3028
+ "status": "compiled and automated/assistant visually reviewed; human preference pending",
3029
+ "humanPreference": null,
3030
+ "renderEvidence": [
3031
+ {
3032
+ "route": "/",
3033
+ "viewport": {
3034
+ "width": 1440,
3035
+ "height": 900
3036
+ },
3037
+ "capturedAt": "2026-10-05T18:29:41.140Z",
3038
+ "browser": "153.0.8010.12",
3039
+ "preview": {
3040
+ "path": "previews/lacuna-objects-home-1440.png",
3041
+ "sha256": "3a11bd19c4b02b5a99045f59aeedaf9a9617e51de4ba45bcd661fa208dc90a07"
3042
+ },
3043
+ "compiledHash": "08eaaace1cb7c94cb5a7a96f75d777e8a930008ef672413596a07d9df1f44d9d",
3044
+ "automated": {
3045
+ "errors": [],
3046
+ "axeViolations": [],
3047
+ "metrics": {
3048
+ "overflow": false,
3049
+ "h1": 1,
3050
+ "brokenImages": [],
3051
+ "internalLinks": [
3052
+ "/",
3053
+ "/detail",
3054
+ "/detail",
3055
+ "/detail"
3056
+ ]
3057
+ },
3058
+ "audio": [],
3059
+ "captureGeometry": null,
3060
+ "firstFocus": {
3061
+ "tag": "A",
3062
+ "text": "Skip to content",
3063
+ "outline": "solid",
3064
+ "width": "2px"
3065
+ },
3066
+ "disclosures": []
3067
+ },
3068
+ "visualReview": {
3069
+ "assessor": "assistant",
3070
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3071
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3072
+ "assessment": "All four full-page views inspected in contact sheet. Isolated original shelf illustration and restrained centred identity replace a split hero; product interior develops the same form through material/dimension ledger. Narrow follows object, proposition, task then facts. Explicit teaching object facts carry no actual certification or load claims."
3073
+ }
3074
+ },
3075
+ {
3076
+ "route": "/",
3077
+ "viewport": {
3078
+ "width": 390,
3079
+ "height": 844
3080
+ },
3081
+ "capturedAt": "2026-10-05T18:29:42.316Z",
3082
+ "browser": "153.0.8010.12",
3083
+ "preview": {
3084
+ "path": "previews/lacuna-objects-home-390.png",
3085
+ "sha256": "7c31d9c10144c4d1b886f822d66b881bad511a70cadb36ba6efca503789b64fe"
3086
+ },
3087
+ "compiledHash": "08eaaace1cb7c94cb5a7a96f75d777e8a930008ef672413596a07d9df1f44d9d",
3088
+ "automated": {
3089
+ "errors": [],
3090
+ "axeViolations": [],
3091
+ "metrics": {
3092
+ "overflow": false,
3093
+ "h1": 1,
3094
+ "brokenImages": [],
3095
+ "internalLinks": [
3096
+ "/",
3097
+ "/detail",
3098
+ "/detail",
3099
+ "/detail"
3100
+ ]
3101
+ },
3102
+ "audio": [],
3103
+ "captureGeometry": null,
3104
+ "firstFocus": {
3105
+ "tag": "A",
3106
+ "text": "Skip to content",
3107
+ "outline": "solid",
3108
+ "width": "2px"
3109
+ },
3110
+ "disclosures": []
3111
+ },
3112
+ "visualReview": {
3113
+ "assessor": "assistant",
3114
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3115
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3116
+ "assessment": "All four full-page views inspected in contact sheet. Isolated original shelf illustration and restrained centred identity replace a split hero; product interior develops the same form through material/dimension ledger. Narrow follows object, proposition, task then facts. Explicit teaching object facts carry no actual certification or load claims."
3117
+ }
3118
+ },
3119
+ {
3120
+ "route": "/detail",
3121
+ "viewport": {
3122
+ "width": 1440,
3123
+ "height": 900
3124
+ },
3125
+ "capturedAt": "2026-10-05T18:29:43.449Z",
3126
+ "browser": "153.0.8010.12",
3127
+ "preview": {
3128
+ "path": "previews/lacuna-objects-interior-1440.png",
3129
+ "sha256": "6c2c40c1b2d76a1aa11d454095f9f1a94d514ded844e90b4e5d07a4f463204c3"
3130
+ },
3131
+ "compiledHash": "4e0f57285dfe045b2b8e6854adf452a8e9c63ad6358497d340c65913347bcc26",
3132
+ "automated": {
3133
+ "errors": [],
3134
+ "axeViolations": [],
3135
+ "metrics": {
3136
+ "overflow": false,
3137
+ "h1": 1,
3138
+ "brokenImages": [],
3139
+ "internalLinks": [
3140
+ "/",
3141
+ "/"
3142
+ ]
3143
+ },
3144
+ "audio": [],
3145
+ "captureGeometry": null,
3146
+ "firstFocus": {
3147
+ "tag": "A",
3148
+ "text": "Skip to content",
3149
+ "outline": "solid",
3150
+ "width": "2px"
3151
+ },
3152
+ "disclosures": []
3153
+ },
3154
+ "visualReview": {
3155
+ "assessor": "assistant",
3156
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3157
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3158
+ "assessment": "All four full-page views inspected in contact sheet. Isolated original shelf illustration and restrained centred identity replace a split hero; product interior develops the same form through material/dimension ledger. Narrow follows object, proposition, task then facts. Explicit teaching object facts carry no actual certification or load claims."
3159
+ }
3160
+ },
3161
+ {
3162
+ "route": "/detail",
3163
+ "viewport": {
3164
+ "width": 390,
3165
+ "height": 844
3166
+ },
3167
+ "capturedAt": "2026-10-05T18:29:44.529Z",
3168
+ "browser": "153.0.8010.12",
3169
+ "preview": {
3170
+ "path": "previews/lacuna-objects-interior-390.png",
3171
+ "sha256": "fb5fe76f553050852b87e639acf6667dbab0e6abd6f70f4bb104c4becb2dfc70"
3172
+ },
3173
+ "compiledHash": "4e0f57285dfe045b2b8e6854adf452a8e9c63ad6358497d340c65913347bcc26",
3174
+ "automated": {
3175
+ "errors": [],
3176
+ "axeViolations": [],
3177
+ "metrics": {
3178
+ "overflow": false,
3179
+ "h1": 1,
3180
+ "brokenImages": [],
3181
+ "internalLinks": [
3182
+ "/",
3183
+ "/"
3184
+ ]
3185
+ },
3186
+ "audio": [],
3187
+ "captureGeometry": null,
3188
+ "firstFocus": {
3189
+ "tag": "A",
3190
+ "text": "Skip to content",
3191
+ "outline": "solid",
3192
+ "width": "2px"
3193
+ },
3194
+ "disclosures": []
3195
+ },
3196
+ "visualReview": {
3197
+ "assessor": "assistant",
3198
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3199
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3200
+ "assessment": "All four full-page views inspected in contact sheet. Isolated original shelf illustration and restrained centred identity replace a split hero; product interior develops the same form through material/dimension ledger. Narrow follows object, proposition, task then facts. Explicit teaching object facts carry no actual certification or load claims."
3201
+ }
3202
+ }
3203
+ ]
3204
+ },
3205
+ {
3206
+ "id": "signal-fair",
3207
+ "revision": 1,
3208
+ "title": "Signal Fair / graphic programme",
3209
+ "primaryFamily": "maximalism",
3210
+ "assetMinimum": "none",
3211
+ "fitSignals": [
3212
+ "collection",
3213
+ "comparison",
3214
+ "location",
3215
+ "type-content",
3216
+ "real-copy",
3217
+ "action",
3218
+ "sparse-media"
3219
+ ],
3220
+ "visitorTasks": [
3221
+ "compare-options",
3222
+ "find-location",
3223
+ "read-deeply"
3224
+ ],
3225
+ "organizingIdea": "A typographic poster makes room for a small programme directory; the interior becomes one session with practical participation information.",
3226
+ "brief": {
3227
+ "fictional": true,
3228
+ "facts": {
3229
+ "name": "Signal Fair",
3230
+ "offer": "Fictional neighbourhood ideas gathering",
3231
+ "theme": "Make room for a new idea",
3232
+ "sessions": [
3233
+ {
3234
+ "time": "10:00",
3235
+ "name": "Paper Cities",
3236
+ "purpose": "Draw the spaces we share"
3237
+ },
3238
+ {
3239
+ "time": "12:00",
3240
+ "name": "Repair Table",
3241
+ "purpose": "Talk through the life of an everyday object"
3242
+ },
3243
+ {
3244
+ "time": "14:00",
3245
+ "name": "Open Signals",
3246
+ "purpose": "Share a small idea with the room"
3247
+ }
3248
+ ],
3249
+ "venue": "Assembly Hall, invented location",
3250
+ "access": "Seating and step-free access in invented brief",
3251
+ "contact": "signal@example.test"
3252
+ },
3253
+ "factsHash": "74a5cfc24d536f4cbee526dd5f5545fd98ec74a298a488f68b89ad2026cd7bb2",
3254
+ "mediaHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
3255
+ },
3256
+ "provenance": {
3257
+ "content": "Original fictional Vitris teaching brief and copy; no customer claims.",
3258
+ "media": "Original inline SVG diagrams or authored text, no external images, branding or type assets.",
3259
+ "rights": "Original Vitris teaching material; factual adaptation required for customer use."
3260
+ },
3261
+ "storyboard": {
3262
+ "homepage": [
3263
+ "graphic poster",
3264
+ "time-based programme",
3265
+ "location/access"
3266
+ ],
3267
+ "interior": [
3268
+ "session poster",
3269
+ "participation process",
3270
+ "visit questions"
3271
+ ],
3272
+ "mobile": "Poster typography remains complete and readable; programme time precedes session name and purpose, with one clear detail link."
3273
+ },
3274
+ "designDecisions": "A typographic poster makes room for a small programme directory; the interior becomes one session with practical participation information.",
3275
+ "lessonIds": [
3276
+ "cmp-type-roles",
3277
+ "cmp-page-rhythm",
3278
+ "cmp-contextual-action"
3279
+ ],
3280
+ "referenceIds": [
3281
+ "oatly",
3282
+ "the-blimp"
3283
+ ],
3284
+ "sourcePath": "signal-fair",
3285
+ "homepage": "/",
3286
+ "interior": "/detail",
3287
+ "status": "compiled and automated/assistant visually reviewed; human preference pending",
3288
+ "humanPreference": null,
3289
+ "renderEvidence": [
3290
+ {
3291
+ "route": "/",
3292
+ "viewport": {
3293
+ "width": 1440,
3294
+ "height": 900
3295
+ },
3296
+ "capturedAt": "2026-10-05T18:34:54.114Z",
3297
+ "browser": "153.0.8010.12",
3298
+ "preview": {
3299
+ "path": "previews/signal-fair-home-1440.png",
3300
+ "sha256": "ef26a30878766f5391a967697f4667dc132615c3ae21c813a4899e9edef0276d"
3301
+ },
3302
+ "compiledHash": "551353fcdaaebf3abf44006b5aef5ffefc1c77076089a898c7563a1ad87c239e",
3303
+ "automated": {
3304
+ "errors": [],
3305
+ "axeViolations": [],
3306
+ "metrics": {
3307
+ "overflow": false,
3308
+ "h1": 1,
3309
+ "brokenImages": [],
3310
+ "internalLinks": [
3311
+ "/",
3312
+ "/detail#visit",
3313
+ "/detail",
3314
+ "/detail#visit"
3315
+ ]
3316
+ },
3317
+ "audio": [],
3318
+ "captureGeometry": null,
3319
+ "firstFocus": {
3320
+ "tag": "A",
3321
+ "text": "Skip to content",
3322
+ "outline": "solid",
3323
+ "width": "2px"
3324
+ },
3325
+ "disclosures": []
3326
+ },
3327
+ "visualReview": {
3328
+ "assessor": "assistant",
3329
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3330
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3331
+ "assessment": "All four full-page views inspected, then inspected again after repairing misleading links and narrow row placement. Bold poster/ornament leads to programme times and purpose. Only authored Paper Cities session links to its detail; other session entries remain honest static summaries. Native Visit disclosure keyboard/focus passed. Narrow static Repair Table row initially broke into letters despite no automated overflow; repaired selector treats static and linked rows alike. Final contact sheet shows readable time/title/purpose rows at both widths."
3332
+ }
3333
+ },
3334
+ {
3335
+ "route": "/",
3336
+ "viewport": {
3337
+ "width": 390,
3338
+ "height": 844
3339
+ },
3340
+ "capturedAt": "2026-10-05T18:34:55.163Z",
3341
+ "browser": "153.0.8010.12",
3342
+ "preview": {
3343
+ "path": "previews/signal-fair-home-390.png",
3344
+ "sha256": "2c5b06ff467bd3fe35c742ac54a5ad4122b510d58d56a055ab96397d7aa8052c"
3345
+ },
3346
+ "compiledHash": "551353fcdaaebf3abf44006b5aef5ffefc1c77076089a898c7563a1ad87c239e",
3347
+ "automated": {
3348
+ "errors": [],
3349
+ "axeViolations": [],
3350
+ "metrics": {
3351
+ "overflow": false,
3352
+ "h1": 1,
3353
+ "brokenImages": [],
3354
+ "internalLinks": [
3355
+ "/",
3356
+ "/detail#visit",
3357
+ "/detail",
3358
+ "/detail#visit"
3359
+ ]
3360
+ },
3361
+ "audio": [],
3362
+ "captureGeometry": null,
3363
+ "firstFocus": {
3364
+ "tag": "A",
3365
+ "text": "Skip to content",
3366
+ "outline": "solid",
3367
+ "width": "2px"
3368
+ },
3369
+ "disclosures": []
3370
+ },
3371
+ "visualReview": {
3372
+ "assessor": "assistant",
3373
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3374
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3375
+ "assessment": "All four full-page views inspected, then inspected again after repairing misleading links and narrow row placement. Bold poster/ornament leads to programme times and purpose. Only authored Paper Cities session links to its detail; other session entries remain honest static summaries. Native Visit disclosure keyboard/focus passed. Narrow static Repair Table row initially broke into letters despite no automated overflow; repaired selector treats static and linked rows alike. Final contact sheet shows readable time/title/purpose rows at both widths."
3376
+ }
3377
+ },
3378
+ {
3379
+ "route": "/detail",
3380
+ "viewport": {
3381
+ "width": 1440,
3382
+ "height": 900
3383
+ },
3384
+ "capturedAt": "2026-10-05T18:34:56.269Z",
3385
+ "browser": "153.0.8010.12",
3386
+ "preview": {
3387
+ "path": "previews/signal-fair-interior-1440.png",
3388
+ "sha256": "d92e12d2ba26729f02ab1add1ab49a9630d49904183316bcd958fe131c7f05f1"
3389
+ },
3390
+ "compiledHash": "1fcb10cc800dc34488c2781c7c6196ce08c8b656c29e90c1a250da13fa2a23ab",
3391
+ "automated": {
3392
+ "errors": [],
3393
+ "axeViolations": [],
3394
+ "metrics": {
3395
+ "overflow": false,
3396
+ "h1": 1,
3397
+ "brokenImages": [],
3398
+ "internalLinks": [
3399
+ "/",
3400
+ "/"
3401
+ ]
3402
+ },
3403
+ "audio": [],
3404
+ "captureGeometry": null,
3405
+ "firstFocus": {
3406
+ "tag": "A",
3407
+ "text": "Ask a programme question →",
3408
+ "outline": "solid",
3409
+ "width": "3px"
3410
+ },
3411
+ "disclosures": [
3412
+ {
3413
+ "label": "Access and participation",
3414
+ "keyboardToggle": true,
3415
+ "focusVisible": true
3416
+ }
3417
+ ]
3418
+ },
3419
+ "visualReview": {
3420
+ "assessor": "assistant",
3421
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3422
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3423
+ "assessment": "All four full-page views inspected, then inspected again after repairing misleading links and narrow row placement. Bold poster/ornament leads to programme times and purpose. Only authored Paper Cities session links to its detail; other session entries remain honest static summaries. Native Visit disclosure keyboard/focus passed. Narrow static Repair Table row initially broke into letters despite no automated overflow; repaired selector treats static and linked rows alike. Final contact sheet shows readable time/title/purpose rows at both widths."
3424
+ }
3425
+ },
3426
+ {
3427
+ "route": "/detail",
3428
+ "viewport": {
3429
+ "width": 390,
3430
+ "height": 844
3431
+ },
3432
+ "capturedAt": "2026-10-05T18:34:57.314Z",
3433
+ "browser": "153.0.8010.12",
3434
+ "preview": {
3435
+ "path": "previews/signal-fair-interior-390.png",
3436
+ "sha256": "22289add335dc1d61c60cb297e00652e8437b8e2856998e0a74e2e9ab94a1b91"
3437
+ },
3438
+ "compiledHash": "1fcb10cc800dc34488c2781c7c6196ce08c8b656c29e90c1a250da13fa2a23ab",
3439
+ "automated": {
3440
+ "errors": [],
3441
+ "axeViolations": [],
3442
+ "metrics": {
3443
+ "overflow": false,
3444
+ "h1": 1,
3445
+ "brokenImages": [],
3446
+ "internalLinks": [
3447
+ "/",
3448
+ "/"
3449
+ ]
3450
+ },
3451
+ "audio": [],
3452
+ "captureGeometry": null,
3453
+ "firstFocus": {
3454
+ "tag": "A",
3455
+ "text": "Ask a programme question →",
3456
+ "outline": "solid",
3457
+ "width": "3px"
3458
+ },
3459
+ "disclosures": [
3460
+ {
3461
+ "label": "Access and participation",
3462
+ "keyboardToggle": true,
3463
+ "focusVisible": true
3464
+ }
3465
+ ]
3466
+ },
3467
+ "visualReview": {
3468
+ "assessor": "assistant",
3469
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3470
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3471
+ "assessment": "All four full-page views inspected, then inspected again after repairing misleading links and narrow row placement. Bold poster/ornament leads to programme times and purpose. Only authored Paper Cities session links to its detail; other session entries remain honest static summaries. Native Visit disclosure keyboard/focus passed. Narrow static Repair Table row initially broke into letters despite no automated overflow; repaired selector treats static and linked rows alike. Final contact sheet shows readable time/title/purpose rows at both widths."
3472
+ }
3473
+ }
3474
+ ]
3475
+ },
3476
+ {
3477
+ "id": "thread-mender",
3478
+ "revision": 1,
3479
+ "title": "Thread Mender / drawn process",
3480
+ "primaryFamily": "handmade",
3481
+ "assetMinimum": "none",
3482
+ "fitSignals": [
3483
+ "professional-service",
3484
+ "process",
3485
+ "action",
3486
+ "type-content",
3487
+ "real-copy",
3488
+ "sparse-media"
3489
+ ],
3490
+ "visitorTasks": [
3491
+ "evaluate-service",
3492
+ "understand-process",
3493
+ "book-inquiry"
3494
+ ],
3495
+ "organizingIdea": "A winding thread connects three practical stages; the drawing is navigation support and the interior turns each stage into readable guidance.",
3496
+ "brief": {
3497
+ "fictional": true,
3498
+ "facts": {
3499
+ "name": "Thread Mender",
3500
+ "offer": "Fictional clothing repair service",
3501
+ "scope": [
3502
+ "Hems",
3503
+ "Small tears",
3504
+ "Loose seams"
3505
+ ],
3506
+ "process": [
3507
+ "Notice the damaged area",
3508
+ "Agree the repair scope",
3509
+ "Mend and return the garment"
3510
+ ],
3511
+ "restriction": "Repair suitability is assessed before agreement; no guaranteed restoration",
3512
+ "location": "Local drop-off by arrangement, invented service",
3513
+ "contact": "thread@example.test"
3514
+ },
3515
+ "factsHash": "479f3bb31e2059f7f96a90420defaf29da4774c646d732f4a27f88aef1c87e16",
3516
+ "mediaHash": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
3517
+ },
3518
+ "provenance": {
3519
+ "content": "Original fictional Vitris teaching brief and copy; no customer claims.",
3520
+ "media": "Original inline SVG diagrams or authored text, no external images, branding or type assets.",
3521
+ "rights": "Original Vitris teaching material; factual adaptation required for customer use."
3522
+ },
3523
+ "storyboard": {
3524
+ "homepage": [
3525
+ "drawn stage navigation",
3526
+ "repair scope",
3527
+ "conversation preparation"
3528
+ ],
3529
+ "interior": [
3530
+ "process drawing",
3531
+ "notice/agree/mend guidance",
3532
+ "first conversation"
3533
+ ],
3534
+ "mobile": "Drawing shrinks but native stage links become a readable vertical list; decorative note rotation is removed; numbered guidance remains text, not diagram-only."
3535
+ },
3536
+ "designDecisions": "A winding thread connects three practical stages; the drawing is navigation support and the interior turns each stage into readable guidance.",
3537
+ "lessonIds": [
3538
+ "cmp-process",
3539
+ "cmp-surfaces-motifs",
3540
+ "cmp-contextual-action"
3541
+ ],
3542
+ "referenceIds": [
3543
+ "gohar-world",
3544
+ "on-air",
3545
+ "bokman"
3546
+ ],
3547
+ "sourcePath": "thread-mender",
3548
+ "homepage": "/",
3549
+ "interior": "/detail",
3550
+ "status": "compiled and automated/assistant visually reviewed; human preference pending",
3551
+ "humanPreference": null,
3552
+ "renderEvidence": [
3553
+ {
3554
+ "route": "/",
3555
+ "viewport": {
3556
+ "width": 1440,
3557
+ "height": 900
3558
+ },
3559
+ "capturedAt": "2026-10-05T18:33:11.059Z",
3560
+ "browser": "153.0.8010.12",
3561
+ "preview": {
3562
+ "path": "previews/thread-mender-home-1440.png",
3563
+ "sha256": "43add004a81011c425afae190434be2d55a549d84eb18c7f0ef21b1da1b1a065"
3564
+ },
3565
+ "compiledHash": "4b62541793499d8da86db10d13451980850972ddad416a5c712cc6464dc433da",
3566
+ "automated": {
3567
+ "errors": [],
3568
+ "axeViolations": [],
3569
+ "metrics": {
3570
+ "overflow": false,
3571
+ "h1": 1,
3572
+ "brokenImages": [],
3573
+ "internalLinks": [
3574
+ "/",
3575
+ "/detail",
3576
+ "/detail#notice",
3577
+ "/detail#agree",
3578
+ "/detail#mend"
3579
+ ]
3580
+ },
3581
+ "audio": [],
3582
+ "captureGeometry": null,
3583
+ "firstFocus": {
3584
+ "tag": "A",
3585
+ "text": "Skip to content",
3586
+ "outline": "solid",
3587
+ "width": "2px"
3588
+ },
3589
+ "disclosures": []
3590
+ },
3591
+ "visualReview": {
3592
+ "assessor": "assistant",
3593
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3594
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3595
+ "assessment": "All four full-page views inspected, then inspected again after moving decorative stitches below Notice/Agree/Mend lettering. Illustrated thread/process and scope precede invitation; interior numbered process develops the service. Narrow retains native text alongside the scaled illustration; stitches no longer cross labels. Original modest SVG media and invented service scope; no actual customer outcomes."
3596
+ }
3597
+ },
3598
+ {
3599
+ "route": "/",
3600
+ "viewport": {
3601
+ "width": 390,
3602
+ "height": 844
3603
+ },
3604
+ "capturedAt": "2026-10-05T18:33:12.119Z",
3605
+ "browser": "153.0.8010.12",
3606
+ "preview": {
3607
+ "path": "previews/thread-mender-home-390.png",
3608
+ "sha256": "f7b6810609c0add417a5f294dfd9f52fcc78790e094bcb3d6d9f8a54a932dedb"
3609
+ },
3610
+ "compiledHash": "4b62541793499d8da86db10d13451980850972ddad416a5c712cc6464dc433da",
3611
+ "automated": {
3612
+ "errors": [],
3613
+ "axeViolations": [],
3614
+ "metrics": {
3615
+ "overflow": false,
3616
+ "h1": 1,
3617
+ "brokenImages": [],
3618
+ "internalLinks": [
3619
+ "/",
3620
+ "/detail",
3621
+ "/detail#notice",
3622
+ "/detail#agree",
3623
+ "/detail#mend"
3624
+ ]
3625
+ },
3626
+ "audio": [],
3627
+ "captureGeometry": null,
3628
+ "firstFocus": {
3629
+ "tag": "A",
3630
+ "text": "Skip to content",
3631
+ "outline": "solid",
3632
+ "width": "2px"
3633
+ },
3634
+ "disclosures": []
3635
+ },
3636
+ "visualReview": {
3637
+ "assessor": "assistant",
3638
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3639
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3640
+ "assessment": "All four full-page views inspected, then inspected again after moving decorative stitches below Notice/Agree/Mend lettering. Illustrated thread/process and scope precede invitation; interior numbered process develops the service. Narrow retains native text alongside the scaled illustration; stitches no longer cross labels. Original modest SVG media and invented service scope; no actual customer outcomes."
3641
+ }
3642
+ },
3643
+ {
3644
+ "route": "/detail",
3645
+ "viewport": {
3646
+ "width": 1440,
3647
+ "height": 900
3648
+ },
3649
+ "capturedAt": "2026-10-05T18:33:13.224Z",
3650
+ "browser": "153.0.8010.12",
3651
+ "preview": {
3652
+ "path": "previews/thread-mender-interior-1440.png",
3653
+ "sha256": "656d999e665244223c6cffabced8326217d8c19373056d89d6f9075e076b4356"
3654
+ },
3655
+ "compiledHash": "3a53720349e95b13479f47063ebacd4544e034905f04b5ef0e2e49e58bd3ef2a",
3656
+ "automated": {
3657
+ "errors": [],
3658
+ "axeViolations": [],
3659
+ "metrics": {
3660
+ "overflow": false,
3661
+ "h1": 1,
3662
+ "brokenImages": [],
3663
+ "internalLinks": [
3664
+ "/",
3665
+ "/"
3666
+ ]
3667
+ },
3668
+ "audio": [],
3669
+ "captureGeometry": null,
3670
+ "firstFocus": {
3671
+ "tag": "A",
3672
+ "text": "Skip to content",
3673
+ "outline": "solid",
3674
+ "width": "2px"
3675
+ },
3676
+ "disclosures": []
3677
+ },
3678
+ "visualReview": {
3679
+ "assessor": "assistant",
3680
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3681
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3682
+ "assessment": "All four full-page views inspected, then inspected again after moving decorative stitches below Notice/Agree/Mend lettering. Illustrated thread/process and scope precede invitation; interior numbered process develops the service. Narrow retains native text alongside the scaled illustration; stitches no longer cross labels. Original modest SVG media and invented service scope; no actual customer outcomes."
3683
+ }
3684
+ },
3685
+ {
3686
+ "route": "/detail",
3687
+ "viewport": {
3688
+ "width": 390,
3689
+ "height": 844
3690
+ },
3691
+ "capturedAt": "2026-10-05T18:33:14.255Z",
3692
+ "browser": "153.0.8010.12",
3693
+ "preview": {
3694
+ "path": "previews/thread-mender-interior-390.png",
3695
+ "sha256": "05d7e0fd09f607254d4ea9cdb90d049f225aed1ed127b98194ce996dbd819c46"
3696
+ },
3697
+ "compiledHash": "3a53720349e95b13479f47063ebacd4544e034905f04b5ef0e2e49e58bd3ef2a",
3698
+ "automated": {
3699
+ "errors": [],
3700
+ "axeViolations": [],
3701
+ "metrics": {
3702
+ "overflow": false,
3703
+ "h1": 1,
3704
+ "brokenImages": [],
3705
+ "internalLinks": [
3706
+ "/",
3707
+ "/"
3708
+ ]
3709
+ },
3710
+ "audio": [],
3711
+ "captureGeometry": null,
3712
+ "firstFocus": {
3713
+ "tag": "A",
3714
+ "text": "Skip to content",
3715
+ "outline": "solid",
3716
+ "width": "2px"
3717
+ },
3718
+ "disclosures": []
3719
+ },
3720
+ "visualReview": {
3721
+ "assessor": "assistant",
3722
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3723
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3724
+ "assessment": "All four full-page views inspected, then inspected again after moving decorative stitches below Notice/Agree/Mend lettering. Illustrated thread/process and scope precede invitation; interior numbered process develops the service. Narrow retains native text alongside the scaled illustration; stitches no longer cross labels. Original modest SVG media and invented service scope; no actual customer outcomes."
3725
+ }
3726
+ }
3727
+ ]
3728
+ },
3729
+ {
3730
+ "id": "dock-radio",
3731
+ "revision": 1,
3732
+ "title": "Dock Radio / listening desk",
3733
+ "primaryFamily": "retro",
3734
+ "assetMinimum": "none",
3735
+ "fitSignals": [
3736
+ "product-ui",
3737
+ "collection",
3738
+ "type-content",
3739
+ "real-copy",
3740
+ "action",
3741
+ "sparse-media"
3742
+ ],
3743
+ "visitorTasks": [
3744
+ "explore-product",
3745
+ "read-deeply"
3746
+ ],
3747
+ "organizingIdea": "Desktop window chrome groups a functioning native player and guide; the episode interior develops original audio credits and notes without changing the listening metaphor.",
3748
+ "brief": {
3749
+ "fictional": true,
3750
+ "facts": {
3751
+ "name": "Dock Radio",
3752
+ "offer": "Fictional tiny listening desk",
3753
+ "episode": "Evening Interval",
3754
+ "duration": "8 seconds",
3755
+ "media": "Original synthesized tone sequence; no external recording",
3756
+ "restriction": "No broadcast, live schedule or catalogue of actual musicians"
3757
+ },
3758
+ "factsHash": "cafad57633f67d86bd40bbae0b4cc6071cc262904176bd348021ca0b962f7825",
3759
+ "mediaHash": "e7dfaa456108ecc17bfa04542f5b1146053292d087ab7b4fd65ef05210d6858d"
3760
+ },
3761
+ "provenance": {
3762
+ "content": "Original fictional Vitris teaching brief and copy; no customer claims.",
3763
+ "media": "Original inline cassette SVG and locally synthesized eight-second sine-wave sequence. No external samples, music or photographs.",
3764
+ "rights": "Original Vitris teaching material; factual adaptation required for customer use."
3765
+ },
3766
+ "storyboard": {
3767
+ "homepage": [
3768
+ "listening desk identity",
3769
+ "player window beside guide",
3770
+ "taskbar"
3771
+ ],
3772
+ "interior": [
3773
+ "episode player",
3774
+ "original credits and notes",
3775
+ "desk return"
3776
+ ],
3777
+ "mobile": "Windows stack with complete native audio controls; guide/credits follow listening content. No draggable chrome or tiny emulated controls required."
3778
+ },
3779
+ "designDecisions": "Desktop window chrome groups a functioning native player and guide; the episode interior develops original audio credits and notes without changing the listening metaphor.",
3780
+ "lessonIds": [
3781
+ "cmp-interactive-explanation",
3782
+ "cmp-surfaces-motifs",
3783
+ "cmp-contextual-action"
3784
+ ],
3785
+ "referenceIds": [
3786
+ "poolsuite",
3787
+ "beats-in-space"
3788
+ ],
3789
+ "sourcePath": "dock-radio",
3790
+ "homepage": "/",
3791
+ "interior": "/detail",
3792
+ "status": "compiled and automated/assistant visually reviewed; human preference pending",
3793
+ "humanPreference": null,
3794
+ "renderEvidence": [
3795
+ {
3796
+ "route": "/",
3797
+ "viewport": {
3798
+ "width": 1440,
3799
+ "height": 900
3800
+ },
3801
+ "capturedAt": "2026-10-05T18:45:00.637Z",
3802
+ "browser": "153.0.8010.12",
3803
+ "preview": {
3804
+ "path": "previews/dock-radio-home-1440.png",
3805
+ "sha256": "7589e4c06ded1a7c4032d113a9259f4b9708ecf39bb420753b90d5f2cc2e9854"
3806
+ },
3807
+ "compiledHash": "cf0c7972530c890db0b3549a282a880e292861f16206fca474cf1759c1d4ee94",
3808
+ "automated": {
3809
+ "errors": [],
3810
+ "axeViolations": [],
3811
+ "metrics": {
3812
+ "overflow": false,
3813
+ "h1": 1,
3814
+ "brokenImages": [],
3815
+ "internalLinks": [
3816
+ "/media/teaching/original-tone-study.wav",
3817
+ "/detail",
3818
+ "/detail#notes",
3819
+ "/",
3820
+ "/detail"
3821
+ ]
3822
+ },
3823
+ "audio": [
3824
+ {
3825
+ "source": "http://127.0.0.1:62139/media/teaching/original-tone-study.wav",
3826
+ "readyState": 4,
3827
+ "duration": 8,
3828
+ "paused": true
3829
+ }
3830
+ ],
3831
+ "captureGeometry": {
3832
+ "beforeCaptureHeight": 994,
3833
+ "afterCaptureHeight": 993,
3834
+ "finalCaptureHeight": 993
3835
+ },
3836
+ "firstFocus": {
3837
+ "tag": "A",
3838
+ "text": "Skip to content",
3839
+ "outline": "solid",
3840
+ "width": "2px"
3841
+ },
3842
+ "disclosures": []
3843
+ },
3844
+ "visualReview": {
3845
+ "assessor": "assistant",
3846
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3847
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3848
+ "assessment": "All four full-page views inspected and latest stable-capture contact sheet re-inspected. Native audio desk/player window and guide have different chrome from other studies; narrow stacks player, guide, taskbar and complete teaching footer. Interior player precedes recording notes. Initial Chromium full-page capture changed document height and clipped the narrow home footer; two-capture stabilization now retains complete footer with geometry recorded. Native CUA desktop play and narrow interior play/pause exercised (2026-10-05T18:30:54.837Z, 18:31:30.723Z, 18:31:36.473Z); narrow pause returned paused true at 5.667883 seconds of 8. No audible-quality, seek or volume exercise claimed. Audio is original synthesized tone study; no third-party sample or broadcast."
3849
+ }
3850
+ },
3851
+ {
3852
+ "route": "/",
3853
+ "viewport": {
3854
+ "width": 390,
3855
+ "height": 844
3856
+ },
3857
+ "capturedAt": "2026-10-05T18:45:16.804Z",
3858
+ "browser": "153.0.8010.12",
3859
+ "preview": {
3860
+ "path": "previews/dock-radio-home-390.png",
3861
+ "sha256": "e25822428259529afc3fad1aae111b60b8ddee31ff6b4106c4ae236a23b8f446"
3862
+ },
3863
+ "compiledHash": "cf0c7972530c890db0b3549a282a880e292861f16206fca474cf1759c1d4ee94",
3864
+ "automated": {
3865
+ "errors": [],
3866
+ "axeViolations": [],
3867
+ "metrics": {
3868
+ "overflow": false,
3869
+ "h1": 1,
3870
+ "brokenImages": [],
3871
+ "internalLinks": [
3872
+ "/media/teaching/original-tone-study.wav",
3873
+ "/detail",
3874
+ "/detail#notes",
3875
+ "/",
3876
+ "/detail"
3877
+ ]
3878
+ },
3879
+ "audio": [
3880
+ {
3881
+ "source": "http://127.0.0.1:62139/media/teaching/original-tone-study.wav",
3882
+ "readyState": 4,
3883
+ "duration": 8,
3884
+ "paused": true
3885
+ }
3886
+ ],
3887
+ "captureGeometry": {
3888
+ "beforeCaptureHeight": 1180,
3889
+ "afterCaptureHeight": 1239,
3890
+ "finalCaptureHeight": 1239
3891
+ },
3892
+ "firstFocus": {
3893
+ "tag": "A",
3894
+ "text": "Skip to content",
3895
+ "outline": "solid",
3896
+ "width": "2px"
3897
+ },
3898
+ "disclosures": []
3899
+ },
3900
+ "visualReview": {
3901
+ "assessor": "assistant",
3902
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3903
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3904
+ "assessment": "All four full-page views inspected and latest stable-capture contact sheet re-inspected. Native audio desk/player window and guide have different chrome from other studies; narrow stacks player, guide, taskbar and complete teaching footer. Interior player precedes recording notes. Initial Chromium full-page capture changed document height and clipped the narrow home footer; two-capture stabilization now retains complete footer with geometry recorded. Native CUA desktop play and narrow interior play/pause exercised (2026-10-05T18:30:54.837Z, 18:31:30.723Z, 18:31:36.473Z); narrow pause returned paused true at 5.667883 seconds of 8. No audible-quality, seek or volume exercise claimed. Audio is original synthesized tone study; no third-party sample or broadcast."
3905
+ }
3906
+ },
3907
+ {
3908
+ "route": "/detail",
3909
+ "viewport": {
3910
+ "width": 1440,
3911
+ "height": 900
3912
+ },
3913
+ "capturedAt": "2026-10-05T18:45:33.102Z",
3914
+ "browser": "153.0.8010.12",
3915
+ "preview": {
3916
+ "path": "previews/dock-radio-interior-1440.png",
3917
+ "sha256": "cc55732e747b8a32e3d21d5933c9966de977a65e52af47e9ba2565f440bb4b52"
3918
+ },
3919
+ "compiledHash": "216def017e7b53500680c24867a2cd24629ce899e740356e9684b3cbbb7d7e2a",
3920
+ "automated": {
3921
+ "errors": [],
3922
+ "axeViolations": [],
3923
+ "metrics": {
3924
+ "overflow": false,
3925
+ "h1": 1,
3926
+ "brokenImages": [],
3927
+ "internalLinks": [
3928
+ "/",
3929
+ "/media/teaching/original-tone-study.wav",
3930
+ "/"
3931
+ ]
3932
+ },
3933
+ "audio": [
3934
+ {
3935
+ "source": "http://127.0.0.1:62139/media/teaching/original-tone-study.wav",
3936
+ "readyState": 4,
3937
+ "duration": 8,
3938
+ "paused": true
3939
+ }
3940
+ ],
3941
+ "captureGeometry": {
3942
+ "beforeCaptureHeight": 1626,
3943
+ "afterCaptureHeight": 1624,
3944
+ "finalCaptureHeight": 1624
3945
+ },
3946
+ "firstFocus": {
3947
+ "tag": "A",
3948
+ "text": "Skip to content",
3949
+ "outline": "solid",
3950
+ "width": "2px"
3951
+ },
3952
+ "disclosures": []
3953
+ },
3954
+ "visualReview": {
3955
+ "assessor": "assistant",
3956
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
3957
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
3958
+ "assessment": "All four full-page views inspected and latest stable-capture contact sheet re-inspected. Native audio desk/player window and guide have different chrome from other studies; narrow stacks player, guide, taskbar and complete teaching footer. Interior player precedes recording notes. Initial Chromium full-page capture changed document height and clipped the narrow home footer; two-capture stabilization now retains complete footer with geometry recorded. Native CUA desktop play and narrow interior play/pause exercised (2026-10-05T18:30:54.837Z, 18:31:30.723Z, 18:31:36.473Z); narrow pause returned paused true at 5.667883 seconds of 8. No audible-quality, seek or volume exercise claimed. Audio is original synthesized tone study; no third-party sample or broadcast."
3959
+ }
3960
+ },
3961
+ {
3962
+ "route": "/detail",
3963
+ "viewport": {
3964
+ "width": 390,
3965
+ "height": 844
3966
+ },
3967
+ "capturedAt": "2026-10-05T18:45:49.219Z",
3968
+ "browser": "153.0.8010.12",
3969
+ "preview": {
3970
+ "path": "previews/dock-radio-interior-390.png",
3971
+ "sha256": "ec6f7a5a0dddab2a3803204b893dd37944fbd285dacc76069cbb9ef98b13a410"
3972
+ },
3973
+ "compiledHash": "216def017e7b53500680c24867a2cd24629ce899e740356e9684b3cbbb7d7e2a",
3974
+ "automated": {
3975
+ "errors": [],
3976
+ "axeViolations": [],
3977
+ "metrics": {
3978
+ "overflow": false,
3979
+ "h1": 1,
3980
+ "brokenImages": [],
3981
+ "internalLinks": [
3982
+ "/",
3983
+ "/media/teaching/original-tone-study.wav",
3984
+ "/"
3985
+ ]
3986
+ },
3987
+ "audio": [
3988
+ {
3989
+ "source": "http://127.0.0.1:62139/media/teaching/original-tone-study.wav",
3990
+ "readyState": 4,
3991
+ "duration": 8,
3992
+ "paused": true
3993
+ }
3994
+ ],
3995
+ "captureGeometry": {
3996
+ "beforeCaptureHeight": 1424,
3997
+ "afterCaptureHeight": 1422,
3998
+ "finalCaptureHeight": 1422
3999
+ },
4000
+ "firstFocus": {
4001
+ "tag": "A",
4002
+ "text": "Skip to content",
4003
+ "outline": "solid",
4004
+ "width": "2px"
4005
+ },
4006
+ "disclosures": []
4007
+ },
4008
+ "visualReview": {
4009
+ "assessor": "assistant",
4010
+ "reviewedAt": "2026-10-05T18:47:03.298021+00:00",
4011
+ "scope": "desktop/mobile homepage/interior full-page contact-sheet review; batch comparison",
4012
+ "assessment": "All four full-page views inspected and latest stable-capture contact sheet re-inspected. Native audio desk/player window and guide have different chrome from other studies; narrow stacks player, guide, taskbar and complete teaching footer. Interior player precedes recording notes. Initial Chromium full-page capture changed document height and clipped the narrow home footer; two-capture stabilization now retains complete footer with geometry recorded. Native CUA desktop play and narrow interior play/pause exercised (2026-10-05T18:30:54.837Z, 18:31:30.723Z, 18:31:36.473Z); narrow pause returned paused true at 5.667883 seconds of 8. No audible-quality, seek or volume exercise claimed. Audio is original synthesized tone study; no third-party sample or broadcast."
4013
+ }
4014
+ }
4015
+ ]
4016
+ }
4017
+ ]
4018
+ }