@ztothez/design-engineering 2.0.0

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 (513) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +448 -0
  3. package/ROADMAP.md +127 -0
  4. package/SKILL.md +698 -0
  5. package/V2-ROADMAP.md +431 -0
  6. package/V3-ROADMAP.md +605 -0
  7. package/V4-ROADMAP.md +283 -0
  8. package/clean-room-ux-design-spec.md +1431 -0
  9. package/dist/cli/aggregate-gates.d.ts +2 -0
  10. package/dist/cli/aggregate-gates.js +86 -0
  11. package/dist/cli/aggregate-gates.js.map +1 -0
  12. package/dist/cli/assess-maintainer-review.d.ts +2 -0
  13. package/dist/cli/assess-maintainer-review.js +72 -0
  14. package/dist/cli/assess-maintainer-review.js.map +1 -0
  15. package/dist/cli/audit.d.ts +2 -0
  16. package/dist/cli/audit.js +71 -0
  17. package/dist/cli/audit.js.map +1 -0
  18. package/dist/cli/compile-comparison-review.d.ts +2 -0
  19. package/dist/cli/compile-comparison-review.js +154 -0
  20. package/dist/cli/compile-comparison-review.js.map +1 -0
  21. package/dist/cli/compile-plan.d.ts +2 -0
  22. package/dist/cli/compile-plan.js +66 -0
  23. package/dist/cli/compile-plan.js.map +1 -0
  24. package/dist/cli/evaluate-corpus.d.ts +2 -0
  25. package/dist/cli/evaluate-corpus.js +65 -0
  26. package/dist/cli/evaluate-corpus.js.map +1 -0
  27. package/dist/cli/generate-react.d.ts +2 -0
  28. package/dist/cli/generate-react.js +83 -0
  29. package/dist/cli/generate-react.js.map +1 -0
  30. package/dist/cli/index.d.ts +2 -0
  31. package/dist/cli/index.js +58 -0
  32. package/dist/cli/index.js.map +1 -0
  33. package/dist/cli/portfolio.d.ts +2 -0
  34. package/dist/cli/portfolio.js +316 -0
  35. package/dist/cli/portfolio.js.map +1 -0
  36. package/dist/cli/quality-gate.d.ts +2 -0
  37. package/dist/cli/quality-gate.js +131 -0
  38. package/dist/cli/quality-gate.js.map +1 -0
  39. package/dist/cli/repair-react.d.ts +2 -0
  40. package/dist/cli/repair-react.js +163 -0
  41. package/dist/cli/repair-react.js.map +1 -0
  42. package/dist/cli/review-heuristics.d.ts +2 -0
  43. package/dist/cli/review-heuristics.js +68 -0
  44. package/dist/cli/review-heuristics.js.map +1 -0
  45. package/dist/cli/validate-brief.d.ts +2 -0
  46. package/dist/cli/validate-brief.js +58 -0
  47. package/dist/cli/validate-brief.js.map +1 -0
  48. package/dist/cli/validate-comparison.d.ts +2 -0
  49. package/dist/cli/validate-comparison.js +68 -0
  50. package/dist/cli/validate-comparison.js.map +1 -0
  51. package/dist/cli/validate-contract.d.ts +2 -0
  52. package/dist/cli/validate-contract.js +54 -0
  53. package/dist/cli/validate-contract.js.map +1 -0
  54. package/dist/cli/validate-design.d.ts +2 -0
  55. package/dist/cli/validate-design.js +53 -0
  56. package/dist/cli/validate-design.js.map +1 -0
  57. package/dist/cli/validate-information.d.ts +2 -0
  58. package/dist/cli/validate-information.js +53 -0
  59. package/dist/cli/validate-information.js.map +1 -0
  60. package/dist/cli/validate-trust.d.ts +2 -0
  61. package/dist/cli/validate-trust.js +53 -0
  62. package/dist/cli/validate-trust.js.map +1 -0
  63. package/dist/cli/verify-ui.d.ts +2 -0
  64. package/dist/cli/verify-ui.js +181 -0
  65. package/dist/cli/verify-ui.js.map +1 -0
  66. package/dist/src/acceptance/evaluator.d.ts +13 -0
  67. package/dist/src/acceptance/evaluator.js +201 -0
  68. package/dist/src/acceptance/evaluator.js.map +1 -0
  69. package/dist/src/acceptance/loader.d.ts +2 -0
  70. package/dist/src/acceptance/loader.js +18 -0
  71. package/dist/src/acceptance/loader.js.map +1 -0
  72. package/dist/src/acceptance/report.d.ts +2 -0
  73. package/dist/src/acceptance/report.js +18 -0
  74. package/dist/src/acceptance/report.js.map +1 -0
  75. package/dist/src/acceptance/schema.d.ts +64 -0
  76. package/dist/src/acceptance/schema.js +57 -0
  77. package/dist/src/acceptance/schema.js.map +1 -0
  78. package/dist/src/acceptance/types.d.ts +47 -0
  79. package/dist/src/acceptance/types.js +2 -0
  80. package/dist/src/acceptance/types.js.map +1 -0
  81. package/dist/src/aggregate/report.d.ts +2 -0
  82. package/dist/src/aggregate/report.js +33 -0
  83. package/dist/src/aggregate/report.js.map +1 -0
  84. package/dist/src/aggregate/runner.d.ts +2 -0
  85. package/dist/src/aggregate/runner.js +165 -0
  86. package/dist/src/aggregate/runner.js.map +1 -0
  87. package/dist/src/aggregate/schema.d.ts +182 -0
  88. package/dist/src/aggregate/schema.js +54 -0
  89. package/dist/src/aggregate/schema.js.map +1 -0
  90. package/dist/src/aggregate/types.d.ts +57 -0
  91. package/dist/src/aggregate/types.js +2 -0
  92. package/dist/src/aggregate/types.js.map +1 -0
  93. package/dist/src/audit/policy.d.ts +3 -0
  94. package/dist/src/audit/policy.js +45 -0
  95. package/dist/src/audit/policy.js.map +1 -0
  96. package/dist/src/audit/report.d.ts +2 -0
  97. package/dist/src/audit/report.js +32 -0
  98. package/dist/src/audit/report.js.map +1 -0
  99. package/dist/src/audit/rules/accessibility-name.d.ts +2 -0
  100. package/dist/src/audit/rules/accessibility-name.js +64 -0
  101. package/dist/src/audit/rules/accessibility-name.js.map +1 -0
  102. package/dist/src/audit/rules/component-size.d.ts +2 -0
  103. package/dist/src/audit/rules/component-size.js +27 -0
  104. package/dist/src/audit/rules/component-size.js.map +1 -0
  105. package/dist/src/audit/rules/credential-placeholder.d.ts +2 -0
  106. package/dist/src/audit/rules/credential-placeholder.js +83 -0
  107. package/dist/src/audit/rules/credential-placeholder.js.map +1 -0
  108. package/dist/src/audit/rules/helpers.d.ts +16 -0
  109. package/dist/src/audit/rules/helpers.js +64 -0
  110. package/dist/src/audit/rules/helpers.js.map +1 -0
  111. package/dist/src/audit/rules/index.d.ts +2 -0
  112. package/dist/src/audit/rules/index.js +23 -0
  113. package/dist/src/audit/rules/index.js.map +1 -0
  114. package/dist/src/audit/rules/interactive-integrity.d.ts +2 -0
  115. package/dist/src/audit/rules/interactive-integrity.js +111 -0
  116. package/dist/src/audit/rules/interactive-integrity.js.map +1 -0
  117. package/dist/src/audit/rules/mixed-responsibilities.d.ts +2 -0
  118. package/dist/src/audit/rules/mixed-responsibilities.js +39 -0
  119. package/dist/src/audit/rules/mixed-responsibilities.js.map +1 -0
  120. package/dist/src/audit/rules/mock-production-path.d.ts +2 -0
  121. package/dist/src/audit/rules/mock-production-path.js +39 -0
  122. package/dist/src/audit/rules/mock-production-path.js.map +1 -0
  123. package/dist/src/audit/rules/network-state.d.ts +2 -0
  124. package/dist/src/audit/rules/network-state.js +39 -0
  125. package/dist/src/audit/rules/network-state.js.map +1 -0
  126. package/dist/src/audit/rules/operational-claim.d.ts +2 -0
  127. package/dist/src/audit/rules/operational-claim.js +94 -0
  128. package/dist/src/audit/rules/operational-claim.js.map +1 -0
  129. package/dist/src/audit/rules/placeholder-interaction.d.ts +2 -0
  130. package/dist/src/audit/rules/placeholder-interaction.js +46 -0
  131. package/dist/src/audit/rules/placeholder-interaction.js.map +1 -0
  132. package/dist/src/audit/rules/raw-design-values.d.ts +2 -0
  133. package/dist/src/audit/rules/raw-design-values.js +97 -0
  134. package/dist/src/audit/rules/raw-design-values.js.map +1 -0
  135. package/dist/src/audit/scanner.d.ts +2 -0
  136. package/dist/src/audit/scanner.js +215 -0
  137. package/dist/src/audit/scanner.js.map +1 -0
  138. package/dist/src/audit/types.d.ts +62 -0
  139. package/dist/src/audit/types.js +2 -0
  140. package/dist/src/audit/types.js.map +1 -0
  141. package/dist/src/comparison/evaluator.d.ts +2 -0
  142. package/dist/src/comparison/evaluator.js +478 -0
  143. package/dist/src/comparison/evaluator.js.map +1 -0
  144. package/dist/src/comparison/loader.d.ts +3 -0
  145. package/dist/src/comparison/loader.js +26 -0
  146. package/dist/src/comparison/loader.js.map +1 -0
  147. package/dist/src/comparison/maintainer.d.ts +47 -0
  148. package/dist/src/comparison/maintainer.js +218 -0
  149. package/dist/src/comparison/maintainer.js.map +1 -0
  150. package/dist/src/comparison/report.d.ts +2 -0
  151. package/dist/src/comparison/report.js +48 -0
  152. package/dist/src/comparison/report.js.map +1 -0
  153. package/dist/src/comparison/schema.d.ts +464 -0
  154. package/dist/src/comparison/schema.js +502 -0
  155. package/dist/src/comparison/schema.js.map +1 -0
  156. package/dist/src/contracts/archetypes.d.ts +21 -0
  157. package/dist/src/contracts/archetypes.js +102 -0
  158. package/dist/src/contracts/archetypes.js.map +1 -0
  159. package/dist/src/contracts/journeys.d.ts +7 -0
  160. package/dist/src/contracts/journeys.js +32 -0
  161. package/dist/src/contracts/journeys.js.map +1 -0
  162. package/dist/src/contracts/report.d.ts +2 -0
  163. package/dist/src/contracts/report.js +33 -0
  164. package/dist/src/contracts/report.js.map +1 -0
  165. package/dist/src/contracts/schema.d.ts +1038 -0
  166. package/dist/src/contracts/schema.js +385 -0
  167. package/dist/src/contracts/schema.js.map +1 -0
  168. package/dist/src/contracts/validator.d.ts +12 -0
  169. package/dist/src/contracts/validator.js +303 -0
  170. package/dist/src/contracts/validator.js.map +1 -0
  171. package/dist/src/corpus/evaluator.d.ts +2 -0
  172. package/dist/src/corpus/evaluator.js +203 -0
  173. package/dist/src/corpus/evaluator.js.map +1 -0
  174. package/dist/src/corpus/loader.d.ts +2 -0
  175. package/dist/src/corpus/loader.js +20 -0
  176. package/dist/src/corpus/loader.js.map +1 -0
  177. package/dist/src/corpus/report.d.ts +2 -0
  178. package/dist/src/corpus/report.js +33 -0
  179. package/dist/src/corpus/report.js.map +1 -0
  180. package/dist/src/corpus/schema.d.ts +316 -0
  181. package/dist/src/corpus/schema.js +269 -0
  182. package/dist/src/corpus/schema.js.map +1 -0
  183. package/dist/src/design-intelligence/loader.d.ts +2 -0
  184. package/dist/src/design-intelligence/loader.js +21 -0
  185. package/dist/src/design-intelligence/loader.js.map +1 -0
  186. package/dist/src/design-intelligence/report.d.ts +2 -0
  187. package/dist/src/design-intelligence/report.js +36 -0
  188. package/dist/src/design-intelligence/report.js.map +1 -0
  189. package/dist/src/design-intelligence/schema.d.ts +838 -0
  190. package/dist/src/design-intelligence/schema.js +854 -0
  191. package/dist/src/design-intelligence/schema.js.map +1 -0
  192. package/dist/src/design-intelligence/validator.d.ts +2 -0
  193. package/dist/src/design-intelligence/validator.js +1371 -0
  194. package/dist/src/design-intelligence/validator.js.map +1 -0
  195. package/dist/src/design-plan/compiler.d.ts +8 -0
  196. package/dist/src/design-plan/compiler.js +288 -0
  197. package/dist/src/design-plan/compiler.js.map +1 -0
  198. package/dist/src/design-plan/report.d.ts +2 -0
  199. package/dist/src/design-plan/report.js +28 -0
  200. package/dist/src/design-plan/report.js.map +1 -0
  201. package/dist/src/design-plan/schema.d.ts +202 -0
  202. package/dist/src/design-plan/schema.js +76 -0
  203. package/dist/src/design-plan/schema.js.map +1 -0
  204. package/dist/src/generation/loader.d.ts +2 -0
  205. package/dist/src/generation/loader.js +21 -0
  206. package/dist/src/generation/loader.js.map +1 -0
  207. package/dist/src/generation/policy.d.ts +12 -0
  208. package/dist/src/generation/policy.js +62 -0
  209. package/dist/src/generation/policy.js.map +1 -0
  210. package/dist/src/generation/react-typescript.d.ts +6 -0
  211. package/dist/src/generation/react-typescript.js +538 -0
  212. package/dist/src/generation/react-typescript.js.map +1 -0
  213. package/dist/src/generation/report.d.ts +2 -0
  214. package/dist/src/generation/report.js +21 -0
  215. package/dist/src/generation/report.js.map +1 -0
  216. package/dist/src/generation/schema.d.ts +44 -0
  217. package/dist/src/generation/schema.js +50 -0
  218. package/dist/src/generation/schema.js.map +1 -0
  219. package/dist/src/generation/templates/tokens.d.ts +1 -0
  220. package/dist/src/generation/templates/tokens.js +59 -0
  221. package/dist/src/generation/templates/tokens.js.map +1 -0
  222. package/dist/src/heuristics/evaluator.d.ts +2 -0
  223. package/dist/src/heuristics/evaluator.js +65 -0
  224. package/dist/src/heuristics/evaluator.js.map +1 -0
  225. package/dist/src/heuristics/loader.d.ts +2 -0
  226. package/dist/src/heuristics/loader.js +21 -0
  227. package/dist/src/heuristics/loader.js.map +1 -0
  228. package/dist/src/heuristics/report.d.ts +3 -0
  229. package/dist/src/heuristics/report.js +31 -0
  230. package/dist/src/heuristics/report.js.map +1 -0
  231. package/dist/src/heuristics/schema.d.ts +198 -0
  232. package/dist/src/heuristics/schema.js +197 -0
  233. package/dist/src/heuristics/schema.js.map +1 -0
  234. package/dist/src/information-design/loader.d.ts +2 -0
  235. package/dist/src/information-design/loader.js +21 -0
  236. package/dist/src/information-design/loader.js.map +1 -0
  237. package/dist/src/information-design/report.d.ts +2 -0
  238. package/dist/src/information-design/report.js +27 -0
  239. package/dist/src/information-design/report.js.map +1 -0
  240. package/dist/src/information-design/schema.d.ts +370 -0
  241. package/dist/src/information-design/schema.js +329 -0
  242. package/dist/src/information-design/schema.js.map +1 -0
  243. package/dist/src/information-design/validator.d.ts +2 -0
  244. package/dist/src/information-design/validator.js +242 -0
  245. package/dist/src/information-design/validator.js.map +1 -0
  246. package/dist/src/interface-trust/loader.d.ts +2 -0
  247. package/dist/src/interface-trust/loader.js +21 -0
  248. package/dist/src/interface-trust/loader.js.map +1 -0
  249. package/dist/src/interface-trust/report.d.ts +2 -0
  250. package/dist/src/interface-trust/report.js +26 -0
  251. package/dist/src/interface-trust/report.js.map +1 -0
  252. package/dist/src/interface-trust/schema.d.ts +299 -0
  253. package/dist/src/interface-trust/schema.js +238 -0
  254. package/dist/src/interface-trust/schema.js.map +1 -0
  255. package/dist/src/interface-trust/validator.d.ts +2 -0
  256. package/dist/src/interface-trust/validator.js +283 -0
  257. package/dist/src/interface-trust/validator.js.map +1 -0
  258. package/dist/src/portfolio/adapter-report.d.ts +3 -0
  259. package/dist/src/portfolio/adapter-report.js +38 -0
  260. package/dist/src/portfolio/adapter-report.js.map +1 -0
  261. package/dist/src/portfolio/adapters.d.ts +37 -0
  262. package/dist/src/portfolio/adapters.js +325 -0
  263. package/dist/src/portfolio/adapters.js.map +1 -0
  264. package/dist/src/portfolio/evidence.d.ts +9 -0
  265. package/dist/src/portfolio/evidence.js +233 -0
  266. package/dist/src/portfolio/evidence.js.map +1 -0
  267. package/dist/src/portfolio/files.d.ts +8 -0
  268. package/dist/src/portfolio/files.js +77 -0
  269. package/dist/src/portfolio/files.js.map +1 -0
  270. package/dist/src/portfolio/fixture-server.d.ts +11 -0
  271. package/dist/src/portfolio/fixture-server.js +131 -0
  272. package/dist/src/portfolio/fixture-server.js.map +1 -0
  273. package/dist/src/portfolio/loader.d.ts +2 -0
  274. package/dist/src/portfolio/loader.js +21 -0
  275. package/dist/src/portfolio/loader.js.map +1 -0
  276. package/dist/src/portfolio/mcp.d.ts +186 -0
  277. package/dist/src/portfolio/mcp.js +117 -0
  278. package/dist/src/portfolio/mcp.js.map +1 -0
  279. package/dist/src/portfolio/promotion-schema.d.ts +220 -0
  280. package/dist/src/portfolio/promotion-schema.js +148 -0
  281. package/dist/src/portfolio/promotion-schema.js.map +1 -0
  282. package/dist/src/portfolio/promotion.d.ts +4 -0
  283. package/dist/src/portfolio/promotion.js +160 -0
  284. package/dist/src/portfolio/promotion.js.map +1 -0
  285. package/dist/src/portfolio/qualification-schema.d.ts +268 -0
  286. package/dist/src/portfolio/qualification-schema.js +112 -0
  287. package/dist/src/portfolio/qualification-schema.js.map +1 -0
  288. package/dist/src/portfolio/qualification.d.ts +4 -0
  289. package/dist/src/portfolio/qualification.js +157 -0
  290. package/dist/src/portfolio/qualification.js.map +1 -0
  291. package/dist/src/portfolio/registry.d.ts +34 -0
  292. package/dist/src/portfolio/registry.js +240 -0
  293. package/dist/src/portfolio/registry.js.map +1 -0
  294. package/dist/src/portfolio/report.d.ts +4 -0
  295. package/dist/src/portfolio/report.js +47 -0
  296. package/dist/src/portfolio/report.js.map +1 -0
  297. package/dist/src/portfolio/run-schema.d.ts +135 -0
  298. package/dist/src/portfolio/run-schema.js +81 -0
  299. package/dist/src/portfolio/run-schema.js.map +1 -0
  300. package/dist/src/portfolio/runner.d.ts +118 -0
  301. package/dist/src/portfolio/runner.js +423 -0
  302. package/dist/src/portfolio/runner.js.map +1 -0
  303. package/dist/src/portfolio/schema.d.ts +251 -0
  304. package/dist/src/portfolio/schema.js +317 -0
  305. package/dist/src/portfolio/schema.js.map +1 -0
  306. package/dist/src/portfolio/snapshot.d.ts +89 -0
  307. package/dist/src/portfolio/snapshot.js +548 -0
  308. package/dist/src/portfolio/snapshot.js.map +1 -0
  309. package/dist/src/portfolio/taxonomy-schema.d.ts +215 -0
  310. package/dist/src/portfolio/taxonomy-schema.js +74 -0
  311. package/dist/src/portfolio/taxonomy-schema.js.map +1 -0
  312. package/dist/src/portfolio/taxonomy.d.ts +5 -0
  313. package/dist/src/portfolio/taxonomy.js +236 -0
  314. package/dist/src/portfolio/taxonomy.js.map +1 -0
  315. package/dist/src/portfolio/vault.d.ts +53 -0
  316. package/dist/src/portfolio/vault.js +176 -0
  317. package/dist/src/portfolio/vault.js.map +1 -0
  318. package/dist/src/product-brief/loader.d.ts +2 -0
  319. package/dist/src/product-brief/loader.js +21 -0
  320. package/dist/src/product-brief/loader.js.map +1 -0
  321. package/dist/src/product-brief/report.d.ts +2 -0
  322. package/dist/src/product-brief/report.js +22 -0
  323. package/dist/src/product-brief/report.js.map +1 -0
  324. package/dist/src/product-brief/schema.d.ts +367 -0
  325. package/dist/src/product-brief/schema.js +272 -0
  326. package/dist/src/product-brief/schema.js.map +1 -0
  327. package/dist/src/product-brief/validator.d.ts +2 -0
  328. package/dist/src/product-brief/validator.js +251 -0
  329. package/dist/src/product-brief/validator.js.map +1 -0
  330. package/dist/src/product.d.ts +7 -0
  331. package/dist/src/product.js +28 -0
  332. package/dist/src/product.js.map +1 -0
  333. package/dist/src/quality-gate/report.d.ts +2 -0
  334. package/dist/src/quality-gate/report.js +46 -0
  335. package/dist/src/quality-gate/report.js.map +1 -0
  336. package/dist/src/quality-gate/runner.d.ts +2 -0
  337. package/dist/src/quality-gate/runner.js +175 -0
  338. package/dist/src/quality-gate/runner.js.map +1 -0
  339. package/dist/src/quality-gate/schema.d.ts +75 -0
  340. package/dist/src/quality-gate/schema.js +37 -0
  341. package/dist/src/quality-gate/schema.js.map +1 -0
  342. package/dist/src/quality-gate/types.d.ts +49 -0
  343. package/dist/src/quality-gate/types.js +2 -0
  344. package/dist/src/quality-gate/types.js.map +1 -0
  345. package/dist/src/repair/loader.d.ts +2 -0
  346. package/dist/src/repair/loader.js +11 -0
  347. package/dist/src/repair/loader.js.map +1 -0
  348. package/dist/src/repair/policy.d.ts +16 -0
  349. package/dist/src/repair/policy.js +65 -0
  350. package/dist/src/repair/policy.js.map +1 -0
  351. package/dist/src/repair/report.d.ts +2 -0
  352. package/dist/src/repair/report.js +32 -0
  353. package/dist/src/repair/report.js.map +1 -0
  354. package/dist/src/repair/runner.d.ts +17 -0
  355. package/dist/src/repair/runner.js +511 -0
  356. package/dist/src/repair/runner.js.map +1 -0
  357. package/dist/src/repair/schema.d.ts +264 -0
  358. package/dist/src/repair/schema.js +202 -0
  359. package/dist/src/repair/schema.js.map +1 -0
  360. package/dist/src/retrieval/report.d.ts +2 -0
  361. package/dist/src/retrieval/report.js +21 -0
  362. package/dist/src/retrieval/report.js.map +1 -0
  363. package/dist/src/retrieval/schema.d.ts +123 -0
  364. package/dist/src/retrieval/schema.js +77 -0
  365. package/dist/src/retrieval/schema.js.map +1 -0
  366. package/dist/src/retrieval/search.d.ts +26 -0
  367. package/dist/src/retrieval/search.js +415 -0
  368. package/dist/src/retrieval/search.js.map +1 -0
  369. package/dist/src/runtime/advanced-checks.d.ts +6 -0
  370. package/dist/src/runtime/advanced-checks.js +487 -0
  371. package/dist/src/runtime/advanced-checks.js.map +1 -0
  372. package/dist/src/runtime/composition-checks.d.ts +5 -0
  373. package/dist/src/runtime/composition-checks.js +307 -0
  374. package/dist/src/runtime/composition-checks.js.map +1 -0
  375. package/dist/src/runtime/interface-checks.d.ts +12 -0
  376. package/dist/src/runtime/interface-checks.js +224 -0
  377. package/dist/src/runtime/interface-checks.js.map +1 -0
  378. package/dist/src/runtime/policy.d.ts +13 -0
  379. package/dist/src/runtime/policy.js +97 -0
  380. package/dist/src/runtime/policy.js.map +1 -0
  381. package/dist/src/runtime/report.d.ts +2 -0
  382. package/dist/src/runtime/report.js +48 -0
  383. package/dist/src/runtime/report.js.map +1 -0
  384. package/dist/src/runtime/schema.d.ts +406 -0
  385. package/dist/src/runtime/schema.js +308 -0
  386. package/dist/src/runtime/schema.js.map +1 -0
  387. package/dist/src/runtime/types.d.ts +177 -0
  388. package/dist/src/runtime/types.js +2 -0
  389. package/dist/src/runtime/types.js.map +1 -0
  390. package/dist/src/runtime/verifier.d.ts +2 -0
  391. package/dist/src/runtime/verifier.js +1201 -0
  392. package/dist/src/runtime/verifier.js.map +1 -0
  393. package/dist/src/server.d.ts +2 -0
  394. package/dist/src/server.js +1352 -0
  395. package/dist/src/server.js.map +1 -0
  396. package/docs/installation.md +337 -0
  397. package/knowledge-base/INDEX.md +285 -0
  398. package/knowledge-base/benchmarks/aegisops/CALIBRATION.md +52 -0
  399. package/knowledge-base/benchmarks/aegisops/MANIFEST.md +56 -0
  400. package/knowledge-base/benchmarks/aegisops/SOURCE-EVIDENCE.md +45 -0
  401. package/knowledge-base/benchmarks/aegisops/acceptance-criteria.md +42 -0
  402. package/knowledge-base/benchmarks/aegisops/anti-patterns.md +19 -0
  403. package/knowledge-base/benchmarks/aegisops/attestations.template.yaml +3 -0
  404. package/knowledge-base/benchmarks/aegisops/attestations.yaml +115 -0
  405. package/knowledge-base/benchmarks/aegisops/journeys.json +91 -0
  406. package/knowledge-base/benchmarks/aegisops/product-contract.yaml +328 -0
  407. package/knowledge-base/benchmarks/azure-optimizer/SOURCE-EVIDENCE.md +26 -0
  408. package/knowledge-base/benchmarks/azure-optimizer/V2-IMPLEMENTATION.md +39 -0
  409. package/knowledge-base/benchmarks/azure-optimizer/acceptance-criteria.md +23 -0
  410. package/knowledge-base/benchmarks/azure-optimizer/anti-patterns.md +13 -0
  411. package/knowledge-base/benchmarks/azure-optimizer/journeys.json +88 -0
  412. package/knowledge-base/benchmarks/azure-optimizer/product-contract.yaml +216 -0
  413. package/knowledge-base/benchmarks/azure-optimizer/v2-human-review-methodology.yaml +171 -0
  414. package/knowledge-base/benchmarks/azure-optimizer/v2-journeys.json +139 -0
  415. package/knowledge-base/benchmarks/corpus/PROVENANCE.md +21 -0
  416. package/knowledge-base/benchmarks/corpus/README.md +30 -0
  417. package/knowledge-base/benchmarks/corpus/cases/anti-slop-negative/package.json +9 -0
  418. package/knowledge-base/benchmarks/corpus/cases/anti-slop-negative/src/FakeDashboard.tsx +10 -0
  419. package/knowledge-base/benchmarks/corpus/cases/anti-slop-positive/package.json +9 -0
  420. package/knowledge-base/benchmarks/corpus/cases/anti-slop-positive/src/Progress.tsx +15 -0
  421. package/knowledge-base/benchmarks/corpus/cases/architecture-negative/package.json +9 -0
  422. package/knowledge-base/benchmarks/corpus/cases/architecture-negative/src/OperationsPanel.tsx +40 -0
  423. package/knowledge-base/benchmarks/corpus/cases/architecture-positive/package.json +9 -0
  424. package/knowledge-base/benchmarks/corpus/cases/architecture-positive/src/Dashboard.tsx +17 -0
  425. package/knowledge-base/benchmarks/corpus/cases/architecture-positive/src/theme.css +15 -0
  426. package/knowledge-base/benchmarks/corpus/cases/task-incomplete/SOURCE-EVIDENCE.md +3 -0
  427. package/knowledge-base/benchmarks/corpus/cases/task-incomplete/journeys.json +20 -0
  428. package/knowledge-base/benchmarks/corpus/cases/task-incomplete/product-contract.yaml +78 -0
  429. package/knowledge-base/benchmarks/corpus/corpus.schema.yaml +159 -0
  430. package/knowledge-base/benchmarks/corpus/corpus.yaml +209 -0
  431. package/knowledge-base/benchmarks/interface-quality/README.md +26 -0
  432. package/knowledge-base/benchmarks/interface-quality/SOLO-MAINTAINER-TRACK.md +35 -0
  433. package/knowledge-base/benchmarks/interface-quality/comparison-methodology-v1.1.schema.yaml +288 -0
  434. package/knowledge-base/benchmarks/interface-quality/comparison-methodology.schema.yaml +235 -0
  435. package/knowledge-base/benchmarks/interface-quality/comparison-methodology.template.yaml +181 -0
  436. package/knowledge-base/benchmarks/interface-quality/evidence/example-runtime-report.json +11 -0
  437. package/knowledge-base/benchmarks/interface-quality/review-session.schema.yaml +14 -0
  438. package/knowledge-base/benchmarks/interface-quality/review.schema.yaml +296 -0
  439. package/knowledge-base/benchmarks/interface-quality/review.template.yaml +43 -0
  440. package/knowledge-base/benchmarks/portfolio-corpus/ADAPTERS.md +68 -0
  441. package/knowledge-base/benchmarks/portfolio-corpus/PORTFOLIO-RUNNER.md +131 -0
  442. package/knowledge-base/benchmarks/portfolio-corpus/PRODUCT-TASK-CONTRACTS.md +29 -0
  443. package/knowledge-base/benchmarks/portfolio-corpus/PROMOTED-RULES.md +31 -0
  444. package/knowledge-base/benchmarks/portfolio-corpus/archetype-profiles.yaml +26 -0
  445. package/knowledge-base/benchmarks/portfolio-corpus/product-task-profile.schema.yaml +105 -0
  446. package/knowledge-base/benchmarks/portfolio-corpus/registry.schema.yaml +188 -0
  447. package/knowledge-base/benchmarks/portfolio-corpus/registry.template.yaml +63 -0
  448. package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/component-size-abstention.json +10 -0
  449. package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/component-size-negative.json +10 -0
  450. package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/component-size-positive.json +10 -0
  451. package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/interactive-integrity-abstention.json +10 -0
  452. package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/interactive-integrity-negative.json +10 -0
  453. package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/interactive-integrity-positive.json +10 -0
  454. package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/raw-design-values-abstention.json +10 -0
  455. package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/raw-design-values-negative.json +10 -0
  456. package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/raw-design-values-positive.json +10 -0
  457. package/knowledge-base/benchmarks/portfolio-corpus/rule-holdout-evaluation.template.json +14 -0
  458. package/knowledge-base/benchmarks/portfolio-corpus/rule-promotion-evidence.template.json +24 -0
  459. package/knowledge-base/benchmarks/portfolio-corpus/v3-command-evidence.template.json +17 -0
  460. package/knowledge-base/benchmarks/portfolio-corpus/v3-qualification-evidence.template.json +29 -0
  461. package/knowledge-base/benchmarks/scenestart/CALIBRATION.md +95 -0
  462. package/knowledge-base/benchmarks/scenestart/MANIFEST.md +53 -0
  463. package/knowledge-base/benchmarks/scenestart/SOURCE-EVIDENCE.md +43 -0
  464. package/knowledge-base/benchmarks/scenestart/acceptance-criteria.md +59 -0
  465. package/knowledge-base/benchmarks/scenestart/anti-patterns.md +26 -0
  466. package/knowledge-base/benchmarks/scenestart/attestations.template.yaml +3 -0
  467. package/knowledge-base/benchmarks/scenestart/attestations.yaml +21 -0
  468. package/knowledge-base/benchmarks/scenestart/human-review.md +99 -0
  469. package/knowledge-base/benchmarks/scenestart/human-review.template.md +105 -0
  470. package/knowledge-base/benchmarks/scenestart/journeys.json +141 -0
  471. package/knowledge-base/benchmarks/scenestart/product-contract.yaml +427 -0
  472. package/knowledge-base/dependencies.yaml +69 -0
  473. package/knowledge-base/design-intelligence/MASTER.md +87 -0
  474. package/knowledge-base/design-intelligence/asset-generation.md +66 -0
  475. package/knowledge-base/design-intelligence/brand-systems.md +69 -0
  476. package/knowledge-base/design-intelligence/closed-loop-repair.md +95 -0
  477. package/knowledge-base/design-intelligence/design-deliverable.schema.yaml +1194 -0
  478. package/knowledge-base/design-intelligence/design-deliverable.template.yaml +591 -0
  479. package/knowledge-base/design-intelligence/design-plan.md +78 -0
  480. package/knowledge-base/design-intelligence/design-plan.schema.yaml +621 -0
  481. package/knowledge-base/design-intelligence/figma-production.md +63 -0
  482. package/knowledge-base/design-intelligence/generation-adapter.md +72 -0
  483. package/knowledge-base/design-intelligence/generation-adapter.schema.yaml +47 -0
  484. package/knowledge-base/design-intelligence/iconography.md +46 -0
  485. package/knowledge-base/design-intelligence/information-design.md +104 -0
  486. package/knowledge-base/design-intelligence/information-design.schema.yaml +390 -0
  487. package/knowledge-base/design-intelligence/information-design.template.yaml +281 -0
  488. package/knowledge-base/design-intelligence/interaction-recovery-verification.md +72 -0
  489. package/knowledge-base/design-intelligence/interface-trust.md +103 -0
  490. package/knowledge-base/design-intelligence/interface-trust.schema.yaml +263 -0
  491. package/knowledge-base/design-intelligence/interface-trust.template.yaml +173 -0
  492. package/knowledge-base/design-intelligence/licensing-and-provenance.md +59 -0
  493. package/knowledge-base/design-intelligence/presentation-design.md +56 -0
  494. package/knowledge-base/design-intelligence/product-design-brief.md +67 -0
  495. package/knowledge-base/design-intelligence/product-design-brief.schema.yaml +279 -0
  496. package/knowledge-base/design-intelligence/product-design-brief.template.yaml +225 -0
  497. package/knowledge-base/design-intelligence/repair-request.schema.yaml +95 -0
  498. package/knowledge-base/design-intelligence/repair-request.template.yaml +39 -0
  499. package/knowledge-base/design-intelligence/visual-accessibility.md +56 -0
  500. package/knowledge-base/design-intelligence/visual-polish.md +172 -0
  501. package/knowledge-base/maintained/architecture/MASTER.md +22 -0
  502. package/knowledge-base/maintained/architecture/component-boundaries.md +30 -0
  503. package/knowledge-base/maintained/architecture/product-platforms.md +25 -0
  504. package/knowledge-base/maintained/architecture/quality-attributes-and-evaluation.md +35 -0
  505. package/knowledge-base/maintained/product-patterns/MASTER.md +10 -0
  506. package/knowledge-base/maintained/product-patterns/ai-workspaces.md +26 -0
  507. package/knowledge-base/maintained/product-patterns/operational-dashboards.md +22 -0
  508. package/knowledge-base/provenance.yaml +196 -0
  509. package/knowledge-base/retrieval-scope.yaml +43 -0
  510. package/knowledge-base/usability-evaluation/HEURISTIC_EVALUATION.md +115 -0
  511. package/knowledge-base/usability-evaluation/heuristic-review.schema.yaml +210 -0
  512. package/knowledge-base/usability-evaluation/heuristic-review.template.yaml +37 -0
  513. package/package.json +133 -0
