@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,59 @@
1
+ # Licensing And Provenance
2
+
3
+ Maintain a per-asset evidence trail so design output can be reviewed, replaced, and distributed deliberately. This workflow organizes evidence; it is not legal advice.
4
+
5
+ ## Required Asset Record
6
+
7
+ For every logo, icon, image, illustration, texture, chart, screenshot, font, audio file, or video, record:
8
+
9
+ - Stable asset identifier and local path.
10
+ - Origin and creator.
11
+ - Source URL when applicable.
12
+ - Rights status: `approved`, `pending`, `rejected`, or `unknown`.
13
+ - Rights basis: ownership, contract, provider terms, SPDX license, public domain, or permission.
14
+ - Evidence path or source URL.
15
+ - Attribution and restrictions.
16
+ - Reviewer and review date when approval requires human authority.
17
+ - Alternative-content classification.
18
+
19
+ Only `approved` assets may ship. Pending, rejected, or unknown assets are blockers, not warnings.
20
+
21
+ ## Source-Specific Evidence
22
+
23
+ ### Original And Commissioned
24
+
25
+ Record creator, agreement or employment basis, assignment terms when relevant, delivery date, and source files. Do not assume payment alone transfers every right.
26
+
27
+ ### Open Source And Open Content
28
+
29
+ Use an SPDX identifier or expression when the applicable license is represented by SPDX. Preserve copyright notices, attribution, modification notices, source links, and license text as required. Record channel restrictions that cannot be expressed by the identifier alone.
30
+
31
+ ### Licensed Libraries And Stock
32
+
33
+ Record the exact asset, account or purchase evidence, license version, download date, allowed channels, seat or audience limits, modification terms, and attribution requirements. A generic link to the provider home page is insufficient.
34
+
35
+ ### Public Domain
36
+
37
+ Record the source and the basis for the public-domain claim. Review trademarks, privacy, publicity, cultural-property, and jurisdiction-specific constraints separately.
38
+
39
+ ### User-Provided Assets
40
+
41
+ Record the user's representation or permission and any distribution boundary. Do not interpret possession as permission to publish.
42
+
43
+ ### Generated Assets
44
+
45
+ Record provider, model, provider-terms evidence, prompt artifact, reference assets, human contributions, and post-processing. Review confusing similarity, embedded marks, recognizable people, sensitive contexts, and jurisdiction or channel requirements. Do not promise copyright protection or non-infringement based only on generation metadata.
46
+
47
+ ## Operational Rules
48
+
49
+ 1. Keep evidence outside generated public assets when it contains private account or contractual data.
50
+ 2. Make asset replacement possible through stable IDs and semantic references.
51
+ 3. Re-review assets when channels, territory, audience size, monetization, or provider terms change.
52
+ 4. Keep rejected assets for audit only when policy permits; never leave them in production asset directories.
53
+ 5. Treat missing evidence as unresolved even when an asset looks generic.
54
+
55
+ ## Machine-Readable Identifiers
56
+
57
+ SPDX identifiers make standard licenses easier to record consistently, but they do not replace required notices or a review of whether the license fits the intended use. See [SPDX guidance for license information](https://spdx.dev/learn/handling-license-info/) and the [SPDX License List](https://spdx.org/licenses/).
58
+
59
+ For current United States guidance on copyrightability and generative AI, consult the [U.S. Copyright Office AI initiative](https://www.copyright.gov/ai/). Obtain qualified advice for consequential releases or jurisdiction-specific questions.
@@ -0,0 +1,56 @@
1
+ # Presentation Design
2
+
3
+ Design a presentation as a sequence of audience decisions supported by reusable masters, not as disconnected decorated slides.
4
+
5
+ ## Step 1: Define The Communication Contract
6
+
7
+ Record the audience, decision or outcome, delivery context, duration, aspect ratio, and distribution format. Separate what must be understood during delivery from what belongs in speaker notes or a companion document.
8
+
9
+ Write a one-sentence purpose for every slide. Remove slides that do not advance the narrative, support a decision, explain evidence, or enable action.
10
+
11
+ ## Step 2: Build The Narrative
12
+
13
+ Use a structure appropriate to the task, such as:
14
+
15
+ 1. Context and stakes.
16
+ 2. User or system problem.
17
+ 3. Evidence and constraints.
18
+ 4. Proposed direction.
19
+ 5. Trade-offs and alternatives.
20
+ 6. Implementation or operating model.
21
+ 7. Decision, owner, and next action.
22
+
23
+ Do not force this sequence onto reports, training, or status reviews when a different task model is clearer.
24
+
25
+ ## Step 3: Create Masters
26
+
27
+ Define a small set of master layouts for recurring communication roles, such as title, section, statement, comparison, process, evidence, and closing. Each master controls margins, grid, title location, footer, page number, safe area, and reading order.
28
+
29
+ Use tokens for background, text, accent, status, spacing, and typography. Keep the brand present but subordinate to legibility and evidence.
30
+
31
+ ## Step 4: Compose Slides
32
+
33
+ - Give each slide one primary message.
34
+ - Use a literal title that states the point, not a vague topic label.
35
+ - Prefer real product views, diagrams, and data over decorative stock imagery.
36
+ - Label charts directly and provide source, scope, units, and time range.
37
+ - Avoid screenshots with unreadable UI or unexplained highlights.
38
+ - Keep body text and diagrams readable at the expected viewing distance.
39
+ - Use builds and motion only when sequence is necessary to comprehension.
40
+
41
+ ## Step 5: Make The Deck Accessible
42
+
43
+ Declare reading order for every slide. Use unique slide titles, sufficient text and non-text contrast, non-color cues, meaningful link text, and alternatives for informative visuals. Mark decorative media appropriately. Provide captions or transcripts for time-based media.
44
+
45
+ Do not place essential content only in speaker notes when the distributed deck must stand alone. Check the exported PDF or presentation file because reading order and alternatives can change during export.
46
+
47
+ ## Step 6: Verify Delivery And Export
48
+
49
+ - Rehearse at the real display resolution and viewing distance.
50
+ - Check projection and low-quality screen conditions.
51
+ - Inspect all fonts, media, links, notes, page numbers, and transitions.
52
+ - Open exported formats independently.
53
+ - Confirm assets retain approved attribution and restrictions.
54
+ - Test keyboard progression and reading order in the delivery format.
55
+
56
+ The manifest validator checks master references, slide IDs, reading-order declarations, and asset references. It cannot inspect the actual deck file.
@@ -0,0 +1,67 @@
1
+ # Product Design Brief Contract
2
+
3
+ Use this module before generating a new product interface, redesigning a consequential workflow, or
4
+ compiling downstream architecture and visual contracts. It turns product intent into a reviewable
5
+ input boundary and prevents an agent from filling missing users, data behavior, recovery, or success
6
+ criteria with generic UI conventions.
7
+
8
+ ## Required Sequence
9
+
10
+ 1. Record sources before conclusions. Classify user statements, research, analytics, existing
11
+ product behavior, technical evidence, standards, and agent assumptions separately.
12
+ 2. State the current problem and desired outcome using source references. An agent assumption alone
13
+ cannot establish the product problem or primary audience.
14
+ 3. Define included and excluded scope. Resolve contradictory scope before planning.
15
+ 4. Identify at least one primary audience with concrete goals, operating context, constraints,
16
+ accessibility needs, expertise, and non-agent evidence.
17
+ 5. Define measurable user, operational, business, or risk-reduction outcomes. Unknown baselines are
18
+ valid when their reason is explicit.
19
+ 6. Model primary tasks with trigger, goal, frequency, criticality, inputs, data, success signal,
20
+ failure impact, and recovery. Consequential tasks must declare their data boundary.
21
+ 7. Classify each data source as live, demo, hybrid, imported, cached, user input, or local static.
22
+ Declare latency, sensitivity, freshness, limitations, fallback, disclosure, and origin
23
+ preservation. Configuration is not proof that a live service is connected.
24
+ 8. Declare every applicable state. Async and operational products generally need loading, empty,
25
+ success, error, partial, stale, and disconnected behavior. Sensitive products need unauthorized
26
+ behavior. State requirements are derived from the declared data rather than added decoratively.
27
+ 9. Declare platforms, viewports, input methods, constraints, and prioritized requirements. A
28
+ responsive web product covers 375, 768, 1024, and 1440 CSS pixels plus keyboard, pointer, touch,
29
+ and assistive-technology operation.
30
+ 10. Keep assumptions visible. Unresolved high-risk assumptions block generation; unresolved
31
+ medium-risk assumptions remain warnings.
32
+ 11. Bind every must-have requirement and every task to an observable acceptance criterion. Naming a
33
+ human verification method does not create human evidence.
34
+ 12. Decide whether product-task, interface-trust, information-design, and design-deliverable
35
+ contracts are planned, already exist, or are genuinely not applicable.
36
+
37
+ ## Generation Boundary
38
+
39
+ A brief is generation-ready only when it passes semantic validation and has `status: validated`.
40
+ That status authorizes design planning, not production release. Continue through architecture,
41
+ interface trust, information design, visual design, implementation, browser verification, and the
42
+ quality gate.
43
+
44
+ Do not convert uncertainty into invented personas, fake metrics, unsupported live labels, generic
45
+ dashboard cards, or placeholder acceptance criteria. Record the uncertainty as an assumption,
46
+ assign risk, and define how it will be validated.
47
+
48
+ ## Commands
49
+
50
+ Start from `product-design-brief.template.yaml`, then run:
51
+
52
+ ```bash
53
+ npm run validate-brief -- --brief path/to/product-design-brief.yaml
54
+ ```
55
+
56
+ MCP clients can call `validate_product_design_brief`. External brief roots must be explicitly
57
+ listed in `ZTOTHEZ_DESIGN_BRIEF_ROOTS`. The tool is read-only and returns the same structured report
58
+ as the CLI.
59
+
60
+ ## Evidence Limits
61
+
62
+ - Structural and semantic validation does not prove that a proposed product is desirable.
63
+ - A source reference proves traceability, not source quality.
64
+ - Agent assumptions remain agent evidence even when a contract is validated.
65
+ - Human-expert and representative-user acceptance methods require separately attributable evidence.
66
+ - Interactive success, accessibility, responsive composition, and truthful runtime behavior require
67
+ downstream implementation and browser evidence.
@@ -0,0 +1,279 @@
1
+ $schema: https://json-schema.org/draft/2020-12/schema
2
+ $id: https://ztothez.github.io/schemas/product-design-brief.schema.yaml
3
+ title: ZtotheZ Product Design Brief
4
+ type: object
5
+ additionalProperties: false
6
+ required: [version, id, product, status, preparedAt, preparedBy, evidenceSources, problem, scope, audiences, outcomes, dataSources, tasks, states, platforms, constraints, requirements, assumptions, acceptanceCriteria, downstreamContracts]
7
+ properties:
8
+ version: { const: "1.0" }
9
+ id: { $ref: "#/$defs/id" }
10
+ product: { $ref: "#/$defs/text" }
11
+ status: { enum: [draft, validated] }
12
+ preparedAt: { type: string, format: date-time }
13
+ preparedBy:
14
+ type: object
15
+ additionalProperties: false
16
+ required: [type, name]
17
+ properties:
18
+ type: { enum: [agent, human, mixed] }
19
+ name: { $ref: "#/$defs/text" }
20
+ evidenceSources:
21
+ type: array
22
+ minItems: 1
23
+ maxItems: 500
24
+ items: { $ref: "#/$defs/evidenceSource" }
25
+ problem:
26
+ type: object
27
+ additionalProperties: false
28
+ required: [statement, currentOutcome, desiredOutcome, evidenceRefs]
29
+ properties:
30
+ statement: { $ref: "#/$defs/longText" }
31
+ currentOutcome: { $ref: "#/$defs/longText" }
32
+ desiredOutcome: { $ref: "#/$defs/longText" }
33
+ evidenceRefs: { $ref: "#/$defs/nonEmptyRefs" }
34
+ scope:
35
+ type: object
36
+ additionalProperties: false
37
+ required: [included, excluded]
38
+ properties:
39
+ included: { $ref: "#/$defs/nonEmptyTextList" }
40
+ excluded: { $ref: "#/$defs/nonEmptyTextList" }
41
+ audiences:
42
+ type: array
43
+ minItems: 1
44
+ maxItems: 100
45
+ items: { $ref: "#/$defs/audience" }
46
+ outcomes:
47
+ type: array
48
+ minItems: 1
49
+ maxItems: 200
50
+ items: { $ref: "#/$defs/outcome" }
51
+ dataSources:
52
+ type: array
53
+ minItems: 1
54
+ maxItems: 500
55
+ items: { $ref: "#/$defs/dataSource" }
56
+ tasks:
57
+ type: array
58
+ minItems: 1
59
+ maxItems: 500
60
+ items: { $ref: "#/$defs/task" }
61
+ states:
62
+ type: array
63
+ minItems: 1
64
+ maxItems: 20
65
+ items: { $ref: "#/$defs/state" }
66
+ platforms:
67
+ type: array
68
+ minItems: 1
69
+ maxItems: 20
70
+ items: { $ref: "#/$defs/platform" }
71
+ constraints: { $ref: "#/$defs/textList" }
72
+ requirements:
73
+ type: array
74
+ minItems: 1
75
+ maxItems: 1000
76
+ items: { $ref: "#/$defs/requirement" }
77
+ assumptions:
78
+ type: array
79
+ maxItems: 500
80
+ items: { $ref: "#/$defs/assumption" }
81
+ acceptanceCriteria:
82
+ type: array
83
+ minItems: 1
84
+ maxItems: 2000
85
+ items: { $ref: "#/$defs/acceptanceCriterion" }
86
+ downstreamContracts:
87
+ type: array
88
+ minItems: 4
89
+ maxItems: 4
90
+ items: { $ref: "#/$defs/downstreamContract" }
91
+ $defs:
92
+ id: { type: string, pattern: "^[a-z0-9][a-z0-9-]{0,63}$" }
93
+ text: { type: string, minLength: 1, maxLength: 512 }
94
+ longText: { type: string, minLength: 1, maxLength: 1024 }
95
+ refs:
96
+ type: array
97
+ maxItems: 100
98
+ items: { $ref: "#/$defs/id" }
99
+ nonEmptyRefs:
100
+ type: array
101
+ minItems: 1
102
+ maxItems: 100
103
+ items: { $ref: "#/$defs/id" }
104
+ textList:
105
+ type: array
106
+ maxItems: 100
107
+ items: { $ref: "#/$defs/longText" }
108
+ nonEmptyTextList:
109
+ type: array
110
+ minItems: 1
111
+ maxItems: 100
112
+ items: { $ref: "#/$defs/longText" }
113
+ evidenceSource:
114
+ type: object
115
+ additionalProperties: false
116
+ required: [id, kind, description, owner]
117
+ properties:
118
+ id: { $ref: "#/$defs/id" }
119
+ kind: { enum: [user-provided, stakeholder, user-research, product-analytics, support-record, existing-product, technical-source, public-standard, agent-assumption] }
120
+ description: { $ref: "#/$defs/longText" }
121
+ location: { $ref: "#/$defs/longText" }
122
+ owner: { $ref: "#/$defs/text" }
123
+ audience:
124
+ type: object
125
+ additionalProperties: false
126
+ required: [id, role, priority, goals, contexts, constraints, accessibilityNeeds, expertise, evidenceRefs]
127
+ properties:
128
+ id: { $ref: "#/$defs/id" }
129
+ role: { $ref: "#/$defs/text" }
130
+ priority: { enum: [primary, secondary, affected] }
131
+ goals: { $ref: "#/$defs/textList" }
132
+ contexts: { $ref: "#/$defs/textList" }
133
+ constraints: { $ref: "#/$defs/textList" }
134
+ accessibilityNeeds: { $ref: "#/$defs/textList" }
135
+ expertise: { enum: [novice, intermediate, expert, mixed, unknown] }
136
+ evidenceRefs: { $ref: "#/$defs/nonEmptyRefs" }
137
+ outcome:
138
+ type: object
139
+ additionalProperties: false
140
+ required: [id, kind, statement, measure, evidenceRefs]
141
+ properties:
142
+ id: { $ref: "#/$defs/id" }
143
+ kind: { enum: [user, business, operational, risk-reduction] }
144
+ statement: { $ref: "#/$defs/longText" }
145
+ measure:
146
+ type: object
147
+ additionalProperties: false
148
+ required: [signal, baseline, target]
149
+ properties:
150
+ signal: { $ref: "#/$defs/longText" }
151
+ target: { $ref: "#/$defs/longText" }
152
+ baseline:
153
+ oneOf:
154
+ - type: object
155
+ additionalProperties: false
156
+ required: [status, value]
157
+ properties:
158
+ status: { const: known }
159
+ value: { $ref: "#/$defs/text" }
160
+ - type: object
161
+ additionalProperties: false
162
+ required: [status, reason]
163
+ properties:
164
+ status: { enum: [unknown, not-applicable] }
165
+ reason: { $ref: "#/$defs/longText" }
166
+ evidenceRefs: { $ref: "#/$defs/nonEmptyRefs" }
167
+ dataSource:
168
+ type: object
169
+ additionalProperties: false
170
+ required: [id, name, mode, latency, classification, sourceEvidenceRef, freshness, limitations, fallback]
171
+ properties:
172
+ id: { $ref: "#/$defs/id" }
173
+ name: { $ref: "#/$defs/text" }
174
+ mode: { enum: [live, demo, hybrid, imported, cached, user-input, local-static] }
175
+ latency: { enum: [immediate, async, streaming, unknown] }
176
+ classification: { enum: [public, internal, confidential, restricted] }
177
+ sourceEvidenceRef: { $ref: "#/$defs/id" }
178
+ freshness: { $ref: "#/$defs/longText" }
179
+ limitations: { $ref: "#/$defs/textList" }
180
+ fallback:
181
+ type: object
182
+ additionalProperties: false
183
+ required: [kind, disclosure, preservesOrigin]
184
+ properties:
185
+ kind: { enum: [none, demo, cache, import, manual] }
186
+ disclosure: { $ref: "#/$defs/longText" }
187
+ preservesOrigin: { type: boolean }
188
+ task:
189
+ type: object
190
+ additionalProperties: false
191
+ required: [id, title, audienceRefs, outcomeRefs, dataRefs, trigger, goal, frequency, criticality, consequential, inputs, successSignal, failureImpact, recovery, evidenceRefs]
192
+ properties:
193
+ id: { $ref: "#/$defs/id" }
194
+ title: { $ref: "#/$defs/text" }
195
+ audienceRefs: { $ref: "#/$defs/nonEmptyRefs" }
196
+ outcomeRefs: { $ref: "#/$defs/nonEmptyRefs" }
197
+ dataRefs: { $ref: "#/$defs/refs" }
198
+ trigger: { $ref: "#/$defs/longText" }
199
+ goal: { $ref: "#/$defs/longText" }
200
+ frequency: { enum: [continuous, daily, weekly, monthly, occasional, one-time] }
201
+ criticality: { enum: [critical, high, medium, low] }
202
+ consequential: { type: boolean }
203
+ inputs: { $ref: "#/$defs/textList" }
204
+ successSignal: { $ref: "#/$defs/longText" }
205
+ failureImpact: { $ref: "#/$defs/longText" }
206
+ recovery: { $ref: "#/$defs/longText" }
207
+ evidenceRefs: { $ref: "#/$defs/nonEmptyRefs" }
208
+ state:
209
+ type: object
210
+ additionalProperties: false
211
+ required: [state, taskRefs, behavior, recovery, disclosure]
212
+ properties:
213
+ state: { enum: [loading, empty, success, error, partial, stale, disconnected, unauthorized, blocked, offline] }
214
+ taskRefs: { $ref: "#/$defs/nonEmptyRefs" }
215
+ behavior: { $ref: "#/$defs/longText" }
216
+ recovery: { $ref: "#/$defs/longText" }
217
+ disclosure: { $ref: "#/$defs/longText" }
218
+ platform:
219
+ type: object
220
+ additionalProperties: false
221
+ required: [id, kind, priority, viewports, inputModes, constraints]
222
+ properties:
223
+ id: { $ref: "#/$defs/id" }
224
+ kind: { enum: [responsive-web, desktop-web, mobile-web, native-mobile, desktop-app] }
225
+ priority: { enum: [primary, secondary] }
226
+ viewports: { type: array, items: { type: integer, minimum: 240, maximum: 10000 } }
227
+ inputModes: { type: array, minItems: 1, items: { enum: [keyboard, pointer, touch, assistive-technology] } }
228
+ constraints: { $ref: "#/$defs/textList" }
229
+ requirement:
230
+ type: object
231
+ additionalProperties: false
232
+ required: [id, category, priority, statement, rationale, taskRefs, evidenceRefs]
233
+ properties:
234
+ id: { $ref: "#/$defs/id" }
235
+ category: { enum: [functional, usability, accessibility, security, privacy, performance, reliability, maintainability, content, brand] }
236
+ priority: { enum: [must, should, could, wont] }
237
+ statement: { $ref: "#/$defs/longText" }
238
+ rationale: { $ref: "#/$defs/longText" }
239
+ taskRefs: { $ref: "#/$defs/refs" }
240
+ evidenceRefs: { $ref: "#/$defs/nonEmptyRefs" }
241
+ assumption:
242
+ type: object
243
+ additionalProperties: false
244
+ required: [id, statement, risk, status, evidenceRefs, validationMethod]
245
+ properties:
246
+ id: { $ref: "#/$defs/id" }
247
+ statement: { $ref: "#/$defs/longText" }
248
+ risk: { enum: [high, medium, low] }
249
+ status: { enum: [unresolved, validated, rejected] }
250
+ evidenceRefs: { $ref: "#/$defs/refs" }
251
+ validationMethod: { $ref: "#/$defs/longText" }
252
+ acceptanceCriterion:
253
+ type: object
254
+ additionalProperties: false
255
+ required: [id, statement, requirementRefs, taskRefs, method, expectedEvidence, blocking]
256
+ properties:
257
+ id: { $ref: "#/$defs/id" }
258
+ statement: { $ref: "#/$defs/longText" }
259
+ requirementRefs: { $ref: "#/$defs/nonEmptyRefs" }
260
+ taskRefs: { $ref: "#/$defs/nonEmptyRefs" }
261
+ method: { enum: [static-analysis, unit-test, integration-test, browser-test, manual-human, human-expert, representative-user] }
262
+ expectedEvidence: { $ref: "#/$defs/longText" }
263
+ blocking: { type: boolean }
264
+ downstreamContract:
265
+ type: object
266
+ additionalProperties: false
267
+ required: [kind, status]
268
+ properties:
269
+ kind: { enum: [product-task, interface-trust, information-design, design-deliverable] }
270
+ status: { enum: [planned, exists, not-applicable] }
271
+ path: { $ref: "#/$defs/longText" }
272
+ reason: { $ref: "#/$defs/longText" }
273
+ allOf:
274
+ - if:
275
+ properties: { status: { const: exists } }
276
+ then: { required: [path] }
277
+ - if:
278
+ properties: { status: { const: not-applicable } }
279
+ then: { required: [reason] }