@zigrivers/scaffold 2.1.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 (657) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +477 -0
  3. package/dist/cli/commands/adopt.d.ts +12 -0
  4. package/dist/cli/commands/adopt.d.ts.map +1 -0
  5. package/dist/cli/commands/adopt.js +107 -0
  6. package/dist/cli/commands/adopt.js.map +1 -0
  7. package/dist/cli/commands/adopt.test.d.ts +2 -0
  8. package/dist/cli/commands/adopt.test.d.ts.map +1 -0
  9. package/dist/cli/commands/adopt.test.js +277 -0
  10. package/dist/cli/commands/adopt.test.js.map +1 -0
  11. package/dist/cli/commands/build.d.ts +12 -0
  12. package/dist/cli/commands/build.d.ts.map +1 -0
  13. package/dist/cli/commands/build.js +105 -0
  14. package/dist/cli/commands/build.js.map +1 -0
  15. package/dist/cli/commands/build.test.d.ts +2 -0
  16. package/dist/cli/commands/build.test.d.ts.map +1 -0
  17. package/dist/cli/commands/build.test.js +272 -0
  18. package/dist/cli/commands/build.test.js.map +1 -0
  19. package/dist/cli/commands/dashboard.d.ts +14 -0
  20. package/dist/cli/commands/dashboard.d.ts.map +1 -0
  21. package/dist/cli/commands/dashboard.js +102 -0
  22. package/dist/cli/commands/dashboard.js.map +1 -0
  23. package/dist/cli/commands/dashboard.test.d.ts +2 -0
  24. package/dist/cli/commands/dashboard.test.d.ts.map +1 -0
  25. package/dist/cli/commands/dashboard.test.js +142 -0
  26. package/dist/cli/commands/dashboard.test.js.map +1 -0
  27. package/dist/cli/commands/decisions.d.ts +13 -0
  28. package/dist/cli/commands/decisions.d.ts.map +1 -0
  29. package/dist/cli/commands/decisions.js +62 -0
  30. package/dist/cli/commands/decisions.js.map +1 -0
  31. package/dist/cli/commands/decisions.test.d.ts +2 -0
  32. package/dist/cli/commands/decisions.test.d.ts.map +1 -0
  33. package/dist/cli/commands/decisions.test.js +154 -0
  34. package/dist/cli/commands/decisions.test.js.map +1 -0
  35. package/dist/cli/commands/info.d.ts +12 -0
  36. package/dist/cli/commands/info.d.ts.map +1 -0
  37. package/dist/cli/commands/info.js +110 -0
  38. package/dist/cli/commands/info.js.map +1 -0
  39. package/dist/cli/commands/info.test.d.ts +2 -0
  40. package/dist/cli/commands/info.test.d.ts.map +1 -0
  41. package/dist/cli/commands/info.test.js +392 -0
  42. package/dist/cli/commands/info.test.js.map +1 -0
  43. package/dist/cli/commands/init.d.ts +13 -0
  44. package/dist/cli/commands/init.d.ts.map +1 -0
  45. package/dist/cli/commands/init.js +46 -0
  46. package/dist/cli/commands/init.js.map +1 -0
  47. package/dist/cli/commands/init.test.d.ts +2 -0
  48. package/dist/cli/commands/init.test.d.ts.map +1 -0
  49. package/dist/cli/commands/init.test.js +156 -0
  50. package/dist/cli/commands/init.test.js.map +1 -0
  51. package/dist/cli/commands/knowledge.d.ts +4 -0
  52. package/dist/cli/commands/knowledge.d.ts.map +1 -0
  53. package/dist/cli/commands/knowledge.js +346 -0
  54. package/dist/cli/commands/knowledge.js.map +1 -0
  55. package/dist/cli/commands/knowledge.test.d.ts +2 -0
  56. package/dist/cli/commands/knowledge.test.d.ts.map +1 -0
  57. package/dist/cli/commands/knowledge.test.js +293 -0
  58. package/dist/cli/commands/knowledge.test.js.map +1 -0
  59. package/dist/cli/commands/list.d.ts +12 -0
  60. package/dist/cli/commands/list.d.ts.map +1 -0
  61. package/dist/cli/commands/list.js +73 -0
  62. package/dist/cli/commands/list.js.map +1 -0
  63. package/dist/cli/commands/list.test.d.ts +2 -0
  64. package/dist/cli/commands/list.test.d.ts.map +1 -0
  65. package/dist/cli/commands/list.test.js +166 -0
  66. package/dist/cli/commands/list.test.js.map +1 -0
  67. package/dist/cli/commands/next.d.ts +12 -0
  68. package/dist/cli/commands/next.d.ts.map +1 -0
  69. package/dist/cli/commands/next.js +75 -0
  70. package/dist/cli/commands/next.js.map +1 -0
  71. package/dist/cli/commands/next.test.d.ts +2 -0
  72. package/dist/cli/commands/next.test.d.ts.map +1 -0
  73. package/dist/cli/commands/next.test.js +236 -0
  74. package/dist/cli/commands/next.test.js.map +1 -0
  75. package/dist/cli/commands/reset.d.ts +13 -0
  76. package/dist/cli/commands/reset.d.ts.map +1 -0
  77. package/dist/cli/commands/reset.js +105 -0
  78. package/dist/cli/commands/reset.js.map +1 -0
  79. package/dist/cli/commands/reset.test.d.ts +2 -0
  80. package/dist/cli/commands/reset.test.d.ts.map +1 -0
  81. package/dist/cli/commands/reset.test.js +211 -0
  82. package/dist/cli/commands/reset.test.js.map +1 -0
  83. package/dist/cli/commands/run.d.ts +14 -0
  84. package/dist/cli/commands/run.d.ts.map +1 -0
  85. package/dist/cli/commands/run.js +379 -0
  86. package/dist/cli/commands/run.js.map +1 -0
  87. package/dist/cli/commands/run.test.d.ts +2 -0
  88. package/dist/cli/commands/run.test.d.ts.map +1 -0
  89. package/dist/cli/commands/run.test.js +535 -0
  90. package/dist/cli/commands/run.test.js.map +1 -0
  91. package/dist/cli/commands/skip.d.ts +13 -0
  92. package/dist/cli/commands/skip.d.ts.map +1 -0
  93. package/dist/cli/commands/skip.js +123 -0
  94. package/dist/cli/commands/skip.js.map +1 -0
  95. package/dist/cli/commands/skip.test.d.ts +2 -0
  96. package/dist/cli/commands/skip.test.d.ts.map +1 -0
  97. package/dist/cli/commands/skip.test.js +339 -0
  98. package/dist/cli/commands/skip.test.js.map +1 -0
  99. package/dist/cli/commands/status.d.ts +12 -0
  100. package/dist/cli/commands/status.d.ts.map +1 -0
  101. package/dist/cli/commands/status.js +79 -0
  102. package/dist/cli/commands/status.js.map +1 -0
  103. package/dist/cli/commands/status.test.d.ts +2 -0
  104. package/dist/cli/commands/status.test.d.ts.map +1 -0
  105. package/dist/cli/commands/status.test.js +245 -0
  106. package/dist/cli/commands/status.test.js.map +1 -0
  107. package/dist/cli/commands/update.d.ts +11 -0
  108. package/dist/cli/commands/update.d.ts.map +1 -0
  109. package/dist/cli/commands/update.js +159 -0
  110. package/dist/cli/commands/update.js.map +1 -0
  111. package/dist/cli/commands/update.test.d.ts +2 -0
  112. package/dist/cli/commands/update.test.d.ts.map +1 -0
  113. package/dist/cli/commands/update.test.js +140 -0
  114. package/dist/cli/commands/update.test.js.map +1 -0
  115. package/dist/cli/commands/validate.d.ts +12 -0
  116. package/dist/cli/commands/validate.d.ts.map +1 -0
  117. package/dist/cli/commands/validate.js +65 -0
  118. package/dist/cli/commands/validate.js.map +1 -0
  119. package/dist/cli/commands/validate.test.d.ts +2 -0
  120. package/dist/cli/commands/validate.test.d.ts.map +1 -0
  121. package/dist/cli/commands/validate.test.js +159 -0
  122. package/dist/cli/commands/validate.test.js.map +1 -0
  123. package/dist/cli/commands/version.d.ts +13 -0
  124. package/dist/cli/commands/version.d.ts.map +1 -0
  125. package/dist/cli/commands/version.js +89 -0
  126. package/dist/cli/commands/version.js.map +1 -0
  127. package/dist/cli/commands/version.test.d.ts +2 -0
  128. package/dist/cli/commands/version.test.d.ts.map +1 -0
  129. package/dist/cli/commands/version.test.js +63 -0
  130. package/dist/cli/commands/version.test.js.map +1 -0
  131. package/dist/cli/index.d.ts +4 -0
  132. package/dist/cli/index.d.ts.map +1 -0
  133. package/dist/cli/index.js +72 -0
  134. package/dist/cli/index.js.map +1 -0
  135. package/dist/cli/index.test.d.ts +2 -0
  136. package/dist/cli/index.test.d.ts.map +1 -0
  137. package/dist/cli/index.test.js +8 -0
  138. package/dist/cli/index.test.js.map +1 -0
  139. package/dist/cli/middleware/output-mode.d.ts +21 -0
  140. package/dist/cli/middleware/output-mode.d.ts.map +1 -0
  141. package/dist/cli/middleware/output-mode.js +27 -0
  142. package/dist/cli/middleware/output-mode.js.map +1 -0
  143. package/dist/cli/middleware/output-mode.test.d.ts +2 -0
  144. package/dist/cli/middleware/output-mode.test.d.ts.map +1 -0
  145. package/dist/cli/middleware/output-mode.test.js +41 -0
  146. package/dist/cli/middleware/output-mode.test.js.map +1 -0
  147. package/dist/cli/middleware/project-root.d.ts +21 -0
  148. package/dist/cli/middleware/project-root.d.ts.map +1 -0
  149. package/dist/cli/middleware/project-root.js +54 -0
  150. package/dist/cli/middleware/project-root.js.map +1 -0
  151. package/dist/cli/middleware/project-root.test.d.ts +2 -0
  152. package/dist/cli/middleware/project-root.test.d.ts.map +1 -0
  153. package/dist/cli/middleware/project-root.test.js +112 -0
  154. package/dist/cli/middleware/project-root.test.js.map +1 -0
  155. package/dist/cli/output/auto.d.ts +18 -0
  156. package/dist/cli/output/auto.d.ts.map +1 -0
  157. package/dist/cli/output/auto.js +43 -0
  158. package/dist/cli/output/auto.js.map +1 -0
  159. package/dist/cli/output/context.d.ts +19 -0
  160. package/dist/cli/output/context.d.ts.map +1 -0
  161. package/dist/cli/output/context.js +15 -0
  162. package/dist/cli/output/context.js.map +1 -0
  163. package/dist/cli/output/context.test.d.ts +2 -0
  164. package/dist/cli/output/context.test.d.ts.map +1 -0
  165. package/dist/cli/output/context.test.js +335 -0
  166. package/dist/cli/output/context.test.js.map +1 -0
  167. package/dist/cli/output/error-display.d.ts +31 -0
  168. package/dist/cli/output/error-display.d.ts.map +1 -0
  169. package/dist/cli/output/error-display.js +79 -0
  170. package/dist/cli/output/error-display.js.map +1 -0
  171. package/dist/cli/output/error-display.test.d.ts +2 -0
  172. package/dist/cli/output/error-display.test.d.ts.map +1 -0
  173. package/dist/cli/output/error-display.test.js +230 -0
  174. package/dist/cli/output/error-display.test.js.map +1 -0
  175. package/dist/cli/output/interactive.d.ts +22 -0
  176. package/dist/cli/output/interactive.d.ts.map +1 -0
  177. package/dist/cli/output/interactive.js +126 -0
  178. package/dist/cli/output/interactive.js.map +1 -0
  179. package/dist/cli/output/json.d.ts +17 -0
  180. package/dist/cli/output/json.d.ts.map +1 -0
  181. package/dist/cli/output/json.js +62 -0
  182. package/dist/cli/output/json.js.map +1 -0
  183. package/dist/cli/types.d.ts +11 -0
  184. package/dist/cli/types.d.ts.map +1 -0
  185. package/dist/cli/types.js +2 -0
  186. package/dist/cli/types.js.map +1 -0
  187. package/dist/config/loader.d.ts +22 -0
  188. package/dist/config/loader.d.ts.map +1 -0
  189. package/dist/config/loader.js +159 -0
  190. package/dist/config/loader.js.map +1 -0
  191. package/dist/config/loader.test.d.ts +2 -0
  192. package/dist/config/loader.test.d.ts.map +1 -0
  193. package/dist/config/loader.test.js +226 -0
  194. package/dist/config/loader.test.js.map +1 -0
  195. package/dist/config/migration.d.ts +15 -0
  196. package/dist/config/migration.d.ts.map +1 -0
  197. package/dist/config/migration.js +39 -0
  198. package/dist/config/migration.js.map +1 -0
  199. package/dist/config/migration.test.d.ts +2 -0
  200. package/dist/config/migration.test.d.ts.map +1 -0
  201. package/dist/config/migration.test.js +44 -0
  202. package/dist/config/migration.test.js.map +1 -0
  203. package/dist/config/schema.d.ts +121 -0
  204. package/dist/config/schema.d.ts.map +1 -0
  205. package/dist/config/schema.js +22 -0
  206. package/dist/config/schema.js.map +1 -0
  207. package/dist/config/schema.test.d.ts +2 -0
  208. package/dist/config/schema.test.d.ts.map +1 -0
  209. package/dist/config/schema.test.js +126 -0
  210. package/dist/config/schema.test.js.map +1 -0
  211. package/dist/core/adapters/adapter.d.ts +64 -0
  212. package/dist/core/adapters/adapter.d.ts.map +1 -0
  213. package/dist/core/adapters/adapter.js +25 -0
  214. package/dist/core/adapters/adapter.js.map +1 -0
  215. package/dist/core/adapters/adapter.test.d.ts +2 -0
  216. package/dist/core/adapters/adapter.test.d.ts.map +1 -0
  217. package/dist/core/adapters/adapter.test.js +175 -0
  218. package/dist/core/adapters/adapter.test.js.map +1 -0
  219. package/dist/core/adapters/claude-code.d.ts +9 -0
  220. package/dist/core/adapters/claude-code.d.ts.map +1 -0
  221. package/dist/core/adapters/claude-code.js +34 -0
  222. package/dist/core/adapters/claude-code.js.map +1 -0
  223. package/dist/core/adapters/claude-code.test.d.ts +2 -0
  224. package/dist/core/adapters/claude-code.test.d.ts.map +1 -0
  225. package/dist/core/adapters/claude-code.test.js +100 -0
  226. package/dist/core/adapters/claude-code.test.js.map +1 -0
  227. package/dist/core/adapters/codex.d.ts +10 -0
  228. package/dist/core/adapters/codex.d.ts.map +1 -0
  229. package/dist/core/adapters/codex.js +61 -0
  230. package/dist/core/adapters/codex.js.map +1 -0
  231. package/dist/core/adapters/codex.test.d.ts +2 -0
  232. package/dist/core/adapters/codex.test.d.ts.map +1 -0
  233. package/dist/core/adapters/codex.test.js +122 -0
  234. package/dist/core/adapters/codex.test.js.map +1 -0
  235. package/dist/core/adapters/universal.d.ts +10 -0
  236. package/dist/core/adapters/universal.d.ts.map +1 -0
  237. package/dist/core/adapters/universal.js +45 -0
  238. package/dist/core/adapters/universal.js.map +1 -0
  239. package/dist/core/adapters/universal.test.d.ts +2 -0
  240. package/dist/core/adapters/universal.test.d.ts.map +1 -0
  241. package/dist/core/adapters/universal.test.js +121 -0
  242. package/dist/core/adapters/universal.test.js.map +1 -0
  243. package/dist/core/assembly/context-gatherer.d.ts +17 -0
  244. package/dist/core/assembly/context-gatherer.d.ts.map +1 -0
  245. package/dist/core/assembly/context-gatherer.js +49 -0
  246. package/dist/core/assembly/context-gatherer.js.map +1 -0
  247. package/dist/core/assembly/context-gatherer.test.d.ts +2 -0
  248. package/dist/core/assembly/context-gatherer.test.d.ts.map +1 -0
  249. package/dist/core/assembly/context-gatherer.test.js +252 -0
  250. package/dist/core/assembly/context-gatherer.test.js.map +1 -0
  251. package/dist/core/assembly/depth-resolver.d.ts +11 -0
  252. package/dist/core/assembly/depth-resolver.d.ts.map +1 -0
  253. package/dist/core/assembly/depth-resolver.js +23 -0
  254. package/dist/core/assembly/depth-resolver.js.map +1 -0
  255. package/dist/core/assembly/depth-resolver.test.d.ts +2 -0
  256. package/dist/core/assembly/depth-resolver.test.d.ts.map +1 -0
  257. package/dist/core/assembly/depth-resolver.test.js +100 -0
  258. package/dist/core/assembly/depth-resolver.test.js.map +1 -0
  259. package/dist/core/assembly/engine.d.ts +22 -0
  260. package/dist/core/assembly/engine.d.ts.map +1 -0
  261. package/dist/core/assembly/engine.js +215 -0
  262. package/dist/core/assembly/engine.js.map +1 -0
  263. package/dist/core/assembly/engine.test.d.ts +2 -0
  264. package/dist/core/assembly/engine.test.d.ts.map +1 -0
  265. package/dist/core/assembly/engine.test.js +462 -0
  266. package/dist/core/assembly/engine.test.js.map +1 -0
  267. package/dist/core/assembly/instruction-loader.d.ts +16 -0
  268. package/dist/core/assembly/instruction-loader.d.ts.map +1 -0
  269. package/dist/core/assembly/instruction-loader.js +40 -0
  270. package/dist/core/assembly/instruction-loader.js.map +1 -0
  271. package/dist/core/assembly/instruction-loader.test.d.ts +2 -0
  272. package/dist/core/assembly/instruction-loader.test.d.ts.map +1 -0
  273. package/dist/core/assembly/instruction-loader.test.js +109 -0
  274. package/dist/core/assembly/instruction-loader.test.js.map +1 -0
  275. package/dist/core/assembly/knowledge-loader.d.ts +34 -0
  276. package/dist/core/assembly/knowledge-loader.d.ts.map +1 -0
  277. package/dist/core/assembly/knowledge-loader.js +204 -0
  278. package/dist/core/assembly/knowledge-loader.js.map +1 -0
  279. package/dist/core/assembly/knowledge-loader.test.d.ts +2 -0
  280. package/dist/core/assembly/knowledge-loader.test.d.ts.map +1 -0
  281. package/dist/core/assembly/knowledge-loader.test.js +205 -0
  282. package/dist/core/assembly/knowledge-loader.test.js.map +1 -0
  283. package/dist/core/assembly/meta-prompt-loader.d.ts +13 -0
  284. package/dist/core/assembly/meta-prompt-loader.d.ts.map +1 -0
  285. package/dist/core/assembly/meta-prompt-loader.js +91 -0
  286. package/dist/core/assembly/meta-prompt-loader.js.map +1 -0
  287. package/dist/core/assembly/meta-prompt-loader.test.d.ts +2 -0
  288. package/dist/core/assembly/meta-prompt-loader.test.d.ts.map +1 -0
  289. package/dist/core/assembly/meta-prompt-loader.test.js +232 -0
  290. package/dist/core/assembly/meta-prompt-loader.test.js.map +1 -0
  291. package/dist/core/assembly/methodology-change.d.ts +27 -0
  292. package/dist/core/assembly/methodology-change.d.ts.map +1 -0
  293. package/dist/core/assembly/methodology-change.js +41 -0
  294. package/dist/core/assembly/methodology-change.js.map +1 -0
  295. package/dist/core/assembly/methodology-change.test.d.ts +2 -0
  296. package/dist/core/assembly/methodology-change.test.d.ts.map +1 -0
  297. package/dist/core/assembly/methodology-change.test.js +145 -0
  298. package/dist/core/assembly/methodology-change.test.js.map +1 -0
  299. package/dist/core/assembly/methodology-resolver.d.ts +11 -0
  300. package/dist/core/assembly/methodology-resolver.d.ts.map +1 -0
  301. package/dist/core/assembly/methodology-resolver.js +19 -0
  302. package/dist/core/assembly/methodology-resolver.js.map +1 -0
  303. package/dist/core/assembly/methodology-resolver.test.d.ts +2 -0
  304. package/dist/core/assembly/methodology-resolver.test.d.ts.map +1 -0
  305. package/dist/core/assembly/methodology-resolver.test.js +87 -0
  306. package/dist/core/assembly/methodology-resolver.test.js.map +1 -0
  307. package/dist/core/assembly/preset-loader.d.ts +26 -0
  308. package/dist/core/assembly/preset-loader.d.ts.map +1 -0
  309. package/dist/core/assembly/preset-loader.js +146 -0
  310. package/dist/core/assembly/preset-loader.js.map +1 -0
  311. package/dist/core/assembly/preset-loader.test.d.ts +2 -0
  312. package/dist/core/assembly/preset-loader.test.d.ts.map +1 -0
  313. package/dist/core/assembly/preset-loader.test.js +107 -0
  314. package/dist/core/assembly/preset-loader.test.js.map +1 -0
  315. package/dist/core/assembly/update-mode.d.ts +25 -0
  316. package/dist/core/assembly/update-mode.d.ts.map +1 -0
  317. package/dist/core/assembly/update-mode.js +70 -0
  318. package/dist/core/assembly/update-mode.js.map +1 -0
  319. package/dist/core/assembly/update-mode.test.d.ts +2 -0
  320. package/dist/core/assembly/update-mode.test.d.ts.map +1 -0
  321. package/dist/core/assembly/update-mode.test.js +235 -0
  322. package/dist/core/assembly/update-mode.test.js.map +1 -0
  323. package/dist/core/dependency/dependency.d.ts +20 -0
  324. package/dist/core/dependency/dependency.d.ts.map +1 -0
  325. package/dist/core/dependency/dependency.js +104 -0
  326. package/dist/core/dependency/dependency.js.map +1 -0
  327. package/dist/core/dependency/dependency.test.d.ts +2 -0
  328. package/dist/core/dependency/dependency.test.d.ts.map +1 -0
  329. package/dist/core/dependency/dependency.test.js +166 -0
  330. package/dist/core/dependency/dependency.test.js.map +1 -0
  331. package/dist/core/dependency/eligibility.d.ts +17 -0
  332. package/dist/core/dependency/eligibility.d.ts.map +1 -0
  333. package/dist/core/dependency/eligibility.js +60 -0
  334. package/dist/core/dependency/eligibility.js.map +1 -0
  335. package/dist/core/dependency/eligibility.test.d.ts +2 -0
  336. package/dist/core/dependency/eligibility.test.d.ts.map +1 -0
  337. package/dist/core/dependency/eligibility.test.js +198 -0
  338. package/dist/core/dependency/eligibility.test.js.map +1 -0
  339. package/dist/core/dependency/graph.d.ts +12 -0
  340. package/dist/core/dependency/graph.d.ts.map +1 -0
  341. package/dist/core/dependency/graph.js +34 -0
  342. package/dist/core/dependency/graph.js.map +1 -0
  343. package/dist/core/knowledge/knowledge-update-assembler.d.ts +24 -0
  344. package/dist/core/knowledge/knowledge-update-assembler.d.ts.map +1 -0
  345. package/dist/core/knowledge/knowledge-update-assembler.js +46 -0
  346. package/dist/core/knowledge/knowledge-update-assembler.js.map +1 -0
  347. package/dist/core/knowledge/knowledge-update-assembler.test.d.ts +2 -0
  348. package/dist/core/knowledge/knowledge-update-assembler.test.d.ts.map +1 -0
  349. package/dist/core/knowledge/knowledge-update-assembler.test.js +93 -0
  350. package/dist/core/knowledge/knowledge-update-assembler.test.js.map +1 -0
  351. package/dist/core/knowledge/knowledge-update-template.md +55 -0
  352. package/dist/dashboard/generator.d.ts +37 -0
  353. package/dist/dashboard/generator.d.ts.map +1 -0
  354. package/dist/dashboard/generator.js +42 -0
  355. package/dist/dashboard/generator.js.map +1 -0
  356. package/dist/dashboard/generator.test.d.ts +2 -0
  357. package/dist/dashboard/generator.test.d.ts.map +1 -0
  358. package/dist/dashboard/generator.test.js +186 -0
  359. package/dist/dashboard/generator.test.js.map +1 -0
  360. package/dist/dashboard/template.d.ts +4 -0
  361. package/dist/dashboard/template.d.ts.map +1 -0
  362. package/dist/dashboard/template.js +190 -0
  363. package/dist/dashboard/template.js.map +1 -0
  364. package/dist/e2e/commands.test.d.ts +9 -0
  365. package/dist/e2e/commands.test.d.ts.map +1 -0
  366. package/dist/e2e/commands.test.js +499 -0
  367. package/dist/e2e/commands.test.js.map +1 -0
  368. package/dist/e2e/init.test.d.ts +10 -0
  369. package/dist/e2e/init.test.d.ts.map +1 -0
  370. package/dist/e2e/init.test.js +180 -0
  371. package/dist/e2e/init.test.js.map +1 -0
  372. package/dist/e2e/knowledge.test.d.ts +2 -0
  373. package/dist/e2e/knowledge.test.d.ts.map +1 -0
  374. package/dist/e2e/knowledge.test.js +103 -0
  375. package/dist/e2e/knowledge.test.js.map +1 -0
  376. package/dist/e2e/pipeline.test.d.ts +8 -0
  377. package/dist/e2e/pipeline.test.d.ts.map +1 -0
  378. package/dist/e2e/pipeline.test.js +295 -0
  379. package/dist/e2e/pipeline.test.js.map +1 -0
  380. package/dist/index.d.ts +3 -0
  381. package/dist/index.d.ts.map +1 -0
  382. package/dist/index.js +7 -0
  383. package/dist/index.js.map +1 -0
  384. package/dist/project/adopt.d.ts +28 -0
  385. package/dist/project/adopt.d.ts.map +1 -0
  386. package/dist/project/adopt.js +49 -0
  387. package/dist/project/adopt.js.map +1 -0
  388. package/dist/project/adopt.test.d.ts +2 -0
  389. package/dist/project/adopt.test.d.ts.map +1 -0
  390. package/dist/project/adopt.test.js +220 -0
  391. package/dist/project/adopt.test.js.map +1 -0
  392. package/dist/project/claude-md.d.ts +33 -0
  393. package/dist/project/claude-md.d.ts.map +1 -0
  394. package/dist/project/claude-md.js +112 -0
  395. package/dist/project/claude-md.js.map +1 -0
  396. package/dist/project/claude-md.test.d.ts +2 -0
  397. package/dist/project/claude-md.test.d.ts.map +1 -0
  398. package/dist/project/claude-md.test.js +151 -0
  399. package/dist/project/claude-md.test.js.map +1 -0
  400. package/dist/project/detector.d.ts +7 -0
  401. package/dist/project/detector.d.ts.map +1 -0
  402. package/dist/project/detector.js +78 -0
  403. package/dist/project/detector.js.map +1 -0
  404. package/dist/project/detector.test.d.ts +2 -0
  405. package/dist/project/detector.test.d.ts.map +1 -0
  406. package/dist/project/detector.test.js +137 -0
  407. package/dist/project/detector.test.js.map +1 -0
  408. package/dist/project/frontmatter.d.ts +17 -0
  409. package/dist/project/frontmatter.d.ts.map +1 -0
  410. package/dist/project/frontmatter.js +236 -0
  411. package/dist/project/frontmatter.js.map +1 -0
  412. package/dist/project/frontmatter.test.d.ts +2 -0
  413. package/dist/project/frontmatter.test.d.ts.map +1 -0
  414. package/dist/project/frontmatter.test.js +218 -0
  415. package/dist/project/frontmatter.test.js.map +1 -0
  416. package/dist/project/signals.d.ts +12 -0
  417. package/dist/project/signals.d.ts.map +1 -0
  418. package/dist/project/signals.js +2 -0
  419. package/dist/project/signals.js.map +1 -0
  420. package/dist/state/completion.d.ts +22 -0
  421. package/dist/state/completion.d.ts.map +1 -0
  422. package/dist/state/completion.js +82 -0
  423. package/dist/state/completion.js.map +1 -0
  424. package/dist/state/completion.test.d.ts +2 -0
  425. package/dist/state/completion.test.d.ts.map +1 -0
  426. package/dist/state/completion.test.js +246 -0
  427. package/dist/state/completion.test.js.map +1 -0
  428. package/dist/state/decision-logger.d.ts +16 -0
  429. package/dist/state/decision-logger.d.ts.map +1 -0
  430. package/dist/state/decision-logger.js +80 -0
  431. package/dist/state/decision-logger.js.map +1 -0
  432. package/dist/state/decision-logger.test.d.ts +2 -0
  433. package/dist/state/decision-logger.test.d.ts.map +1 -0
  434. package/dist/state/decision-logger.test.js +182 -0
  435. package/dist/state/decision-logger.test.js.map +1 -0
  436. package/dist/state/lock-manager.d.ts +18 -0
  437. package/dist/state/lock-manager.d.ts.map +1 -0
  438. package/dist/state/lock-manager.js +134 -0
  439. package/dist/state/lock-manager.js.map +1 -0
  440. package/dist/state/lock-manager.test.d.ts +2 -0
  441. package/dist/state/lock-manager.test.d.ts.map +1 -0
  442. package/dist/state/lock-manager.test.js +190 -0
  443. package/dist/state/lock-manager.test.js.map +1 -0
  444. package/dist/state/state-manager.d.ts +37 -0
  445. package/dist/state/state-manager.d.ts.map +1 -0
  446. package/dist/state/state-manager.js +125 -0
  447. package/dist/state/state-manager.js.map +1 -0
  448. package/dist/state/state-manager.test.d.ts +2 -0
  449. package/dist/state/state-manager.test.d.ts.map +1 -0
  450. package/dist/state/state-manager.test.js +240 -0
  451. package/dist/state/state-manager.test.js.map +1 -0
  452. package/dist/types/adapter.d.ts +24 -0
  453. package/dist/types/adapter.d.ts.map +1 -0
  454. package/dist/types/adapter.js +2 -0
  455. package/dist/types/adapter.js.map +1 -0
  456. package/dist/types/assembly.d.ts +89 -0
  457. package/dist/types/assembly.d.ts.map +1 -0
  458. package/dist/types/assembly.js +2 -0
  459. package/dist/types/assembly.js.map +1 -0
  460. package/dist/types/claude-md.d.ts +11 -0
  461. package/dist/types/claude-md.d.ts.map +1 -0
  462. package/dist/types/claude-md.js +2 -0
  463. package/dist/types/claude-md.js.map +1 -0
  464. package/dist/types/cli.d.ts +15 -0
  465. package/dist/types/cli.d.ts.map +1 -0
  466. package/dist/types/cli.js +2 -0
  467. package/dist/types/cli.js.map +1 -0
  468. package/dist/types/config.d.ts +40 -0
  469. package/dist/types/config.d.ts.map +1 -0
  470. package/dist/types/config.js +2 -0
  471. package/dist/types/config.js.map +1 -0
  472. package/dist/types/decision.d.ts +14 -0
  473. package/dist/types/decision.d.ts.map +1 -0
  474. package/dist/types/decision.js +2 -0
  475. package/dist/types/decision.js.map +1 -0
  476. package/dist/types/dependency.d.ts +12 -0
  477. package/dist/types/dependency.d.ts.map +1 -0
  478. package/dist/types/dependency.js +2 -0
  479. package/dist/types/dependency.js.map +1 -0
  480. package/dist/types/enums.d.ts +23 -0
  481. package/dist/types/enums.d.ts.map +1 -0
  482. package/dist/types/enums.js +11 -0
  483. package/dist/types/enums.js.map +1 -0
  484. package/dist/types/enums.test.d.ts +2 -0
  485. package/dist/types/enums.test.d.ts.map +1 -0
  486. package/dist/types/enums.test.js +13 -0
  487. package/dist/types/enums.test.js.map +1 -0
  488. package/dist/types/errors.d.ts +24 -0
  489. package/dist/types/errors.d.ts.map +1 -0
  490. package/dist/types/errors.js +2 -0
  491. package/dist/types/errors.js.map +1 -0
  492. package/dist/types/frontmatter.d.ts +43 -0
  493. package/dist/types/frontmatter.d.ts.map +1 -0
  494. package/dist/types/frontmatter.js +2 -0
  495. package/dist/types/frontmatter.js.map +1 -0
  496. package/dist/types/index.d.ts +14 -0
  497. package/dist/types/index.d.ts.map +1 -0
  498. package/dist/types/index.js +14 -0
  499. package/dist/types/index.js.map +1 -0
  500. package/dist/types/lock.d.ts +10 -0
  501. package/dist/types/lock.d.ts.map +1 -0
  502. package/dist/types/lock.js +2 -0
  503. package/dist/types/lock.js.map +1 -0
  504. package/dist/types/state.d.ts +49 -0
  505. package/dist/types/state.d.ts.map +1 -0
  506. package/dist/types/state.js +2 -0
  507. package/dist/types/state.js.map +1 -0
  508. package/dist/types/wizard.d.ts +14 -0
  509. package/dist/types/wizard.d.ts.map +1 -0
  510. package/dist/types/wizard.js +2 -0
  511. package/dist/types/wizard.js.map +1 -0
  512. package/dist/utils/errors.d.ts +42 -0
  513. package/dist/utils/errors.d.ts.map +1 -0
  514. package/dist/utils/errors.js +232 -0
  515. package/dist/utils/errors.js.map +1 -0
  516. package/dist/utils/errors.test.d.ts +2 -0
  517. package/dist/utils/errors.test.d.ts.map +1 -0
  518. package/dist/utils/errors.test.js +91 -0
  519. package/dist/utils/errors.test.js.map +1 -0
  520. package/dist/utils/fs.d.ts +11 -0
  521. package/dist/utils/fs.d.ts.map +1 -0
  522. package/dist/utils/fs.js +20 -0
  523. package/dist/utils/fs.js.map +1 -0
  524. package/dist/utils/fs.test.d.ts +2 -0
  525. package/dist/utils/fs.test.d.ts.map +1 -0
  526. package/dist/utils/fs.test.js +93 -0
  527. package/dist/utils/fs.test.js.map +1 -0
  528. package/dist/utils/index.d.ts +4 -0
  529. package/dist/utils/index.d.ts.map +1 -0
  530. package/dist/utils/index.js +4 -0
  531. package/dist/utils/index.js.map +1 -0
  532. package/dist/utils/levenshtein.d.ts +11 -0
  533. package/dist/utils/levenshtein.d.ts.map +1 -0
  534. package/dist/utils/levenshtein.js +37 -0
  535. package/dist/utils/levenshtein.js.map +1 -0
  536. package/dist/utils/levenshtein.test.d.ts +2 -0
  537. package/dist/utils/levenshtein.test.d.ts.map +1 -0
  538. package/dist/utils/levenshtein.test.js +34 -0
  539. package/dist/utils/levenshtein.test.js.map +1 -0
  540. package/dist/validation/config-validator.d.ts +10 -0
  541. package/dist/validation/config-validator.d.ts.map +1 -0
  542. package/dist/validation/config-validator.js +11 -0
  543. package/dist/validation/config-validator.js.map +1 -0
  544. package/dist/validation/dependency-validator.d.ts +10 -0
  545. package/dist/validation/dependency-validator.d.ts.map +1 -0
  546. package/dist/validation/dependency-validator.js +34 -0
  547. package/dist/validation/dependency-validator.js.map +1 -0
  548. package/dist/validation/frontmatter-validator.d.ts +12 -0
  549. package/dist/validation/frontmatter-validator.d.ts.map +1 -0
  550. package/dist/validation/frontmatter-validator.js +50 -0
  551. package/dist/validation/frontmatter-validator.js.map +1 -0
  552. package/dist/validation/index.d.ts +19 -0
  553. package/dist/validation/index.d.ts.map +1 -0
  554. package/dist/validation/index.js +64 -0
  555. package/dist/validation/index.js.map +1 -0
  556. package/dist/validation/index.test.d.ts +2 -0
  557. package/dist/validation/index.test.d.ts.map +1 -0
  558. package/dist/validation/index.test.js +241 -0
  559. package/dist/validation/index.test.js.map +1 -0
  560. package/dist/validation/state-validator.d.ts +15 -0
  561. package/dist/validation/state-validator.d.ts.map +1 -0
  562. package/dist/validation/state-validator.js +104 -0
  563. package/dist/validation/state-validator.js.map +1 -0
  564. package/dist/wizard/questions.d.ts +18 -0
  565. package/dist/wizard/questions.d.ts.map +1 -0
  566. package/dist/wizard/questions.js +46 -0
  567. package/dist/wizard/questions.js.map +1 -0
  568. package/dist/wizard/suggestion.d.ts +10 -0
  569. package/dist/wizard/suggestion.d.ts.map +1 -0
  570. package/dist/wizard/suggestion.js +17 -0
  571. package/dist/wizard/suggestion.js.map +1 -0
  572. package/dist/wizard/wizard.d.ts +19 -0
  573. package/dist/wizard/wizard.d.ts.map +1 -0
  574. package/dist/wizard/wizard.js +104 -0
  575. package/dist/wizard/wizard.js.map +1 -0
  576. package/dist/wizard/wizard.test.d.ts +2 -0
  577. package/dist/wizard/wizard.test.d.ts.map +1 -0
  578. package/dist/wizard/wizard.test.js +167 -0
  579. package/dist/wizard/wizard.test.js.map +1 -0
  580. package/knowledge/core/adr-craft.md +281 -0
  581. package/knowledge/core/api-design.md +501 -0
  582. package/knowledge/core/database-design.md +380 -0
  583. package/knowledge/core/domain-modeling.md +317 -0
  584. package/knowledge/core/operations-runbook.md +513 -0
  585. package/knowledge/core/security-review.md +523 -0
  586. package/knowledge/core/system-architecture.md +402 -0
  587. package/knowledge/core/task-decomposition.md +372 -0
  588. package/knowledge/core/testing-strategy.md +409 -0
  589. package/knowledge/core/user-stories.md +337 -0
  590. package/knowledge/core/user-story-innovation.md +171 -0
  591. package/knowledge/core/ux-specification.md +380 -0
  592. package/knowledge/finalization/apply-fixes-and-freeze.md +93 -0
  593. package/knowledge/finalization/developer-onboarding.md +376 -0
  594. package/knowledge/finalization/implementation-playbook.md +404 -0
  595. package/knowledge/product/gap-analysis.md +305 -0
  596. package/knowledge/product/prd-craft.md +324 -0
  597. package/knowledge/product/prd-innovation.md +204 -0
  598. package/knowledge/review/review-adr.md +203 -0
  599. package/knowledge/review/review-api-contracts.md +233 -0
  600. package/knowledge/review/review-database-schema.md +229 -0
  601. package/knowledge/review/review-domain-modeling.md +288 -0
  602. package/knowledge/review/review-implementation-tasks.md +202 -0
  603. package/knowledge/review/review-methodology.md +215 -0
  604. package/knowledge/review/review-operations.md +212 -0
  605. package/knowledge/review/review-prd.md +235 -0
  606. package/knowledge/review/review-security.md +213 -0
  607. package/knowledge/review/review-system-architecture.md +296 -0
  608. package/knowledge/review/review-testing-strategy.md +176 -0
  609. package/knowledge/review/review-user-stories.md +172 -0
  610. package/knowledge/review/review-ux-spec.md +208 -0
  611. package/knowledge/validation/critical-path-analysis.md +203 -0
  612. package/knowledge/validation/cross-phase-consistency.md +181 -0
  613. package/knowledge/validation/decision-completeness.md +218 -0
  614. package/knowledge/validation/dependency-validation.md +233 -0
  615. package/knowledge/validation/implementability-review.md +252 -0
  616. package/knowledge/validation/scope-management.md +223 -0
  617. package/knowledge/validation/traceability.md +198 -0
  618. package/methodology/custom-defaults.yml +43 -0
  619. package/methodology/deep.yml +42 -0
  620. package/methodology/mvp.yml +42 -0
  621. package/package.json +58 -0
  622. package/pipeline/architecture/review-architecture.md +44 -0
  623. package/pipeline/architecture/system-architecture.md +45 -0
  624. package/pipeline/decisions/adrs.md +45 -0
  625. package/pipeline/decisions/review-adrs.md +39 -0
  626. package/pipeline/finalization/apply-fixes-and-freeze.md +39 -0
  627. package/pipeline/finalization/developer-onboarding-guide.md +36 -0
  628. package/pipeline/finalization/implementation-playbook.md +45 -0
  629. package/pipeline/modeling/domain-modeling.md +57 -0
  630. package/pipeline/modeling/review-domain-modeling.md +41 -0
  631. package/pipeline/planning/implementation-tasks.md +57 -0
  632. package/pipeline/planning/review-tasks.md +38 -0
  633. package/pipeline/pre/create-prd.md +45 -0
  634. package/pipeline/pre/innovate-prd.md +47 -0
  635. package/pipeline/pre/innovate-user-stories.md +47 -0
  636. package/pipeline/pre/review-prd.md +44 -0
  637. package/pipeline/pre/review-user-stories.md +43 -0
  638. package/pipeline/pre/user-stories.md +48 -0
  639. package/pipeline/quality/operations.md +42 -0
  640. package/pipeline/quality/review-operations.md +37 -0
  641. package/pipeline/quality/review-security.md +40 -0
  642. package/pipeline/quality/review-testing.md +39 -0
  643. package/pipeline/quality/security.md +44 -0
  644. package/pipeline/quality/testing-strategy.md +42 -0
  645. package/pipeline/specification/api-contracts.md +44 -0
  646. package/pipeline/specification/database-schema.md +41 -0
  647. package/pipeline/specification/review-api.md +40 -0
  648. package/pipeline/specification/review-database.md +39 -0
  649. package/pipeline/specification/review-ux.md +38 -0
  650. package/pipeline/specification/ux-spec.md +43 -0
  651. package/pipeline/validation/critical-path-walkthrough.md +37 -0
  652. package/pipeline/validation/cross-phase-consistency.md +35 -0
  653. package/pipeline/validation/decision-completeness.md +36 -0
  654. package/pipeline/validation/dependency-graph-validation.md +36 -0
  655. package/pipeline/validation/implementability-dry-run.md +36 -0
  656. package/pipeline/validation/scope-creep-check.md +38 -0
  657. package/pipeline/validation/traceability-matrix.md +36 -0
