@nurix/etna 0.19.10 → 0.19.12

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 (491) hide show
  1. package/data/harness-index.json +1 -1
  2. package/data/harnesses/code/harness.json +1 -1
  3. package/data/harnesses/code/rules/frontend.md +5 -5
  4. package/data/harnesses/code/skills/design/SKILL.md +70 -50
  5. package/data/harnesses/code/skills/design/components/charts.md +76 -0
  6. package/data/harnesses/code/skills/design/components/collections.md +132 -0
  7. package/data/harnesses/code/skills/design/components/feedback.md +47 -0
  8. package/data/harnesses/code/skills/design/components/hooks.md +35 -0
  9. package/data/harnesses/code/skills/design/components/index.md +143 -0
  10. package/data/harnesses/code/skills/design/components/inputs.md +327 -0
  11. package/data/harnesses/code/skills/design/components/layout.md +52 -0
  12. package/data/harnesses/code/skills/design/components/media.md +66 -0
  13. package/data/harnesses/code/skills/design/components/motion.md +82 -0
  14. package/data/harnesses/code/skills/design/components/navigation.md +29 -0
  15. package/data/harnesses/code/skills/design/components/overlays.md +72 -0
  16. package/data/harnesses/code/skills/design/components/setup.md +40 -0
  17. package/data/harnesses/code/skills/design/components/typography.md +46 -0
  18. package/data/harnesses/code/skills/design/components/utils.md +37 -0
  19. package/data/harnesses/code/skills/design/data/blueprints/browse.md +38 -0
  20. package/data/harnesses/code/skills/design/data/blueprints/creation-flow.md +38 -0
  21. package/data/harnesses/code/skills/design/data/blueprints/dashboard.md +38 -0
  22. package/data/harnesses/code/skills/design/data/blueprints/grid.md +38 -0
  23. package/data/harnesses/code/skills/design/data/blueprints/queue.md +38 -0
  24. package/data/harnesses/code/skills/design/data/blueprints/record-detail.md +38 -0
  25. package/data/harnesses/code/skills/design/data/blueprints/settings.md +38 -0
  26. package/data/harnesses/code/skills/design/data/chart-styling/Readme.md +33 -0
  27. package/data/harnesses/code/skills/design/data/chart-styling/carbon-accessible-alert-semantic.md +19 -0
  28. package/data/harnesses/code/skills/design/data/chart-styling/carbon-monochrome-sequential-trend.md +19 -0
  29. package/data/harnesses/code/skills/design/data/chart-styling/datadog-classic-six-aligned.md +19 -0
  30. package/data/harnesses/code/skills/design/data/chart-styling/datawrapper-tiered-gray-hierarchy.md +19 -0
  31. package/data/harnesses/code/skills/design/data/chart-styling/econ-red-rule-horizontal.md +19 -0
  32. package/data/harnesses/code/skills/design/data/chart-styling/financial-diverging-threshold-overlay.md +19 -0
  33. package/data/harnesses/code/skills/design/data/chart-styling/ft-vocabulary-ranked-muted.md +19 -0
  34. package/data/harnesses/code/skills/design/data/chart-styling/grafana-dark-threshold-bands.md +19 -0
  35. package/data/harnesses/code/skills/design/data/chart-styling/material-rounded-explicit-label.md +19 -0
  36. package/data/harnesses/code/skills/design/data/chart-styling/nyt-ghost-grid-direct-label.md +19 -0
  37. package/data/harnesses/code/skills/design/data/chart-styling/plot-currentcolor-inherit.md +19 -0
  38. package/data/harnesses/code/skills/design/data/chart-styling/saas-gradient-glow-area.md +19 -0
  39. package/data/harnesses/code/skills/design/data/chart-styling/shadcn-composable-css-vars.md +19 -0
  40. package/data/harnesses/code/skills/design/data/charts/census.csv +58 -0
  41. package/data/harnesses/code/skills/design/data/checklists/browse.md +21 -0
  42. package/data/harnesses/code/skills/design/data/checklists/creation-flow.md +20 -0
  43. package/data/harnesses/code/skills/design/data/checklists/dashboard.md +21 -0
  44. package/data/harnesses/code/skills/design/data/checklists/grid.md +21 -0
  45. package/data/harnesses/code/skills/design/data/checklists/queue.md +21 -0
  46. package/data/harnesses/code/skills/design/data/checklists/record-detail.md +21 -0
  47. package/data/harnesses/code/skills/design/data/checklists/settings.md +21 -0
  48. package/data/harnesses/code/skills/design/data/chrome/board-column.md +68 -0
  49. package/data/harnesses/code/skills/design/data/chrome/data-table.md +63 -0
  50. package/data/harnesses/code/skills/design/data/chrome/side-panel.md +60 -0
  51. package/data/harnesses/code/skills/design/data/chrome/sidebar.md +78 -0
  52. package/data/harnesses/code/skills/design/data/chrome/stat-cards.md +62 -0
  53. package/data/harnesses/code/skills/design/data/chrome/topbar.md +65 -0
  54. package/data/harnesses/code/skills/design/data/color/accent-presets.md +90 -0
  55. package/data/harnesses/code/skills/design/data/color/aesop-earth-mute.md +91 -0
  56. package/data/harnesses/code/skills/design/data/color/arc-peach-play.md +90 -0
  57. package/data/harnesses/code/skills/design/data/color/attio-hunter-teal.md +90 -0
  58. package/data/harnesses/code/skills/design/data/color/carbon-cyan-signal.md +90 -0
  59. package/data/harnesses/code/skills/design/data/color/clay-parchment.md +90 -0
  60. package/data/harnesses/code/skills/design/data/color/duolingo-feather.md +90 -0
  61. package/data/harnesses/code/skills/design/data/color/geist-mono-signal.md +90 -0
  62. package/data/harnesses/code/skills/design/data/color/linear-graphite-violet.md +90 -0
  63. package/data/harnesses/code/skills/design/data/color/mercury-onyx-cobalt.md +90 -0
  64. package/data/harnesses/code/skills/design/data/color/notion-paper-ink.md +90 -0
  65. package/data/harnesses/code/skills/design/data/color/radix-slate-iris.md +90 -0
  66. package/data/harnesses/code/skills/design/data/color/raycast-void-spectrum.md +90 -0
  67. package/data/harnesses/code/skills/design/data/color/spectrum-celery-fuchsia.md +90 -0
  68. package/data/harnesses/code/skills/design/data/color/stripe-blurple-ruby.md +90 -0
  69. package/data/harnesses/code/skills/design/data/color/superhuman-cod-picton.md +89 -0
  70. package/data/harnesses/code/skills/design/data/corpora/operations-review/companies.csv +15 -0
  71. package/data/harnesses/code/skills/design/data/corpora/operations-review/corpus.md +87 -0
  72. package/data/harnesses/code/skills/design/data/corpora/operations-review/people.csv +25 -0
  73. package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/companies.csv +15 -0
  74. package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/corpus.md +83 -0
  75. package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/people.csv +25 -0
  76. package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/companies.csv +15 -0
  77. package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/corpus.md +89 -0
  78. package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/people.csv +25 -0
  79. package/data/harnesses/code/skills/design/data/elevation/ant-design-directional-shadow.md +19 -0
  80. package/data/harnesses/code/skills/design/data/elevation/apple-liquid-glass-material.md +18 -0
  81. package/data/harnesses/code/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +20 -0
  82. package/data/harnesses/code/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +20 -0
  83. package/data/harnesses/code/skills/design/data/elevation/github-primer-sparing-shadow.md +19 -0
  84. package/data/harnesses/code/skills/design/data/elevation/ibm-carbon-layer-and-border.md +19 -0
  85. package/data/harnesses/code/skills/design/data/elevation/linear-dark-surface-ladder.md +17 -0
  86. package/data/harnesses/code/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +19 -0
  87. package/data/harnesses/code/skills/design/data/elevation/material-3-tonal-elevation.md +21 -0
  88. package/data/harnesses/code/skills/design/data/elevation/neobrutalist-hard-offset.md +19 -0
  89. package/data/harnesses/code/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +18 -0
  90. package/data/harnesses/code/skills/design/data/elevation/notion-warm-minimal-hairline.md +17 -0
  91. package/data/harnesses/code/skills/design/data/elevation/polaris-elevation-inset-bevel.md +21 -0
  92. package/data/harnesses/code/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +19 -0
  93. package/data/harnesses/code/skills/design/data/elevation/shadcn-neutral-derived-radius.md +19 -0
  94. package/data/harnesses/code/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +18 -0
  95. package/data/harnesses/code/skills/design/data/elevation/tailwind-default-utility-scale.md +19 -0
  96. package/data/harnesses/code/skills/design/data/elevation/vercel-geist-shadow-as-border.md +20 -0
  97. package/data/harnesses/code/skills/design/data/gradients/amber-attention-fill.md +16 -0
  98. package/data/harnesses/code/skills/design/data/gradients/cloud-shadow-wash.md +16 -0
  99. package/data/harnesses/code/skills/design/data/gradients/confident-lavender-wash.md +16 -0
  100. package/data/harnesses/code/skills/design/data/gradients/ember-ship-flare.md +18 -0
  101. package/data/harnesses/code/skills/design/data/gradients/full-metal-wash.md +16 -0
  102. package/data/harnesses/code/skills/design/data/gradients/indigo-ruby-cta-band.md +18 -0
  103. package/data/harnesses/code/skills/design/data/gradients/linear-graphite-wash.md +18 -0
  104. package/data/harnesses/code/skills/design/data/gradients/marble-quartz-wash.md +16 -0
  105. package/data/harnesses/code/skills/design/data/gradients/midnight-aurora-panel.md +16 -0
  106. package/data/harnesses/code/skills/design/data/gradients/neutral-volume-fill.md +16 -0
  107. package/data/harnesses/code/skills/design/data/gradients/revenue-uptrend-fill.md +16 -0
  108. package/data/harnesses/code/skills/design/data/gradients/risk-decline-fill.md +16 -0
  109. package/data/harnesses/code/skills/design/data/gradients/signal-blue-develop.md +18 -0
  110. package/data/harnesses/code/skills/design/data/gradients/slate-mist-wash.md +16 -0
  111. package/data/harnesses/code/skills/design/data/gradients/stripe-atmosphere-mesh.md +18 -0
  112. package/data/harnesses/code/skills/design/data/gradients/teal-signal-accent.md +16 -0
  113. package/data/harnesses/code/skills/design/data/gradients/violet-magenta-promo.md +16 -0
  114. package/data/harnesses/code/skills/design/data/iconography.md +199 -0
  115. package/data/harnesses/code/skills/design/data/motion/accordion-expand.md +18 -0
  116. package/data/harnesses/code/skills/design/data/motion/destructive-hold-confirm.md +18 -0
  117. package/data/harnesses/code/skills/design/data/motion/drag-dismiss-momentum.md +18 -0
  118. package/data/harnesses/code/skills/design/data/motion/empty-state-arrive.md +18 -0
  119. package/data/harnesses/code/skills/design/data/motion/hover-lift.md +18 -0
  120. package/data/harnesses/code/skills/design/data/motion/modal-center-arrive.md +18 -0
  121. package/data/harnesses/code/skills/design/data/motion/number-ticker-roll.md +18 -0
  122. package/data/harnesses/code/skills/design/data/motion/onboarding-bounce.md +18 -0
  123. package/data/harnesses/code/skills/design/data/motion/panel-slide.md +18 -0
  124. package/data/harnesses/code/skills/design/data/motion/press-feedback.md +18 -0
  125. package/data/harnesses/code/skills/design/data/motion/progress-linear-loop.md +18 -0
  126. package/data/harnesses/code/skills/design/data/motion/route-crossfade.md +18 -0
  127. package/data/harnesses/code/skills/design/data/motion/rubber-band-overscroll.md +18 -0
  128. package/data/harnesses/code/skills/design/data/motion/skeleton-shimmer.md +18 -0
  129. package/data/harnesses/code/skills/design/data/motion/stagger-arrive.md +18 -0
  130. package/data/harnesses/code/skills/design/data/motion/toast-enter-stack.md +18 -0
  131. package/data/harnesses/code/skills/design/data/motion/tooltip-chain-instant.md +18 -0
  132. package/data/harnesses/code/skills/design/data/motion/trigger-anchored-reveal.md +18 -0
  133. package/data/harnesses/code/skills/design/data/tells.csv +34 -0
  134. package/data/harnesses/code/skills/design/data/typography/anton-work-sans.md +17 -0
  135. package/data/harnesses/code/skills/design/data/typography/archivo-black-archivo.md +17 -0
  136. package/data/harnesses/code/skills/design/data/typography/bitter-karla.md +17 -0
  137. package/data/harnesses/code/skills/design/data/typography/dm-serif-dm-sans.md +17 -0
  138. package/data/harnesses/code/skills/design/data/typography/fraunces-inter.md +17 -0
  139. package/data/harnesses/code/skills/design/data/typography/geist-geist-mono.md +17 -0
  140. package/data/harnesses/code/skills/design/data/typography/hubot-sans-mona-sans.md +17 -0
  141. package/data/harnesses/code/skills/design/data/typography/ibm-plex-sans-operator-single-family.md +17 -0
  142. package/data/harnesses/code/skills/design/data/typography/instrument-serif-instrument-sans.md +17 -0
  143. package/data/harnesses/code/skills/design/data/typography/inter-operator-single-family.md +17 -0
  144. package/data/harnesses/code/skills/design/data/typography/libre-baskerville-libre-franklin.md +17 -0
  145. package/data/harnesses/code/skills/design/data/typography/newsreader-inter.md +17 -0
  146. package/data/harnesses/code/skills/design/data/typography/playfair-display-source-sans.md +17 -0
  147. package/data/harnesses/code/skills/design/data/typography/public-sans-operator-single-family.md +17 -0
  148. package/data/harnesses/code/skills/design/data/typography/sohne-inter-fintech.md +17 -0
  149. package/data/harnesses/code/skills/design/data/typography/source-serif-source-sans.md +17 -0
  150. package/data/harnesses/code/skills/design/data/typography/space-grotesk-work-sans-space-mono.md +17 -0
  151. package/data/harnesses/code/skills/design/data/typography/spectral-manrope.md +17 -0
  152. package/data/harnesses/code/skills/design/data/voices/bright-collaborator.md +29 -0
  153. package/data/harnesses/code/skills/design/data/voices/direct-operator.md +29 -0
  154. package/data/harnesses/code/skills/design/data/voices/earnest-helper.md +29 -0
  155. package/data/harnesses/code/skills/design/data/voices/editorial-composed.md +29 -0
  156. package/data/harnesses/code/skills/design/data/voices/quiet-concierge.md +29 -0
  157. package/data/harnesses/code/skills/design/data/voices/warm-guide.md +29 -0
  158. package/data/harnesses/code/skills/design/design-md/SCHEMA.md +179 -0
  159. package/data/harnesses/code/skills/design/design-md/index.csv +67 -0
  160. package/data/harnesses/code/skills/design/design-md/library/airbnb.md +207 -0
  161. package/data/harnesses/code/skills/design/design-md/library/airtable.md +205 -0
  162. package/data/harnesses/code/skills/design/design-md/library/anthropic-claude.md +203 -0
  163. package/data/harnesses/code/skills/design/design-md/library/apple.md +206 -0
  164. package/data/harnesses/code/skills/design/design-md/library/binance.md +210 -0
  165. package/data/harnesses/code/skills/design/design-md/library/bmw.md +210 -0
  166. package/data/harnesses/code/skills/design/design-md/library/cal.md +209 -0
  167. package/data/harnesses/code/skills/design/design-md/library/clay.md +204 -0
  168. package/data/harnesses/code/skills/design/design-md/library/clickhouse.md +205 -0
  169. package/data/harnesses/code/skills/design/design-md/library/cohere.md +205 -0
  170. package/data/harnesses/code/skills/design/design-md/library/coinbase.md +198 -0
  171. package/data/harnesses/code/skills/design/design-md/library/composio.md +198 -0
  172. package/data/harnesses/code/skills/design/design-md/library/cursor.md +197 -0
  173. package/data/harnesses/code/skills/design/design-md/library/elevenlabs.md +199 -0
  174. package/data/harnesses/code/skills/design/design-md/library/expo.md +200 -0
  175. package/data/harnesses/code/skills/design/design-md/library/figma.md +199 -0
  176. package/data/harnesses/code/skills/design/design-md/library/framer.md +202 -0
  177. package/data/harnesses/code/skills/design/design-md/library/hashicorp.md +205 -0
  178. package/data/harnesses/code/skills/design/design-md/library/ibm.md +205 -0
  179. package/data/harnesses/code/skills/design/design-md/library/intercom.md +204 -0
  180. package/data/harnesses/code/skills/design/design-md/library/kraken.md +200 -0
  181. package/data/harnesses/code/skills/design/design-md/library/linear-app.md +198 -0
  182. package/data/harnesses/code/skills/design/design-md/library/lovable.md +199 -0
  183. package/data/harnesses/code/skills/design/design-md/library/meta.md +204 -0
  184. package/data/harnesses/code/skills/design/design-md/library/minimax.md +204 -0
  185. package/data/harnesses/code/skills/design/design-md/library/mintlify.md +210 -0
  186. package/data/harnesses/code/skills/design/design-md/library/miro.md +209 -0
  187. package/data/harnesses/code/skills/design/design-md/library/mistral-ai.md +201 -0
  188. package/data/harnesses/code/skills/design/design-md/library/mongodb.md +201 -0
  189. package/data/harnesses/code/skills/design/design-md/library/notion.md +204 -0
  190. package/data/harnesses/code/skills/design/design-md/library/nvidia.md +215 -0
  191. package/data/harnesses/code/skills/design/design-md/library/ollama.md +213 -0
  192. package/data/harnesses/code/skills/design/design-md/library/opencode-ai.md +216 -0
  193. package/data/harnesses/code/skills/design/design-md/library/posthog.md +218 -0
  194. package/data/harnesses/code/skills/design/design-md/library/raycast.md +214 -0
  195. package/data/harnesses/code/skills/design/design-md/library/replicate.md +202 -0
  196. package/data/harnesses/code/skills/design/design-md/library/resend.md +203 -0
  197. package/data/harnesses/code/skills/design/design-md/library/revolut.md +203 -0
  198. package/data/harnesses/code/skills/design/design-md/library/runwayml.md +203 -0
  199. package/data/harnesses/code/skills/design/design-md/library/sanity.md +200 -0
  200. package/data/harnesses/code/skills/design/design-md/library/sentry.md +201 -0
  201. package/data/harnesses/code/skills/design/design-md/library/shopify.md +202 -0
  202. package/data/harnesses/code/skills/design/design-md/library/slack.md +202 -0
  203. package/data/harnesses/code/skills/design/design-md/library/spacex.md +206 -0
  204. package/data/harnesses/code/skills/design/design-md/library/spotify.md +206 -0
  205. package/data/harnesses/code/skills/design/design-md/library/stripe.md +196 -0
  206. package/data/harnesses/code/skills/design/design-md/library/supabase.md +196 -0
  207. package/data/harnesses/code/skills/design/design-md/library/superhuman.md +194 -0
  208. package/data/harnesses/code/skills/design/design-md/library/tesla.md +198 -0
  209. package/data/harnesses/code/skills/design/design-md/library/theverge.md +199 -0
  210. package/data/harnesses/code/skills/design/design-md/library/together-ai.md +193 -0
  211. package/data/harnesses/code/skills/design/design-md/library/uber.md +195 -0
  212. package/data/harnesses/code/skills/design/design-md/library/vercel.md +195 -0
  213. package/data/harnesses/code/skills/design/design-md/library/voltagent.md +197 -0
  214. package/data/harnesses/code/skills/design/design-md/library/warp.md +196 -0
  215. package/data/harnesses/code/skills/design/design-md/library/webflow.md +197 -0
  216. package/data/harnesses/code/skills/design/design-md/library/wired.md +197 -0
  217. package/data/harnesses/code/skills/design/design-md/library/wise.md +198 -0
  218. package/data/harnesses/code/skills/design/design-md/library/x-ai.md +199 -0
  219. package/data/harnesses/code/skills/design/design-md/library/zapier.md +198 -0
  220. package/data/harnesses/code/skills/design/design-md/nurix.md +214 -0
  221. package/data/harnesses/code/skills/design/design-md/variants/editorial-luxury.md +184 -0
  222. package/data/harnesses/code/skills/design/design-md/variants/expressive-saas.md +216 -0
  223. package/data/harnesses/code/skills/design/design-md/variants/quiet-premium.md +211 -0
  224. package/data/harnesses/code/skills/design/design-md/variants/terse-dense-operator.md +212 -0
  225. package/data/harnesses/code/skills/design/design-md/variants/warm-approachable.md +216 -0
  226. package/data/harnesses/code/skills/design/references/compose.md +23 -0
  227. package/data/harnesses/code/skills/design/references/content.md +28 -0
  228. package/data/harnesses/code/skills/design/references/emission.md +21 -0
  229. package/data/harnesses/code/skills/design/references/existing-apps.md +27 -0
  230. package/data/harnesses/code/skills/design/references/intake.md +36 -0
  231. package/data/harnesses/code/skills/design/references/object-pass.md +24 -0
  232. package/data/harnesses/code/skills/design/references/ship-gate.md +29 -0
  233. package/data/harnesses/code/skills/design/references/ux-patterns/Readme.md +195 -0
  234. package/data/harnesses/code/skills/design/references/ux-patterns/ai-layer.md +49 -0
  235. package/data/harnesses/code/skills/design/references/ux-patterns/attributes-lifecycle.md +43 -0
  236. package/data/harnesses/code/skills/design/references/ux-patterns/container-choice.md +44 -0
  237. package/data/harnesses/code/skills/design/references/ux-patterns/creation-paths.md +46 -0
  238. package/data/harnesses/code/skills/design/references/ux-patterns/dashboards.md +42 -0
  239. package/data/harnesses/code/skills/design/references/ux-patterns/modes.md +42 -0
  240. package/data/harnesses/code/skills/design/references/ux-patterns/object-model.md +46 -0
  241. package/data/harnesses/code/skills/design/references/ux-patterns/page-archetype.md +48 -0
  242. package/data/harnesses/code/skills/design/references/ux-patterns/promotion-demotion.md +37 -0
  243. package/data/harnesses/code/skills/design/references/ux-patterns/settings.md +42 -0
  244. package/data/harnesses/code/skills/design/references/ux-patterns/standard-pages.md +46 -0
  245. package/data/harnesses/code/skills/design/references/ux-patterns/state-matrix.md +41 -0
  246. package/data/harnesses/code/skills/design/references/ux-patterns/table-mechanics.md +48 -0
  247. package/data/harnesses/code/skills/design/references/ux-patterns/verbs.md +45 -0
  248. package/data/harnesses/code/skills/design/references/ux-patterns/viewer-context.md +40 -0
  249. package/data/harnesses/code/skills/design/scripts/README-validator.md +27 -0
  250. package/data/harnesses/code/skills/design/scripts/select-chart.mjs +596 -0
  251. package/data/harnesses/code/skills/design/scripts/validate-design-md.mjs +1198 -0
  252. package/data/harnesses/discussion/CLAUDE.md +1 -1
  253. package/data/harnesses/discussion/agents/discussion-baseline.md +27 -2
  254. package/data/harnesses/discussion/harness.json +2 -2
  255. package/data/harnesses/discussion/rules/artifacts.md +2 -0
  256. package/data/harnesses/discussion/rules/method.md +5 -1
  257. package/package.json +1 -1
  258. package/data/harnesses/code/skills/design/data/catalog/rules.csv +0 -137
  259. package/data/harnesses/code/skills/design/data/combinations/Readme.md +0 -33
  260. package/data/harnesses/code/skills/design/data/combinations/accent-presets.md +0 -113
  261. package/data/harnesses/code/skills/design/data/combinations/charts.csv +0 -33
  262. package/data/harnesses/code/skills/design/data/combinations/fonts-known.json +0 -448
  263. package/data/harnesses/code/skills/design/data/combinations/icons.csv +0 -157
  264. package/data/harnesses/code/skills/design/data/combinations/landing.csv +0 -38
  265. package/data/harnesses/code/skills/design/data/combinations/lucide-names.json +0 -2001
  266. package/data/harnesses/code/skills/design/data/combinations/manifest.json +0 -330
  267. package/data/harnesses/code/skills/design/data/combinations/motion.csv +0 -10
  268. package/data/harnesses/code/skills/design/data/combinations/palettes.csv +0 -92
  269. package/data/harnesses/code/skills/design/data/combinations/product-router.csv +0 -80
  270. package/data/harnesses/code/skills/design/data/combinations/styles.csv +0 -67
  271. package/data/harnesses/code/skills/design/data/combinations/typography.csv +0 -64
  272. package/data/harnesses/code/skills/design/data/design-md/SCHEMA.md +0 -106
  273. package/data/harnesses/code/skills/design/data/design-md/library/airbnb.md +0 -154
  274. package/data/harnesses/code/skills/design/data/design-md/library/airtable.md +0 -151
  275. package/data/harnesses/code/skills/design/data/design-md/library/anthropic-claude.md +0 -139
  276. package/data/harnesses/code/skills/design/data/design-md/library/apple.md +0 -139
  277. package/data/harnesses/code/skills/design/data/design-md/library/binance.md +0 -140
  278. package/data/harnesses/code/skills/design/data/design-md/library/bmw.md +0 -140
  279. package/data/harnesses/code/skills/design/data/design-md/library/cal.md +0 -140
  280. package/data/harnesses/code/skills/design/data/design-md/library/clay.md +0 -139
  281. package/data/harnesses/code/skills/design/data/design-md/library/clickhouse.md +0 -139
  282. package/data/harnesses/code/skills/design/data/design-md/library/cohere.md +0 -147
  283. package/data/harnesses/code/skills/design/data/design-md/library/coinbase.md +0 -156
  284. package/data/harnesses/code/skills/design/data/design-md/library/composio.md +0 -138
  285. package/data/harnesses/code/skills/design/data/design-md/library/cursor.md +0 -138
  286. package/data/harnesses/code/skills/design/data/design-md/library/elevenlabs.md +0 -137
  287. package/data/harnesses/code/skills/design/data/design-md/library/expo.md +0 -148
  288. package/data/harnesses/code/skills/design/data/design-md/library/figma.md +0 -141
  289. package/data/harnesses/code/skills/design/data/design-md/library/framer.md +0 -156
  290. package/data/harnesses/code/skills/design/data/design-md/library/hashicorp.md +0 -140
  291. package/data/harnesses/code/skills/design/data/design-md/library/ibm.md +0 -153
  292. package/data/harnesses/code/skills/design/data/design-md/library/intercom.md +0 -158
  293. package/data/harnesses/code/skills/design/data/design-md/library/kraken.md +0 -156
  294. package/data/harnesses/code/skills/design/data/design-md/library/linear-app.md +0 -122
  295. package/data/harnesses/code/skills/design/data/design-md/library/lovable.md +0 -140
  296. package/data/harnesses/code/skills/design/data/design-md/library/meta.md +0 -139
  297. package/data/harnesses/code/skills/design/data/design-md/library/minimax.md +0 -139
  298. package/data/harnesses/code/skills/design/data/design-md/library/mintlify.md +0 -139
  299. package/data/harnesses/code/skills/design/data/design-md/library/miro.md +0 -153
  300. package/data/harnesses/code/skills/design/data/design-md/library/mistral-ai.md +0 -140
  301. package/data/harnesses/code/skills/design/data/design-md/library/mongodb.md +0 -155
  302. package/data/harnesses/code/skills/design/data/design-md/library/notion.md +0 -140
  303. package/data/harnesses/code/skills/design/data/design-md/library/nvidia.md +0 -141
  304. package/data/harnesses/code/skills/design/data/design-md/library/ollama.md +0 -145
  305. package/data/harnesses/code/skills/design/data/design-md/library/opencode-ai.md +0 -142
  306. package/data/harnesses/code/skills/design/data/design-md/library/posthog.md +0 -152
  307. package/data/harnesses/code/skills/design/data/design-md/library/raycast.md +0 -137
  308. package/data/harnesses/code/skills/design/data/design-md/library/replicate.md +0 -140
  309. package/data/harnesses/code/skills/design/data/design-md/library/resend.md +0 -170
  310. package/data/harnesses/code/skills/design/data/design-md/library/revolut.md +0 -145
  311. package/data/harnesses/code/skills/design/data/design-md/library/runwayml.md +0 -137
  312. package/data/harnesses/code/skills/design/data/design-md/library/sanity.md +0 -168
  313. package/data/harnesses/code/skills/design/data/design-md/library/sentry.md +0 -163
  314. package/data/harnesses/code/skills/design/data/design-md/library/shopify.md +0 -147
  315. package/data/harnesses/code/skills/design/data/design-md/library/slack.md +0 -158
  316. package/data/harnesses/code/skills/design/data/design-md/library/spacex.md +0 -171
  317. package/data/harnesses/code/skills/design/data/design-md/library/spotify.md +0 -166
  318. package/data/harnesses/code/skills/design/data/design-md/library/stripe.md +0 -160
  319. package/data/harnesses/code/skills/design/data/design-md/library/supabase.md +0 -173
  320. package/data/harnesses/code/skills/design/data/design-md/library/superhuman.md +0 -145
  321. package/data/harnesses/code/skills/design/data/design-md/library/tesla.md +0 -153
  322. package/data/harnesses/code/skills/design/data/design-md/library/theverge.md +0 -167
  323. package/data/harnesses/code/skills/design/data/design-md/library/together-ai.md +0 -140
  324. package/data/harnesses/code/skills/design/data/design-md/library/uber.md +0 -140
  325. package/data/harnesses/code/skills/design/data/design-md/library/vercel.md +0 -140
  326. package/data/harnesses/code/skills/design/data/design-md/library/voltagent.md +0 -130
  327. package/data/harnesses/code/skills/design/data/design-md/library/warp.md +0 -140
  328. package/data/harnesses/code/skills/design/data/design-md/library/webflow.md +0 -140
  329. package/data/harnesses/code/skills/design/data/design-md/library/wired.md +0 -139
  330. package/data/harnesses/code/skills/design/data/design-md/library/wise.md +0 -137
  331. package/data/harnesses/code/skills/design/data/design-md/library/x-ai.md +0 -138
  332. package/data/harnesses/code/skills/design/data/design-md/library/zapier.md +0 -158
  333. package/data/harnesses/code/skills/design/data/design-md/nurix.md +0 -138
  334. package/data/harnesses/code/skills/design/data/design-tokens/SCHEMA.md +0 -695
  335. package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.resolver.json +0 -20
  336. package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.tokens.json +0 -1272
  337. package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.resolver.json +0 -20
  338. package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.tokens.json +0 -1268
  339. package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.resolver.json +0 -20
  340. package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.tokens.json +0 -1273
  341. package/data/harnesses/code/skills/design/data/design-tokens/apple/design.resolver.json +0 -20
  342. package/data/harnesses/code/skills/design/data/design-tokens/apple/design.tokens.json +0 -1262
  343. package/data/harnesses/code/skills/design/data/design-tokens/binance/design.resolver.json +0 -20
  344. package/data/harnesses/code/skills/design/data/design-tokens/binance/design.tokens.json +0 -1257
  345. package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.resolver.json +0 -20
  346. package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.tokens.json +0 -1270
  347. package/data/harnesses/code/skills/design/data/design-tokens/cal/design.resolver.json +0 -20
  348. package/data/harnesses/code/skills/design/data/design-tokens/cal/design.tokens.json +0 -1270
  349. package/data/harnesses/code/skills/design/data/design-tokens/clay/design.resolver.json +0 -20
  350. package/data/harnesses/code/skills/design/data/design-tokens/clay/design.tokens.json +0 -1261
  351. package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.resolver.json +0 -20
  352. package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.tokens.json +0 -1268
  353. package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.resolver.json +0 -20
  354. package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.tokens.json +0 -1281
  355. package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.resolver.json +0 -20
  356. package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.tokens.json +0 -1262
  357. package/data/harnesses/code/skills/design/data/design-tokens/composio/design.resolver.json +0 -20
  358. package/data/harnesses/code/skills/design/data/design-tokens/composio/design.tokens.json +0 -1271
  359. package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.resolver.json +0 -20
  360. package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.tokens.json +0 -1276
  361. package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.resolver.json +0 -20
  362. package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.tokens.json +0 -1293
  363. package/data/harnesses/code/skills/design/data/design-tokens/expo/design.resolver.json +0 -20
  364. package/data/harnesses/code/skills/design/data/design-tokens/expo/design.tokens.json +0 -1270
  365. package/data/harnesses/code/skills/design/data/design-tokens/figma/design.resolver.json +0 -20
  366. package/data/harnesses/code/skills/design/data/design-tokens/figma/design.tokens.json +0 -1276
  367. package/data/harnesses/code/skills/design/data/design-tokens/framer/design.resolver.json +0 -20
  368. package/data/harnesses/code/skills/design/data/design-tokens/framer/design.tokens.json +0 -1267
  369. package/data/harnesses/code/skills/design/data/design-tokens/goldens.json +0 -251
  370. package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.resolver.json +0 -20
  371. package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.tokens.json +0 -1273
  372. package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.resolver.json +0 -20
  373. package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.tokens.json +0 -1286
  374. package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.resolver.json +0 -20
  375. package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.tokens.json +0 -1290
  376. package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.resolver.json +0 -20
  377. package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.tokens.json +0 -1270
  378. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.resolver.json +0 -23
  379. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.dark.json +0 -599
  380. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.json +0 -1272
  381. package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.resolver.json +0 -20
  382. package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.tokens.json +0 -1267
  383. package/data/harnesses/code/skills/design/data/design-tokens/meta/design.resolver.json +0 -20
  384. package/data/harnesses/code/skills/design/data/design-tokens/meta/design.tokens.json +0 -1289
  385. package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.resolver.json +0 -20
  386. package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.tokens.json +0 -1258
  387. package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.resolver.json +0 -20
  388. package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.tokens.json +0 -1284
  389. package/data/harnesses/code/skills/design/data/design-tokens/miro/design.resolver.json +0 -20
  390. package/data/harnesses/code/skills/design/data/design-tokens/miro/design.tokens.json +0 -1291
  391. package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.resolver.json +0 -20
  392. package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.tokens.json +0 -1263
  393. package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.resolver.json +0 -20
  394. package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.tokens.json +0 -1270
  395. package/data/harnesses/code/skills/design/data/design-tokens/notion/design.resolver.json +0 -20
  396. package/data/harnesses/code/skills/design/data/design-tokens/notion/design.tokens.json +0 -1261
  397. package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.resolver.json +0 -20
  398. package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.tokens.json +0 -1209
  399. package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.resolver.json +0 -20
  400. package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.tokens.json +0 -1265
  401. package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.resolver.json +0 -20
  402. package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.tokens.json +0 -1253
  403. package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.resolver.json +0 -20
  404. package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.tokens.json +0 -1268
  405. package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.resolver.json +0 -20
  406. package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.tokens.json +0 -1261
  407. package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.resolver.json +0 -20
  408. package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.tokens.json +0 -1263
  409. package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.resolver.json +0 -20
  410. package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.tokens.json +0 -1266
  411. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.resolver.json +0 -23
  412. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.dark.json +0 -623
  413. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.json +0 -1276
  414. package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.resolver.json +0 -20
  415. package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.tokens.json +0 -1264
  416. package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.resolver.json +0 -20
  417. package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.tokens.json +0 -1268
  418. package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.resolver.json +0 -20
  419. package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.tokens.json +0 -1270
  420. package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.resolver.json +0 -20
  421. package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.tokens.json +0 -1288
  422. package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.resolver.json +0 -20
  423. package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.tokens.json +0 -1272
  424. package/data/harnesses/code/skills/design/data/design-tokens/slack/design.resolver.json +0 -20
  425. package/data/harnesses/code/skills/design/data/design-tokens/slack/design.tokens.json +0 -1265
  426. package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.resolver.json +0 -20
  427. package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.tokens.json +0 -1287
  428. package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.resolver.json +0 -20
  429. package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.tokens.json +0 -1286
  430. package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.resolver.json +0 -20
  431. package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.tokens.json +0 -1285
  432. package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.resolver.json +0 -20
  433. package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.tokens.json +0 -1287
  434. package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.resolver.json +0 -20
  435. package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.tokens.json +0 -1278
  436. package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.resolver.json +0 -20
  437. package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.tokens.json +0 -1269
  438. package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.resolver.json +0 -20
  439. package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.tokens.json +0 -1285
  440. package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.resolver.json +0 -20
  441. package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.tokens.json +0 -1303
  442. package/data/harnesses/code/skills/design/data/design-tokens/uber/design.resolver.json +0 -20
  443. package/data/harnesses/code/skills/design/data/design-tokens/uber/design.tokens.json +0 -1274
  444. package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.resolver.json +0 -20
  445. package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.tokens.json +0 -1296
  446. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.resolver.json +0 -23
  447. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.dark.json +0 -612
  448. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.json +0 -1282
  449. package/data/harnesses/code/skills/design/data/design-tokens/warp/design.resolver.json +0 -20
  450. package/data/harnesses/code/skills/design/data/design-tokens/warp/design.tokens.json +0 -1287
  451. package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.resolver.json +0 -20
  452. package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.tokens.json +0 -1268
  453. package/data/harnesses/code/skills/design/data/design-tokens/wired/design.resolver.json +0 -20
  454. package/data/harnesses/code/skills/design/data/design-tokens/wired/design.tokens.json +0 -1276
  455. package/data/harnesses/code/skills/design/data/design-tokens/wise/design.resolver.json +0 -20
  456. package/data/harnesses/code/skills/design/data/design-tokens/wise/design.tokens.json +0 -1273
  457. package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.resolver.json +0 -20
  458. package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.tokens.json +0 -1296
  459. package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.resolver.json +0 -20
  460. package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.tokens.json +0 -1286
  461. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/command-center.tsx +0 -249
  462. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/create-edit.tsx +0 -249
  463. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/dashboard.tsx +0 -225
  464. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/entity-detail.tsx +0 -249
  465. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/list-detail.tsx +0 -224
  466. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/log-stream.tsx +0 -249
  467. package/data/harnesses/code/skills/design/data/operator-pack/fixtures.md +0 -88
  468. package/data/harnesses/code/skills/design/data/operator-pack/surface-catalog.md +0 -132
  469. package/data/harnesses/code/skills/design/data/operator-pack/trust-rubric.md +0 -76
  470. package/data/harnesses/code/skills/design/references/create.md +0 -173
  471. package/data/harnesses/code/skills/design/references/diagnosis.md +0 -108
  472. package/data/harnesses/code/skills/design/references/hard-rules.md +0 -177
  473. package/data/harnesses/code/skills/design/references/improve.md +0 -116
  474. package/data/harnesses/code/skills/design/references/interaction.md +0 -77
  475. package/data/harnesses/code/skills/design/references/introspect.md +0 -100
  476. package/data/harnesses/code/skills/design/references/lifecycle.md +0 -73
  477. package/data/harnesses/code/skills/design/references/personality.md +0 -575
  478. package/data/harnesses/code/skills/design/references/structure.md +0 -159
  479. package/data/harnesses/code/skills/design/scripts/convert-design-md.mjs +0 -1312
  480. package/data/harnesses/code/skills/design/scripts/derive-personality.mjs +0 -1498
  481. package/data/harnesses/code/skills/design/scripts/generate-fixtures.mjs +0 -551
  482. package/data/harnesses/code/skills/design/scripts/lib/checks.mjs +0 -1092
  483. package/data/harnesses/code/skills/design/scripts/lib/golden.mjs +0 -26
  484. package/data/harnesses/code/skills/design/scripts/lib/vocabulary.mjs +0 -65
  485. package/data/harnesses/code/skills/design/scripts/phase-gate.mjs +0 -538
  486. package/data/harnesses/code/skills/design/scripts/preship-sweep.mjs +0 -312
  487. package/data/harnesses/code/skills/design/scripts/render-rung.mjs +0 -890
  488. package/data/harnesses/code/skills/design/scripts/scaffold.mjs +0 -769
  489. package/data/harnesses/code/skills/design/scripts/self-integrity.mjs +0 -675
  490. package/data/harnesses/code/skills/design/scripts/snapshot-goldens.mjs +0 -164
  491. package/data/harnesses/code/skills/design/scripts/validate-combinations.mjs +0 -439
