@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,91 @@
1
+ {
2
+ "version": "1.0",
3
+ "contract": "aegisops",
4
+ "profiles": [
5
+ {
6
+ "id": "demo-success",
7
+ "name": "Deterministic demo pipeline success",
8
+ "environment": [
9
+ "Frontend and API are running",
10
+ "Demo mode returns a deterministic successful stream",
11
+ "Export service is available"
12
+ ],
13
+ "journeys": [
14
+ {
15
+ "id": "single-technique-success",
16
+ "name": "single-technique-success",
17
+ "steps": [
18
+ { "action": "fill", "selector": "input[aria-label=\"ATT&CK technique or target\"]", "value": "T1059.001" },
19
+ { "action": "click", "selector": "button:has-text(\"Single Technique\")" },
20
+ { "action": "expectAttribute", "selector": "[role=\"switch\"]", "name": "aria-checked", "value": "true" },
21
+ { "action": "expectResponse", "selector": "button:has-text(\"Run Pipeline\")", "urlIncludes": "/run", "status": 200, "method": "POST" },
22
+ { "action": "expectText", "selector": "body", "value": "Pipeline complete" },
23
+ { "action": "expectText", "selector": "body", "value": "DEPLOYABLE ARTIFACTS" },
24
+ { "action": "expectText", "selector": "body", "value": "Coverage Gate" },
25
+ { "action": "expectText", "selector": "body", "value": "READY" },
26
+ { "action": "expectDownload", "selector": "button:has-text(\"Download SIGMA\")", "filenameIncludes": "sigma_T1059.001.yml" }
27
+ ]
28
+ }
29
+ ]
30
+ },
31
+ {
32
+ "id": "offline-recovery",
33
+ "name": "Unavailable backend recovery",
34
+ "environment": [
35
+ "Frontend is running",
36
+ "Pipeline API is unavailable or returns a controlled failure"
37
+ ],
38
+ "expectedNetwork": [
39
+ {
40
+ "id": "health-unavailable",
41
+ "method": "GET",
42
+ "urlIncludes": "/health",
43
+ "status": 500,
44
+ "minOccurrences": 1
45
+ },
46
+ {
47
+ "id": "pipeline-run-unavailable",
48
+ "method": "POST",
49
+ "urlIncludes": "/run",
50
+ "status": 500,
51
+ "minOccurrences": 1,
52
+ "maxOccurrences": 1
53
+ }
54
+ ],
55
+ "journeys": [
56
+ {
57
+ "id": "preserve-and-retry",
58
+ "name": "preserve-and-retry",
59
+ "steps": [
60
+ { "action": "fill", "selector": "input[aria-label=\"ATT&CK technique or target\"]", "value": "T1059.001" },
61
+ { "action": "expectResponse", "selector": "button:has-text(\"Run Pipeline\")", "urlIncludes": "/run", "status": 500, "method": "POST" },
62
+ { "action": "expectText", "selector": "body", "value": "Pipeline failed" },
63
+ { "action": "expectText", "selector": "body", "value": "Enable Demo mode" },
64
+ { "action": "expectVisible", "selector": "button:has-text(\"Retry\")" },
65
+ { "action": "expectValue", "selector": "input[aria-label=\"ATT&CK technique or target\"]", "value": "T1059.001" }
66
+ ]
67
+ }
68
+ ]
69
+ },
70
+ {
71
+ "id": "responsive-overview",
72
+ "name": "Responsive operational overview",
73
+ "environment": [
74
+ "Frontend is running",
75
+ "No successful pipeline run is required"
76
+ ],
77
+ "journeys": [
78
+ {
79
+ "id": "overview-integrity",
80
+ "name": "overview-integrity",
81
+ "steps": [
82
+ { "action": "expectVisible", "selector": "input[aria-label=\"ATT&CK technique or target\"]" },
83
+ { "action": "expectVisible", "selector": "button:has-text(\"Run Pipeline\")" },
84
+ { "action": "expectText", "selector": "body", "value": "READINESS GATES" },
85
+ { "action": "expectText", "selector": "body", "value": "LIVE MONITOR" }
86
+ ]
87
+ }
88
+ ]
89
+ }
90
+ ]
91
+ }
@@ -0,0 +1,328 @@
1
+ version: "1.1"
2
+ id: aegisops
3
+ name: AegisOPS SOC Readiness Command Center
4
+ status: benchmark
5
+ purpose: >-
6
+ Enable a senior SOC analyst or detection engineer to transform authorized MITRE ATT&CK
7
+ scenarios into inspectable detection, response, validation, and export artifacts while
8
+ preserving evidence, recovery paths, and the distinction between live and demo execution.
9
+
10
+ authority:
11
+ behavior: Current AegisOPS behavior summarized in SOURCE-EVIDENCE.md overrides historical product and submission material.
12
+ visual: Normalized design evidence guides hierarchy and identity but never overrides task integrity, responsive usability, or accessibility.
13
+ precedence:
14
+ - path: SOURCE-EVIDENCE.md
15
+ role: Independently normalized product, design, provenance, and snapshot evidence.
16
+ authority: primary
17
+ - path: MANIFEST.md
18
+ role: Benchmark scope, authority order, and clean-room usage rules.
19
+ authority: supporting
20
+ - path: acceptance-criteria.md
21
+ role: Evidence interpretation and blocker acceptance boundaries.
22
+ authority: supporting
23
+ - path: ../../../clean-room-ux-design-spec.md
24
+ role: Independent implementation, provenance, local-first, and abstention requirements.
25
+ authority: supporting
26
+
27
+ actors:
28
+ - id: detection-engineer
29
+ name: Detection engineer
30
+ goals:
31
+ - Convert known ATT&CK behavior into field-mapped detection logic and deployable artifacts.
32
+ - Inspect covered and missing observables before accepting a result.
33
+ - Export evidence for implementation, review, or handoff.
34
+ responsibilities:
35
+ - Select an authorized scenario and verify its scope.
36
+ - Review generated logic against source telemetry and local environment requirements.
37
+ - Treat generated artifacts as reviewable engineering output, not automatic production truth.
38
+ - id: soc-analyst
39
+ name: SOC analyst
40
+ goals:
41
+ - Understand detection conditions and prioritized response actions.
42
+ - Distinguish live endpoint evidence from labeled demo fallback data.
43
+ - Recover safely from unavailable inference or export services.
44
+ responsibilities:
45
+ - Validate response guidance against organizational procedures.
46
+ - Preserve case evidence and avoid destructive action without authorization.
47
+
48
+ outputs:
49
+ - id: authorized-simulation
50
+ name: Authorized simulation evidence
51
+ sourceOfTruth: Threat agent output bounded to known ATT&CK behavior.
52
+ requiredEvidence:
53
+ - Technique or scenario identifier
54
+ - Observable commands, process behavior, or telemetry
55
+ - Explicit authorized-use scope
56
+ - id: sigma-detection
57
+ name: Sigma detection
58
+ sourceOfTruth: Detection agent output derived from simulation observables.
59
+ requiredEvidence:
60
+ - Field mappings
61
+ - Detection condition
62
+ - Observable linkage
63
+ - id: spl-hunt
64
+ name: SPL hunt
65
+ sourceOfTruth: Detection agent output derived from supported telemetry fields.
66
+ requiredEvidence:
67
+ - Query text
68
+ - Required data sources
69
+ - id: soc-playbook
70
+ name: SOC response playbook
71
+ sourceOfTruth: Response agent output tied to detected telemetry.
72
+ requiredEvidence:
73
+ - Triage actions
74
+ - Containment or escalation conditions
75
+ - id: vectr-export
76
+ name: VECTR coverage export
77
+ sourceOfTruth: Structured run result and validation scores.
78
+ requiredEvidence:
79
+ - Scenario identifier
80
+ - Coverage data
81
+ - id: validation-report
82
+ name: Validation report
83
+ sourceOfTruth: Validation agent evaluation of simulation and detection outputs.
84
+ requiredEvidence:
85
+ - Coverage score
86
+ - Covered observables
87
+ - Missing observables or explicit none-found result
88
+ - Safety verdict
89
+ - id: pdf-report
90
+ name: PDF handoff report
91
+ sourceOfTruth: Completed structured run and export service response.
92
+ requiredEvidence:
93
+ - Scenario identifier
94
+ - Generation success or actionable failure
95
+
96
+ modes:
97
+ - id: single-technique
98
+ name: Single Technique
99
+ purpose: Run the complete pipeline for one ATT&CK technique.
100
+ input: ATT&CK technique identifier such as T1059.001.
101
+ outputs: [authorized-simulation, sigma-detection, spl-hunt, soc-playbook, vectr-export, validation-report, pdf-report]
102
+ - id: apt-group
103
+ name: APT Group
104
+ purpose: Evaluate a bounded set of techniques attributed to a named threat group.
105
+ input: Recognized APT group name or identifier.
106
+ outputs: [authorized-simulation, sigma-detection, spl-hunt, soc-playbook, vectr-export, validation-report, pdf-report]
107
+ - id: kill-chain
108
+ name: Kill Chain
109
+ purpose: Evaluate an ordered sequence of known ATT&CK techniques and their combined defensive coverage.
110
+ input: Starting technique or supported chain selection.
111
+ outputs: [authorized-simulation, sigma-detection, spl-hunt, soc-playbook, vectr-export, validation-report, pdf-report]
112
+ - id: topology-lab
113
+ name: Topology Lab
114
+ purpose: Map an authorized sandbox path to telemetry, detection conditions, response actions, and reaction timing.
115
+ input: Supported sandbox topology path or seed technique.
116
+ outputs: [authorized-simulation, sigma-detection, soc-playbook, validation-report]
117
+
118
+ stateMachines:
119
+ - id: pipeline-run
120
+ initial: idle
121
+ states:
122
+ - id: idle
123
+ category: idle
124
+ userVisible: true
125
+ requirement: Input remains editable and the interface explains what is required to run.
126
+ - id: running
127
+ category: loading
128
+ userVisible: true
129
+ requirement: The active agent and accumulated progress are visible without clearing user input.
130
+ - id: success
131
+ category: success
132
+ userVisible: true
133
+ requirement: Results, evidence, readiness status, and supported exports are available together.
134
+ - id: error
135
+ category: error
136
+ userVisible: true
137
+ requirement: The failure cause, preserved input, retry action, and demo fallback guidance are visible.
138
+ - id: fallback
139
+ category: fallback
140
+ userVisible: true
141
+ requirement: Demo execution is explicitly labeled and cannot be mistaken for live endpoint evidence.
142
+ transitions:
143
+ - from: idle
144
+ to: running
145
+ trigger: Submit valid scenario
146
+ - from: running
147
+ to: success
148
+ trigger: Receive one complete validated run result
149
+ - from: running
150
+ to: error
151
+ trigger: Network, stream, validation, or export initialization failure
152
+ - from: error
153
+ to: running
154
+ trigger: Retry preserved scenario
155
+ - from: error
156
+ to: fallback
157
+ trigger: Enable labeled Demo mode
158
+ - from: fallback
159
+ to: running
160
+ trigger: Run preserved scenario using demo data
161
+ - from: success
162
+ to: running
163
+ trigger: Run another scenario
164
+
165
+ metrics:
166
+ - id: coverage
167
+ name: Detection coverage
168
+ definition: Percentage of required observables represented by the generated detection and validation result.
169
+ sourceOfTruth: Validation agent structured score with covered and missing observable lists.
170
+ format: percentage
171
+ evidenceRequired: true
172
+ range: { min: 0, max: 100 }
173
+ - id: safety-verdict
174
+ name: Safety verdict
175
+ definition: Structured assessment that generated content remains within authorized known-ATT&CK defensive scope.
176
+ sourceOfTruth: Validation agent structured verdict and supporting explanation.
177
+ format: status
178
+ evidenceRequired: true
179
+ - id: endpoint-latency
180
+ name: Endpoint latency
181
+ definition: Measured duration of a successful endpoint health or inference request.
182
+ sourceOfTruth: Current request timing; never a static placeholder.
183
+ format: duration
184
+ evidenceRequired: true
185
+ - id: readiness
186
+ name: Product readiness
187
+ definition: Gate state derived from completed coverage, safety, validator, and artifact requirements.
188
+ sourceOfTruth: Explicit readiness-gate evaluation over the current run result.
189
+ format: status
190
+ evidenceRequired: true
191
+
192
+ constraints:
193
+ outOfScope:
194
+ - Zero-day discovery or exploit generation.
195
+ - Unauthorized offensive operations or targeting real systems without permission.
196
+ - Automatic production deployment of generated detections without human review.
197
+ prohibitedClaims:
198
+ - Unsourced cost, time-savings, coverage, performance, or market-superiority claims.
199
+ - Live AMD, ROCm, model, endpoint, latency, or throughput claims without current captured evidence.
200
+ - Readiness or safety claims derived only from hard-coded presentation state.
201
+ mockData:
202
+ allowedEnvironments: [development, test, demo]
203
+ mustBeLabeled: true
204
+ prohibitedInProduction: true
205
+ fallbackDisclosure: Demo output must be visibly labeled, preserve the selected scenario, and distinguish bundled provenance from current live execution evidence.
206
+
207
+ acceptanceCriteria:
208
+ - id: valid-input-contract
209
+ title: Input and mode remain coherent
210
+ severity: blocker
211
+ requirement: The submitted scenario is valid for the selected mode, remains visible during execution, and is preserved after failure.
212
+ evidence: [contract, runtime]
213
+ appliesToModes: [single-technique, apt-group, kill-chain, topology-lab]
214
+ - id: progressive-pipeline-state
215
+ title: Pipeline progress is inspectable
216
+ severity: blocker
217
+ requirement: Running state identifies the active agent or stage, prevents duplicate submission, and announces progress accessibly.
218
+ evidence: [runtime, accessibility]
219
+ appliesToModes: [single-technique, apt-group, kill-chain]
220
+ - id: evidence-backed-results
221
+ title: Results preserve evidence chains
222
+ severity: blocker
223
+ requirement: Detection, response, and validation outputs trace back to the selected scenario and inspectable observables.
224
+ evidence: [contract, runtime, manual-review]
225
+ appliesToModes: [single-technique, apt-group, kill-chain, topology-lab]
226
+ - id: evidence-backed-metrics
227
+ title: Metrics have current sources of truth
228
+ severity: blocker
229
+ requirement: Coverage, safety, readiness, and latency values are computed from current structured evidence or explicitly labeled demo data.
230
+ evidence: [contract, network, manual-review]
231
+ appliesToModes: [single-technique, apt-group, kill-chain, topology-lab]
232
+ - id: offline-recovery
233
+ title: Offline execution has a recovery path
234
+ severity: blocker
235
+ requirement: Endpoint failure shows an actionable error, preserves input, offers retry, and explains labeled Demo mode without exposing a raw stack trace.
236
+ evidence: [runtime, network, screenshot]
237
+ appliesToModes: [single-technique, apt-group, kill-chain]
238
+ - id: export-integrity
239
+ title: Exports match the visible run
240
+ severity: blocker
241
+ requirement: Every offered download is generated from the current completed run, has a meaningful filename, and reports export failure without losing results.
242
+ evidence: [runtime, export]
243
+ appliesToModes: [single-technique, apt-group, kill-chain]
244
+ - id: authorized-scope
245
+ title: Authorized defensive scope is explicit
246
+ severity: blocker
247
+ requirement: Generated simulation material is bounded to known ATT&CK defensive validation and does not present unauthorized or zero-day generation as supported.
248
+ evidence: [contract, manual-review]
249
+ appliesToModes: [single-technique, apt-group, kill-chain, topology-lab]
250
+ - id: responsive-integrity
251
+ title: Operational content remains readable at required widths
252
+ severity: blocker
253
+ requirement: Controls, status pills, readiness gates, logs, and results do not clip, overlap, or create competing page-level scroll regions.
254
+ evidence: [runtime, screenshot]
255
+ appliesToModes: [single-technique, apt-group, kill-chain, topology-lab]
256
+ - id: accessible-operation
257
+ title: Critical workflow is keyboard and assistive-technology operable
258
+ severity: blocker
259
+ requirement: Inputs and controls have names, progress and errors are announced, focus remains visible, and status is not encoded by color alone.
260
+ evidence: [runtime, accessibility]
261
+ appliesToModes: [single-technique, apt-group, kill-chain, topology-lab]
262
+
263
+ verification:
264
+ journeyFile: journeys.json
265
+ viewports:
266
+ - { name: mobile-375, width: 375, height: 812 }
267
+ - { name: tablet-768, width: 768, height: 1024 }
268
+ - { name: desktop-1024, width: 1024, height: 768 }
269
+ - { name: wide-1440, width: 1440, height: 900 }
270
+ bindings:
271
+ - profile: demo-success
272
+ journey: single-technique-success
273
+ actor: detection-engineer
274
+ mode: single-technique
275
+ acceptanceCriteria: [valid-input-contract, progressive-pipeline-state, evidence-backed-results, evidence-backed-metrics, export-integrity, authorized-scope]
276
+ - profile: offline-recovery
277
+ journey: preserve-and-retry
278
+ actor: soc-analyst
279
+ mode: single-technique
280
+ acceptanceCriteria: [valid-input-contract, offline-recovery, accessible-operation]
281
+ - profile: responsive-overview
282
+ journey: overview-integrity
283
+ actor: soc-analyst
284
+ mode: single-technique
285
+ acceptanceCriteria: [responsive-integrity, accessible-operation]
286
+
287
+ benchmark:
288
+ archetype: operational-dashboard
289
+ interface: browser
290
+ qualityDimensions:
291
+ - { id: truthful-disclosure, status: required, reason: "Live and demo execution must remain distinguishable." }
292
+ - { id: information-design, status: required, reason: "Analysts must trace prioritized findings to evidence and action." }
293
+ - { id: visual-system, status: required, reason: "Dense security operations require consistent visual hierarchy." }
294
+ - { id: accessibility, status: required, reason: "Core analysis and export paths require keyboard and non-color operation." }
295
+ - { id: responsive-structure, status: required, reason: "The command center is verified from mobile through wide desktop." }
296
+ - { id: state-integrity, status: required, reason: "Pipeline progress, failure, fallback, and recovery must remain explicit." }
297
+ - { id: maintainability, status: required, reason: "Detection, response, validation, and export boundaries must remain separable." }
298
+ tasks:
299
+ - id: generate-detection-package
300
+ primary: true
301
+ actor: detection-engineer
302
+ mode: single-technique
303
+ intent: Generate and inspect evidence-linked detection, response, validation, and export artifacts for an authorized ATT&CK technique.
304
+ start:
305
+ stateMachine: pipeline-run
306
+ state: idle
307
+ observable: The authorized technique input is available and no pipeline run is active.
308
+ success:
309
+ stateMachine: pipeline-run
310
+ state: success
311
+ observable: Generated artifacts, source evidence, validation results, and export controls are inspectable.
312
+ evidence: [contract, runtime, network, export]
313
+ recovery:
314
+ required: true
315
+ failure:
316
+ stateMachine: pipeline-run
317
+ state: error
318
+ observable: The failed stage and preserved authorized input remain visible.
319
+ observable: The analyst can retry without losing the technique input or confusing fallback data with live output.
320
+ journey: { profile: demo-success, journey: single-technique-success }
321
+ browser: { route: /, narrowViewport: mobile-375 }
322
+ evidencePolicy:
323
+ missingEvidence: unverified
324
+ failedBehavior: failed
325
+ unsupportedCapability: limitation
326
+ comparison:
327
+ taskContractId: aegisops-detection-package
328
+ crossContractRanking: false
@@ -0,0 +1,26 @@
1
+ # Azure Optimizer Source Evidence
2
+
3
+ ## Authority Boundary
4
+
5
+ - Product family: Azure infrastructure analysis and optimization dashboard.
6
+ - Owner-authorized comparison workspace: `/home/ztothez/Studio/experiments/redesign-azure`.
7
+ - Immutable control implementation: `azure-optimizer-og/`.
8
+ - Comparison implementations: `lovable/`, `ui-ux-max-pro/`, and `uix-design-skill/`.
9
+ - Repository snapshot at normalization: `6b0dbe1`.
10
+
11
+ The benchmark contains independently normalized task and evidence requirements. It does not import implementation code from any candidate and does not treat a generator or external design product as authority.
12
+
13
+ ## Normalized Product Evidence
14
+
15
+ - An infrastructure operator reviews tracked Azure resources, potential savings, issue severity, recommendations, recent analyses, and health or telemetry evidence.
16
+ - The primary decision path is context, priority, impact, evidence, remediation, and validation.
17
+ - Running an analysis must distinguish live backend execution from simulation or local fallback.
18
+ - A metric requires a definition, source, scope, period, freshness, and supported decision.
19
+ - Exported results must preserve data origin, environment, freshness, and limitations.
20
+ - Operational, connected, online, production, and monitoring claims require current runtime evidence.
21
+
22
+ ## Baseline Role
23
+
24
+ The original, Lovable, UI/UX Pro Max, and current ZtotheZ implementations are comparison candidates, not normative specifications. Failures and unsupported features remain evidence; the benchmark must not alter a candidate merely to make its baseline pass.
25
+
26
+ The eventual V2 implementation must be created in a separate directory so the control and all baseline candidates remain reproducible.
@@ -0,0 +1,39 @@
1
+ # Azure Optimizer V2 Implementation
2
+
3
+ ## Scope
4
+
5
+ The independently tracked implementation is in `benchmarks/azure-optimizer-v2/`. The original, Lovable, UI/UX Pro Max, and first ZtotheZ candidates in the comparison repository remain unchanged.
6
+
7
+ The V2 implementation uses the normalized dataset and task model from this benchmark. It does not import candidate implementation code and does not connect to an Azure tenant.
8
+
9
+ ## Contract Mapping
10
+
11
+ | Requirement | Implementation |
12
+ |---|---|
13
+ | Persistent data origin and freshness | `TrustBar.tsx` is rendered across overview, analysis, history, and export views |
14
+ | Runtime-derived processing status | `analysis-client.ts` calls the local API boundary and retains response origin |
15
+ | Explicit fallback | A 503 response exposes retry and opt-in local fallback; no automatic simulation occurs |
16
+ | Prioritized information path | Overview presents context, priority, impact, evidence, action, owner, and validation |
17
+ | Metric integrity | Every summary metric exposes definition, source, scope, period, freshness, baseline, and decision purpose |
18
+ | Detailed finding review | Finding selection exposes observation, evidence, impact, remediation, owner, and validation |
19
+ | Provenance-preserving export | Blob download contains environment, scenario, origins, freshness, scope, findings, and limitations |
20
+ | Semantic visual system | Component source uses semantic CSS variables defined in `tokens.css` |
21
+ | Focused orchestration boundary | Network and fallback behavior is isolated in `src/domain/analysis-client.ts` |
22
+
23
+ ## Verified States
24
+
25
+ The `azure-v2-state-matrix` profile in `v2-journeys.json` covers:
26
+
27
+ - Demo success.
28
+ - Live local API processing over the disclosed imported fixture.
29
+ - Slow analysis.
30
+ - Backend failure followed by explicit local fallback.
31
+ - Disconnection and recovery.
32
+ - Partial result.
33
+ - Stale result.
34
+ - Detailed finding review and history.
35
+ - Export with captured Blob provenance.
36
+
37
+ ## Evidence Boundary
38
+
39
+ Automated verification establishes contract selectors, network responses, downloads, layout behavior, accessibility checks, and screenshot stability in the captured environment. It does not establish visual preference, domain correctness beyond the fixture, human comprehension, or representative-user task success. Those claims remain Item 8 reviewer-supplied work.
@@ -0,0 +1,23 @@
1
+ # Azure Optimizer Acceptance Criteria
2
+
3
+ The machine-readable criteria are in `product-contract.yaml`.
4
+
5
+ ## Task Integrity
6
+
7
+ - The current environment, data origin, connection state, and freshness are visible without consulting documentation.
8
+ - Priority is derived from severity, impact, evidence, and scope rather than decorative prominence.
9
+ - Findings connect affected resources to observations, impact, remediation, and validation.
10
+ - Analysis input and context remain available through loading, error, fallback, and completion.
11
+ - Exports preserve the visible result and its provenance.
12
+
13
+ ## Comparison Integrity
14
+
15
+ - Every candidate uses the same dataset, viewport dimensions, states, and task prompts.
16
+ - Candidate-specific selectors may differ, but success criteria cannot change by candidate.
17
+ - Unsupported or failed behavior is recorded as failed, partial, or not run.
18
+ - Screenshot similarity, source-code inspection, and automated accessibility checks cannot become human or representative-user evidence.
19
+ - Candidate labels remain anonymous in reviewer-facing materials.
20
+
21
+ ## Responsive Evidence
22
+
23
+ At 375, 768, 1024, and 1440 CSS pixels, primary context, metrics, findings, provenance, and actions must not clip, overlap, or create incoherent competing scroll regions. Long labels, empty data, partial data, loading, fallback, disconnected, and export states remain in scope.
@@ -0,0 +1,13 @@
1
+ # Azure Optimizer Anti-Patterns
2
+
3
+ | Anti-pattern | Failure | Required correction |
4
+ |---|---|---|
5
+ | Unsupported operational badge | The interface claims online, operational, connected, production, or continuous monitoring without current evidence | Bind the label to runtime state or replace it with explicit demo, unknown, stale, or disconnected status |
6
+ | Silent simulation | A failed or absent backend produces realistic results without persistent disclosure | Identify simulation before execution, during progress, in results, history, and exports |
7
+ | Decorative savings | Currency values appear without formula, scope, period, source, or affected resources | Add a metric contract and drill-down evidence or remove the value |
8
+ | Agent theater | Agent diagrams and logs imply orchestration that the implementation does not perform | Show only verified stages and distinguish scripted demonstration from live execution |
9
+ | Sparse overview | Large unused space separates summary metrics from the findings and actions needed to interpret them | Follow context, priority, impact, evidence, action, and validation hierarchy |
10
+ | Dense visual noise | Glow, grids, badges, and micro-labels compete with findings and next actions | Use restrained hierarchy, semantic emphasis, and task-driven density |
11
+ | Fake credential | A realistic secret placeholder is displayed as an operational key | Use an empty secure field, documented fixture value, or connected secret-management flow |
12
+ | Inert export or settings control | A control appears actionable but has no observable behavior | Implement the command with feedback and recovery or render noninteractive information honestly |
13
+ | Cross-product contract | Azure is evaluated with selectors and semantics from another product | Use the Azure-specific contract and candidate-equivalent tasks |
@@ -0,0 +1,88 @@
1
+ {
2
+ "version": "1.0",
3
+ "contract": "azure-optimizer",
4
+ "profiles": [
5
+ {
6
+ "id": "overview-baseline",
7
+ "name": "Shared Azure overview comprehension surface",
8
+ "environment": [
9
+ "Candidate frontend is running with the fixed comparison dataset",
10
+ "No successful analysis run is required"
11
+ ],
12
+ "journeys": [
13
+ {
14
+ "id": "overview-integrity",
15
+ "name": "overview-integrity",
16
+ "steps": [
17
+ { "action": "expectText", "selector": "body", "value": "Azure Optimizer" },
18
+ { "action": "expectText", "selector": "body", "value": "Potential Savings" },
19
+ { "action": "expectText", "selector": "body", "value": "Top Recommendations" }
20
+ ]
21
+ }
22
+ ]
23
+ },
24
+ {
25
+ "id": "original-analysis",
26
+ "name": "Original candidate analysis task",
27
+ "environment": ["Original candidate is running with its bundled comparison data"],
28
+ "journeys": [
29
+ {
30
+ "id": "run-original-analysis",
31
+ "name": "run-original-analysis",
32
+ "steps": [
33
+ { "action": "click", "selector": "button:has-text(\"Analysis\")" },
34
+ { "action": "click", "selector": "button:has-text(\"Run AI Audit\")" },
35
+ { "action": "expectText", "selector": "body", "value": "Analysis complete" }
36
+ ]
37
+ }
38
+ ]
39
+ },
40
+ {
41
+ "id": "lovable-analysis",
42
+ "name": "Lovable candidate analysis task",
43
+ "environment": ["Lovable candidate is running with its bundled demo dataset"],
44
+ "journeys": [
45
+ {
46
+ "id": "run-lovable-analysis",
47
+ "name": "run-lovable-analysis",
48
+ "steps": [
49
+ { "action": "click", "selector": "button:has-text(\"Run analysis\")" },
50
+ { "action": "expectText", "selector": "body", "value": "Analysis complete" }
51
+ ]
52
+ }
53
+ ]
54
+ },
55
+ {
56
+ "id": "uiux-analysis",
57
+ "name": "UIUX candidate analysis task",
58
+ "environment": ["UIUX candidate is running with its bundled comparison data"],
59
+ "journeys": [
60
+ {
61
+ "id": "run-uiux-analysis",
62
+ "name": "run-uiux-analysis",
63
+ "steps": [
64
+ { "action": "click", "selector": "button:has-text(\"Analysis\")" },
65
+ { "action": "click", "selector": "button:has-text(\"Start Full AI Audit\")" },
66
+ { "action": "expectText", "selector": "body", "value": "Report ready" }
67
+ ]
68
+ }
69
+ ]
70
+ },
71
+ {
72
+ "id": "ztothez-analysis",
73
+ "name": "ZtotheZ candidate analysis task",
74
+ "environment": ["ZtotheZ candidate is running with its bundled comparison data"],
75
+ "journeys": [
76
+ {
77
+ "id": "run-ztothez-analysis",
78
+ "name": "run-ztothez-analysis",
79
+ "steps": [
80
+ { "action": "click", "selector": "button:has-text(\"Analysis\")" },
81
+ { "action": "click", "selector": "button:has-text(\"Run AI Audit\")" },
82
+ { "action": "expectText", "selector": "body", "value": "Operating in verified local demonstration mode" }
83
+ ]
84
+ }
85
+ ]
86
+ }
87
+ ]
88
+ }