@@ -0,0 +1,208 @@
1
+ ---
2
+ name: review-ux-spec
3
+ description: Failure modes and review passes specific to UI/UX specification artifacts
4
+ topics: [review, ux, design, accessibility, responsive]
5
+ ---
6
+
7
+ # Review: UX Specification
8
+
9
+ The UX specification translates user journeys from the PRD and component architecture from the system architecture into concrete screens, interactions, and components. It must cover every user-facing feature, handle all interaction states (including errors and edge cases), and align with the design system. This review uses 7 passes targeting the specific ways UX specs fail.
10
+
11
+ Follows the review process defined in `review-methodology.md`.
12
+
13
+ ---
14
+
15
+ ## Pass 1: User Journey Coverage vs PRD
16
+
17
+ ### What to Check
18
+
19
+ Every user-facing feature in the PRD has a corresponding screen, flow, or interaction in the UX spec. No PRD feature is left without a UX design.
20
+
21
+ ### Why This Matters
22
+
23
+ Features without UX design get implemented with ad hoc interfaces. The implementing agent invents the UI on the fly, producing inconsistent interactions, unclear navigation, and confusing user flows. UX coverage is the bridge between "what the system does" (PRD) and "how the user does it" (implementation).
24
+
25
+ ### How to Check
26
+
27
+ 1. List every user-facing feature from the PRD (user stories, feature descriptions, use cases)
28
+ 2. For each feature, trace to its UX representation: which screens, which interactions, which flow?
29
+ 3. Flag features with no UX mapping — these are coverage gaps
30
+ 4. Check for PRD features that were split across multiple UX flows — is the split logical and complete?
31
+ 5. Verify that non-happy-path journeys are covered: what happens when the user makes a mistake, changes their mind, or encounters an error?
32
+ 6. Check that onboarding/first-time-use flows exist for features that require setup or learning
33
+
34
+ ### What a Finding Looks Like
35
+
36
+ - P0: "PRD feature 'user can manage payment methods' has no corresponding screen in the UX spec. No flow for adding, editing, or removing payment methods exists."
37
+ - P1: "PRD describes a 'password reset' flow, but the UX spec only covers the email entry step. The verification code entry, new password, and confirmation steps are missing."
38
+ - P2: "PRD mentions 'user preferences' but the UX spec provides only a single settings screen with no detail on what preferences are available or how they are organized."
39
+
40
+ ---
41
+
42
+ ## Pass 2: Accessibility Compliance
43
+
44
+ ### What to Check
45
+
46
+ The UX spec addresses accessibility at the specification level. WCAG compliance level is stated. Keyboard navigation is designed. Screen reader support is considered. Color contrast meets requirements.
47
+
48
+ ### Why This Matters
49
+
50
+ Accessibility retrofitted after implementation is 5-10x more expensive than designing it in. When the UX spec does not address accessibility, implementing agents build inaccessible interfaces. Retrofitting means redesigning interaction patterns, adding ARIA attributes to components that were not designed for them, and restructuring HTML semantics.
51
+
52
+ ### How to Check
53
+
54
+ 1. Verify the target WCAG level is stated (A, AA, or AAA)
55
+ 2. For each interactive component, check: is keyboard navigation specified? (Tab order, keyboard shortcuts, focus management)
56
+ 3. Check that form elements have associated labels (not just placeholder text)
57
+ 4. Verify that interactive elements have sufficient touch target size (44x44 CSS pixels minimum)
58
+ 5. Check color usage: is information conveyed by color alone? (Must also use text, icons, or patterns)
59
+ 6. Check that screen reader behavior is specified for dynamic content (live regions, state announcements, navigation landmarks)
60
+ 7. Verify that focus management is specified for modals, dropdowns, and dynamic content changes
61
+
62
+ ### What a Finding Looks Like
63
+
64
+ - P0: "No WCAG compliance level is stated. Implementing agents do not know what accessibility standard to target."
65
+ - P1: "Modal dialogs do not specify focus management. When a modal opens, where does focus go? When it closes, where does focus return? Without this, keyboard users get lost."
66
+ - P1: "Status indicators use only color (green/yellow/red) with no text or icon alternative. Users with color blindness cannot distinguish states."
67
+ - P2: "Tab order is not specified for the main navigation. Default DOM order may not match the visual layout."
68
+
69
+ ---
70
+
71
+ ## Pass 3: Interaction State Completeness
72
+
73
+ ### What to Check
74
+
75
+ Every interactive component has all its states defined: empty, loading, populated, error, disabled, hover, focus, active. Every user action has a clear response.
76
+
77
+ ### Why This Matters
78
+
79
+ Implementing agents default to the "happy path populated" state when other states are not specified. The result is a UI that looks good with data but shows blank screens on empty states, has no loading indicators, and displays raw error messages. State completeness is what separates a polished UI from a prototype.
80
+
81
+ ### How to Check
82
+
83
+ For each interactive component or data display:
84
+ 1. **Empty state** — What does it look like when there is no data? (Empty list, no results, new user with no history)
85
+ 2. **Loading state** — What does the user see while data is being fetched? (Skeleton, spinner, progressive loading)
86
+ 3. **Populated state** — The normal view with data (usually designed)
87
+ 4. **Error state** — What does the user see when a request fails? (Error message, retry button, fallback content)
88
+ 5. **Partial state** — What if some data loaded but part failed? (Component-level errors vs. page-level errors)
89
+ 6. **Disabled state** — When is the component not interactive, and what does it look like?
90
+ 7. **Edge states** — Very long text (truncation?), very large numbers (formatting?), very long lists (virtualization?)
91
+
92
+ ### What a Finding Looks Like
93
+
94
+ - P0: "The dashboard shows charts and metrics but has no empty state design. A new user with no data will see empty chart containers with no guidance."
95
+ - P1: "The order list component has no loading state. When orders are being fetched, the user sees either nothing or a flash of the empty state before data appears."
96
+ - P1: "Form submission has a success state (redirect to confirmation) but no error state. What does the user see when the submission fails?"
97
+ - P2: "No specification for how very long product names are handled in the product card. Truncation? Wrapping? Tooltip?"
98
+
99
+ ---
100
+
101
+ ## Pass 4: Design System Consistency
102
+
103
+ ### What to Check
104
+
105
+ The UX spec uses design system tokens consistently. Colors, spacing, typography, and component styles reference the design system rather than using one-off values.
106
+
107
+ ### Why This Matters
108
+
109
+ One-off values create visual inconsistency and maintenance burden. If one button uses `#3B82F6` and another uses `--color-primary`, they will diverge when the design system is updated. Consistent token usage means the design system is the single source of truth for visual properties.
110
+
111
+ ### How to Check
112
+
113
+ 1. Verify that a design system is referenced or defined (color tokens, spacing scale, typography scale, component library)
114
+ 2. Check that color values in the UX spec reference design system tokens, not hex values or named colors
115
+ 3. Check that spacing values reference the spacing scale, not arbitrary pixel values
116
+ 4. Check that typography (font sizes, weights, line heights) uses the type scale
117
+ 5. Verify that component specifications reference design system components, not custom one-off designs
118
+ 6. Look for visual elements that have no design system mapping — these are either gaps in the design system or violations
119
+
120
+ ### What a Finding Looks Like
121
+
122
+ - P1: "The notification banner uses background color '#FEF3C7' which is not in the design system color tokens. Should use the warning surface token."
123
+ - P1: "Button in the settings page has 14px padding. The design system spacing scale uses 12px and 16px. This creates visual inconsistency."
124
+ - P2: "The modal component has a custom shadow that differs from the design system elevation tokens."
125
+
126
+ ---
127
+
128
+ ## Pass 5: Responsive Breakpoint Coverage
129
+
130
+ ### What to Check
131
+
132
+ Behavior is defined for all responsive breakpoints. Every screen specifies how it adapts to mobile, tablet, and desktop viewports. Navigation changes across breakpoints are documented.
133
+
134
+ ### Why This Matters
135
+
136
+ Responsive behavior that is not specified gets improvised during implementation. The implementing agent makes layout decisions on the fly, producing inconsistent responsive behavior across screens. Some screens may collapse to single-column while others try to maintain two columns, creating a jarring experience.
137
+
138
+ ### How to Check
139
+
140
+ 1. Verify that responsive breakpoints are defined (e.g., mobile < 768px, tablet 768-1024px, desktop > 1024px)
141
+ 2. For each screen, check that layout behavior is specified for each breakpoint
142
+ 3. Check navigation: does it collapse to a hamburger menu on mobile? At what breakpoint?
143
+ 4. Check data tables: how do they display on mobile? (Horizontal scroll, card layout, column hiding)
144
+ 5. Check form layouts: do multi-column forms stack on mobile?
145
+ 6. Check images and media: are they responsive? What aspect ratio at each breakpoint?
146
+ 7. Check for touch vs. pointer interactions: hover states need touch alternatives on mobile
147
+
148
+ ### What a Finding Looks Like
149
+
150
+ - P0: "No responsive breakpoints are defined anywhere in the UX spec. Implementing agents have no guidance on how any screen should adapt to mobile."
151
+ - P1: "The dashboard screen has a desktop layout with three columns of charts but no mobile specification. Three columns at 375px is unreadable."
152
+ - P2: "Data table on the orders screen specifies horizontal scroll on mobile, but no indication of which columns to show vs. hide for quick scanning."
153
+
154
+ ---
155
+
156
+ ## Pass 6: Error State Handling
157
+
158
+ ### What to Check
159
+
160
+ Every user action that can fail has a designed error state. Error messages are user-friendly. Recovery paths are clear.
161
+
162
+ ### Why This Matters
163
+
164
+ Error handling is the most-skipped aspect of UX design. When error states are not designed, implementing agents show browser alerts, raw API error messages, or nothing at all. Users encounter errors frequently (network issues, validation failures, permissions), and the quality of error handling directly impacts user trust and task completion.
165
+
166
+ ### How to Check
167
+
168
+ 1. List every user action that involves an API call or data mutation
169
+ 2. For each action, verify an error state is designed: what does the user see on failure?
170
+ 3. Check that error messages are user-friendly (not "Error 422" or "CONSTRAINT_VIOLATION")
171
+ 4. Verify recovery paths: can the user retry? Is there a back button? Is progress lost?
172
+ 5. Check for network error handling: what happens when the user loses connectivity mid-action?
173
+ 6. Check for validation error display: inline (next to the field) or summary (top of form)?
174
+ 7. Verify that error states for destructive actions are especially clear: "delete failed" should not look like "delete succeeded"
175
+
176
+ ### What a Finding Looks Like
177
+
178
+ - P0: "Payment processing flow has no error state design. If payment fails, what does the user see? Can they retry? Is the order in a partial state?"
179
+ - P1: "Form validation errors are not specified as inline or summary. This is a fundamental interaction pattern decision that affects implementation architecture."
180
+ - P2: "Network connectivity loss is not addressed. Long-running operations (file upload, report generation) need offline/reconnection handling."
181
+
182
+ ---
183
+
184
+ ## Pass 7: Component Hierarchy vs Architecture
185
+
186
+ ### What to Check
187
+
188
+ Frontend components in the UX spec align with the frontend architecture from the system architecture document. Component boundaries match. State management aligns with the architectural approach.
189
+
190
+ ### Why This Matters
191
+
192
+ When the UX spec designs components that do not match the architecture's component structure, implementing agents must reconcile two conflicting visions. Either they follow the UX spec (violating the architecture) or the architecture (deviating from the UX spec). Alignment prevents this conflict.
193
+
194
+ ### How to Check
195
+
196
+ 1. List frontend components from the system architecture document
197
+ 2. List UI components from the UX spec
198
+ 3. Verify alignment: do the UX spec's components map to the architecture's component boundaries?
199
+ 4. Check that data flow assumptions in the UX spec match the architecture's state management approach
200
+ 5. Verify that reusable components in the UX spec align with the architecture's component library structure
201
+ 6. Check that page-level components in the UX spec correspond to routes or views in the architecture
202
+ 7. Verify that the UX spec's component composition (which components contain which) matches the architecture's component tree
203
+
204
+ ### What a Finding Looks Like
205
+
206
+ - P1: "The UX spec designs an 'OrderSummaryWidget' that combines order details, customer info, and payment status. The architecture separates these into three independent components (OrderComponent, CustomerComponent, PaymentComponent) with separate data sources."
207
+ - P1: "The UX spec assumes global state for user preferences (accessible from any component), but the architecture specifies component-local state with prop drilling."
208
+ - P2: "The UX spec's 'ProductCard' component bundles product image, price, and add-to-cart button. The architecture models 'ProductDisplay' and 'CartAction' as separate concerns."
@@ -0,0 +1,203 @@
1
+ ---
2
+ name: critical-path-analysis
3
+ description: Tracing critical user journeys end-to-end across all specifications
4
+ topics: [validation, critical-path, user-journeys, end-to-end, gaps]
5
+ ---
6
+
7
+ # Critical Path Analysis
8
+
9
+ Critical path analysis walks through the most important user journeys end-to-end across every specification artifact. For each journey, it verifies that every component, endpoint, query, screen, and task needed to make the journey work actually exists and is consistent.
10
+
11
+ ## What a Critical Path Is
12
+
13
+ A critical path is a user journey that represents core functionality — the features that, if broken, would make the product unusable or fail its primary value proposition. These are not edge cases. They are the main flows that most users will execute most of the time.
14
+
15
+ ## Identifying Critical Journeys
16
+
17
+ ### Sources for Critical Journeys
18
+
19
+ 1. **PRD success criteria** — Any measurable outcome in the PRD implies a user journey. "Users can complete checkout in under 3 clicks" implies a checkout journey.
20
+ 2. **PRD user stories** — Primary user stories describe the most important journeys.
21
+ 3. **PRD personas** — Each persona's primary need implies a journey. A "buyer" persona implies a purchasing journey.
22
+ 4. **Architecture data flows** — Major data flows in the architecture document represent the system-level view of critical paths.
23
+ 5. **Revenue/value paths** — Journeys that directly relate to the product's revenue model or primary value proposition.
24
+
25
+ ### Prioritizing Which Journeys to Trace
26
+
27
+ Not every user journey needs end-to-end tracing. Prioritize:
28
+
29
+ 1. **Happy path of core features** — The primary flow that delivers the product's main value. For an e-commerce app: browse → add to cart → checkout → payment → confirmation.
30
+ 2. **Authentication flows** — Sign up, sign in, password reset. Nearly every product has these and they touch many components.
31
+ 3. **Primary CRUD operations** — The main data creation and retrieval flows. For a project management tool: create project → add tasks → assign → update status → complete.
32
+ 4. **Cross-cutting journeys** — Flows that cross multiple bounded contexts or services. These are where integration gaps hide.
33
+ 5. **Error-recovery journeys** — What happens when payment fails? When a network request times out? When a form has validation errors?
34
+
35
+ A typical project should trace 5-10 critical journeys. More than 15 usually means the scope is too broad or the granularity is too fine.
36
+
37
+ ## How to Trace a Journey
38
+
39
+ ### Step 1: Define the Journey
40
+
41
+ Write a one-sentence description of the journey and list its steps from the user's perspective:
42
+
43
+ ```
44
+ Journey: User registers and completes first purchase
45
+ 1. User visits landing page
46
+ 2. User clicks "Sign Up"
47
+ 3. User fills registration form (email, password)
48
+ 4. User receives verification email
49
+ 5. User clicks verification link
50
+ 6. User browses product catalog
51
+ 7. User views product detail
52
+ 8. User adds item to cart
53
+ 9. User views cart
54
+ 10. User initiates checkout
55
+ 11. User enters shipping address
56
+ 12. User enters payment information
57
+ 13. User confirms order
58
+ 14. User sees order confirmation
59
+ 15. User receives confirmation email
60
+ ```
61
+
62
+ ### Step 2: Map Each Step to Specifications
63
+
64
+ For each step, identify the concrete artifacts that support it:
65
+
66
+ | Step | UX Component | API Endpoint | Architecture Component | Database Query | Task ID |
67
+ |------|-------------|-------------|----------------------|----------------|---------|
68
+ | 1. Visit landing | LandingPage | GET /products/featured | ProductService | SELECT featured products | T-040 |
69
+ | 2. Click Sign Up | SignUpForm | — | — | — | T-013 |
70
+ | 3. Fill registration | SignUpForm | POST /auth/register | AuthService | INSERT INTO users | T-012 |
71
+ | 4. Verification email | — | — | EmailService | INSERT INTO verification_tokens | T-016 |
72
+ | 5. Click verify link | VerifyPage | POST /auth/verify | AuthService | UPDATE users SET verified | T-017 |
73
+ | ... | ... | ... | ... | ... | ... |
74
+
75
+ ### Step 3: Check Each Mapping
76
+
77
+ For each cell in the table, verify:
78
+
79
+ 1. **Existence** — Does the referenced artifact actually exist in the specifications? Is there actually a `POST /auth/register` endpoint in the API contracts? Is there actually a `SignUpForm` component in the UX spec?
80
+
81
+ 2. **Completeness** — Does the artifact cover what this step needs? Does the `POST /auth/register` endpoint accept `email` and `password`? Does it return a response that the `SignUpForm` component can use?
82
+
83
+ 3. **Connectivity** — Does the output of step N connect to the input of step N+1? If step 3 returns `{user, token}`, does step 6 (browse catalog) know how to use that token for authenticated requests?
84
+
85
+ 4. **Error handling** — What happens if this step fails? Is the failure mode documented? Is there a recovery path? If `POST /auth/register` returns 409 (email exists), does the UX spec define what the user sees?
86
+
87
+ ### Step 4: Identify Gaps
88
+
89
+ Gaps take several forms:
90
+
91
+ **Missing component** — A step requires a component that does not exist in any specification. Example: "User receives verification email" requires an email-sending service, but no such service is in the architecture.
92
+
93
+ **Missing endpoint** — A step requires an API endpoint that is not in the contracts. Example: "User views cart" requires a `GET /cart` endpoint, but only `POST /cart/items` is defined.
94
+
95
+ **Missing query** — A step requires a database query pattern, but no index supports it. Example: "User browses by category" requires a category-based product listing, but the products table has no category index.
96
+
97
+ **Missing screen** — A step requires a UI screen or component that is not in the UX spec. Example: "User enters shipping address" requires an address form, but the UX spec jumps from cart to payment.
98
+
99
+ **Missing task** — A step requires implementation work that has no task in the implementation tasks.
100
+
101
+ **Broken connection** — The output of one step does not connect to the input of the next. Example: The registration endpoint returns a session cookie, but the product catalog endpoint expects a Bearer token.
102
+
103
+ **Missing error path** — A step can fail, but there is no specification for what happens on failure.
104
+
105
+ ## Journey Tracing Template
106
+
107
+ Use this template for each critical journey:
108
+
109
+ ```markdown
110
+ ## Journey: [Name]
111
+
112
+ **Description:** [One sentence]
113
+ **PRD Source:** [Section reference]
114
+ **Priority:** Critical | High | Medium
115
+
116
+ ### Steps
117
+
118
+ #### Step 1: [User action]
119
+ - **UX:** [Component/screen] — [status: found/missing/incomplete]
120
+ - **API:** [Endpoint] — [status]
121
+ - **Architecture:** [Component] — [status]
122
+ - **Data:** [Query/mutation] — [status]
123
+ - **Task:** [Task ID] — [status]
124
+ - **Error path:** [What happens on failure] — [status]
125
+ - **Connection to next:** [How output feeds step 2] — [status]
126
+
127
+ #### Step 2: [User action]
128
+ ...
129
+
130
+ ### Gaps Found
131
+ 1. [Gap description, severity, recommendation]
132
+ 2. ...
133
+
134
+ ### Journey Assessment
135
+ - [ ] All steps have UX components
136
+ - [ ] All steps have API endpoints (where applicable)
137
+ - [ ] All steps have architecture components
138
+ - [ ] All steps have data support (where applicable)
139
+ - [ ] All steps have implementation tasks
140
+ - [ ] All step-to-step connections verified
141
+ - [ ] All error paths documented
142
+ - [ ] End-to-end data shape consistency verified
143
+ ```
144
+
145
+ ## Common Gap Patterns
146
+
147
+ ### 1. The "Handoff Gap"
148
+
149
+ Where one bounded context ends and another begins, there is often no specification for how data moves between them. The order service creates an order, but how does the fulfillment service learn about it? Is there an event? A synchronous call? A shared database?
150
+
151
+ **How to find it:** Look for steps where the "Architecture Component" column changes. Each change is a boundary crossing that needs an integration mechanism.
152
+
153
+ ### 2. The "State Transition Gap"
154
+
155
+ A user journey involves entity state changes (order: created → paid → shipped → delivered), but the specifications do not fully document all transitions, especially error transitions (paid → refunded, shipped → returned).
156
+
157
+ **How to find it:** For each entity that changes state during the journey, extract the state machine and verify every transition has API support and UX feedback.
158
+
159
+ ### 3. The "Async Gap"
160
+
161
+ Steps that involve asynchronous processing (sending email, processing payment, generating report) often lack specification for: how long the user waits, what they see while waiting, how they are notified of completion, and what happens if the async process fails.
162
+
163
+ **How to find it:** Flag every step where the API response does not contain the final result (e.g., 202 Accepted, polling endpoints, WebSocket notifications).
164
+
165
+ ### 4. The "First-Time User Gap"
166
+
167
+ Many journeys are specified assuming the user already has data (an account, items in cart, previous orders). The first-time user journey — where the system has no data for this user — often reveals missing empty states, onboarding flows, and default configurations.
168
+
169
+ **How to find it:** Trace the journey assuming zero prior state. Does the product catalog work with zero products? Does the dashboard work with zero data points?
170
+
171
+ ### 5. The "Permission Gap"
172
+
173
+ Some steps require specific permissions (admin actions, premium features), but the specifications do not define how the user acquires those permissions or what happens when they lack them.
174
+
175
+ **How to find it:** For each step, ask "who is allowed to do this?" and verify that the auth model in the API contracts supports the answer.
176
+
177
+ ## Output Format
178
+
179
+ ### Summary Table
180
+
181
+ ```markdown
182
+ | Journey | Steps | Gaps Found | Critical Gaps | Assessment |
183
+ |---------|-------|-----------|---------------|------------|
184
+ | User registration + first purchase | 15 | 4 | 1 (email service missing) | Needs work |
185
+ | Returning user purchase | 8 | 1 | 0 | Mostly complete |
186
+ | Admin manages products | 12 | 3 | 2 (admin auth, bulk operations) | Needs work |
187
+ | User manages account | 6 | 0 | 0 | Complete |
188
+ ```
189
+
190
+ ### Detailed Findings
191
+
192
+ Each gap should be reported with:
193
+ - Which journey and step it affects
194
+ - What is missing or inconsistent
195
+ - What the impact would be if not fixed (agent would be unable to implement, or would implement incorrectly)
196
+ - Recommended fix (which artifact to update, what to add)
197
+
198
+ ## When to Run Critical Path Analysis
199
+
200
+ - After all pipeline steps (modeling through planning) are complete.
201
+ - Before implementation tasks are finalized (gaps found here may require new tasks).
202
+ - When PRD changes significantly (new features may introduce new critical journeys).
203
+ - As a final check before freezing docs in the finalization phase.
@@ -0,0 +1,181 @@
1
+ ---
2
+ name: cross-phase-consistency
3
+ description: Auditing consistency across pipeline phases — naming, assumptions, data flows, interface contracts
4
+ topics: [validation, consistency, naming, data-flow, contracts]
5
+ ---
6
+
7
+ # Cross-Phase Consistency
8
+
9
+ Cross-phase consistency validation ensures that artifacts produced across different pipeline phases agree with each other. Inconsistencies compound: a renamed entity in one phase propagates confusion into every downstream artifact. This document covers what to check, how to check it, and what findings look like.
10
+
11
+ ## Why Inconsistencies Happen
12
+
13
+ Each pipeline phase is authored at a different time, possibly by different agents, with evolving understanding of the project. Common causes:
14
+
15
+ - An entity gets renamed during architecture but the domain model still uses the old name.
16
+ - A field is added to an API contract that does not exist in the database schema.
17
+ - An ADR constrains behavior that is contradicted by a later UX specification.
18
+ - A domain event defined in modeling is never consumed by any component in architecture.
19
+ - Units or formats differ (e.g., timestamps as ISO strings in the API but Unix integers in the schema).
20
+
21
+ ## What to Check
22
+
23
+ ### 1. Naming Consistency
24
+
25
+ Trace every named concept through all artifacts where it appears.
26
+
27
+ **Process:**
28
+ 1. Extract all named entities from the domain model (aggregates, entities, value objects, events, invariants).
29
+ 2. For each name, search every downstream artifact: ADRs, architecture, schema, API contracts, UX spec, implementation tasks.
30
+ 3. Flag any spelling variations, abbreviations, or synonyms (e.g., "User" vs "Account" vs "Member" referring to the same concept).
31
+ 4. Flag any name that appears in a downstream artifact but not in the domain model (potential undocumented concept).
32
+
33
+ **What findings look like:**
34
+ - "Domain model uses `PaymentTransaction` but API contracts call it `Payment` and database schema calls it `payment_txn`."
35
+ - "The entity `SubscriptionPlan` appears in the implementation tasks but is not in the domain model."
36
+
37
+ **Resolution:** Establish one canonical name per concept. Update all artifacts to use it.
38
+
39
+ ### 2. Shared Assumptions
40
+
41
+ Later phases often assume properties that earlier phases did not explicitly specify.
42
+
43
+ **Process:**
44
+ 1. For each phase from architecture onward, identify every assumption about earlier artifacts.
45
+ 2. Verify each assumption is actually stated in the referenced artifact.
46
+ 3. Pay special attention to: cardinality (one-to-many vs many-to-many), optionality (required vs optional), ordering (ordered vs unordered), uniqueness constraints, temporal assumptions (real-time vs eventual consistency).
47
+
48
+ **What findings look like:**
49
+ - "Architecture assumes `Order` has a `status` field with enum values, but the domain model defines `Order` without specifying lifecycle states."
50
+ - "API contracts assume paginated results, but architecture data flow diagrams show unbounded queries."
51
+
52
+ **Resolution:** Either add the assumption to the source artifact or update the downstream artifact to not depend on it.
53
+
54
+ ### 3. Data Shape Consistency
55
+
56
+ Trace a data shape from domain model through schema through API through UI.
57
+
58
+ **Process:**
59
+ 1. Pick a core entity (e.g., `User`).
60
+ 2. Extract its shape from each layer:
61
+ - Domain model: attributes, relationships, invariants
62
+ - Database schema: columns, types, constraints, indexes
63
+ - API contract: request/response fields, types, validation rules
64
+ - UX spec: displayed fields, form inputs, validation messages
65
+ 3. Verify field-by-field alignment:
66
+ - Every domain attribute should map to a schema column (or have a documented reason for omission).
67
+ - Every schema column exposed externally should appear in an API contract field.
68
+ - Every API response field displayed to users should appear in UX spec.
69
+ - Types should be compatible (e.g., domain `Money` value object maps to `DECIMAL(10,2)` in schema, `string` formatted as currency in API, formatted display in UX).
70
+
71
+ **What findings look like:**
72
+ - "Domain model `Product.price` is a `Money` value object (amount + currency), but schema has only `price_cents INTEGER` — currency is missing."
73
+ - "API returns `created_at` as ISO 8601 string but UX spec references `createdAt` as a Unix timestamp."
74
+
75
+ ### 4. Interface Contract Matching
76
+
77
+ Verify that component interfaces defined in architecture match their implementations in API contracts and database schema.
78
+
79
+ **Process:**
80
+ 1. Extract every component interface from the architecture document (method signatures, event subscriptions, data flows).
81
+ 2. For each interface, find its concrete definition in API contracts or internal service contracts.
82
+ 3. Verify:
83
+ - All interface methods have corresponding endpoints or functions.
84
+ - Parameter names and types match.
85
+ - Return types match.
86
+ - Error cases defined at the interface level are handled at the implementation level.
87
+
88
+ **What findings look like:**
89
+ - "Architecture defines `NotificationService.sendBatch(notifications[])` but API contracts only define `POST /notifications` for single notifications."
90
+ - "Architecture component `PaymentGateway` has an `onPaymentFailed` event handler, but no component publishes `PaymentFailed` events."
91
+
92
+ ### 5. Data Flow Completeness
93
+
94
+ Verify that data flows described in architecture are implementable with the defined APIs and schemas.
95
+
96
+ **Process:**
97
+ 1. For each data flow diagram in architecture, walk through step by step.
98
+ 2. At each step, verify:
99
+ - The source component has an API or interface that provides the data.
100
+ - The target component has an API or interface that accepts the data.
101
+ - The data shape at the source matches the data shape at the target.
102
+ - Any transformation between source and target is documented.
103
+ 3. Check for orphaned components — components that appear in data flows but have no API endpoints or database tables.
104
+
105
+ **What findings look like:**
106
+ - "Data flow shows `OrderService -> InventoryService: reserve items`, but InventoryService API has no reservation endpoint."
107
+ - "Data flow shows `AnalyticsCollector` receiving events from `UserService`, but the architecture has no event bus or pub/sub mechanism defined."
108
+
109
+ ### 6. Constraint Propagation
110
+
111
+ ADR constraints should be respected in all downstream artifacts.
112
+
113
+ **Process:**
114
+ 1. Extract all constraints from ADRs (technology choices, architectural patterns, non-functional requirements).
115
+ 2. For each constraint, verify it is reflected in relevant downstream artifacts:
116
+ - Technology choice ADRs should align with architecture component technology annotations.
117
+ - Pattern ADRs (e.g., "use event sourcing for Order aggregate") should be reflected in schema design and API contracts.
118
+ - NFR ADRs should have corresponding test criteria in testing strategy.
119
+
120
+ **What findings look like:**
121
+ - "ADR-007 mandates PostgreSQL, but database schema uses MongoDB-style document references."
122
+ - "ADR-012 requires CQRS for order processing, but architecture shows a single read/write path."
123
+
124
+ ## How to Structure the Audit
125
+
126
+ ### Pass 1: Build an Entity Registry
127
+
128
+ Create a table of every named concept with its appearance in each artifact:
129
+
130
+ | Concept | Domain Model | ADRs | Architecture | Schema | API | UX | Tasks |
131
+ |---------|-------------|------|-------------|--------|-----|-----|-------|
132
+ | User | `User` entity | — | `UserService` | `users` table | `/users` resource | User Profile screen | Task #12-#15 |
133
+ | Order | `Order` aggregate | ADR-012 CQRS | `OrderService` | `orders` table | `/orders` resource | Order History screen | Task #20-#28 |
134
+
135
+ Flag any row with missing cells or naming inconsistencies.
136
+
137
+ ### Pass 2: Data Shape Tracing
138
+
139
+ For each entity in the registry, trace its shape layer by layer. Build a field-level comparison table:
140
+
141
+ | Field | Domain | Schema | API | UX |
142
+ |-------|--------|--------|-----|-----|
143
+ | id | UUID | `id UUID PK` | `id: string (uuid)` | hidden |
144
+ | email | Email (value object) | `email VARCHAR(255) UNIQUE` | `email: string (email)` | text input, validated |
145
+ | role | UserRole enum | `role VARCHAR(20) CHECK(...)` | `role: "admin" | "user"` | dropdown |
146
+
147
+ Flag mismatches in type, optionality, naming, or format.
148
+
149
+ ### Pass 3: Flow Walking
150
+
151
+ Walk each data flow end-to-end, verifying every step has concrete API/schema support.
152
+
153
+ ### Pass 4: Constraint Verification
154
+
155
+ Cross-reference every ADR constraint against downstream artifacts.
156
+
157
+ ## Output Format
158
+
159
+ Findings should be structured as:
160
+
161
+ ```
162
+ ## Finding: [Short Description]
163
+
164
+ **Severity:** Critical | Major | Minor
165
+ **Phases Involved:** [list of phases]
166
+ **Description:** [What the inconsistency is]
167
+ **Evidence:**
168
+ - In [artifact]: [what it says]
169
+ - In [artifact]: [what it says differently]
170
+ **Recommended Fix:** [Which artifact to update and how]
171
+ ```
172
+
173
+ ## Common Patterns Worth Special Attention
174
+
175
+ 1. **Enum drift** — Enum values defined in domain model, schema, API, and UX often diverge. One phase adds a new status value without updating others.
176
+ 2. **Optionality mismatch** — Domain model says a field is required, but API contract makes it optional, or vice versa.
177
+ 3. **Orphaned events** — Domain events defined but never consumed (or consumed but never published).
178
+ 4. **Ghost requirements** — Features appear in UX spec or implementation tasks that trace to no PRD requirement.
179
+ 5. **Format divergence** — Dates, money, identifiers represented differently across layers without documented transformation rules.
180
+ 6. **Soft-delete vs hard-delete** — One phase assumes records are soft-deleted, another assumes they are gone.
181
+ 7. **Pagination assumptions** — API paginates but UX assumes all data is available; or API returns all but architecture assumed streaming.