@@ -1,132 +0,0 @@
1
- # Surface catalog
2
-
3
- The closed set of six operator surface archetypes. Structure derivation (D28) runs the object pass, then assigns every surface in the entity/surface map an archetype from this catalog — mechanically, by applying the choosing rules below to the map's facts: entities, attributes, cardinalities, relationships, lifecycle states, the operator's unit of work, and the core loop. The pass is never skipped; a small brief earns a small pass, never a guessed archetype. Navigation derives from the object model, never decorated onto it.
4
-
5
- Each entry carries five things: **choosing rules** (the object shapes, cardinalities, and lifecycle signals that select it), a **density modifier** (one relative step on the global tier), **composition** (the parts the surface holds and their arrangement, plus the lifecycle states that matter most here), a **navigation slot**, and an **exemplar pointer**.
6
-
7
- **Density.** The global tier — spacious · standard · dense — resolves at look time from the token artifact's payload / product-type traits (D31) and rewrites the spacing scale through the density primitive and the D6 `--spacing` remap. Each archetype then applies a single relative step on that tier: one step looser, at tier, or one step denser. Steps clamp at the scale ends (spacious … standard … dense) and never name an absolute value — an absolute override is banned (D31). Structure derivation records the relative step in each surface's `density-modifier` as a signed integer (positive = denser, `+1` / `0` / `-1`); the scaffold emits it as `data-density-step="tighter"` (+1) or `data-density-step="looser"` (-1), no attribute at 0. Modifiers compose with the behavioral dials (D4), never replace them.
8
-
9
- **Exemplars load just-in-time.** Every entry points at one token-pure compiling exemplar under `data/operator-pack/exemplars/<slug>.tsx`. The exemplar is read at that archetype's emission phase gate during the surfaces phase (D23) — emitting a surface of archetype X without exemplar X in context is a gate violation (D20). Exemplars are never boot-loaded.
10
-
11
- ---
12
-
13
- ## list-detail
14
-
15
- **Choosing rules.** Selects when all hold:
16
- - The surface's primary object is one homogeneous collection — many instances of a single entity type (cardinality: N rows of one entity).
17
- - Each row carries a workable per-row action or lifecycle transition (assign, resolve, approve, retry) — the operator acts row by row.
18
- - The unit of work is one row (one ticket, one case, one device); the core loop is scan → select → act.
19
- - Detail is a projection of one selected row, not a standalone destination.
20
-
21
- This is the default archetype for the operator's primary entity — the queue shape. Distinguish from entity-detail: if a row's attribute count and relationship fan-out overflow a side panel and the entity is inspected/configured over time, that entity earns its own entity-detail route instead.
22
-
23
- **Density modifier.** At tier — the reference archetype. The global tier is calibrated on the operator's primary table, so list-detail runs at it unmodified.
24
-
25
- **Composition.** Toolbar (search, filters, bulk actions, column/view picker) + a virtualized table + a side-panel detail. Detail opens **beside** the table, never in a modal (floor f03). Bounded visible columns (rest behind the picker), right-aligned numerics in tabular figures (floor f04), sticky header, bounded pagination ("1–25 of 150") over infinite scroll, virtualization at ≥50 rows. Keyboard-first (floor f06): roving tabindex, arrow/j-k row travel, Enter opens the panel, shortcuts for the frequent verbs. Lifecycle states that matter most: **empty** (first-run vs filtered-to-nothing kept distinct), **loading** (skeleton rows mirroring the table, not a centered spinner), **partial/degraded** (stale rows marked honestly), and the per-row action's post-action state with optimistic-update-then-rollback.
26
-
27
- **Navigation.** A top-level nav item per primary entity collection — the queues and tables the operator lives in; the default landing for that entity. Detail is not a nav item; it is a panel state on the list route.
28
-
29
- **Exemplar.** `data/operator-pack/exemplars/list-detail.tsx` — JIT at the emission gate, never boot (D20).
30
-
31
- ---
32
-
33
- ## dashboard
34
-
35
- **Choosing rules.** Selects when all hold:
36
- - A read-mostly aggregate view over many entities or many metrics — the surface answers "how are things," not "act on this row."
37
- - Its content is derived (counts, rates, trends, distributions), presented as instances of one Metric object — never minted as N first-class entities (the instances-mistaken-for-objects trap; guard it in the object pass).
38
- - No per-row lifecycle action is the primary job; drill-down links out to a list-detail or entity-detail.
39
- - The core loop is glance → notice → drill.
40
-
41
- Selects on an overview / home / summary brief. Distinguish from command-center: a dashboard is read-mostly and glanceable; a command-center adds live streams and cross-entity intervention under time pressure.
42
-
43
- **Density modifier.** One step looser — a dashboard is a glanceable aggregate; KPI cards and charts need whitespace to separate and read at a glance, not row-scan density.
44
-
45
- **Composition.** A KPI / StatCard row at the top (≤4 primary metrics visible without scrolling — answer a few questions well, not many badly) + a small number of self-contained chart/panel tiles below, each a single question with a drill link. Hierarchy from spacing, not borders. Tabular figures on every KPI number (floor f04); charts read `--chart-1..5`; color is never the only signal. Lifecycle states that matter most: **loading** (per-card skeletons, never one page spinner), **partial/degraded** (a downed source names *which* panel is stale — "can't get data" is distinct from "no data"), **empty** (new-tenant zero-state that teaches the surface's value).
46
-
47
- **Navigation.** The home/overview landing — typically the app root or the first nav item. It is a hub that links out; never a leaf. Its panels' drill targets are the list-detail and entity-detail routes.
48
-
49
- **Exemplar.** `data/operator-pack/exemplars/dashboard.tsx` — JIT at the emission gate, never boot (D20).
50
-
51
- ---
52
-
53
- ## entity-detail
54
-
55
- **Choosing rules.** Selects when all hold:
56
- - The subject is a single rich entity with many attributes and outgoing relationships (1 entity : M related collections) that the operator inspects and configures over its life.
57
- - The entity's data and actions belong together on one surface — splitting them across screens is the broken-object failure; keep the object whole.
58
- - The temporal probe flagged the entity as long-lived, edited in place, with history that matters.
59
- - Its attribute count and relationship fan-out exceed what a list-detail side panel holds.
60
-
61
- Distinguish from list-detail: list-detail's detail is a lightweight row projection; entity-detail is a destination the operator returns to.
62
-
63
- **Density modifier.** At tier — it mixes dense read views (related lists, activity) with edit forms, so it sits at the global tier: neither a scan surface nor a pure form.
64
-
65
- **Composition.** Header (entity identity, status, primary actions) + a tab bar (overview / related collections / activity-history) + tabbed content. Related lists render as compact list-details inline; editing happens in place or opens the create-edit stepper beside the work (floor f03). Lifecycle states that matter most: **loading** (skeleton mirroring the header + tab shell), **error** (entity-not-found / load-failure with a recovery path, never a dead end), the edit **save states** (saving / saved / conflict — the concurrent-edit path from the temporal probe), and per-tab **empty** states.
66
-
67
- **Navigation.** Not a top-level nav item — reached by drilling from its list-detail (row → entity route), a dashboard, or a command-center link. Route nests under the entity's collection (`/entities/:id`); its tabs are in-surface sub-nav, never top-level entries.
68
-
69
- **Exemplar.** `data/operator-pack/exemplars/entity-detail.tsx` — JIT at the emission gate, never boot (D20).
70
-
71
- ---
72
-
73
- ## create-edit
74
-
75
- **Choosing rules.** Selects when all hold:
76
- - The surface's job is to mint a new instance or transition one through a multi-field or multi-step change.
77
- - The lifecycle signal is a **create** (the entity's birth) or a **staged edit** (a governed mutation), not scanning or reading.
78
- - The change is too large or field-heavy to complete inline in a list-detail panel.
79
-
80
- Create mirrors edit — the same field set and order; templates prefill. Distinguish from entity-detail: entity-detail is where an entity *lives*; create-edit is a focused, dismissible task that returns the operator to where it began.
81
-
82
- **Density modifier.** One step looser — forms need field breathing room and comfortable target sizes; loosening cuts entry error on a surface where mistakes are costly.
83
-
84
- **Composition.** A side-stepper opened **beside** the originating surface (floor f03), or a full form route for long creates. Labels above inputs; errors inline below the field, validated on blur; never placeholder-as-label. Logical field order preserved; one primary CTA bottom-right; primary targets ≥44px. Preview-then-commit for irreversible creates. Lifecycle states that matter most: **validation** (inline, on blur — diagnose → explain → recover), **submitting** (button loading, double-submit disabled), **server-error** (non-dead-end, entered values preserved), **success** (confirmation plus the next step).
85
-
86
- **Navigation.** Never a top-level nav item — invoked from a list-detail toolbar ("New") or an entity-detail action, and it returns to that surface on complete. A create route may exist (`/entities/new`) but is entered from the collection, not from the nav.
87
-
88
- **Exemplar.** `data/operator-pack/exemplars/create-edit.tsx` — JIT at the emission gate, never boot (D20).
89
-
90
- ---
91
-
92
- ## log-stream
93
-
94
- **Choosing rules.** Selects when all hold:
95
- - The primary object is an append-only, time-ordered event or record stream (monotonic; newest-first or tail-following).
96
- - Cardinality is unbounded and growing; rows are read, filtered, and searched — not acted on individually (no per-row lifecycle action).
97
- - Events are immutable once written; the temporal axis is the spine.
98
-
99
- Selects on a log / event / audit / activity-feed entity — high volume, time-keyed, read + filter. Distinguish from list-detail: list-detail rows carry a workable action and a lifecycle; log-stream lines are frozen history.
100
-
101
- **Density modifier.** One step denser — the value of the surface is lines-on-screen; tighten to maximize visible history under one glance.
102
-
103
- **Composition.** Filter/search bar + a follow/tail toggle (live vs paused) + a virtualized monospace line list, with inline expansion of a selected line (expand in place, not a modal). Tabular timestamps and IDs (floor f04), level-coded severity via status tokens with a second non-color cue, hairline dividers, minimal chrome. Lifecycle states that matter most: **streaming/live** (new lines announced via `aria-live` without stealing focus), **empty** (no events yet vs filtered-to-nothing, kept distinct), **error** (stream disconnected shows reconnecting, never a dead spinner), **partial/degraded** (dropped or truncated buffer marked honestly).
104
-
105
- **Navigation.** A top-level nav item when logs/audit/activity is a primary operator surface; otherwise a tab inside the owning entity-detail (that entity's activity/history). Time-keyed, so deep-links carry a timestamp or anchor.
106
-
107
- **Exemplar.** `data/operator-pack/exemplars/log-stream.tsx` — JIT at the emission gate, never boot (D20).
108
-
109
- ---
110
-
111
- ## command-center
112
-
113
- **Choosing rules.** Selects when all hold:
114
- - A real-time, multi-pane monitoring surface composes several live entities or streams under one view.
115
- - The operator acts under time pressure; the core loop is monitor → detect → intervene, across multiple entities at once.
116
- - The unit of work spans entities, not one row — it fuses aggregate signals (dashboard-like) with live streams (log-stream-like) and quick cross-entity actions.
117
-
118
- Reserved for genuine live-ops briefs (NOC, incident console, dispatch, ops bridge). Distinguish from dashboard: a dashboard is read-mostly and drills out; a command-center is live and acts in place. Never assign it to decorate an ordinary dashboard.
119
-
120
- **Density modifier.** One step denser — the most information-rich archetype; the operator needs maximum live signal simultaneously visible.
121
-
122
- **Composition.** A fixed multi-pane grid: a status/health header + several independently refreshing panels (aggregate tiles, a live stream pane, an alert/queue pane, quick-action controls), composed under one non-scrolling view where the viewport allows. Each pane refreshes on its own; keyboard reach spans panes; irreversible interventions are consent-gated with preview. Lifecycle states that matter most: **per-panel loading and partial/degraded** (each pane fails independently and says so — a command-center that hides a dead feed is dangerous), **live update**, **error**, and the alert/action **post-action** with undo.
123
-
124
- **Navigation.** The app root or first nav item for a live-ops tool where monitoring is the job — the operator's home, aggregating routes that also exist standalone. Rare; only for genuine live-ops briefs.
125
-
126
- **Exemplar.** `data/operator-pack/exemplars/command-center.tsx` — JIT at the emission gate, never boot (D20).
127
-
128
- ---
129
-
130
- ## Extension
131
-
132
- The catalog is closed at six. A seventh archetype is never added by prose, by a reference edit, or by improvisation at run time. Membership extends **only as operator-pack data**, and only by a ledger-recorded decision (D28) — the new entry carrying its own choosing rules, density modifier, composition, navigation slot, and exemplar, and the exemplar passing the full machine catalog and personality-invariance validation before it ships (D20). Structure derivation assigns from these six; a brief that fits none is surfaced to the operator, never force-fit into the nearest archetype.
@@ -1,76 +0,0 @@
1
- # AI-surface trust rubric
2
-
3
- Judged diagnosis dimensions for any operator surface that shows AI-originated content or takes AI-initiated actions. Four dimensions, anchors `trust-01`..`trust-04`. The rubric grades what a surface already does with AI. Absence of `trust-01`, `trust-02`, or `trust-03` grades **auto-critical** — no exception, no waiver.
4
-
5
- ## When it fires
6
-
7
- Runs inside improve and introspect sweeps, on every surface whose composition holds AI-originated content (drafts, summaries, enrichments, scores, suggestions) or AI-initiated actions (auto-triage, auto-close, agent send / delete / charge). A surface with no AI content skips it. A copilot panel, an agent console, an enrichment column, an auto-triage queue all trip it.
8
-
9
- ## Scope: audit only
10
-
11
- This rubric grades AI surfaces; it does not carry the generative patterns for building them. Streaming / generating states, confidence display, preview-then-apply, undo semantics for agent actions, the copilot-panel archetype — none are authored here. That pattern set enters the operator pack as a recorded addition when its trigger fires (the first embedded-copilot brief, or Nurix's own agent-console needs); `docs/history/backlog.md` holds the trigger. Until then the rubric audits, from day one, whatever other means produced the AI surface.
12
-
13
- ## The four dimensions
14
-
15
- ### trust-01 — AI presence is disclosed
16
-
17
- **Demands.** Every AI-originated element carries a marker at its point of consumption — a badge, a label, a distinct visual treatment — legible before an operator acts on it. Disclosure also signals *how far to trust*: where the model emits a confidence, a source, or a known-unreliable class, the surface shows it. This folds the accuracy / confidence axis into disclosure — an AI badge sitting over a low-confidence guess presented as fact still fails, because the operator cannot tell the value is soft.
18
-
19
- **Passes.** An AI-drafted reply in a support queue sits under an "AI draft" chip with a muted card treatment, distinct from a teammate's message. An enrichment-filled CRM field shows an "auto-filled" marker and its source. A model summary is captioned "AI-generated" and carries a confidence band when the model is unsure.
20
-
21
- **Fails.** An AI-drafted reply rendered visually indistinguishable from a human draft. A model-derived "priority" score in a column with no sign it is generated. A low-confidence extraction shown as a plain, authoritative value.
22
-
23
- **Judge.** For each AI element on the surface: could a first-time operator, glancing, tell it apart from human or authoritative content — and does the surface tell them how much to trust it?
24
-
25
- **Grade.** Absence auto-critical.
26
-
27
- ### trust-02 — A human override path is visible
28
-
29
- **Demands.** Wherever the AI decides or acts, the operator can override, correct, or reject it — per item, on the surface where the decision shows, and keyboard-reachable. A global off-switch is not an override path.
30
-
31
- **Passes.** An auto-triage queue gives every item a visible "reassign" and "revert". An AI-suggested value offers inline "accept / edit / dismiss". An auto-close agent exposes per-ticket "reopen" and "stop auto-closing this".
32
-
33
- **Fails.** An auto-triage rule with no per-item revert. An AI-set status field that is read-only in the UI. A settings-only "disable AI" toggle with no per-decision correction on the surface itself.
34
-
35
- **Judge.** At each point the AI acted, is there a countermand affordance, reachable where the decision appears (not buried in settings) and by keyboard?
36
-
37
- **Grade.** Absence auto-critical.
38
-
39
- ### trust-03 — AI-initiated irreversible actions are consent-gated with preview
40
-
41
- **Demands.** Any AI-initiated action that is destructive or irreversible — send, delete, charge, publish, external side-effect — stops before executing, shows a preview of exactly what it will do, and waits for explicit human consent. It is never auto-fired. A reversible AI action needs trust-02's override, not necessarily a preview gate.
42
-
43
- **Passes.** An outreach agent stops at a preview of the exact recipients and body, gated on a send click. A bulk-remediation agent shows the diff of the 40 records it will touch and waits for confirm. A refund-capable AI presents amount, account, and reason behind an explicit confirm.
44
-
45
- **Fails.** An agent that sends the drafted reply the instant it is generated. An auto-remediation that deletes flagged rows on a timer with no preview step. A "resolve all" action that fires irreversible external calls without showing what it will touch.
46
-
47
- **Judge.** Enumerate the AI-initiated actions on the surface; for each irreversible one, is there a concrete preview of the effect and an explicit consent step before execution?
48
-
49
- **Grade.** Absence auto-critical.
50
-
51
- ### trust-04 — AI actions are auditable
52
-
53
- **Demands.** AI-taken actions leave a durable, operator-inspectable trail — what acted, when, on what, and on what basis — visible in the UI, not only in backend logs. Attribution distinguishes AI from human.
54
-
55
- **Passes.** Each AI-modified record carries an activity entry: "auto-triaged by <agent> at <time>, rule <x>". A command center runs an AI-actions feed with timestamps and revert links. An entity's audit tab lists model actions beside human ones with provenance.
56
-
57
- **Fails.** An AI that mutates records with no history entry. Actions attributed generically to "system", indistinguishable from a human edit. An auto-close leaving no timestamped, attributable trace.
58
-
59
- **Judge.** For the AI actions on this surface, can an operator reconstruct after the fact what the AI did, when, and on what basis, from the UI itself?
60
-
61
- **Grade.** Absence is a finding, severity by judgment — critical or major by the blast radius and reversibility of the actions. It never auto-grades; only trust-01..03 do.
62
-
63
- ## Writing the finding
64
-
65
- Trust findings are judged findings on the canonical schema — peers of machine findings, consumed directly by improve, rendered per reader register by introspect, and carried unchanged into the dated findings report and the decay ledger.
66
-
67
- - **provenance** — the trust anchor (`trust-01`..`trust-04`), marked judged. This is the load-bearing tag; anchor parity between this rubric and the finding's provenance is enforced.
68
- - **dimension** — the AI-surface trust dimension the rubric adds. Where the canonical dimension slot wants a taxonomy code, disclosure copy reads under B5 Content & Copy and the override / consent / audit affordances under B1 Interactive States; the provenance stays the trust anchor either way.
69
- - **cause layer** — a trust failure is felt in Perception (the operator cannot tell, cannot control, cannot audit) but its cause is almost always Structure (a missing marker or affordance) or Behavior (an ungated action, an absent trail). Name the causal layer, per the causes-first walk.
70
- - **evidence** — the `file:line` of the AI element and what it renders or does.
71
- - **before → after** — descriptive, not numeric, because the rubric is judged: the failing state → the affordance that fixes it. E.g. `AI draft renders identically to human messages → AI draft carries a disclosure chip and a muted treatment`.
72
- - **consequence** — the trust harm: automation bias, a silent irreversible action, an uncorrectable error, an unauditable mutation.
73
- - **tier** — within-levers when the fix is an affordance the surface can already express (a chip, a confirm dialog, an activity entry); lever-change when the fix needs a generative pattern the pack does not yet carry (route it to the backlogged pattern set, and report it, never freehand it).
74
- - **severity** — trust-01..03 absence is auto-critical; trust-04 absence is critical or major by judgment; a present-but-weak dimension grades major or minor.
75
-
76
- **Presence-shaped machine facets.** Where a facet holds with zero legitimate exceptions — an AI-marked element must carry its disclosure attribute, a consent dialog must trap focus — it is registered as a machine rule in the catalog and fires at its own point. This rubric is the judged layer the machine cannot reach: whether the marker is *legible*, whether the preview shows the *right* effect, whether the trail is *reconstructable* are judgments, and they stay here.
@@ -1,173 +0,0 @@
1
- # Create — the gated phase spine
2
-
3
- Create is the only workflow where taste is *made*: personality synthesis, structure derivation, emission. It runs **six gated phases** — intake, structure, scaffold, tokens, fixtures, surfaces — and closes on a **verification ladder**. Each of the six is closed by a phase gate: `phase-gate.mjs <phase>` validates that phase's exit preconditions, exits non-zero printing the exact fix, and **the next phase does not open until the gate is green**. Improve and introspect operate on UIs that already exist — see [improve.md](./improve.md) and [introspect.md](./introspect.md).
4
-
5
- | Phase | Gate (must pass to open the next) | Produces |
6
- | --- | --- | --- |
7
- | intake | `phase-gate.mjs intake` | confirmed intent digest; resolved design-tokens artifact at project root |
8
- | structure | `phase-gate.mjs structure` | `docs/design/structure.md` — the entity/surface map |
9
- | scaffold | `phase-gate.mjs scaffold` | project shell: routes, nav, state-shells, fixture wiring |
10
- | tokens | `phase-gate.mjs tokens` | `personality.css` + `globals.css`, full token surface |
11
- | fixtures | `phase-gate.mjs fixtures` | seeded fixture modules in `src/fixtures/` |
12
- | surfaces | `phase-gate.mjs surfaces` | composed surfaces, every lifecycle state filled |
13
- | verification | the ladder (below) | a compiled, swept, rendered app |
14
-
15
- The gate closing each phase runs the D21 rule classes decidable at that boundary — per-surface structural rules (states presence, token coverage, exemplar-in-context). A gate never waives: it prints the exact fix and the run resolves it before proceeding.
16
-
17
- ## intake
18
-
19
- **Purpose.** Recognize the brief, decide pack coverage, extract intent, resolve the look — its direction, its source, and its delight ceiling.
20
- **In → out.** the brief · the design.md library · `data/combinations/product-router.csv` (+ `typography.csv` · `palettes.csv` · `styles.csv` when the look is authored fresh) · `docs/design/taste.yml` → a confirmed intent digest carrying the look block · a design-tokens artifact at project root (`design.tokens.json` + `design.resolver.json` — the look + lever manifest).
21
- **Work.** Front gate: a project-declared identity (product-type traits) wins; otherwise the signal checklist (audience is employees / agents / analysts; the metric is task throughput, not conversion; the surfaces are queues / tables / forms / monitors), with `data/combinations/product-router.csv` — loaded at every intake — as the recognition assist and the digest's density/archetype priors. Build a structured intent digest — entity list, archetype guesses, density tier, substrate, **and the mandatory look block** (below) — every inference marked as inferred, present it once for confirmation, and ask only strategic unknowns whose answers change the design. Fold look-relevant brief language into the taste profile (below) as you read it. Resolve the look through the precedence spine — **project > library (on match) > seed composition > default**, never applied unrecorded (Resolution, below): the project's own artifact wins; a library entry or a fresh seed composition is proposed-and-confirmed (interactive) or resolved-and-recorded (autonomous); `default` — the Nurix look — resolves only when the brief explicitly asks for it. When the look resolves to authoring a fresh artifact — not a library copy, not the default — load `typography.csv`, `palettes.csv`, and `styles.csv` before composing it; the consumption contract is [combinations/Readme.md](../data/combinations/Readme.md). Materialize the resolved artifact at project root against [SCHEMA.md](../data/design-tokens/SCHEMA.md) — the look block in its payload, and for a recorded resolution the resolution record in the artifact root `$description`.
22
- **Gate — `phase-gate.mjs intake`.** The digest is confirmed and a schema-valid token artifact exists at project root, carrying a well-formed **look block** — presence, the theme / delight / resolution-mode enums, 2–3 named anchors, the resolution shape, and (for a recorded resolution) the resolution record in the artifact root `$description`. A brief no pack covers is refused here — cleanly, with a redirect — never derived.
23
- **Avoid.**
24
- - Deriving on silently inferred facts instead of presenting the digest for one confirmation.
25
- - Blanket-interviewing when the brief already declares its identity — ask only strategic unknowns.
26
- - Attempting a marketing / storefront / mobile-native brief instead of refusing on pack coverage.
27
- - Authoring a fresh look without `typography.csv` / `palettes.csv` / `styles.csv` in context — a gate violation.
28
- - Filling `anchors` with adjectives instead of 2–3 named products — the gate rejects it; convert them first.
29
- - Applying a resolution unrecorded — an autonomous pick writes its record into the artifact root `$description`, or the gate fails.
30
-
31
- ### The look block
32
-
33
- The intent digest carries a mandatory **look block**, filled at intake beside the entity / archetype / density fields:
34
-
35
- ```yaml
36
- look:
37
- theme: light | dark | both # binding when the brief states it; default light
38
- anchors: ["Linear", "Stripe Dashboard"] # 2–3 NAMED real products; adjectives are not anchors
39
- delight: baseline | expressive # the global delight ceiling; per-surface budgets refine it
40
- resolution: project | library:<slug> | seed:<style-row>+<palette-row> | default
41
- resolution-mode: confirmed | recorded # how the resolution was authorized (below)
42
- ```
43
-
44
- - **`theme` is binding.** A brief-stated theme writes the payload's `theme-default`, the resolver's default context, and scaffold's `<html data-theme>`; `both` ships light-boot with a working toggle, `dark` ships dark-boot. Default light when the brief is silent.
45
- - **`anchors` are named products, required.** Two or three real products pin the gestalt at the direction moment — unnamed ambition drifts to beige, and ~10 tokens of product names carry what a thousand adjective-words cannot. Adjectives are not anchors: convert an adjective to its nearest named products by **asking** (interactive) or **inferring-and-recording** (autonomous) through the [design.md library](../data/design-md/library/)'s resemblance lookup, then record the named products. Anchors land in the payload so improve and `judge` critique against the same targets the run aimed at.
46
- - **Anchors work twice.** At resolution they drive the resemblance lookup; at the surfaces phase the anchor products' design.md entries JIT-load so composition leans toward the anchor's gestalt — composition is anchor-*steered*, not exemplar-cloned.
47
-
48
- ### Resolution — propose-and-record
49
-
50
- The precedence spine serves both session modes and is **never applied unrecorded**.
51
-
52
- - **Interactive** (a confirmer is present): propose-confirm — the resolved source is proposed from resemblance and applied only on confirmation, never silently.
53
- - **Autonomous** (the digest's one confirmation round goes unanswered, or the brief forbids questions): resolve the best match, set `resolution-mode: recorded`, and write the **resolution record** into the artifact root `$description` — the winner, the runner-up, and the deciding evidence. For example: `resolution: library:stripe (recorded; runner-up palettes.csv#3; brief phrase "Stripe-dashboard territory" matched product + fintech traits)`. The record is auditable and reversible — an improve run can be pointed at the runner-up by consent. Nothing is silent; nothing dead-ends.
54
-
55
- **Selection is brief-keyed, never mood-keyed.** Route before judging: extract the brief's traits (domain, product type, tone words) → filter `product-router.csv` by product type and theme → a 2–3-row shortlist enters context with its `mood` prose → pick, the record naming the runner-up. Same brief → same shortlist; different domains → different pools — divergence by construction, not by model mood. `default` resolves only when the brief explicitly asks for the Nurix look; a look-less brief always composes from seeds through this routing. The taste profile biases the pick once it has content.
56
-
57
- **Seed composition partitions, never contests.** A fresh artifact composes from the routed rows by domain: the **palette** row contributes color, the **typography** row type, the **style** row treatment (`css-recipe` + `tokens-hint` + the non-token `voice`). Out-of-domain content in a row — a style row's color suggestion — is advisory prose for the composer, never a value source, so no two seeds can contest the same value. The composer closes with a deliberate **best-fit harmony pass**: do the palette, type, and treatment read as one hand, for *this* user — the taste profile is in context? Harmony is judged, not mechanical; no link exists between the dimension tables.
58
-
59
- ## structure
60
-
61
- **Purpose.** Derive the app's structure from its domain objects — never guess it.
62
- **In → out.** the confirmed intent digest → `docs/design/structure.md` with its fenced `yaml structure` block.
63
- **Work.** The object pass: entities, attributes, relationships, cardinalities, lifecycle states; the operator's unit of work and core loop. The **temporal probe runs inside the pass** — intermediate states, read-model lag, deletion semantics, history, failure paths — because they are model facts, not later polish. Then assign each surface an archetype from the closed six-catalog (`list-detail`, `dashboard`, `entity-detail`, `create-edit`, `log-stream`, `command-center`) with its density modifier — see [surface-catalog.md](../data/operator-pack/surface-catalog.md). The pass also classifies **every surface with a mandatory delight `budget`** (`baseline` / `brand-forward`) — permission is structural, decided here; defaults by archetype, overridable against a recorded reason — see [structure.md](./structure.md) (the delight budget). `scaffold.mjs` stamps the budget into each route file and `phase-gate.mjs surfaces` reads it back. Navigation derives from the object model; it is never decorated onto it. The OOUX failure vocabulary (Shapeshifter / Masked / Broken / Isolated) is the judged diagnostic — see [structure.md](./structure.md).
64
- **Gate — `phase-gate.mjs structure`.** The map parses; every surface carries an archetype from the catalog; the `temporal` block is present. `scaffold.mjs` consumes this block, so its shape is validated here.
65
- **Avoid.**
66
- - Skipping the object pass on a small brief — a small brief earns a proportionally small pass, never a skipped one; the skip is the characteristic failure.
67
- - Decorating navigation onto the UI instead of deriving it from the object model.
68
- - Omitting the temporal probe — intermediate states and failure paths are model facts, not afterthoughts.
69
- - Inventing an archetype outside the closed six.
70
- - Leaving a surface's delight budget to chance — classify every surface, and record the reason whenever a stamp overrides its archetype's default (caught at the surfaces gate).
71
-
72
- ## scaffold
73
-
74
- **Purpose.** Generate the non-creative substrate from the map — the model never freehands it.
75
- **In → out.** `docs/design/structure.md` → the wired project shell.
76
- **Work.** `scaffold.mjs docs/design/structure.md --out <project>` emits `index.html` (carrying the `<html>` data attributes), `src/main.tsx`, `src/App.tsx` (react-router-dom), route and navigation wiring per surface, per-surface state-shell stubs (loading / empty / error / degraded shells wired but unfilled), and fixture wiring — under `src/routes/<surface>/`, `src/components/<feature>/`, `src/types/`. These files are **generated**; the preservation contract forbids hand-editing them.
77
- **Gate — `phase-gate.mjs scaffold`.** The shell exists, routes and nav match the map, every surface has its state-shells, and the `globals.css` import order is correct.
78
- **Avoid.**
79
- - Freehanding the route or navigation wiring the generator owns.
80
- - Hand-editing a generated file after `scaffold.mjs` writes it — generated files are never written into.
81
- - Getting the `globals.css` import order wrong — the cascade contract is in [personality.md](./personality.md).
82
-
83
- ## tokens
84
-
85
- **Purpose.** Emit the complete token surface from the resolved artifact.
86
- **In → out.** the design-tokens artifact → `src/styles/personality.css` + `src/styles/globals.css`.
87
- **Work.** Derivation is hybrid: deterministic where the artifact states a value, judgment-with-recorded-rationale for gaps (a resolved hint records its rationale in the token's `$description`). Before any typography hint is resolved, `data/combinations/typography.csv` is in context; before any color hint, `palettes.csv` **and `accent-presets.md`** — the routed-consult contract. The look's theme filters the consult: a `dark` look narrows the palette pool to dark-capable rows (`theme` column `dark` / `both`), and composing a dark look from a light-only row is off-table and needs a recorded reason. The taste profile sits in context beside the rows, biasing the pick. The table is the floor for the resolution, and an off-table pairing or palette is allowed only with its stated reason recorded in the token's `$description`. The **coverage gate** `derive-personality.mjs <project-dir> --check` fails — exit non-zero, naming the missing paths — if any of the 26 visual primitives, the 2 behavioral dials, or the emission tokens is unassigned and un-hinted. Only once it is green does `derive-personality.mjs <project-dir> --emit <project-dir>` write both files (into `<project-dir>/src/styles/`), defining the full surface — 27 primitives, 17 semantic tokens, and the 17 substrate tokens no consumable value is left to fall back to gray on — and hardening both cascade contracts (selector specificity, import order) with explanatory comments. See [personality.md](./personality.md).
88
- **Gate — `phase-gate.mjs tokens`.** The coverage gate passed and both files carry the full token surface with the cascade-contract comments intact.
89
- **Avoid.**
90
- - Emitting before the coverage gate passes.
91
- - Leaving any of the 17 substrate tokens to fall back to shadcn-gray defaults.
92
- - Hardcoding a literal color, spacing, or radius instead of routing through a token.
93
- - Dropping the cascade-contract comments from the emitted CSS.
94
- - Resolving a typography or color hint without its combination table in context, or going off-table without the reason in the token's `$description`.
95
-
96
- ## fixtures
97
-
98
- **Purpose.** Produce the taste-bearing data every surface renders — before any surface exists.
99
- **In → out.** `docs/design/structure.md` → `src/fixtures/*.ts`.
100
- **Work.** `generate-fixtures.mjs docs/design/structure.md --seed <n> --out src/fixtures/` writes seeded, domain-shaped fixture modules: realistic volumes (queues in the hundreds), long strings, unhappy values, degraded payloads, and empty / error cases — see [fixtures.md](../data/operator-pack/fixtures.md). A fixed seed makes every run reproducible.
101
-
102
- > **Fixture-before-surface.** Fixtures are generated before any surface is composed because realistic seeded data is taste-bearing design material — the density, overflow, and state thresholds are only bindable against real volumes, long strings, and unhappy values.
103
-
104
- **Gate — `phase-gate.mjs fixtures`.** Seeded modules exist for every entity, cover the unhappy and empty / error cases, and no surface file has yet been written.
105
- **Avoid.**
106
- - Lorem-ipsum data or unseeded randomness.
107
- - Composing a surface before its data exists.
108
- - Happy-path-only rows — no volumes, long strings, degraded payloads, or empty / error cases.
109
-
110
- ## surfaces
111
-
112
- **Purpose.** Compose each surface per its archetype, filling the pre-created shells.
113
- **In → out.** the state-shells · the fixtures · the emitted tokens · the archetype exemplar → composed `src/routes/<surface>/` surfaces, every state present.
114
- **Work.** For each surface, compose in the `@nurix/components` idiom (imported by subpath) against the resolved tokens — the look comes entirely from the cascade, never from literals. Fill every lifecycle state into its pre-created shell; states are composed with the surface, not bolted on after. AI-bearing surfaces clear the [trust rubric](../data/operator-pack/trust-rubric.md); microcopy follows the error and empty-state formulas in [lifecycle.md](./lifecycle.md); keyboard and focus discipline follow [interaction.md](./interaction.md).
115
-
116
- > **The budget is a grant, not only a ban.** Read each surface's stamped delight budget ([structure.md](./structure.md), the delight budget) as permission, not just a ceiling: a brand-forward dashboard *uses* the display step on its focal metric, an elevation lift on its hero card, an arrival stagger on its rows — a page of uniform 14px text ignores its budget. A baseline surface withholds ornament, never signal. The budget grants which vocabulary a surface may consume; the floor holds identically at every budget.
117
-
118
- > **Just-in-time exemplar.** Each archetype's token-pure exemplar ([exemplars/](../data/operator-pack/exemplars/)) loads just-in-time at that archetype's emission gate — never at boot — because imitation proximity is highest when the exemplar sits in context at the moment of composition. Composing a surface of archetype X without exemplar X in context is a **gate violation**. Imitate the composition; the look comes from the project's personality.
119
-
120
- > **Just-in-time combination tables.** `data/combinations/charts.csv` loads at the emission gate of any surface that composes a chart; `icons.csv` loads once, at the first surface-composition gate — icon picks happen throughout. Each table is the floor for its picks: an off-table chart type or icon is allowed only with its stated reason in a code comment adjacent to the deviating pick. An unrecorded off-table pick is a **gate violation**. Contract: [combinations/Readme.md](../data/combinations/Readme.md).
121
-
122
- **Gate — `phase-gate.mjs surfaces`.** For each surface the archetype exemplar was in context, all lifecycle states are filled, and the per-surface structural rules pass (states presence, token coverage).
123
- **Avoid.**
124
- - Composing archetype X without exemplar X in context — a gate violation.
125
- - Composing a chart or picking an icon without its combination table in context — a gate violation.
126
- - Writing states as an afterthought instead of into the pre-created shells.
127
- - Emitting a look disjoint from the resolved personality — literals or off-scale values instead of the cascade.
128
- - Modals where side panels belong; a workflow a pointer alone can complete (floor f03 / f06).
129
-
130
- ## verification
131
-
132
- **Purpose.** Prove the app compiles and clears the ladder.
133
- **In → out.** the composed app → a verified app; any findings routed through the same fix-or-classify loop.
134
- **Gate.** The verification ladder below — rung 0 is never skipped. Findings surface as the [canonical finding](./diagnosis.md) and resolve before ship.
135
-
136
- ---
137
-
138
- ## The taste profile — the standing input
139
-
140
- A **project taste profile** rides with the consumer project at `docs/design/taste.yml` (beside the judge reports) — per-dimension summaries of the user's expressed taste (`overall`, `typography`, `color`, `density`, `motion`, `dark`), each a short `feel` line plus an `avoid` line. It is **intent, never values**: the token artifact stays the only value transport; the profile biases picks, it never sets them. It is YAML because the file is human-facing intent — prose summaries plus an explanatory header comment.
141
-
142
- - **Captured** at intake (look-relevant brief language folds in) and whenever the user reacts to shipped output — an accepted or rejected finding, an improve consent round, a "too showy". The relevant item updates or a new one lands; provenance folds into the prose ("asked twice for tighter headings"), never into machine fields.
143
- - **Consumed** at resolution (it biases the shortlist pick; the resolution record cites the taste items that drove it) and at the color / type moment (in context beside the seed rows). `judge` critiques against it as a fixed referent.
144
- - **Reset** serves a deliberate style switch: an explicit flow re-asks the taste questions dimension by dimension and rewrites the items in place. The file is never deleted — switching styles is a re-interview, never a silent fall back to no-profile behavior.
145
- - **Fail-open.** A missing or malformed `taste.yml` degrades to no-profile behavior with a one-line notice — never a crash, never a block. The profile is a bias; a bias that cannot be read cleanly is simply not applied.
146
-
147
- ## The preservation contract
148
-
149
- Two disciplines protect what must never silently change.
150
-
151
- **The fixed never-silently-changed list** — identical across every project, never negotiated:
152
-
153
- - route slugs
154
- - navigation labels
155
- - form-field names and order
156
- - analytics / event identifiers
157
- - API / data-contract shapes
158
- - generated files (never written into — the is-generated guard)
159
-
160
- Changing any of these requires it to be the *named subject* of a finding; they are never collateral edits. Per-project preservation extensions, if ever needed, are entries in the project's token artifact payload — data, not config machinery.
161
-
162
- **Diff-scope discipline.** An improve run edits only the files its findings name; a run that touches a file outside its findings fails. Create writes the whole app — the discipline governs improve. See [improve.md](./improve.md).
163
-
164
- ## The verification ladder
165
-
166
- | Rung | What | When |
167
- | --- | --- | --- |
168
- | 0 | Compile. | Always — never skipped. |
169
- | 1 | Static whole-app checks — `preship-sweep.mjs`: the full catalog over all files, plus the mandatory procedures (viewport sweep at 375 / 768 / 1024 / 1440, copy self-audit, scope cross-check against the brief). | Every run. |
170
- | 2 | Deterministic render rung — `render-rung.mjs`: key surfaces rendered headlessly, re-running the catalog's render-only rules (real overflow at the four viewports, effective and pixel-measured contrast, rendered token drift, actual target geometry, and the `cod-12` runtime perf budgets LCP < 2.5s and CLS < 0.1 collected via `PerformanceObserver`; INP and frame time need the interactive rung); findings through the same fix-or-classify loop. | By default when a headless browser is importable; degrades to a one-line notice otherwise. |
171
- | 3 | Interactive dev-server / browser audit of the user's own environment. | Consent-gated — asked for, never assumed. |
172
-
173
- Model-judged screenshot self-critique is **not a rung** — no machine verdict rests on the model's own read of a screenshot. Pixel instruments (`inst-*`) supply evidence *inside* judged findings, never verdicts.
@@ -1,108 +0,0 @@
1
- # Diagnosis — the shared engine
2
-
3
- > The one engine that turns a UI into findings. [improve.md](improve.md) runs it to decide what to change; [introspect.md](introspect.md) runs it to explain why a UI isn't working. Both get the same findings — improve applies them, introspect renders them per reader register. Diagnosis owns the finding format; the consumers own what they do with it.
4
-
5
- Reads the rule catalog ([../data/catalog/rules.csv](../data/catalog/rules.csv)) and the AI-surface trust rubric ([../data/operator-pack/trust-rubric.md](../data/operator-pack/trust-rubric.md)). Emits a severity-ranked list of canonical findings, consumed by improve, introspect, the dated findings report, and the decay ledger — one schema across all four.
6
-
7
- ## The dimension taxonomy
8
-
9
- Every finding names a dimension. The set is the sixteen dimensions across three meta-layers — **Perception** (what the operator sees), **Structure** (how it's built), **Behavior** (how it responds).
10
-
11
- Perception — P1 Typography (font, scale, weight, rhythm, loading) · P2 Color (palette, contrast, neutrals, saturation) · P3 Spatial (spacing scale, grid, whitespace, rhythm) · P4 Depth & Elevation (shadow scale, z-index, layering) · P5 Visual Hierarchy (emphasis, de-emphasis, the squint test) · P6 Iconography & Imagery (icon sets, stroke, image treatment) · P7 Aesthetic Identity (personality, tone, anti-slop, consistency).
12
-
13
- Structure — S1 Semantic Markup (elements, heading hierarchy, ARIA, landmarks) · S2 Component Architecture (composition, reuse, isolation, typed props) · S3 Design Tokens (semantic vs literal, two-layer naming, theming) · S4 Performance (GPU-safe animation, bundle, lazy load, CLS).
14
-
15
- Behavior — B1 Interactive States (default/hover/focus/active/disabled/loading/empty/error) · B2 Motion & Animation (timing, easing, stagger, reduced-motion) · B3 Responsive Adaptation (breakpoints, targets, viewport units, input method) · B4 Navigation & Wayfinding (nav patterns, back behavior, deep links, modals) · B5 Content & Copy (microcopy, errors, empty states, labels, terminology).
16
-
17
- ## Causes-first: the walk order
18
-
19
- Diagnosis walks the meta-layers **Structure → Behavior → Perception** — causes before symptoms. Badness is felt in Perception (the table looks noisy, the page feels heavy), but its cause almost always lives one layer down, in Structure or Behavior. Walking causes-first means a Perception symptom is diagnosed to its root and reported once, at the cause — never patched as a cluster of surface edits that leave the root standing.
20
-
21
- Two orderings, do not confuse them. The **walk** is causes-first (analysis order). The **delivered list** is severity-ranked (below). [introspect.md](introspect.md) narrates each finding the other way — from the felt symptom down to the cause — because that is how a reader understands it; the diagnosis underneath is the same.
22
-
23
- ## The canonical finding
24
-
25
- Eight fields, fixed. Every finding carries all eight, machine or judged.
26
-
27
- - **dimension** — which of the sixteen. Names *what* is wrong.
28
- - **cause layer** — Structure, Behavior, or Perception. Names *where the fix lives* — the meta-layer of the root, which often differs from the dimension's own layer (a felt Perception problem rooted in a Structure fact).
29
- - **evidence** — the anchor in the code: `file:line`, a token name, or a measured value; for a rendered-evidence finding (a `judge` run — [improve.md](improve.md)), a screenshot path + the region within it (`shots/1440.png · header row, right cluster`). Never a vibe.
30
- - **before → after** — the current state → the corrected state. Numeric where machine-backed (a value → its threshold); a concrete, measurable state change where judged. Never "make it cleaner."
31
- - **consequence** — what it costs the operator: lost throughput, eroded trust, an unreadable figure, an irreversible mistake.
32
- - **tier** — `within-levers` (fixable inside the current lever manifest) or `lever-change` (needs a manifest change). The [improve.md](improve.md) jail reads this.
33
- - **severity** — auto-critical → critical → major → minor. A rank, never a number.
34
- - **provenance** — a catalog anchor id for a machine finding (e.g. `spc-01`), or the judged dimension / trust anchor for a judged one. This is the only field that says how the finding was established.
35
-
36
- ### Worked example
37
-
38
- - **dimension** · P3 Spatial **cause layer** · Structure (the value bypasses the declared spacing scale — a token-discipline failure, not a raw sizing choice)
39
- - **evidence** · `src/routes/queue/QueueToolbar.tsx:34` — `className="px-[15px]"`
40
- - **before → after** · `15px` (off-scale) → `16px` (the nearest step on the manifest's 4/8 scale)
41
- - **consequence** · a one-off gutter that breaks the toolbar's rhythm against the 16px-gridded rows beside it; proximity stops encoding structure
42
- - **tier** · within-levers (16px is already in the manifest's spacing scale)
43
- - **severity** · minor
44
- - **provenance** · `spc-01` (machine, source-detected)
45
-
46
- That is a machine finding with a numeric before→after. For a judged finding worked three ways see [introspect.md](introspect.md); for judged trust findings see [trust-rubric.md](../data/operator-pack/trust-rubric.md).
47
-
48
- ## Machine and judged findings are peers
49
-
50
- There is no primary source and no secondary source. Machine and judged findings share the schema, sort into one severity-ranked list, and feed every consumer identically. Only **provenance** distinguishes them:
51
-
52
- - A **machine** finding's provenance is its catalog anchor id. The id resolves in [rules.csv](../data/catalog/rules.csv) to the rule statement, its numbers, and its source tags (WCAG, HIG, `imp`, `stitch`, `axe`, `volt/<product>`, …). Its before→after is the offending value against the rule's threshold.
53
- - A **judged** finding's provenance is the judged dimension — a taxonomy code, or a trust anchor (`trust-01`..`trust-04`) — with `detector=none` in the catalog. Its before→after is a concrete state change, measurable in kind though not numeric.
54
-
55
- Neither kind outranks the other by *kind*. Severity ranks them; provenance only records the route. A judged P5 hierarchy finding can sort above a machine `typ-15` finding, and does when its severity is higher.
56
-
57
- ## Severity: a ranked scale, never a score
58
-
59
- `auto-critical → critical → major → minor`. Ordering, comparability, and priority all come from the rank — never from a number.
60
-
61
- - **auto-critical** — assigned *mechanically, by rule, never by judgment*. Two triggers: absence of `trust-01`, `trust-02`, or `trust-03` (AI presence undisclosed, no human override path, an irreversible AI action ungated by consent-and-preview); and any irreversible action lacking **both** a confirm step **and** an undo path (`int-05`). No waiver, and no judgment call can down-rank it — it sorts to the top of every list.
62
- - **critical** — the surface fails at its purpose: data unreadable or wrong, a required state missing so the surface reads as broken, an accessibility block, a contract about to break.
63
- - **major** — real loss of throughput or trust; the surface still works but taxes the operator on every use.
64
- - **minor** — polish: an off-scale value, a tracking miss, a redundant separator. Correct, not costly.
65
-
66
- ## No numeric scores — a measurable before→after instead
67
-
68
- The engine never emits a score. No 0–4, no 0–100, no percentage grade — runtime scores are false precision the best practitioners avoid; the catalog's own machine-check output is defect *evidence*, not a number to average. Comparability comes from two things that do not pretend to a decimal: the severity rank orders the list, and the **mandatory measurable before→after** on every finding says exactly what changes.
69
-
70
- Machine-backed → numeric (`620ms → ≤500ms`; `12px → 14px`). Judged → a concrete before/after state (`AI draft renders identically to human messages → AI draft carries a disclosure chip and a muted treatment`). Banned always: "feels off," "make it cleaner," any adjective standing in for a change. `cod-13` is this contract; `self-integrity.mjs` checks that every finding carries a before→after.
71
-
72
- ## Instruments: numbers as evidence, never verdicts
73
-
74
- The render rung computes deterministic numbers (`inst-*`) over the rendered surface. They enter findings **only as evidence inside a judged finding** — never as a gate, never as a verdict.
75
-
76
- **Pixel-level instruments** (`inst-01`..`inst-10`): edge density, feature congestion, subband entropy, grid quality, white-space ratio, symmetry, figure-ground contrast, contour congestion, colorfulness, distinct-RGB count. A finding may cite one — *"edge density 0.31 vs the 0.18–0.24 typical of shipped operator surfaces"* — as evidence for a judged P5 or P2 finding. The verdict stays judged.
77
-
78
- The load-bearing caution: **dense operator surfaces are dense on purpose.** "Lower visual complexity ⇒ better" was refuted 0–3 in adversarial verification; on an information-dense surface the sign of "good" can invert. A high instrument number is a prompt to *look*, never proof of a problem, and a threshold is never derived from an exemplar (circular). Start with edge density — cheapest, best-documented — and treat every reading as a signal.
79
-
80
- **KLM operator-cost** (`inst-11`): a comparative throughput diagnosis, not ground truth. Sum the typed operators over a fixed core-loop path with the published constants — **P (point) 1.10s · H (home hand between keyboard and mouse) 0.40s · M (mental prep) 1.35s · K (keystroke) 0.20–0.28s** — counting clicks, keystrokes, tab-stops, and hand-homings. It compares two paths (before a redesign vs after, path A vs path B), pairing with the entity/surface map's core loop ([structure.md](structure.md)) and floor f01's throughput-first metric. It is a cost *model*: path selection is judgment, so the number is evidence for a judged B1/B4 finding, never a verdict.
81
-
82
- ## The AI-surface trust rubric
83
-
84
- Any surface that shows AI-originated content or takes AI-initiated actions is diagnosed against the trust rubric ([../data/operator-pack/trust-rubric.md](../data/operator-pack/trust-rubric.md)) — four judged dimensions (`trust-01`..`trust-04`), fired inside every improve and introspect sweep, skipped on surfaces with no AI content. Its findings are judged findings on this schema, peers of every other. The rubric owns the four dimensions and their auto-critical gradings; diagnosis consumes them.
85
-
86
- ## The decay ledger
87
-
88
- Quality is the skill's burden, never the user's — so decay is *observed*, not silently absorbed. A run appends to `docs/memory/design-decay.md` (a project memory file, per the CLAUDE.md memory convention) whenever its guidance failed to land. Three event classes:
89
-
90
- 1. **Machine violations surviving fix-or-classify** — a rule fired and the run resolved it by classifying the rule as inapplicable rather than fixing it (the classification is logged as the fix-or-classify directive requires), or a violation reached ship neither fixed nor classified.
91
- 2. **Judged findings recurring across runs** — the same judged finding reappears on a later run, evidence the guidance is not being absorbed.
92
- 3. **Guidance fought or produced wrong output** — the agent resisted a rule, or following the guidance yielded a worse result or collided with the user's workload.
93
-
94
- The ledger is **maintainer-facing telemetry, not runtime state** — the emitted UI stays the only design record (floor f08). The skill never reads it back and **never self-modifies**. The maintainer reads it, diagnoses whether the failure is the skill's design or the project's circumstances, and closes it by hand — updating the skill, or going back to the user.
95
-
96
- Entries are **dated, factual, and human-closed** — append-only, oldest at bottom:
97
-
98
- ```
99
- ## YYYY-MM-DD — <topic>
100
-
101
- - event: <machine-violation-classified | judged-finding-recurring | guidance-fought>
102
- - anchor: <rule id or judged dimension>
103
- - where: <surface / file:line>
104
- - what happened: <one factual line — what fired, how it resolved, no editorializing>
105
- - run: <create | improve:<verb> | introspect>
106
- ```
107
-
108
- No verdict, no severity, no remediation in the entry — it records what happened, not what to do about it. The closing is the maintainer's.