@@ -0,0 +1,591 @@
1
+ version: "2.1"
2
+ id: example-product-design-system
3
+ product: Example Product
4
+ preparedAt: 2026-08-26T12:00:00+03:00
5
+ preparedBy:
6
+ type: mixed
7
+ name: Product design team
8
+ scope:
9
+ deliverables: [interface-system, brand-system, figma-library, asset-set, icon-system, presentation]
10
+ audience: Operations professionals evaluating and acting on product evidence
11
+ channels: [web, mobile, presentation]
12
+ tokenSystem:
13
+ tokens:
14
+ - name: color.primitive.ink-950
15
+ type: color
16
+ level: primitive
17
+ value: "#0b0f14"
18
+ description: Darkest neutral for high-emphasis text
19
+ - name: color.primitive.white
20
+ type: color
21
+ level: primitive
22
+ value: "#ffffff"
23
+ description: Lightest neutral surface
24
+ - name: color.primitive.blue-700
25
+ type: color
26
+ level: primitive
27
+ value: "#1455b8"
28
+ description: Accessible blue action primitive
29
+ - name: color.semantic.text-primary
30
+ type: color
31
+ level: semantic
32
+ reference: color.primitive.ink-950
33
+ description: Primary foreground on light surfaces
34
+ - name: color.semantic.surface
35
+ type: color
36
+ level: semantic
37
+ reference: color.primitive.white
38
+ description: Default application surface
39
+ - name: color.semantic.action-primary
40
+ type: color
41
+ level: semantic
42
+ reference: color.primitive.blue-700
43
+ description: Primary action and focus treatment
44
+ - name: color.component.button-primary-label
45
+ type: color
46
+ level: component
47
+ reference: color.primitive.white
48
+ description: Label foreground for primary buttons
49
+ - { name: color.primitive.neutral-50, type: color, level: primitive, value: "#f6f8fa", description: Subtle neutral surface }
50
+ - { name: color.primitive.neutral-200, type: color, level: primitive, value: "#d0d7de", description: Default neutral border }
51
+ - { name: color.primitive.neutral-500, type: color, level: primitive, value: "#57606a", description: Secondary neutral foreground }
52
+ - { name: color.primitive.neutral-800, type: color, level: primitive, value: "#30363d", description: Dark-mode grouped surface }
53
+ - { name: color.primitive.blue-300, type: color, level: primitive, value: "#58a6ff", description: Dark-mode action and focus primitive }
54
+ - { name: color.primitive.blue-50, type: color, level: primitive, value: "#ddf4ff", description: Selected surface blue }
55
+ - { name: color.primitive.green-700, type: color, level: primitive, value: "#1a7f37", description: Success foreground }
56
+ - { name: color.primitive.amber-700, type: color, level: primitive, value: "#9a6700", description: Warning foreground }
57
+ - { name: color.primitive.amber-300, type: color, level: primitive, value: "#f2cc60", description: Dark-mode warning foreground }
58
+ - { name: color.primitive.red-700, type: color, level: primitive, value: "#cf222e", description: Error foreground }
59
+ - { name: font.primitive.sans, type: font-family, level: primitive, value: "Inter, system-ui, sans-serif", description: Product interface family }
60
+ - { name: font.primitive.mono, type: font-family, level: primitive, value: "ui-monospace, SFMono-Regular, monospace", description: Evidence and code family }
61
+ - { name: weight.primitive.regular, type: font-weight, level: primitive, value: 400, description: Regular text weight }
62
+ - { name: weight.primitive.medium, type: font-weight, level: primitive, value: 500, description: Medium text weight }
63
+ - { name: weight.primitive.semibold, type: font-weight, level: primitive, value: 600, description: Semibold label weight }
64
+ - { name: weight.primitive.bold, type: font-weight, level: primitive, value: 700, description: Strong heading and metric weight }
65
+ - { name: size.primitive.4, type: dimension, level: primitive, value: 4, description: Four pixel spacing step }
66
+ - { name: size.primitive.8, type: dimension, level: primitive, value: 8, description: Eight pixel spacing step }
67
+ - { name: size.primitive.12, type: dimension, level: primitive, value: 12, description: Twelve pixel size step }
68
+ - { name: size.primitive.14, type: dimension, level: primitive, value: 14, description: Fourteen pixel type step }
69
+ - { name: size.primitive.16, type: dimension, level: primitive, value: 16, description: Sixteen pixel type and spacing step }
70
+ - { name: size.primitive.20, type: dimension, level: primitive, value: 20, description: Twenty pixel type step }
71
+ - { name: size.primitive.24, type: dimension, level: primitive, value: 24, description: Twenty-four pixel spacing step }
72
+ - { name: size.primitive.28, type: dimension, level: primitive, value: 28, description: Heading type step }
73
+ - { name: size.primitive.32, type: dimension, level: primitive, value: 32, description: Metric type and spacing step }
74
+ - { name: size.primitive.40, type: dimension, level: primitive, value: 40, description: Compact control and row height }
75
+ - { name: size.primitive.48, type: dimension, level: primitive, value: 48, description: Default row height }
76
+ - { name: size.primitive.64, type: dimension, level: primitive, value: 64, description: Large spacing step }
77
+ - { name: size.primitive.1200, type: dimension, level: primitive, value: 1200, description: Bounded application content width }
78
+ - { name: leading.primitive.tight, type: number, level: primitive, value: 1.25, description: Tight display line height }
79
+ - { name: leading.primitive.normal, type: number, level: primitive, value: 1.4, description: Compact evidence line height }
80
+ - { name: leading.primitive.reading, type: number, level: primitive, value: 1.5, description: Body reading line height }
81
+ - { name: duration.primitive.80, type: duration, level: primitive, value: 80, description: Instant state update }
82
+ - { name: duration.primitive.160, type: duration, level: primitive, value: 160, description: Direct feedback duration }
83
+ - { name: duration.primitive.250, type: duration, level: primitive, value: 250, description: Spatial transition duration }
84
+ - { name: duration.primitive.400, type: duration, level: primitive, value: 400, description: Bounded emphasis duration }
85
+ - { name: shadow.primitive.none, type: shadow, level: primitive, value: none, description: Base surface without elevation }
86
+ - { name: shadow.primitive.raised, type: shadow, level: primitive, value: "0 1px 2px rgba(11,15,20,0.12)", description: Raised control or panel shadow }
87
+ - { name: shadow.primitive.overlay, type: shadow, level: primitive, value: "0 8px 24px rgba(11,15,20,0.18)", description: Overlay shadow }
88
+ - { name: color.semantic.text-secondary, type: color, level: semantic, reference: color.primitive.neutral-500, description: Secondary foreground }
89
+ - { name: color.semantic.surface-subtle, type: color, level: semantic, reference: color.primitive.neutral-50, description: Subtle grouped surface }
90
+ - { name: color.semantic.surface-raised, type: color, level: semantic, reference: color.primitive.white, description: Raised task surface }
91
+ - { name: color.semantic.surface-overlay, type: color, level: semantic, reference: color.primitive.white, description: Overlay surface }
92
+ - { name: color.semantic.surface-inverse, type: color, level: semantic, reference: color.primitive.ink-950, description: Inverse surface }
93
+ - { name: color.semantic.border-default, type: color, level: semantic, reference: color.primitive.neutral-200, description: Default grouped border }
94
+ - { name: color.semantic.border-strong, type: color, level: semantic, reference: color.primitive.neutral-500, description: Strong separator border }
95
+ - { name: color.semantic.border-selected, type: color, level: semantic, reference: color.primitive.blue-700, description: Selected item border }
96
+ - { name: color.semantic.surface-selected, type: color, level: semantic, reference: color.primitive.blue-50, description: Selected item surface }
97
+ - { name: color.semantic.status-success, type: color, level: semantic, reference: color.primitive.green-700, description: Success state foreground }
98
+ - { name: color.semantic.status-warning, type: color, level: semantic, reference: color.primitive.amber-700, description: Warning and partial foreground }
99
+ - { name: color.semantic.status-error, type: color, level: semantic, reference: color.primitive.red-700, description: Error state foreground }
100
+ - { name: font.semantic.interface, type: font-family, level: semantic, reference: font.primitive.sans, description: Interface type family }
101
+ - { name: font.semantic.code, type: font-family, level: semantic, reference: font.primitive.mono, description: Code and log family }
102
+ - { name: weight.semantic.body, type: font-weight, level: semantic, reference: weight.primitive.regular, description: Body weight }
103
+ - { name: weight.semantic.label, type: font-weight, level: semantic, reference: weight.primitive.semibold, description: Label weight }
104
+ - { name: weight.semantic.heading, type: font-weight, level: semantic, reference: weight.primitive.bold, description: Heading weight }
105
+ - { name: weight.semantic.metric, type: font-weight, level: semantic, reference: weight.primitive.bold, description: Metric weight }
106
+ - { name: type.semantic.body, type: dimension, level: semantic, reference: size.primitive.16, description: Body size }
107
+ - { name: type.semantic.label, type: dimension, level: semantic, reference: size.primitive.14, description: Label size }
108
+ - { name: type.semantic.heading, type: dimension, level: semantic, reference: size.primitive.28, description: Section heading size }
109
+ - { name: type.semantic.metadata, type: dimension, level: semantic, reference: size.primitive.12, description: Metadata size }
110
+ - { name: type.semantic.metric, type: dimension, level: semantic, reference: size.primitive.32, description: Primary metric size }
111
+ - { name: type.semantic.evidence, type: dimension, level: semantic, reference: size.primitive.14, description: Evidence text size }
112
+ - { name: type.semantic.log, type: dimension, level: semantic, reference: size.primitive.14, description: Log text size }
113
+ - { name: type.semantic.code, type: dimension, level: semantic, reference: size.primitive.14, description: Code text size }
114
+ - { name: leading.semantic.tight, type: number, level: semantic, reference: leading.primitive.tight, description: Tight heading and metric line height }
115
+ - { name: leading.semantic.normal, type: number, level: semantic, reference: leading.primitive.normal, description: Compact evidence line height }
116
+ - { name: leading.semantic.reading, type: number, level: semantic, reference: leading.primitive.reading, description: Body reading line height }
117
+ - { name: space.semantic.4, type: dimension, level: semantic, reference: size.primitive.4, description: Small internal gap }
118
+ - { name: space.semantic.8, type: dimension, level: semantic, reference: size.primitive.8, description: Compact internal gap }
119
+ - { name: space.semantic.12, type: dimension, level: semantic, reference: size.primitive.12, description: Standard internal gap }
120
+ - { name: space.semantic.16, type: dimension, level: semantic, reference: size.primitive.16, description: Standard container inset }
121
+ - { name: space.semantic.24, type: dimension, level: semantic, reference: size.primitive.24, description: Section gap }
122
+ - { name: space.semantic.32, type: dimension, level: semantic, reference: size.primitive.32, description: Large section gap }
123
+ - { name: space.semantic.64, type: dimension, level: semantic, reference: size.primitive.64, description: Major composition gap }
124
+ - { name: size.semantic.control, type: dimension, level: semantic, reference: size.primitive.40, description: Stable control height }
125
+ - { name: size.semantic.row, type: dimension, level: semantic, reference: size.primitive.48, description: Default operational row height }
126
+ - { name: size.semantic.row-compact, type: dimension, level: semantic, reference: size.primitive.40, description: Compact operational row height }
127
+ - { name: size.semantic.content-max, type: dimension, level: semantic, reference: size.primitive.1200, description: Bounded application width }
128
+ - { name: duration.semantic.instant, type: duration, level: semantic, reference: duration.primitive.80, description: Immediate interface response }
129
+ - { name: duration.semantic.feedback, type: duration, level: semantic, reference: duration.primitive.160, description: Direct action feedback }
130
+ - { name: duration.semantic.transition, type: duration, level: semantic, reference: duration.primitive.250, description: Spatial state transition }
131
+ - { name: duration.semantic.emphasis, type: duration, level: semantic, reference: duration.primitive.400, description: Bounded attention emphasis }
132
+ - { name: shadow.semantic.base, type: shadow, level: semantic, reference: shadow.primitive.none, description: Base elevation }
133
+ - { name: shadow.semantic.raised, type: shadow, level: semantic, reference: shadow.primitive.raised, description: Raised task surface elevation }
134
+ - { name: shadow.semantic.overlay, type: shadow, level: semantic, reference: shadow.primitive.overlay, description: Overlay elevation }
135
+ modes:
136
+ - name: dark
137
+ overrides:
138
+ - token: color.semantic.text-primary
139
+ reference: color.primitive.white
140
+ - token: color.semantic.text-secondary
141
+ reference: color.primitive.neutral-200
142
+ - token: color.semantic.surface
143
+ reference: color.primitive.ink-950
144
+ - token: color.semantic.surface-subtle
145
+ reference: color.primitive.neutral-800
146
+ - token: color.semantic.surface-raised
147
+ reference: color.primitive.neutral-800
148
+ - token: color.semantic.surface-overlay
149
+ reference: color.primitive.neutral-800
150
+ - token: color.semantic.action-primary
151
+ reference: color.primitive.blue-300
152
+ - token: color.semantic.border-selected
153
+ reference: color.primitive.blue-300
154
+ - token: color.semantic.surface-selected
155
+ reference: color.primitive.neutral-800
156
+ - token: color.semantic.status-warning
157
+ reference: color.primitive.amber-300
158
+ - token: color.component.button-primary-label
159
+ reference: color.primitive.ink-950
160
+ productTask:
161
+ productContractId: example-product-contract
162
+ contractPath: evidence/product/product-contract.yaml
163
+ primaryUser: Operations professional responsible for reviewing and resolving evidence-backed findings
164
+ task: Identify the highest-priority issue, inspect its evidence and impact, route remediation, and verify the outcome.
165
+ successCriteria:
166
+ - The user can identify scope, priority, evidence, impact, next action, and validation method.
167
+ - Consequential actions preserve state, provenance, and recovery information.
168
+ consequentialActions:
169
+ - Route an approved finding to the remediation queue.
170
+ - Export or retain an operational result.
171
+ interfaceTrust:
172
+ contractId: operational-interface-trust-v1
173
+ contractPath: knowledge-base/design-intelligence/interface-trust.template.yaml
174
+ version: "1.0"
175
+ status: declared
176
+ requiredScenarios: [demo, live, fallback, stale, disconnected]
177
+ informationHierarchy:
178
+ contractId: operational-information-design-v1
179
+ contractPath: knowledge-base/design-intelligence/information-design.template.yaml
180
+ version: "1.0"
181
+ status: declared
182
+ levels:
183
+ - context-provenance
184
+ - primary-outcome-action
185
+ - critical-exceptions
186
+ - health-impact-metrics
187
+ - prioritized-findings
188
+ - operational-telemetry
189
+ - evidence-audit-trail
190
+ - history-exports
191
+ metricContracts:
192
+ informationContractId: operational-information-design-v1
193
+ metrics:
194
+ - metricId: recoverable-monthly-cost
195
+ decision: Decide how much current cost merits drill-down and validated remediation.
196
+ hierarchyLevel: primary-outcome-action
197
+ chartRefs: []
198
+ - metricId: critical-finding-count
199
+ decision: Decide which current exceptions require immediate review.
200
+ hierarchyLevel: health-impact-metrics
201
+ chartRefs: []
202
+ - metricId: validation-pass-rate
203
+ decision: Decide whether remediation failures need process correction or targeted follow-up.
204
+ hierarchyLevel: operational-telemetry
205
+ chartRefs: [validation-outcome-trend]
206
+ generationWorkflow:
207
+ steps:
208
+ - { stage: product-task, status: declared, artifactRefs: [example-product-contract] }
209
+ - { stage: truth-data-source-contract, status: declared, artifactRefs: [operational-interface-trust-v1] }
210
+ - { stage: information-architecture, status: declared, artifactRefs: [operational-information-design-v1] }
211
+ - { stage: interaction-state-model, status: declared, artifactRefs: [example-product-design-system] }
212
+ - { stage: visual-direction, status: declared, artifactRefs: [visual-direction-brief] }
213
+ - { stage: token-architecture, status: declared, artifactRefs: [example-product-design-system] }
214
+ - { stage: implementation, status: required, artifactRefs: [] }
215
+ - { stage: automated-verification, status: required, artifactRefs: [] }
216
+ - { stage: human-visual-review, status: review-required, artifactRefs: [] }
217
+ visualDirection:
218
+ domain: Enterprise operations and evidence review
219
+ intent: A calm, precise, work-focused interface that makes scope, exceptions, evidence, and next actions immediately scannable.
220
+ principles: [task-first hierarchy, restrained surfaces, explicit evidence, stable geometry]
221
+ avoid: [decorative agent diagrams, excessive glow, meaningless gradients, ornamental status elements]
222
+ tokenRefs: [color.semantic.text-primary, color.semantic.text-secondary, color.semantic.surface, color.semantic.surface-subtle, color.semantic.action-primary, color.semantic.border-default]
223
+ ornamentPolicy:
224
+ decorativeAgentDiagrams: false
225
+ excessiveGlow: false
226
+ meaninglessGradients: false
227
+ ornamentalStatusElements: false
228
+ referenceEvidenceRefs: [visual-direction-brief]
229
+ typography:
230
+ minimumBodySizePx: 16
231
+ maximumLineLengthCharacters: 72
232
+ numericAlignment: tabular
233
+ roles:
234
+ - { role: body, familyToken: font.semantic.interface, sizeToken: type.semantic.body, weightToken: weight.semantic.body, lineHeightToken: leading.semantic.reading, colorToken: color.semantic.text-primary, usage: "Instructions, descriptions, and sustained reading." }
235
+ - { role: label, familyToken: font.semantic.interface, sizeToken: type.semantic.label, weightToken: weight.semantic.label, lineHeightToken: leading.semantic.normal, colorToken: color.semantic.text-primary, usage: "Controls, fields, table headers, and concise categories." }
236
+ - { role: heading, familyToken: font.semantic.interface, sizeToken: type.semantic.heading, weightToken: weight.semantic.heading, lineHeightToken: leading.semantic.tight, colorToken: color.semantic.text-primary, usage: Page and section hierarchy without dashboard hero scaling. }
237
+ - { role: metadata, familyToken: font.semantic.interface, sizeToken: type.semantic.metadata, weightToken: weight.semantic.body, lineHeightToken: leading.semantic.normal, colorToken: color.semantic.text-secondary, usage: "Scope, timestamps, provenance, and secondary identifiers." }
238
+ - { role: metric, familyToken: font.semantic.interface, sizeToken: type.semantic.metric, weightToken: weight.semantic.metric, lineHeightToken: leading.semantic.tight, colorToken: color.semantic.text-primary, usage: Decision metrics with tabular numerals and explicit units. }
239
+ - { role: evidence, familyToken: font.semantic.interface, sizeToken: type.semantic.evidence, weightToken: weight.semantic.body, lineHeightToken: leading.semantic.reading, colorToken: color.semantic.text-primary, usage: "Observations, limitations, and validation evidence." }
240
+ - { role: log, familyToken: font.semantic.code, sizeToken: type.semantic.log, weightToken: weight.semantic.body, lineHeightToken: leading.semantic.normal, colorToken: color.semantic.text-secondary, usage: Runtime logs and ordered processing output. }
241
+ - { role: code, familyToken: font.semantic.code, sizeToken: type.semantic.code, weightToken: weight.semantic.body, lineHeightToken: leading.semantic.normal, colorToken: color.semantic.text-primary, usage: "Commands, identifiers, paths, and code fragments." }
242
+ composition:
243
+ contentWidth: { strategy: hybrid, maximumPx: 1200 }
244
+ grids:
245
+ - { viewport: 375, columns: 4, gutterToken: space.semantic.12, marginToken: space.semantic.16, composition: "Single-column task flow with primary outcome, exceptions, and action before telemetry." }
246
+ - { viewport: 768, columns: 8, gutterToken: space.semantic.16, marginToken: space.semantic.24, composition: Two-region layout where evidence follows the primary task without side scrolling. }
247
+ - { viewport: 1024, columns: 12, gutterToken: space.semantic.24, marginToken: space.semantic.24, composition: Operational overview with bounded metric row and prioritized findings. }
248
+ - { viewport: 1440, columns: 12, gutterToken: space.semantic.24, marginToken: space.semantic.32, composition: "Bounded workspace with stable navigation, main evidence, and contextual detail regions." }
249
+ spacingRhythm:
250
+ baseToken: space.semantic.4
251
+ allowedStepTokens: [space.semantic.4, space.semantic.8, space.semantic.12, space.semantic.16, space.semantic.24, space.semantic.32, space.semantic.64]
252
+ alignmentRules:
253
+ - Align labels, values, and actions to shared grid lines rather than card edges chosen per section.
254
+ - Right-align comparable numeric columns and preserve tabular numeral alignment during loading.
255
+ - Keep evidence and limitations directly below the outcome they qualify.
256
+ stableDimensions:
257
+ - { component: primary-toolbar, behavior: fixed, tokenRefs: [size.semantic.control], rationale: Loading labels and tool states must not resize the command surface. }
258
+ - { component: findings-table-row, behavior: bounded, tokenRefs: [size.semantic.row, size.semantic.row-compact], rationale: Long labels wrap within bounded rows without shifting adjacent controls. }
259
+ surfaces:
260
+ - { role: canvas, tokenRef: color.semantic.surface }
261
+ - { role: subtle, tokenRef: color.semantic.surface-subtle }
262
+ - { role: raised, tokenRef: color.semantic.surface-raised }
263
+ - { role: overlay, tokenRef: color.semantic.surface-overlay }
264
+ - { role: inverse, tokenRef: color.semantic.surface-inverse }
265
+ borders:
266
+ - { role: default, tokenRef: color.semantic.border-default }
267
+ - { role: strong, tokenRef: color.semantic.border-strong }
268
+ - { role: focus, tokenRef: color.semantic.action-primary }
269
+ - { role: selected, tokenRef: color.semantic.border-selected }
270
+ elevations:
271
+ - { role: base, tokenRef: shadow.semantic.base }
272
+ - { role: raised, tokenRef: shadow.semantic.raised }
273
+ - { role: overlay, tokenRef: shadow.semantic.overlay }
274
+ emphasis:
275
+ - { level: primary, textToken: color.semantic.text-primary, surfaceToken: color.semantic.surface }
276
+ - { level: secondary, textToken: color.semantic.text-primary, surfaceToken: color.semantic.surface-subtle }
277
+ - { level: tertiary, textToken: color.semantic.text-secondary, surfaceToken: color.semantic.surface }
278
+ - { level: muted, textToken: color.semantic.text-secondary, surfaceToken: color.semantic.surface-subtle }
279
+ selectedState:
280
+ backgroundToken: color.semantic.surface-selected
281
+ borderToken: color.semantic.border-selected
282
+ indicator: Persistent leading selection indicator
283
+ nonColorCue: Selected label and checked icon remain visible without color
284
+ densityProfile:
285
+ mode: adaptive
286
+ rationale: Repeated operational scanning benefits from compact rows while consequential actions and evidence retain comfortable spacing.
287
+ controlHeightToken: size.semantic.control
288
+ rowHeightToken: size.semantic.row
289
+ compactRowHeightToken: size.semantic.row-compact
290
+ spacingTokenRefs: [space.semantic.4, space.semantic.8, space.semantic.12, space.semantic.16, space.semantic.24]
291
+ maximumPrimaryActions: 2
292
+ viewportBehavior:
293
+ - viewport: 375
294
+ mode: comfortable
295
+ visiblePriorities: [context, primary outcome, critical exception, next action]
296
+ priorityRoles: [context, primary-outcome, critical-exceptions, next-action]
297
+ - viewport: 768
298
+ mode: comfortable
299
+ visiblePriorities: [context, primary outcome, critical exceptions, impact, next action]
300
+ priorityRoles: [context, primary-outcome, critical-exceptions, impact, next-action]
301
+ - viewport: 1024
302
+ mode: compact
303
+ visiblePriorities: [context, outcome, exceptions, metrics, findings, action]
304
+ priorityRoles: [context, primary-outcome, critical-exceptions, supporting-metrics, findings, next-action]
305
+ - viewport: 1440
306
+ mode: compact
307
+ visiblePriorities: [context, outcome, exceptions, metrics, findings, action, telemetry, evidence]
308
+ priorityRoles: [context, primary-outcome, critical-exceptions, supporting-metrics, findings, next-action, telemetry, evidence]
309
+ interactionStates:
310
+ states:
311
+ - { state: loading, behavior: Preserve component geometry and announce bounded progress., tokenRefs: [color.semantic.text-secondary, color.semantic.surface-subtle], textCue: true, iconCue: false }
312
+ - { state: empty, behavior: "Preserve scope, explain why no records appear, and expose recovery.", tokenRefs: [color.semantic.text-secondary, color.semantic.surface-subtle], textCue: true, iconCue: true }
313
+ - { state: success, behavior: Name the completed outcome and retain validation evidence., tokenRefs: [color.semantic.status-success, color.semantic.surface], textCue: true, iconCue: true }
314
+ - { state: warning, behavior: State the risk and available action without blocking unrelated work., tokenRefs: [color.semantic.status-warning, color.semantic.surface], textCue: true, iconCue: true }
315
+ - { state: error, behavior: "Preserve entered context, state the failure, and expose retry or recovery.", tokenRefs: [color.semantic.status-error, color.semantic.surface], textCue: true, iconCue: true }
316
+ - { state: partial, behavior: "Show available content, excluded scope, limitation, and retry action.", tokenRefs: [color.semantic.status-warning, color.semantic.surface-subtle], textCue: true, iconCue: true }
317
+ - { state: disabled, behavior: Keep the control legible and explain prerequisites when the reason is not obvious., tokenRefs: [color.semantic.text-secondary, color.semantic.surface-subtle], textCue: true, iconCue: false }
318
+ - { state: selected, behavior: "Preserve a border, indicator, label, and checked icon independent of color.", tokenRefs: [color.semantic.surface-selected, color.semantic.border-selected], textCue: true, iconCue: true }
319
+ - { state: focus, behavior: Draw a persistent high-contrast focus border outside component content., tokenRefs: [color.semantic.action-primary, color.semantic.surface], textCue: false, iconCue: false }
320
+ motion:
321
+ durationTokens:
322
+ instant: duration.semantic.instant
323
+ feedback: duration.semantic.feedback
324
+ transition: duration.semantic.transition
325
+ emphasis: duration.semantic.emphasis
326
+ motions:
327
+ - { id: selection-feedback, purpose: Confirm a changed selection without moving surrounding content., trigger: User selects a finding row, property: color, durationCategory: feedback, interruptible: true }
328
+ - { id: detail-transition, purpose: Preserve spatial continuity when contextual details open., trigger: User opens finding details, property: opacity, durationCategory: transition, interruptible: true }
329
+ reducedMotion:
330
+ strategy: replace
331
+ equivalents:
332
+ - { motionRef: selection-feedback, behavior: Apply the final selected tokens immediately while retaining border and icon cues. }
333
+ - { motionRef: detail-transition, behavior: Show the detail region immediately and move focus to its heading without animation. }
334
+ chartContracts:
335
+ - id: validation-outcome-trend
336
+ purpose: Show whether remediation validation performance is improving and expose failed periods for investigation.
337
+ type: line
338
+ metricRefs: [validation-pass-rate]
339
+ labelStrategy: direct
340
+ titleVisible: true
341
+ valuesVisible: true
342
+ legend: { visible: false, reason: A single directly labeled series makes a separate legend redundant. }
343
+ comparison: { status: available, context: Current seven-day period compared with the previous seven complete days. }
344
+ alternative: { kind: table, path: /metrics/validation-pass-rate?view=table }
345
+ states:
346
+ loading: Preserve chart dimensions and show bounded loading text.
347
+ empty: State that no completed validation runs exist in the selected period.
348
+ partial: Show available periods and label excluded or delayed records.
349
+ error: Preserve metric context and expose retry plus the table alternative.
350
+ tokenRefs: [color.semantic.action-primary, color.semantic.text-primary, color.semantic.border-default]
351
+ backgroundToken: color.semantic.surface
352
+ nonColorCues: [color, text, value, line-style]
353
+ decorative: false
354
+ renderedEvidence:
355
+ fixture:
356
+ id: operational-overview
357
+ sourcePath: ci/fixtures/responsive-overview.html
358
+ route: /responsive-overview
359
+ captures:
360
+ - { viewport: 375, status: planned }
361
+ - { viewport: 768, status: planned }
362
+ - { viewport: 1024, status: planned }
363
+ - { viewport: 1440, status: planned }
364
+ humanVisualReview:
365
+ status: required
366
+ dimensions: [hierarchy, balance, scanability, density, domain-fit]
367
+ reviewers: []
368
+ brand:
369
+ promise: Make consequential operational work understandable and verifiable
370
+ audiences:
371
+ - Operations professionals
372
+ - Product reviewers
373
+ attributes: [precise, calm, accountable]
374
+ avoid: [decorative ambiguity, fake metrics, trend-only styling]
375
+ voicePrinciples:
376
+ - Name actions by their outcome
377
+ - State evidence and limitations directly
378
+ marks:
379
+ - id: primary-wordmark
380
+ role: primary
381
+ asset: brand-wordmark
382
+ clearSpace: Keep one symbol-width clear on every side
383
+ minimumSize: 96 CSS pixels wide on screen
384
+ allowedBackgrounds: [light-neutral, dark-neutral]
385
+ figma:
386
+ pages:
387
+ - name: Foundations
388
+ role: foundations
389
+ purpose: Tokens, type roles, grids, motion, and accessibility examples
390
+ - name: Components
391
+ role: components
392
+ purpose: Published components, properties, states, and usage notes
393
+ - name: Patterns
394
+ role: patterns
395
+ purpose: Task-centered compositions using published components
396
+ collections:
397
+ - name: Semantic color
398
+ modes: [light, dark]
399
+ tokens:
400
+ - color.semantic.text-primary
401
+ - color.semantic.surface
402
+ - color.semantic.action-primary
403
+ - color.component.button-primary-label
404
+ components:
405
+ - name: Button
406
+ purpose: Trigger one named product action
407
+ interactive: true
408
+ properties:
409
+ - name: Label
410
+ type: text
411
+ - name: State
412
+ type: variant
413
+ - name: Leading icon
414
+ type: instance-swap
415
+ states: [default, hover, focus, active, disabled, loading]
416
+ documented: true
417
+ assets:
418
+ - id: brand-wordmark
419
+ purpose: Identify the product in branded navigation and exported review material.
420
+ kind: logo
421
+ path: assets/brand/wordmark.svg
422
+ source:
423
+ origin: original
424
+ creator: Product design team
425
+ rights:
426
+ status: approved
427
+ basis: owned
428
+ evidence: evidence/rights/brand-wordmark.md
429
+ restrictions: []
430
+ reviewedBy: Product owner
431
+ reviewedAt: 2026-08-26T12:00:00+03:00
432
+ alternative:
433
+ kind: short-text
434
+ content: Example Product
435
+ failureBehavior:
436
+ strategy: text-alternative
437
+ behavior: Render the product name as text without reserving an empty image region.
438
+ - id: icon-analyze
439
+ purpose: Reinforce the named Analyze action without replacing its visible label.
440
+ kind: icon
441
+ path: assets/icons/analyze.svg
442
+ source:
443
+ origin: original
444
+ creator: Product design team
445
+ rights:
446
+ status: approved
447
+ basis: owned
448
+ evidence: evidence/rights/icon-analyze.md
449
+ restrictions: []
450
+ alternative:
451
+ kind: short-text
452
+ content: Analyze
453
+ failureBehavior:
454
+ strategy: text-alternative
455
+ behavior: Keep the visible Analyze label and remove the failed icon from layout.
456
+ - id: workspace-illustration
457
+ purpose: Explain the evidence-to-result workflow in product education and review material.
458
+ kind: illustration
459
+ path: assets/illustrations/workspace.png
460
+ source:
461
+ origin: generated
462
+ creator: Product design team with an image-generation model
463
+ sourceUrl: https://example.com/provider-terms
464
+ rights:
465
+ status: approved
466
+ basis: terms-of-service
467
+ evidence: evidence/rights/workspace-illustration.md
468
+ restrictions: [Do not use as a product screenshot]
469
+ reviewedBy: Product owner
470
+ reviewedAt: 2026-08-26T12:00:00+03:00
471
+ generation:
472
+ provider: Example image provider
473
+ model: Example model version
474
+ promptRecord: evidence/prompts/workspace-illustration.md
475
+ humanContributions:
476
+ - Art direction, selection, compositing, and final retouching
477
+ references: []
478
+ alternative:
479
+ kind: short-text
480
+ content: Analyst comparing source evidence with a structured result panel
481
+ failureBehavior:
482
+ strategy: text-alternative
483
+ behavior: Replace the image region with its concise workflow description.
484
+ iconSystem:
485
+ name: Example Product Icons
486
+ grid: 24
487
+ sizes: [16, 20, 24]
488
+ stroke:
489
+ style: outline
490
+ weight: 1.75
491
+ linecap: round
492
+ linejoin: round
493
+ icons:
494
+ - id: analyze
495
+ name: Analyze
496
+ meaning: Start analysis of the current validated input
497
+ asset: icon-analyze
498
+ decorative: false
499
+ accessibleName: Analyze
500
+ presentations:
501
+ - id: product-review
502
+ purpose: Support a product-readiness decision with evidence and trade-offs
503
+ audience: Product and engineering reviewers
504
+ aspectRatio: "16:9"
505
+ masterLayouts: [title, content]
506
+ slides:
507
+ - id: opening
508
+ title: Example Product makes operational evidence reviewable
509
+ purpose: Establish the product promise and review scope
510
+ layout: title
511
+ readingOrder: [title, subtitle, brand-mark]
512
+ assets: [brand-wordmark]
513
+ speakerNotes: Introduce the review boundary and decision required.
514
+ - id: workflow
515
+ title: One task model connects input, evidence, and action
516
+ purpose: Explain the primary workflow and its states
517
+ layout: content
518
+ readingOrder: [title, workflow-diagram, evidence-note]
519
+ assets: [workspace-illustration]
520
+ accessibility:
521
+ contrastPairs:
522
+ - id: primary-text-on-surface
523
+ foreground: color.semantic.text-primary
524
+ background: color.semantic.surface
525
+ usage: normal-text
526
+ - id: secondary-text-on-surface
527
+ foreground: color.semantic.text-secondary
528
+ background: color.semantic.surface
529
+ usage: normal-text
530
+ - id: button-label-on-primary
531
+ foreground: color.component.button-primary-label
532
+ background: color.semantic.action-primary
533
+ usage: normal-text
534
+ - id: dark-primary-text-on-surface
535
+ foreground: color.semantic.text-primary
536
+ background: color.semantic.surface
537
+ usage: normal-text
538
+ mode: dark
539
+ - id: dark-secondary-text-on-surface
540
+ foreground: color.semantic.text-secondary
541
+ background: color.semantic.surface
542
+ usage: normal-text
543
+ mode: dark
544
+ - id: focus-on-surface
545
+ foreground: color.semantic.action-primary
546
+ background: color.semantic.surface
547
+ usage: non-text
548
+ - id: dark-focus-on-surface
549
+ foreground: color.semantic.action-primary
550
+ background: color.semantic.surface
551
+ usage: non-text
552
+ mode: dark
553
+ - id: dark-button-label-on-primary
554
+ foreground: color.component.button-primary-label
555
+ background: color.semantic.action-primary
556
+ usage: normal-text
557
+ mode: dark
558
+ - { id: secondary-state-on-subtle, foreground: color.semantic.text-secondary, background: color.semantic.surface-subtle, usage: non-text }
559
+ - { id: dark-secondary-state-on-subtle, foreground: color.semantic.text-secondary, background: color.semantic.surface-subtle, usage: non-text, mode: dark }
560
+ - { id: success-state-on-surface, foreground: color.semantic.status-success, background: color.semantic.surface, usage: non-text }
561
+ - { id: dark-success-state-on-surface, foreground: color.semantic.status-success, background: color.semantic.surface, usage: non-text, mode: dark }
562
+ - { id: warning-state-on-surface, foreground: color.semantic.status-warning, background: color.semantic.surface, usage: non-text }
563
+ - { id: dark-warning-state-on-surface, foreground: color.semantic.status-warning, background: color.semantic.surface, usage: non-text, mode: dark }
564
+ - { id: error-state-on-surface, foreground: color.semantic.status-error, background: color.semantic.surface, usage: non-text }
565
+ - { id: dark-error-state-on-surface, foreground: color.semantic.status-error, background: color.semantic.surface, usage: non-text, mode: dark }
566
+ - { id: warning-state-on-subtle, foreground: color.semantic.status-warning, background: color.semantic.surface-subtle, usage: non-text }
567
+ - { id: dark-warning-state-on-subtle, foreground: color.semantic.status-warning, background: color.semantic.surface-subtle, usage: non-text, mode: dark }
568
+ - { id: selected-border-on-surface, foreground: color.semantic.surface-selected, background: color.semantic.border-selected, usage: non-text }
569
+ - { id: dark-selected-border-on-surface, foreground: color.semantic.surface-selected, background: color.semantic.border-selected, usage: non-text, mode: dark }
570
+ nonColorCues:
571
+ - meaning: Validation error
572
+ cues: [color, text, icon]
573
+ - meaning: Selected item
574
+ cues: [color, shape]
575
+ evidence:
576
+ - id: visual-direction-brief
577
+ kind: source
578
+ path: evidence/visual/visual-direction-brief.md
579
+ detail: Product task, domain constraints, visual principles, prohibited ornament, and reference rationale.
580
+ - id: brand-review
581
+ kind: review
582
+ path: evidence/reviews/brand-review.md
583
+ detail: Product owner reviewed positioning, mark family, and prohibited uses
584
+ - id: contrast-calculation
585
+ kind: contrast
586
+ path: evidence/accessibility/contrast.json
587
+ detail: Canonical token pairs evaluated before rendered verification
588
+ - id: figma-export
589
+ kind: export
590
+ path: evidence/figma/library-export.json
591
+ detail: Exported variable and component inventory for implementation comparison