@libar-dev/architect 1.0.0-pre.3

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 (800) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/LICENSE +25 -0
  3. package/LICENSE-MCP +62 -0
  4. package/README.md +147 -0
  5. package/dist/api/arch-queries.d.ts +95 -0
  6. package/dist/api/arch-queries.d.ts.map +1 -0
  7. package/dist/api/arch-queries.js +310 -0
  8. package/dist/api/arch-queries.js.map +1 -0
  9. package/dist/api/context-assembler.d.ts +124 -0
  10. package/dist/api/context-assembler.d.ts.map +1 -0
  11. package/dist/api/context-assembler.js +472 -0
  12. package/dist/api/context-assembler.js.map +1 -0
  13. package/dist/api/context-formatter.d.ts +26 -0
  14. package/dist/api/context-formatter.d.ts.map +1 -0
  15. package/dist/api/context-formatter.js +183 -0
  16. package/dist/api/context-formatter.js.map +1 -0
  17. package/dist/api/coverage-analyzer.d.ts +38 -0
  18. package/dist/api/coverage-analyzer.d.ts.map +1 -0
  19. package/dist/api/coverage-analyzer.js +117 -0
  20. package/dist/api/coverage-analyzer.js.map +1 -0
  21. package/dist/api/fuzzy-match.d.ts +75 -0
  22. package/dist/api/fuzzy-match.d.ts.map +1 -0
  23. package/dist/api/fuzzy-match.js +150 -0
  24. package/dist/api/fuzzy-match.js.map +1 -0
  25. package/dist/api/handoff-generator.d.ts +45 -0
  26. package/dist/api/handoff-generator.d.ts.map +1 -0
  27. package/dist/api/handoff-generator.js +139 -0
  28. package/dist/api/handoff-generator.js.map +1 -0
  29. package/dist/api/index.d.ts +61 -0
  30. package/dist/api/index.d.ts.map +1 -0
  31. package/dist/api/index.js +54 -0
  32. package/dist/api/index.js.map +1 -0
  33. package/dist/api/pattern-helpers.d.ts +51 -0
  34. package/dist/api/pattern-helpers.d.ts.map +1 -0
  35. package/dist/api/pattern-helpers.js +84 -0
  36. package/dist/api/pattern-helpers.js.map +1 -0
  37. package/dist/api/process-state.d.ts +224 -0
  38. package/dist/api/process-state.d.ts.map +1 -0
  39. package/dist/api/process-state.js +308 -0
  40. package/dist/api/process-state.js.map +1 -0
  41. package/dist/api/rules-query.d.ts +60 -0
  42. package/dist/api/rules-query.d.ts.map +1 -0
  43. package/dist/api/rules-query.js +154 -0
  44. package/dist/api/rules-query.js.map +1 -0
  45. package/dist/api/scope-validator.d.ts +56 -0
  46. package/dist/api/scope-validator.d.ts.map +1 -0
  47. package/dist/api/scope-validator.js +293 -0
  48. package/dist/api/scope-validator.js.map +1 -0
  49. package/dist/api/stub-resolver.d.ts +117 -0
  50. package/dist/api/stub-resolver.d.ts.map +1 -0
  51. package/dist/api/stub-resolver.js +154 -0
  52. package/dist/api/stub-resolver.js.map +1 -0
  53. package/dist/api/summarize.d.ts +75 -0
  54. package/dist/api/summarize.d.ts.map +1 -0
  55. package/dist/api/summarize.js +97 -0
  56. package/dist/api/summarize.js.map +1 -0
  57. package/dist/api/types.d.ts +221 -0
  58. package/dist/api/types.d.ts.map +1 -0
  59. package/dist/api/types.js +57 -0
  60. package/dist/api/types.js.map +1 -0
  61. package/dist/cache/file-cache.d.ts +72 -0
  62. package/dist/cache/file-cache.d.ts.map +1 -0
  63. package/dist/cache/file-cache.js +80 -0
  64. package/dist/cache/file-cache.js.map +1 -0
  65. package/dist/cache/index.d.ts +5 -0
  66. package/dist/cache/index.d.ts.map +1 -0
  67. package/dist/cache/index.js +5 -0
  68. package/dist/cache/index.js.map +1 -0
  69. package/dist/cli/cli-schema.d.ts +83 -0
  70. package/dist/cli/cli-schema.d.ts.map +1 -0
  71. package/dist/cli/cli-schema.js +505 -0
  72. package/dist/cli/cli-schema.js.map +1 -0
  73. package/dist/cli/dataset-cache.d.ts +66 -0
  74. package/dist/cli/dataset-cache.d.ts.map +1 -0
  75. package/dist/cli/dataset-cache.js +179 -0
  76. package/dist/cli/dataset-cache.js.map +1 -0
  77. package/dist/cli/error-handler.d.ts +84 -0
  78. package/dist/cli/error-handler.d.ts.map +1 -0
  79. package/dist/cli/error-handler.js +197 -0
  80. package/dist/cli/error-handler.js.map +1 -0
  81. package/dist/cli/generate-docs.d.ts +30 -0
  82. package/dist/cli/generate-docs.d.ts.map +1 -0
  83. package/dist/cli/generate-docs.js +370 -0
  84. package/dist/cli/generate-docs.js.map +1 -0
  85. package/dist/cli/lint-patterns.d.ts +57 -0
  86. package/dist/cli/lint-patterns.d.ts.map +1 -0
  87. package/dist/cli/lint-patterns.js +257 -0
  88. package/dist/cli/lint-patterns.js.map +1 -0
  89. package/dist/cli/lint-process.d.ts +54 -0
  90. package/dist/cli/lint-process.d.ts.map +1 -0
  91. package/dist/cli/lint-process.js +319 -0
  92. package/dist/cli/lint-process.js.map +1 -0
  93. package/dist/cli/lint-steps.d.ts +32 -0
  94. package/dist/cli/lint-steps.d.ts.map +1 -0
  95. package/dist/cli/lint-steps.js +172 -0
  96. package/dist/cli/lint-steps.js.map +1 -0
  97. package/dist/cli/mcp-server.d.ts +22 -0
  98. package/dist/cli/mcp-server.d.ts.map +1 -0
  99. package/dist/cli/mcp-server.js +57 -0
  100. package/dist/cli/mcp-server.js.map +1 -0
  101. package/dist/cli/output-pipeline.d.ts +130 -0
  102. package/dist/cli/output-pipeline.d.ts.map +1 -0
  103. package/dist/cli/output-pipeline.js +234 -0
  104. package/dist/cli/output-pipeline.js.map +1 -0
  105. package/dist/cli/process-api.d.ts +37 -0
  106. package/dist/cli/process-api.d.ts.map +1 -0
  107. package/dist/cli/process-api.js +1550 -0
  108. package/dist/cli/process-api.js.map +1 -0
  109. package/dist/cli/repl.d.ts +38 -0
  110. package/dist/cli/repl.d.ts.map +1 -0
  111. package/dist/cli/repl.js +239 -0
  112. package/dist/cli/repl.js.map +1 -0
  113. package/dist/cli/validate-patterns.d.ts +115 -0
  114. package/dist/cli/validate-patterns.d.ts.map +1 -0
  115. package/dist/cli/validate-patterns.js +707 -0
  116. package/dist/cli/validate-patterns.js.map +1 -0
  117. package/dist/cli/version.d.ts +35 -0
  118. package/dist/cli/version.d.ts.map +1 -0
  119. package/dist/cli/version.js +64 -0
  120. package/dist/cli/version.js.map +1 -0
  121. package/dist/config/config-loader.d.ts +167 -0
  122. package/dist/config/config-loader.d.ts.map +1 -0
  123. package/dist/config/config-loader.js +294 -0
  124. package/dist/config/config-loader.js.map +1 -0
  125. package/dist/config/defaults.d.ts +92 -0
  126. package/dist/config/defaults.d.ts.map +1 -0
  127. package/dist/config/defaults.js +103 -0
  128. package/dist/config/defaults.js.map +1 -0
  129. package/dist/config/define-config.d.ts +37 -0
  130. package/dist/config/define-config.d.ts.map +1 -0
  131. package/dist/config/define-config.js +38 -0
  132. package/dist/config/define-config.js.map +1 -0
  133. package/dist/config/factory.d.ts +79 -0
  134. package/dist/config/factory.d.ts.map +1 -0
  135. package/dist/config/factory.js +116 -0
  136. package/dist/config/factory.js.map +1 -0
  137. package/dist/config/index.d.ts +45 -0
  138. package/dist/config/index.d.ts.map +1 -0
  139. package/dist/config/index.js +48 -0
  140. package/dist/config/index.js.map +1 -0
  141. package/dist/config/merge-sources.d.ts +47 -0
  142. package/dist/config/merge-sources.d.ts.map +1 -0
  143. package/dist/config/merge-sources.js +61 -0
  144. package/dist/config/merge-sources.js.map +1 -0
  145. package/dist/config/presets.d.ts +115 -0
  146. package/dist/config/presets.d.ts.map +1 -0
  147. package/dist/config/presets.js +119 -0
  148. package/dist/config/presets.js.map +1 -0
  149. package/dist/config/project-config-schema.d.ts +192 -0
  150. package/dist/config/project-config-schema.d.ts.map +1 -0
  151. package/dist/config/project-config-schema.js +231 -0
  152. package/dist/config/project-config-schema.js.map +1 -0
  153. package/dist/config/project-config.d.ts +229 -0
  154. package/dist/config/project-config.d.ts.map +1 -0
  155. package/dist/config/project-config.js +37 -0
  156. package/dist/config/project-config.js.map +1 -0
  157. package/dist/config/regex-builders.d.ts +49 -0
  158. package/dist/config/regex-builders.d.ts.map +1 -0
  159. package/dist/config/regex-builders.js +85 -0
  160. package/dist/config/regex-builders.js.map +1 -0
  161. package/dist/config/resolve-config.d.ts +65 -0
  162. package/dist/config/resolve-config.d.ts.map +1 -0
  163. package/dist/config/resolve-config.js +150 -0
  164. package/dist/config/resolve-config.js.map +1 -0
  165. package/dist/config/types.d.ts +81 -0
  166. package/dist/config/types.d.ts.map +1 -0
  167. package/dist/config/types.js +22 -0
  168. package/dist/config/types.js.map +1 -0
  169. package/dist/config/workflow-loader.d.ts +90 -0
  170. package/dist/config/workflow-loader.d.ts.map +1 -0
  171. package/dist/config/workflow-loader.js +167 -0
  172. package/dist/config/workflow-loader.js.map +1 -0
  173. package/dist/extractor/doc-extractor.d.ts +233 -0
  174. package/dist/extractor/doc-extractor.d.ts.map +1 -0
  175. package/dist/extractor/doc-extractor.js +481 -0
  176. package/dist/extractor/doc-extractor.js.map +1 -0
  177. package/dist/extractor/dual-source-extractor.d.ts +161 -0
  178. package/dist/extractor/dual-source-extractor.d.ts.map +1 -0
  179. package/dist/extractor/dual-source-extractor.js +407 -0
  180. package/dist/extractor/dual-source-extractor.js.map +1 -0
  181. package/dist/extractor/gherkin-extractor.d.ts +170 -0
  182. package/dist/extractor/gherkin-extractor.d.ts.map +1 -0
  183. package/dist/extractor/gherkin-extractor.js +543 -0
  184. package/dist/extractor/gherkin-extractor.js.map +1 -0
  185. package/dist/extractor/index.d.ts +7 -0
  186. package/dist/extractor/index.d.ts.map +1 -0
  187. package/dist/extractor/index.js +11 -0
  188. package/dist/extractor/index.js.map +1 -0
  189. package/dist/extractor/layer-inference.d.ts +66 -0
  190. package/dist/extractor/layer-inference.d.ts.map +1 -0
  191. package/dist/extractor/layer-inference.js +93 -0
  192. package/dist/extractor/layer-inference.js.map +1 -0
  193. package/dist/extractor/shape-extractor.d.ts +79 -0
  194. package/dist/extractor/shape-extractor.d.ts.map +1 -0
  195. package/dist/extractor/shape-extractor.js +966 -0
  196. package/dist/extractor/shape-extractor.js.map +1 -0
  197. package/dist/generators/built-in/cli-recipe-generator.d.ts +30 -0
  198. package/dist/generators/built-in/cli-recipe-generator.d.ts.map +1 -0
  199. package/dist/generators/built-in/cli-recipe-generator.js +155 -0
  200. package/dist/generators/built-in/cli-recipe-generator.js.map +1 -0
  201. package/dist/generators/built-in/codec-generators.d.ts +29 -0
  202. package/dist/generators/built-in/codec-generators.d.ts.map +1 -0
  203. package/dist/generators/built-in/codec-generators.js +195 -0
  204. package/dist/generators/built-in/codec-generators.js.map +1 -0
  205. package/dist/generators/built-in/decision-doc-generator.d.ts +204 -0
  206. package/dist/generators/built-in/decision-doc-generator.d.ts.map +1 -0
  207. package/dist/generators/built-in/decision-doc-generator.js +654 -0
  208. package/dist/generators/built-in/decision-doc-generator.js.map +1 -0
  209. package/dist/generators/built-in/design-review-generator.d.ts +26 -0
  210. package/dist/generators/built-in/design-review-generator.d.ts.map +1 -0
  211. package/dist/generators/built-in/design-review-generator.js +94 -0
  212. package/dist/generators/built-in/design-review-generator.js.map +1 -0
  213. package/dist/generators/built-in/index.d.ts +22 -0
  214. package/dist/generators/built-in/index.d.ts.map +1 -0
  215. package/dist/generators/built-in/index.js +23 -0
  216. package/dist/generators/built-in/index.js.map +1 -0
  217. package/dist/generators/built-in/process-api-reference-generator.d.ts +18 -0
  218. package/dist/generators/built-in/process-api-reference-generator.d.ts.map +1 -0
  219. package/dist/generators/built-in/process-api-reference-generator.js +85 -0
  220. package/dist/generators/built-in/process-api-reference-generator.js.map +1 -0
  221. package/dist/generators/built-in/reference-generators.d.ts +51 -0
  222. package/dist/generators/built-in/reference-generators.d.ts.map +1 -0
  223. package/dist/generators/built-in/reference-generators.js +320 -0
  224. package/dist/generators/built-in/reference-generators.js.map +1 -0
  225. package/dist/generators/codec-based.d.ts +63 -0
  226. package/dist/generators/codec-based.d.ts.map +1 -0
  227. package/dist/generators/codec-based.js +88 -0
  228. package/dist/generators/codec-based.js.map +1 -0
  229. package/dist/generators/content-deduplicator.d.ts +114 -0
  230. package/dist/generators/content-deduplicator.d.ts.map +1 -0
  231. package/dist/generators/content-deduplicator.js +356 -0
  232. package/dist/generators/content-deduplicator.js.map +1 -0
  233. package/dist/generators/index.d.ts +50 -0
  234. package/dist/generators/index.d.ts.map +1 -0
  235. package/dist/generators/index.js +54 -0
  236. package/dist/generators/index.js.map +1 -0
  237. package/dist/generators/orchestrator.d.ts +265 -0
  238. package/dist/generators/orchestrator.d.ts.map +1 -0
  239. package/dist/generators/orchestrator.js +570 -0
  240. package/dist/generators/orchestrator.js.map +1 -0
  241. package/dist/generators/pipeline/build-pipeline.d.ts +131 -0
  242. package/dist/generators/pipeline/build-pipeline.d.ts.map +1 -0
  243. package/dist/generators/pipeline/build-pipeline.js +248 -0
  244. package/dist/generators/pipeline/build-pipeline.js.map +1 -0
  245. package/dist/generators/pipeline/context-inference.d.ts +55 -0
  246. package/dist/generators/pipeline/context-inference.d.ts.map +1 -0
  247. package/dist/generators/pipeline/context-inference.js +76 -0
  248. package/dist/generators/pipeline/context-inference.js.map +1 -0
  249. package/dist/generators/pipeline/index.d.ts +27 -0
  250. package/dist/generators/pipeline/index.d.ts.map +1 -0
  251. package/dist/generators/pipeline/index.js +34 -0
  252. package/dist/generators/pipeline/index.js.map +1 -0
  253. package/dist/generators/pipeline/merge-patterns.d.ts +33 -0
  254. package/dist/generators/pipeline/merge-patterns.d.ts.map +1 -0
  255. package/dist/generators/pipeline/merge-patterns.js +50 -0
  256. package/dist/generators/pipeline/merge-patterns.js.map +1 -0
  257. package/dist/generators/pipeline/relationship-resolver.d.ts +47 -0
  258. package/dist/generators/pipeline/relationship-resolver.d.ts.map +1 -0
  259. package/dist/generators/pipeline/relationship-resolver.js +132 -0
  260. package/dist/generators/pipeline/relationship-resolver.js.map +1 -0
  261. package/dist/generators/pipeline/sequence-utils.d.ts +49 -0
  262. package/dist/generators/pipeline/sequence-utils.d.ts.map +1 -0
  263. package/dist/generators/pipeline/sequence-utils.js +235 -0
  264. package/dist/generators/pipeline/sequence-utils.js.map +1 -0
  265. package/dist/generators/pipeline/transform-dataset.d.ts +82 -0
  266. package/dist/generators/pipeline/transform-dataset.d.ts.map +1 -0
  267. package/dist/generators/pipeline/transform-dataset.js +355 -0
  268. package/dist/generators/pipeline/transform-dataset.js.map +1 -0
  269. package/dist/generators/pipeline/transform-types.d.ts +96 -0
  270. package/dist/generators/pipeline/transform-types.d.ts.map +1 -0
  271. package/dist/generators/pipeline/transform-types.js +18 -0
  272. package/dist/generators/pipeline/transform-types.js.map +1 -0
  273. package/dist/generators/registry.d.ts +64 -0
  274. package/dist/generators/registry.d.ts.map +1 -0
  275. package/dist/generators/registry.js +77 -0
  276. package/dist/generators/registry.js.map +1 -0
  277. package/dist/generators/source-mapper.d.ts +143 -0
  278. package/dist/generators/source-mapper.d.ts.map +1 -0
  279. package/dist/generators/source-mapper.js +602 -0
  280. package/dist/generators/source-mapper.js.map +1 -0
  281. package/dist/generators/source-mapping-validator.d.ts +118 -0
  282. package/dist/generators/source-mapping-validator.d.ts.map +1 -0
  283. package/dist/generators/source-mapping-validator.js +334 -0
  284. package/dist/generators/source-mapping-validator.js.map +1 -0
  285. package/dist/generators/types.d.ts +104 -0
  286. package/dist/generators/types.d.ts.map +1 -0
  287. package/dist/generators/types.js +5 -0
  288. package/dist/generators/types.js.map +1 -0
  289. package/dist/generators/warning-collector.d.ts +144 -0
  290. package/dist/generators/warning-collector.d.ts.map +1 -0
  291. package/dist/generators/warning-collector.js +166 -0
  292. package/dist/generators/warning-collector.js.map +1 -0
  293. package/dist/git/branch-diff.d.ts +44 -0
  294. package/dist/git/branch-diff.d.ts.map +1 -0
  295. package/dist/git/branch-diff.js +57 -0
  296. package/dist/git/branch-diff.js.map +1 -0
  297. package/dist/git/helpers.d.ts +46 -0
  298. package/dist/git/helpers.d.ts.map +1 -0
  299. package/dist/git/helpers.js +67 -0
  300. package/dist/git/helpers.js.map +1 -0
  301. package/dist/git/index.d.ts +18 -0
  302. package/dist/git/index.d.ts.map +1 -0
  303. package/dist/git/index.js +18 -0
  304. package/dist/git/index.js.map +1 -0
  305. package/dist/git/name-status.d.ts +32 -0
  306. package/dist/git/name-status.d.ts.map +1 -0
  307. package/dist/git/name-status.js +66 -0
  308. package/dist/git/name-status.js.map +1 -0
  309. package/dist/index.d.ts +107 -0
  310. package/dist/index.d.ts.map +1 -0
  311. package/dist/index.js +122 -0
  312. package/dist/index.js.map +1 -0
  313. package/dist/lint/engine.d.ts +113 -0
  314. package/dist/lint/engine.d.ts.map +1 -0
  315. package/dist/lint/engine.js +228 -0
  316. package/dist/lint/engine.js.map +1 -0
  317. package/dist/lint/index.d.ts +26 -0
  318. package/dist/lint/index.d.ts.map +1 -0
  319. package/dist/lint/index.js +24 -0
  320. package/dist/lint/index.js.map +1 -0
  321. package/dist/lint/process-guard/decider.d.ts +166 -0
  322. package/dist/lint/process-guard/decider.d.ts.map +1 -0
  323. package/dist/lint/process-guard/decider.js +412 -0
  324. package/dist/lint/process-guard/decider.js.map +1 -0
  325. package/dist/lint/process-guard/derive-state.d.ts +96 -0
  326. package/dist/lint/process-guard/derive-state.d.ts.map +1 -0
  327. package/dist/lint/process-guard/derive-state.js +368 -0
  328. package/dist/lint/process-guard/derive-state.js.map +1 -0
  329. package/dist/lint/process-guard/detect-changes.d.ts +109 -0
  330. package/dist/lint/process-guard/detect-changes.d.ts.map +1 -0
  331. package/dist/lint/process-guard/detect-changes.js +487 -0
  332. package/dist/lint/process-guard/detect-changes.js.map +1 -0
  333. package/dist/lint/process-guard/index.d.ts +35 -0
  334. package/dist/lint/process-guard/index.d.ts.map +1 -0
  335. package/dist/lint/process-guard/index.js +39 -0
  336. package/dist/lint/process-guard/index.js.map +1 -0
  337. package/dist/lint/process-guard/types.d.ts +255 -0
  338. package/dist/lint/process-guard/types.d.ts.map +1 -0
  339. package/dist/lint/process-guard/types.js +31 -0
  340. package/dist/lint/process-guard/types.js.map +1 -0
  341. package/dist/lint/rules.d.ts +147 -0
  342. package/dist/lint/rules.d.ts.map +1 -0
  343. package/dist/lint/rules.js +289 -0
  344. package/dist/lint/rules.js.map +1 -0
  345. package/dist/lint/steps/cross-checks.d.ts +66 -0
  346. package/dist/lint/steps/cross-checks.d.ts.map +1 -0
  347. package/dist/lint/steps/cross-checks.js +290 -0
  348. package/dist/lint/steps/cross-checks.js.map +1 -0
  349. package/dist/lint/steps/feature-checks.d.ts +78 -0
  350. package/dist/lint/steps/feature-checks.d.ts.map +1 -0
  351. package/dist/lint/steps/feature-checks.js +279 -0
  352. package/dist/lint/steps/feature-checks.js.map +1 -0
  353. package/dist/lint/steps/index.d.ts +22 -0
  354. package/dist/lint/steps/index.d.ts.map +1 -0
  355. package/dist/lint/steps/index.js +26 -0
  356. package/dist/lint/steps/index.js.map +1 -0
  357. package/dist/lint/steps/pair-resolver.d.ts +29 -0
  358. package/dist/lint/steps/pair-resolver.d.ts.map +1 -0
  359. package/dist/lint/steps/pair-resolver.js +76 -0
  360. package/dist/lint/steps/pair-resolver.js.map +1 -0
  361. package/dist/lint/steps/runner.d.ts +28 -0
  362. package/dist/lint/steps/runner.d.ts.map +1 -0
  363. package/dist/lint/steps/runner.js +143 -0
  364. package/dist/lint/steps/runner.js.map +1 -0
  365. package/dist/lint/steps/step-checks.d.ts +41 -0
  366. package/dist/lint/steps/step-checks.d.ts.map +1 -0
  367. package/dist/lint/steps/step-checks.js +164 -0
  368. package/dist/lint/steps/step-checks.js.map +1 -0
  369. package/dist/lint/steps/types.d.ts +95 -0
  370. package/dist/lint/steps/types.d.ts.map +1 -0
  371. package/dist/lint/steps/types.js +79 -0
  372. package/dist/lint/steps/types.js.map +1 -0
  373. package/dist/lint/steps/utils.d.ts +22 -0
  374. package/dist/lint/steps/utils.d.ts.map +1 -0
  375. package/dist/lint/steps/utils.js +57 -0
  376. package/dist/lint/steps/utils.js.map +1 -0
  377. package/dist/mcp/file-watcher.d.ts +24 -0
  378. package/dist/mcp/file-watcher.d.ts.map +1 -0
  379. package/dist/mcp/file-watcher.js +75 -0
  380. package/dist/mcp/file-watcher.js.map +1 -0
  381. package/dist/mcp/index.d.ts +19 -0
  382. package/dist/mcp/index.d.ts.map +1 -0
  383. package/dist/mcp/index.js +21 -0
  384. package/dist/mcp/index.js.map +1 -0
  385. package/dist/mcp/pipeline-session.d.ts +33 -0
  386. package/dist/mcp/pipeline-session.d.ts.map +1 -0
  387. package/dist/mcp/pipeline-session.js +149 -0
  388. package/dist/mcp/pipeline-session.js.map +1 -0
  389. package/dist/mcp/server.d.ts +28 -0
  390. package/dist/mcp/server.d.ts.map +1 -0
  391. package/dist/mcp/server.js +197 -0
  392. package/dist/mcp/server.js.map +1 -0
  393. package/dist/mcp/tool-registry.d.ts +4 -0
  394. package/dist/mcp/tool-registry.d.ts.map +1 -0
  395. package/dist/mcp/tool-registry.js +525 -0
  396. package/dist/mcp/tool-registry.js.map +1 -0
  397. package/dist/renderable/codecs/adr.d.ts +4730 -0
  398. package/dist/renderable/codecs/adr.d.ts.map +1 -0
  399. package/dist/renderable/codecs/adr.js +590 -0
  400. package/dist/renderable/codecs/adr.js.map +1 -0
  401. package/dist/renderable/codecs/architecture.d.ts +4760 -0
  402. package/dist/renderable/codecs/architecture.d.ts.map +1 -0
  403. package/dist/renderable/codecs/architecture.js +524 -0
  404. package/dist/renderable/codecs/architecture.js.map +1 -0
  405. package/dist/renderable/codecs/business-rules.d.ts +4777 -0
  406. package/dist/renderable/codecs/business-rules.d.ts.map +1 -0
  407. package/dist/renderable/codecs/business-rules.js +648 -0
  408. package/dist/renderable/codecs/business-rules.js.map +1 -0
  409. package/dist/renderable/codecs/claude-module.d.ts +4710 -0
  410. package/dist/renderable/codecs/claude-module.d.ts.map +1 -0
  411. package/dist/renderable/codecs/claude-module.js +214 -0
  412. package/dist/renderable/codecs/claude-module.js.map +1 -0
  413. package/dist/renderable/codecs/composite.d.ts +84 -0
  414. package/dist/renderable/codecs/composite.d.ts.map +1 -0
  415. package/dist/renderable/codecs/composite.js +124 -0
  416. package/dist/renderable/codecs/composite.js.map +1 -0
  417. package/dist/renderable/codecs/convention-extractor.d.ts +105 -0
  418. package/dist/renderable/codecs/convention-extractor.d.ts.map +1 -0
  419. package/dist/renderable/codecs/convention-extractor.js +353 -0
  420. package/dist/renderable/codecs/convention-extractor.js.map +1 -0
  421. package/dist/renderable/codecs/decision-doc.d.ts +308 -0
  422. package/dist/renderable/codecs/decision-doc.d.ts.map +1 -0
  423. package/dist/renderable/codecs/decision-doc.js +485 -0
  424. package/dist/renderable/codecs/decision-doc.js.map +1 -0
  425. package/dist/renderable/codecs/design-review.d.ts +55 -0
  426. package/dist/renderable/codecs/design-review.d.ts.map +1 -0
  427. package/dist/renderable/codecs/design-review.js +532 -0
  428. package/dist/renderable/codecs/design-review.js.map +1 -0
  429. package/dist/renderable/codecs/diagram-utils.d.ts +62 -0
  430. package/dist/renderable/codecs/diagram-utils.d.ts.map +1 -0
  431. package/dist/renderable/codecs/diagram-utils.js +70 -0
  432. package/dist/renderable/codecs/diagram-utils.js.map +1 -0
  433. package/dist/renderable/codecs/helpers.d.ts +553 -0
  434. package/dist/renderable/codecs/helpers.d.ts.map +1 -0
  435. package/dist/renderable/codecs/helpers.js +913 -0
  436. package/dist/renderable/codecs/helpers.js.map +1 -0
  437. package/dist/renderable/codecs/index-codec.d.ts +4714 -0
  438. package/dist/renderable/codecs/index-codec.d.ts.map +1 -0
  439. package/dist/renderable/codecs/index-codec.js +250 -0
  440. package/dist/renderable/codecs/index-codec.js.map +1 -0
  441. package/dist/renderable/codecs/index.d.ts +46 -0
  442. package/dist/renderable/codecs/index.d.ts.map +1 -0
  443. package/dist/renderable/codecs/index.js +70 -0
  444. package/dist/renderable/codecs/index.js.map +1 -0
  445. package/dist/renderable/codecs/patterns.d.ts +4757 -0
  446. package/dist/renderable/codecs/patterns.d.ts.map +1 -0
  447. package/dist/renderable/codecs/patterns.js +462 -0
  448. package/dist/renderable/codecs/patterns.js.map +1 -0
  449. package/dist/renderable/codecs/planning.d.ts +14055 -0
  450. package/dist/renderable/codecs/planning.d.ts.map +1 -0
  451. package/dist/renderable/codecs/planning.js +449 -0
  452. package/dist/renderable/codecs/planning.js.map +1 -0
  453. package/dist/renderable/codecs/pr-changes.d.ts +4742 -0
  454. package/dist/renderable/codecs/pr-changes.d.ts.map +1 -0
  455. package/dist/renderable/codecs/pr-changes.js +425 -0
  456. package/dist/renderable/codecs/pr-changes.js.map +1 -0
  457. package/dist/renderable/codecs/reference.d.ts +215 -0
  458. package/dist/renderable/codecs/reference.d.ts.map +1 -0
  459. package/dist/renderable/codecs/reference.js +1578 -0
  460. package/dist/renderable/codecs/reference.js.map +1 -0
  461. package/dist/renderable/codecs/reporting.d.ts +14026 -0
  462. package/dist/renderable/codecs/reporting.d.ts.map +1 -0
  463. package/dist/renderable/codecs/reporting.js +365 -0
  464. package/dist/renderable/codecs/reporting.js.map +1 -0
  465. package/dist/renderable/codecs/requirements.d.ts +4743 -0
  466. package/dist/renderable/codecs/requirements.d.ts.map +1 -0
  467. package/dist/renderable/codecs/requirements.js +428 -0
  468. package/dist/renderable/codecs/requirements.js.map +1 -0
  469. package/dist/renderable/codecs/session.d.ts +9410 -0
  470. package/dist/renderable/codecs/session.d.ts.map +1 -0
  471. package/dist/renderable/codecs/session.js +848 -0
  472. package/dist/renderable/codecs/session.js.map +1 -0
  473. package/dist/renderable/codecs/shape-matcher.d.ts +54 -0
  474. package/dist/renderable/codecs/shape-matcher.d.ts.map +1 -0
  475. package/dist/renderable/codecs/shape-matcher.js +106 -0
  476. package/dist/renderable/codecs/shape-matcher.js.map +1 -0
  477. package/dist/renderable/codecs/shared-schema.d.ts +44 -0
  478. package/dist/renderable/codecs/shared-schema.d.ts.map +1 -0
  479. package/dist/renderable/codecs/shared-schema.js +43 -0
  480. package/dist/renderable/codecs/shared-schema.js.map +1 -0
  481. package/dist/renderable/codecs/taxonomy.d.ts +4733 -0
  482. package/dist/renderable/codecs/taxonomy.d.ts.map +1 -0
  483. package/dist/renderable/codecs/taxonomy.js +570 -0
  484. package/dist/renderable/codecs/taxonomy.js.map +1 -0
  485. package/dist/renderable/codecs/timeline.d.ts +14094 -0
  486. package/dist/renderable/codecs/timeline.d.ts.map +1 -0
  487. package/dist/renderable/codecs/timeline.js +906 -0
  488. package/dist/renderable/codecs/timeline.js.map +1 -0
  489. package/dist/renderable/codecs/types/base.d.ts +81 -0
  490. package/dist/renderable/codecs/types/base.d.ts.map +1 -0
  491. package/dist/renderable/codecs/types/base.js +56 -0
  492. package/dist/renderable/codecs/types/base.js.map +1 -0
  493. package/dist/renderable/codecs/types/index.d.ts +5 -0
  494. package/dist/renderable/codecs/types/index.d.ts.map +1 -0
  495. package/dist/renderable/codecs/types/index.js +5 -0
  496. package/dist/renderable/codecs/types/index.js.map +1 -0
  497. package/dist/renderable/codecs/validation-rules.d.ts +4773 -0
  498. package/dist/renderable/codecs/validation-rules.d.ts.map +1 -0
  499. package/dist/renderable/codecs/validation-rules.js +537 -0
  500. package/dist/renderable/codecs/validation-rules.js.map +1 -0
  501. package/dist/renderable/generate.d.ts +338 -0
  502. package/dist/renderable/generate.d.ts.map +1 -0
  503. package/dist/renderable/generate.js +437 -0
  504. package/dist/renderable/generate.js.map +1 -0
  505. package/dist/renderable/index.d.ts +36 -0
  506. package/dist/renderable/index.d.ts.map +1 -0
  507. package/dist/renderable/index.js +58 -0
  508. package/dist/renderable/index.js.map +1 -0
  509. package/dist/renderable/load-preamble.d.ts +56 -0
  510. package/dist/renderable/load-preamble.d.ts.map +1 -0
  511. package/dist/renderable/load-preamble.js +298 -0
  512. package/dist/renderable/load-preamble.js.map +1 -0
  513. package/dist/renderable/render.d.ts +61 -0
  514. package/dist/renderable/render.d.ts.map +1 -0
  515. package/dist/renderable/render.js +346 -0
  516. package/dist/renderable/render.js.map +1 -0
  517. package/dist/renderable/schema.d.ts +194 -0
  518. package/dist/renderable/schema.d.ts.map +1 -0
  519. package/dist/renderable/schema.js +197 -0
  520. package/dist/renderable/schema.js.map +1 -0
  521. package/dist/renderable/utils.d.ts +146 -0
  522. package/dist/renderable/utils.d.ts.map +1 -0
  523. package/dist/renderable/utils.js +362 -0
  524. package/dist/renderable/utils.js.map +1 -0
  525. package/dist/scanner/ast-parser.d.ts +75 -0
  526. package/dist/scanner/ast-parser.d.ts.map +1 -0
  527. package/dist/scanner/ast-parser.js +835 -0
  528. package/dist/scanner/ast-parser.js.map +1 -0
  529. package/dist/scanner/gherkin-ast-parser.d.ts +166 -0
  530. package/dist/scanner/gherkin-ast-parser.d.ts.map +1 -0
  531. package/dist/scanner/gherkin-ast-parser.js +507 -0
  532. package/dist/scanner/gherkin-ast-parser.js.map +1 -0
  533. package/dist/scanner/gherkin-scanner.d.ts +106 -0
  534. package/dist/scanner/gherkin-scanner.d.ts.map +1 -0
  535. package/dist/scanner/gherkin-scanner.js +149 -0
  536. package/dist/scanner/gherkin-scanner.js.map +1 -0
  537. package/dist/scanner/index.d.ts +85 -0
  538. package/dist/scanner/index.d.ts.map +1 -0
  539. package/dist/scanner/index.js +102 -0
  540. package/dist/scanner/index.js.map +1 -0
  541. package/dist/scanner/pattern-scanner.d.ts +83 -0
  542. package/dist/scanner/pattern-scanner.d.ts.map +1 -0
  543. package/dist/scanner/pattern-scanner.js +110 -0
  544. package/dist/scanner/pattern-scanner.js.map +1 -0
  545. package/dist/taxonomy/categories.d.ts +47 -0
  546. package/dist/taxonomy/categories.d.ts.map +1 -0
  547. package/dist/taxonomy/categories.js +175 -0
  548. package/dist/taxonomy/categories.js.map +1 -0
  549. package/dist/taxonomy/claude-section-values.d.ts +12 -0
  550. package/dist/taxonomy/claude-section-values.d.ts.map +1 -0
  551. package/dist/taxonomy/claude-section-values.js +17 -0
  552. package/dist/taxonomy/claude-section-values.js.map +1 -0
  553. package/dist/taxonomy/conventions.d.ts +13 -0
  554. package/dist/taxonomy/conventions.d.ts.map +1 -0
  555. package/dist/taxonomy/conventions.js +27 -0
  556. package/dist/taxonomy/conventions.js.map +1 -0
  557. package/dist/taxonomy/deliverable-status.d.ts +99 -0
  558. package/dist/taxonomy/deliverable-status.d.ts.map +1 -0
  559. package/dist/taxonomy/deliverable-status.js +131 -0
  560. package/dist/taxonomy/deliverable-status.js.map +1 -0
  561. package/dist/taxonomy/format-types.d.ts +17 -0
  562. package/dist/taxonomy/format-types.d.ts.map +1 -0
  563. package/dist/taxonomy/format-types.js +23 -0
  564. package/dist/taxonomy/format-types.js.map +1 -0
  565. package/dist/taxonomy/generator-options.d.ts +67 -0
  566. package/dist/taxonomy/generator-options.d.ts.map +1 -0
  567. package/dist/taxonomy/generator-options.js +75 -0
  568. package/dist/taxonomy/generator-options.js.map +1 -0
  569. package/dist/taxonomy/hierarchy-levels.d.ts +23 -0
  570. package/dist/taxonomy/hierarchy-levels.d.ts.map +1 -0
  571. package/dist/taxonomy/hierarchy-levels.js +22 -0
  572. package/dist/taxonomy/hierarchy-levels.js.map +1 -0
  573. package/dist/taxonomy/index.d.ts +35 -0
  574. package/dist/taxonomy/index.d.ts.map +1 -0
  575. package/dist/taxonomy/index.js +56 -0
  576. package/dist/taxonomy/index.js.map +1 -0
  577. package/dist/taxonomy/layer-types.d.ts +22 -0
  578. package/dist/taxonomy/layer-types.d.ts.map +1 -0
  579. package/dist/taxonomy/layer-types.js +28 -0
  580. package/dist/taxonomy/layer-types.js.map +1 -0
  581. package/dist/taxonomy/normalized-status.d.ts +99 -0
  582. package/dist/taxonomy/normalized-status.d.ts.map +1 -0
  583. package/dist/taxonomy/normalized-status.js +113 -0
  584. package/dist/taxonomy/normalized-status.js.map +1 -0
  585. package/dist/taxonomy/registry-builder.d.ts +104 -0
  586. package/dist/taxonomy/registry-builder.d.ts.map +1 -0
  587. package/dist/taxonomy/registry-builder.js +561 -0
  588. package/dist/taxonomy/registry-builder.js.map +1 -0
  589. package/dist/taxonomy/risk-levels.d.ts +16 -0
  590. package/dist/taxonomy/risk-levels.d.ts.map +1 -0
  591. package/dist/taxonomy/risk-levels.js +15 -0
  592. package/dist/taxonomy/risk-levels.js.map +1 -0
  593. package/dist/taxonomy/severity-types.d.ts +6 -0
  594. package/dist/taxonomy/severity-types.d.ts.map +1 -0
  595. package/dist/taxonomy/severity-types.js +5 -0
  596. package/dist/taxonomy/severity-types.js.map +1 -0
  597. package/dist/taxonomy/status-values.d.ts +39 -0
  598. package/dist/taxonomy/status-values.d.ts.map +1 -0
  599. package/dist/taxonomy/status-values.js +42 -0
  600. package/dist/taxonomy/status-values.js.map +1 -0
  601. package/dist/types/branded.d.ts +89 -0
  602. package/dist/types/branded.d.ts.map +1 -0
  603. package/dist/types/branded.js +57 -0
  604. package/dist/types/branded.js.map +1 -0
  605. package/dist/types/errors.d.ts +342 -0
  606. package/dist/types/errors.d.ts.map +1 -0
  607. package/dist/types/errors.js +251 -0
  608. package/dist/types/errors.js.map +1 -0
  609. package/dist/types/index.d.ts +41 -0
  610. package/dist/types/index.d.ts.map +1 -0
  611. package/dist/types/index.js +5 -0
  612. package/dist/types/index.js.map +1 -0
  613. package/dist/types/result.d.ts +78 -0
  614. package/dist/types/result.d.ts.map +1 -0
  615. package/dist/types/result.js +78 -0
  616. package/dist/types/result.js.map +1 -0
  617. package/dist/utils/collection-utils.d.ts +49 -0
  618. package/dist/utils/collection-utils.d.ts.map +1 -0
  619. package/dist/utils/collection-utils.js +58 -0
  620. package/dist/utils/collection-utils.js.map +1 -0
  621. package/dist/utils/id-utils.d.ts +46 -0
  622. package/dist/utils/id-utils.d.ts.map +1 -0
  623. package/dist/utils/id-utils.js +51 -0
  624. package/dist/utils/id-utils.js.map +1 -0
  625. package/dist/utils/index.d.ts +21 -0
  626. package/dist/utils/index.d.ts.map +1 -0
  627. package/dist/utils/index.js +21 -0
  628. package/dist/utils/index.js.map +1 -0
  629. package/dist/utils/string-utils.d.ts +150 -0
  630. package/dist/utils/string-utils.d.ts.map +1 -0
  631. package/dist/utils/string-utils.js +281 -0
  632. package/dist/utils/string-utils.js.map +1 -0
  633. package/dist/validation/anti-patterns.d.ts +134 -0
  634. package/dist/validation/anti-patterns.d.ts.map +1 -0
  635. package/dist/validation/anti-patterns.js +307 -0
  636. package/dist/validation/anti-patterns.js.map +1 -0
  637. package/dist/validation/dod-validator.d.ts +94 -0
  638. package/dist/validation/dod-validator.d.ts.map +1 -0
  639. package/dist/validation/dod-validator.js +198 -0
  640. package/dist/validation/dod-validator.js.map +1 -0
  641. package/dist/validation/fsm/index.d.ts +59 -0
  642. package/dist/validation/fsm/index.d.ts.map +1 -0
  643. package/dist/validation/fsm/index.js +64 -0
  644. package/dist/validation/fsm/index.js.map +1 -0
  645. package/dist/validation/fsm/states.d.ts +93 -0
  646. package/dist/validation/fsm/states.d.ts.map +1 -0
  647. package/dist/validation/fsm/states.js +98 -0
  648. package/dist/validation/fsm/states.js.map +1 -0
  649. package/dist/validation/fsm/transitions.d.ts +100 -0
  650. package/dist/validation/fsm/transitions.d.ts.map +1 -0
  651. package/dist/validation/fsm/transitions.js +122 -0
  652. package/dist/validation/fsm/transitions.js.map +1 -0
  653. package/dist/validation/fsm/validator.d.ts +163 -0
  654. package/dist/validation/fsm/validator.d.ts.map +1 -0
  655. package/dist/validation/fsm/validator.js +205 -0
  656. package/dist/validation/fsm/validator.js.map +1 -0
  657. package/dist/validation/index.d.ts +23 -0
  658. package/dist/validation/index.d.ts.map +1 -0
  659. package/dist/validation/index.js +25 -0
  660. package/dist/validation/index.js.map +1 -0
  661. package/dist/validation/types.d.ts +136 -0
  662. package/dist/validation/types.d.ts.map +1 -0
  663. package/dist/validation/types.js +56 -0
  664. package/dist/validation/types.js.map +1 -0
  665. package/dist/validation-schemas/codec-utils.d.ts +188 -0
  666. package/dist/validation-schemas/codec-utils.d.ts.map +1 -0
  667. package/dist/validation-schemas/codec-utils.js +258 -0
  668. package/dist/validation-schemas/codec-utils.js.map +1 -0
  669. package/dist/validation-schemas/config.d.ts +99 -0
  670. package/dist/validation-schemas/config.d.ts.map +1 -0
  671. package/dist/validation-schemas/config.js +178 -0
  672. package/dist/validation-schemas/config.js.map +1 -0
  673. package/dist/validation-schemas/doc-directive.d.ts +195 -0
  674. package/dist/validation-schemas/doc-directive.d.ts.map +1 -0
  675. package/dist/validation-schemas/doc-directive.js +239 -0
  676. package/dist/validation-schemas/doc-directive.js.map +1 -0
  677. package/dist/validation-schemas/dual-source.d.ts +167 -0
  678. package/dist/validation-schemas/dual-source.d.ts.map +1 -0
  679. package/dist/validation-schemas/dual-source.js +168 -0
  680. package/dist/validation-schemas/dual-source.js.map +1 -0
  681. package/dist/validation-schemas/export-info.d.ts +53 -0
  682. package/dist/validation-schemas/export-info.d.ts.map +1 -0
  683. package/dist/validation-schemas/export-info.js +101 -0
  684. package/dist/validation-schemas/export-info.js.map +1 -0
  685. package/dist/validation-schemas/extracted-pattern.d.ts +351 -0
  686. package/dist/validation-schemas/extracted-pattern.d.ts.map +1 -0
  687. package/dist/validation-schemas/extracted-pattern.js +459 -0
  688. package/dist/validation-schemas/extracted-pattern.js.map +1 -0
  689. package/dist/validation-schemas/extracted-shape.d.ts +200 -0
  690. package/dist/validation-schemas/extracted-shape.d.ts.map +1 -0
  691. package/dist/validation-schemas/extracted-shape.js +182 -0
  692. package/dist/validation-schemas/extracted-shape.js.map +1 -0
  693. package/dist/validation-schemas/feature.d.ts +554 -0
  694. package/dist/validation-schemas/feature.d.ts.map +1 -0
  695. package/dist/validation-schemas/feature.js +262 -0
  696. package/dist/validation-schemas/feature.js.map +1 -0
  697. package/dist/validation-schemas/index.d.ts +15 -0
  698. package/dist/validation-schemas/index.d.ts.map +1 -0
  699. package/dist/validation-schemas/index.js +32 -0
  700. package/dist/validation-schemas/index.js.map +1 -0
  701. package/dist/validation-schemas/lint.d.ts +46 -0
  702. package/dist/validation-schemas/lint.d.ts.map +1 -0
  703. package/dist/validation-schemas/lint.js +45 -0
  704. package/dist/validation-schemas/lint.js.map +1 -0
  705. package/dist/validation-schemas/master-dataset.d.ts +8299 -0
  706. package/dist/validation-schemas/master-dataset.d.ts.map +1 -0
  707. package/dist/validation-schemas/master-dataset.js +275 -0
  708. package/dist/validation-schemas/master-dataset.js.map +1 -0
  709. package/dist/validation-schemas/output-schemas.d.ts +183 -0
  710. package/dist/validation-schemas/output-schemas.d.ts.map +1 -0
  711. package/dist/validation-schemas/output-schemas.js +149 -0
  712. package/dist/validation-schemas/output-schemas.js.map +1 -0
  713. package/dist/validation-schemas/scenario-ref.d.ts +80 -0
  714. package/dist/validation-schemas/scenario-ref.d.ts.map +1 -0
  715. package/dist/validation-schemas/scenario-ref.js +73 -0
  716. package/dist/validation-schemas/scenario-ref.js.map +1 -0
  717. package/dist/validation-schemas/tag-registry.d.ts +210 -0
  718. package/dist/validation-schemas/tag-registry.d.ts.map +1 -0
  719. package/dist/validation-schemas/tag-registry.js +248 -0
  720. package/dist/validation-schemas/tag-registry.js.map +1 -0
  721. package/dist/validation-schemas/workflow-config.d.ts +125 -0
  722. package/dist/validation-schemas/workflow-config.d.ts.map +1 -0
  723. package/dist/validation-schemas/workflow-config.js +138 -0
  724. package/dist/validation-schemas/workflow-config.js.map +1 -0
  725. package/docs/ANNOTATION-GUIDE.md +271 -0
  726. package/docs/ARCHITECTURE.md +1636 -0
  727. package/docs/CONFIGURATION.md +337 -0
  728. package/docs/DOCS-GAP-ANALYSIS.md +811 -0
  729. package/docs/GHERKIN-PATTERNS.md +366 -0
  730. package/docs/INDEX.md +345 -0
  731. package/docs/MCP-SETUP.md +140 -0
  732. package/docs/METHODOLOGY.md +240 -0
  733. package/docs/PROCESS-API.md +65 -0
  734. package/docs/PROCESS-GUARD.md +341 -0
  735. package/docs/SESSION-GUIDES.md +391 -0
  736. package/docs/TAXONOMY.md +106 -0
  737. package/docs/VALIDATION.md +418 -0
  738. package/docs-live/ARCHITECTURE.md +362 -0
  739. package/docs-live/BUSINESS-RULES.md +24 -0
  740. package/docs-live/CHANGELOG-GENERATED.md +375 -0
  741. package/docs-live/DECISIONS.md +78 -0
  742. package/docs-live/INDEX.md +231 -0
  743. package/docs-live/PRODUCT-AREAS.md +255 -0
  744. package/docs-live/TAXONOMY.md +202 -0
  745. package/docs-live/VALIDATION-RULES.md +119 -0
  746. package/docs-live/_claude-md/annotation/annotation-overview.md +26 -0
  747. package/docs-live/_claude-md/annotation/annotation-reference.md +213 -0
  748. package/docs-live/_claude-md/architecture/architecture-codecs.md +160 -0
  749. package/docs-live/_claude-md/architecture/architecture-types.md +32 -0
  750. package/docs-live/_claude-md/architecture/reference-sample.md +162 -0
  751. package/docs-live/_claude-md/authoring/gherkin-authoring-guide.md +245 -0
  752. package/docs-live/_claude-md/configuration/configuration-guide.md +216 -0
  753. package/docs-live/_claude-md/configuration/configuration-overview.md +37 -0
  754. package/docs-live/_claude-md/core-types/core-types-overview.md +20 -0
  755. package/docs-live/_claude-md/data-api/data-api-overview.md +39 -0
  756. package/docs-live/_claude-md/generation/generation-overview.md +30 -0
  757. package/docs-live/_claude-md/process/process-overview.md +127 -0
  758. package/docs-live/_claude-md/validation/process-guard.md +185 -0
  759. package/docs-live/_claude-md/validation/validation-overview.md +37 -0
  760. package/docs-live/_claude-md/validation/validation-tools-guide.md +242 -0
  761. package/docs-live/_claude-md/workflow/session-workflow-guide.md +141 -0
  762. package/docs-live/business-rules/annotation.md +1462 -0
  763. package/docs-live/business-rules/configuration.md +465 -0
  764. package/docs-live/business-rules/core-types.md +531 -0
  765. package/docs-live/business-rules/data-api.md +1403 -0
  766. package/docs-live/business-rules/generation.md +4726 -0
  767. package/docs-live/business-rules/process.md +122 -0
  768. package/docs-live/business-rules/validation.md +998 -0
  769. package/docs-live/decisions/adr-001-taxonomy-canonical-values.md +197 -0
  770. package/docs-live/decisions/adr-002-gherkin-only-testing.md +57 -0
  771. package/docs-live/decisions/adr-003-source-first-pattern-architecture.md +147 -0
  772. package/docs-live/decisions/adr-004-session-workflow-commands.md +137 -0
  773. package/docs-live/decisions/adr-005-codec-based-markdown-rendering.md +150 -0
  774. package/docs-live/decisions/adr-006-single-read-model-architecture.md +136 -0
  775. package/docs-live/decisions/adr-021-doc-generation-proof-of-concept.md +489 -0
  776. package/docs-live/product-areas/ANNOTATION.md +591 -0
  777. package/docs-live/product-areas/CONFIGURATION.md +1048 -0
  778. package/docs-live/product-areas/CORE-TYPES.md +221 -0
  779. package/docs-live/product-areas/DATA-API.md +850 -0
  780. package/docs-live/product-areas/GENERATION.md +1200 -0
  781. package/docs-live/product-areas/PROCESS.md +351 -0
  782. package/docs-live/product-areas/VALIDATION.md +1135 -0
  783. package/docs-live/reference/ANNOTATION-REFERENCE.md +232 -0
  784. package/docs-live/reference/ARCHITECTURE-CODECS.md +675 -0
  785. package/docs-live/reference/ARCHITECTURE-TYPES.md +436 -0
  786. package/docs-live/reference/CONFIGURATION-GUIDE.md +235 -0
  787. package/docs-live/reference/GHERKIN-AUTHORING-GUIDE.md +270 -0
  788. package/docs-live/reference/PROCESS-API-RECIPES.md +476 -0
  789. package/docs-live/reference/PROCESS-API-REFERENCE.md +63 -0
  790. package/docs-live/reference/PROCESS-GUARD-REFERENCE.md +258 -0
  791. package/docs-live/reference/REFERENCE-SAMPLE.md +1135 -0
  792. package/docs-live/reference/SESSION-WORKFLOW-GUIDE.md +384 -0
  793. package/docs-live/reference/VALIDATION-TOOLS-GUIDE.md +263 -0
  794. package/docs-live/taxonomy/categories.md +33 -0
  795. package/docs-live/taxonomy/format-types.md +67 -0
  796. package/docs-live/taxonomy/metadata-tags.md +693 -0
  797. package/docs-live/validation/error-catalog.md +78 -0
  798. package/docs-live/validation/fsm-transitions.md +50 -0
  799. package/docs-live/validation/protection-levels.md +51 -0
  800. package/package.json +233 -0
@@ -0,0 +1,1636 @@
1
+ # Architecture: @libar-dev/architect
2
+
3
+ > **Deprecated:** Architecture documentation is now auto-generated across multiple reference docs: [Architecture Diagram](../docs-live/ARCHITECTURE.md), [Architecture Codecs](../docs-live/reference/ARCHITECTURE-CODECS.md), and [Architecture Types](../docs-live/reference/ARCHITECTURE-TYPES.md). This file is preserved for reference only.
4
+
5
+ > **Code-Driven Documentation Generator with Codec-Based Transformation Pipeline**
6
+
7
+ This document describes the architecture of the `@libar-dev/architect` package, a documentation generator that extracts patterns from TypeScript and Gherkin sources, transforms them through a unified pipeline, and renders them as Markdown via typed codecs.
8
+
9
+ ---
10
+
11
+ ## Table of Contents
12
+
13
+ 1. [Executive Summary](#executive-summary)
14
+ 2. [Configuration Architecture](#configuration-architecture)
15
+ 3. [Four-Stage Pipeline](#four-stage-pipeline)
16
+ 4. [Unified Transformation Architecture](#unified-transformation-architecture)
17
+ 5. [Codec Architecture](#codec-architecture)
18
+ 6. [Available Codecs](#available-codecs)
19
+ 7. [Progressive Disclosure](#progressive-disclosure)
20
+ 8. [Source Systems](#source-systems)
21
+ 9. [Key Design Patterns](#key-design-patterns)
22
+ 10. [Data Flow Diagrams](#data-flow-diagrams)
23
+ 11. [Workflow Integration](#workflow-integration)
24
+ 12. [Programmatic Usage](#programmatic-usage)
25
+ 13. [Extending the System](#extending-the-system)
26
+ 14. [Quick Reference](#quick-reference)
27
+
28
+ ---
29
+
30
+ ## Executive Summary
31
+
32
+ ### What This Package Does
33
+
34
+ The `@libar-dev/architect` package generates LLM-optimized documentation from dual sources:
35
+
36
+ - **TypeScript code** with configurable JSDoc annotations (e.g., `@architect-*`)
37
+ - **Gherkin feature files** with matching tags
38
+
39
+ The tag prefix is configurable via presets or custom configuration (see [Configuration Architecture](#configuration-architecture)).
40
+
41
+ ### Key Design Principles
42
+
43
+ | Principle | Description |
44
+ | ------------------------------ | ------------------------------------------------------------------------------------------------ |
45
+ | **Single Source of Truth** | Code + .feature files are authoritative; docs are generated projections |
46
+ | **Single-Pass Transformation** | All derived views computed in O(n) time, not redundant O(n) per section |
47
+ | **Codec-Based Rendering** | Zod 4 codecs transform MasterDataset → RenderableDocument → Markdown |
48
+ | **Schema-First Validation** | Zod schemas define types; runtime validation at all boundaries |
49
+ | **Single Read Model** | MasterDataset is the sole read model for all consumers — codecs, validators, query API (ADR-006) |
50
+ | **Result Monad** | Explicit error handling via `Result<T, E>` instead of exceptions |
51
+
52
+ ### Architecture Overview
53
+
54
+ ```
55
+ Four-Stage Pipeline
56
+
57
+ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ ┌─────────────┐
58
+ │ SCANNER │ → │ EXTRACTOR │ → │ TRANSFORMER │ → │ CODEC │
59
+ │ │ │ │ │ │ │ │
60
+ │ TypeScript │ │ ExtractedP- │ │ MasterDataset │ │ Renderable │
61
+ │ Gherkin │ │ attern[] │ │ (pre-computed │ │ Document │
62
+ │ Files │ │ │ │ views) │ │ → Markdown │
63
+ └─────────────┘ └─────────────┘ └─────────────────┘ └─────────────┘
64
+
65
+ ┌─────────────┐
66
+ │ CONFIG │ defineConfig() → resolveProjectConfig() → ResolvedConfig
67
+ └─────────────┘
68
+ ```
69
+
70
+ ---
71
+
72
+ ## Configuration Architecture
73
+
74
+ The package supports configurable tag prefixes via the Configuration API.
75
+
76
+ ### Entry Point
77
+
78
+ ```typescript
79
+ // architect.config.ts
80
+ import { defineConfig } from '@libar-dev/architect/config';
81
+
82
+ export default defineConfig({
83
+ preset: 'libar-generic',
84
+ sources: { typescript: ['src/**/*.ts'], features: ['specs/*.feature'] },
85
+ output: { directory: 'docs-generated', overwrite: true },
86
+ });
87
+ // Resolved to: ResolvedConfig { instance, project, isDefault, configPath }
88
+ ```
89
+
90
+ ### How Configuration Affects the Pipeline
91
+
92
+ | Stage | Configuration Input | Effect |
93
+ | --------------- | -------------------------------- | ------------------------------------------- |
94
+ | **Scanner** | `regexBuilders.hasFileOptIn()` | Detects files with configured opt-in marker |
95
+ | **Scanner** | `regexBuilders.directivePattern` | Matches tags with configured prefix |
96
+ | **Extractor** | `registry.categories` | Maps tags to category names |
97
+ | **Transformer** | `registry` | Builds MasterDataset with category indexes |
98
+
99
+ ### Configuration Resolution
100
+
101
+ ```
102
+ defineConfig(userConfig)
103
+
104
+
105
+ ┌──────────────────────────────────────────┐
106
+ │ 1. loadProjectConfig() discovers file │
107
+ │ and validates via Zod schema │
108
+ └──────────────────────────────────────────┘
109
+
110
+
111
+ ┌──────────────────────────────────────────┐
112
+ │ 2. resolveProjectConfig() │
113
+ │ - Select preset (or use default) │
114
+ │ - Apply tagPrefix/fileOptInTag/cats │
115
+ │ - Build registry + RegexBuilders │
116
+ │ - Merge stubs into TypeScript sources │
117
+ │ - Apply output defaults │
118
+ │ - Resolve generator overrides │
119
+ └──────────────────────────────────────────┘
120
+
121
+
122
+ ResolvedConfig { instance, project, isDefault, configPath }
123
+ ```
124
+
125
+ ### Key Files
126
+
127
+ | File | Purpose |
128
+ | ------------------------------------- | ---------------------------------------------------------- |
129
+ | `src/config/define-config.ts` | `defineConfig()` identity function for type-safe authoring |
130
+ | `src/config/project-config.ts` | `ArchitectProjectConfig`, `ResolvedConfig` types |
131
+ | `src/config/project-config-schema.ts` | Zod validation schema, `isProjectConfig()` type guard |
132
+ | `src/config/resolve-config.ts` | `resolveProjectConfig()` — defaults + taxonomy resolution |
133
+ | `src/config/merge-sources.ts` | `mergeSourcesForGenerator()` — per-generator sources |
134
+ | `src/config/config-loader.ts` | `loadProjectConfig()` — file discovery + loading |
135
+ | `src/config/factory.ts` | `createArchitect()` — taxonomy factory (internal) |
136
+ | `src/config/presets.ts` | LIBAR_GENERIC_PRESET, DDD_ES_CQRS_PRESET |
137
+
138
+ > **See:** [CONFIGURATION.md](./CONFIGURATION.md) for usage examples and API reference.
139
+
140
+ ---
141
+
142
+ ## Four-Stage Pipeline
143
+
144
+ The pipeline has two entry points. The orchestrator (`src/generators/orchestrator.ts`) runs all 10 steps end-to-end for documentation generation. The shared pipeline factory `buildMasterDataset()` (`src/generators/pipeline/build-pipeline.ts`) runs steps 1-8 and returns a `Result<PipelineResult, PipelineError>` for CLI consumers like process-api and validate-patterns (see [Pipeline Factory](#pipeline-factory-adr-006)).
145
+
146
+ ### Stage 1: Scanner
147
+
148
+ **Purpose:** Discover source files and parse them into structured AST representations.
149
+
150
+ | Scanner Type | Input | Output | Key File |
151
+ | ------------ | ----------------------------- | ---------------------- | -------------------------------- |
152
+ | TypeScript | `.ts` files with `@architect` | `ScannedFile[]` | `src/scanner/pattern-scanner.ts` |
153
+ | Gherkin | `.feature` files | `ScannedGherkinFile[]` | `src/scanner/gherkin-scanner.ts` |
154
+
155
+ **TypeScript Scanning Flow:**
156
+
157
+ ```text
158
+ findFilesToScan() → hasFileOptIn() → parseFileDirectives()
159
+ (glob patterns) (@architect check) (AST extraction)
160
+ ```
161
+
162
+ **Gherkin Scanning Flow:**
163
+
164
+ ```text
165
+ findFeatureFiles() → parseFeatureFile() → extractPatternTags()
166
+ (glob patterns) (Cucumber parser) (tag extraction)
167
+ ```
168
+
169
+ ### Stage 2: Extractor
170
+
171
+ **Purpose:** Convert scanned files into normalized `ExtractedPattern` objects.
172
+
173
+ **Key Files:**
174
+
175
+ - `src/extractor/doc-extractor.ts:extractPatterns()` - Pattern extraction
176
+ - `src/extractor/shape-extractor.ts` - Shape extraction (3 modes)
177
+
178
+ **Shape Extraction Modes:**
179
+
180
+ | Mode | Trigger | Behavior |
181
+ | ----------------------- | ------------------------------------- | ---------------------------------------------- |
182
+ | Explicit names | `@architect-extract-shapes Foo, Bar` | Extracts named declarations only |
183
+ | Wildcard auto-discovery | `@architect-extract-shapes *` | Extracts all exported declarations from file |
184
+ | Declaration-level | `@architect-shape` on individual decl | Extracts tagged declarations (exported or not) |
185
+
186
+ Shapes now include `params`, `returns`, and `throws` fields (parsed from `@param`/`@returns`/`@throws` JSDoc tags on function shapes), and an optional `group` field from the `@architect-shape` tag value. `ExportInfo` includes an optional `signature` field for function/const/class declarations.
187
+
188
+ ```typescript
189
+ interface ExtractedPattern {
190
+ id: string; // pattern-{8-char-hex}
191
+ name: string;
192
+ category: string;
193
+ directive: DocDirective;
194
+ code: string;
195
+ source: SourceInfo; // { file, lines: [start, end] }
196
+
197
+ // Metadata from annotations
198
+ patternName?: string;
199
+ status?: PatternStatus; // roadmap|active|completed|deferred
200
+ phase?: number;
201
+ quarter?: string; // Q1-2025
202
+ release?: string; // v0.1.0 or vNEXT
203
+ useCases?: string[];
204
+ uses?: string[];
205
+ usedBy?: string[];
206
+ dependsOn?: string[];
207
+ enables?: string[];
208
+
209
+ // ... 30+ additional fields
210
+ }
211
+ ```
212
+
213
+ **Dual-Source Merging:**
214
+
215
+ After extraction, patterns from both sources are merged with conflict detection. Merge behavior varies by consumer: `'fatal'` mode (used by process-api and orchestrator) returns an error if the same pattern name exists in both TypeScript and Gherkin; `'concatenate'` mode (used by validate-patterns) falls back to concatenation on conflict, since the validator needs both sources for cross-source matching.
216
+
217
+ ### Pipeline Factory (ADR-006)
218
+
219
+ ADR-006 established the **Single Read Model Architecture**: the MasterDataset is the sole read model for all consumers. The shared pipeline factory extracts the 8-step scan-extract-merge-transform pipeline into a reusable function.
220
+
221
+ **Key File:** `src/generators/pipeline/build-pipeline.ts`
222
+
223
+ **Signature:**
224
+
225
+ ```typescript
226
+ function buildMasterDataset(
227
+ options: PipelineOptions
228
+ ): Promise<Result<PipelineResult, PipelineError>>;
229
+ ```
230
+
231
+ **PipelineOptions:**
232
+
233
+ | Field | Type | Description |
234
+ | ----------------------- | -------------------------------------------- | -------------------------------------------------------- |
235
+ | `input` | `readonly string[]` | TypeScript source glob patterns |
236
+ | `features` | `readonly string[]` | Gherkin feature glob patterns |
237
+ | `baseDir` | `string` | Base directory for glob resolution |
238
+ | `mergeConflictStrategy` | `'fatal' \| 'concatenate'` | How to handle duplicate pattern names across sources |
239
+ | `exclude` | `readonly string[]` (optional) | Glob patterns to exclude from scanning |
240
+ | `workflowPath` | `string` (optional) | Custom workflow config JSON path |
241
+ | `contextInferenceRules` | `readonly ContextInferenceRule[]` (optional) | Custom context inference rules |
242
+ | `includeValidation` | `boolean` (optional) | When false, skip validation pass (default true) |
243
+ | `failOnScanErrors` | `boolean` (optional) | When true, return error on scan failures (default false) |
244
+
245
+ **PipelineResult:**
246
+
247
+ | Field | Type | Description |
248
+ | -------------- | ---------------------------- | ------------------------------------------ |
249
+ | `dataset` | `RuntimeMasterDataset` | The fully-computed read model |
250
+ | `validation` | `ValidationSummary` | Schema validation results for all patterns |
251
+ | `warnings` | `readonly PipelineWarning[]` | Structured non-fatal warnings |
252
+ | `scanMetadata` | `ScanMetadata` | Aggregate scan counts for reporting |
253
+
254
+ **PipelineWarning:**
255
+
256
+ | Field | Type | Description |
257
+ | --------- | --------------------------------------------- | -------------------------- |
258
+ | `type` | `'scan' \| 'extraction' \| 'gherkin-parse'` | Warning category |
259
+ | `message` | `string` | Human-readable description |
260
+ | `count` | `number` (optional) | Number of affected items |
261
+ | `details` | `readonly PipelineWarningDetail[]` (optional) | File-level diagnostics |
262
+
263
+ **ScanMetadata:**
264
+
265
+ | Field | Type | Description |
266
+ | ----------------------- | -------- | ---------------------------------- |
267
+ | `scannedFileCount` | `number` | Total files successfully scanned |
268
+ | `scanErrorCount` | `number` | Files that failed to scan |
269
+ | `skippedDirectiveCount` | `number` | Invalid directives skipped |
270
+ | `gherkinErrorCount` | `number` | Feature files that failed to parse |
271
+
272
+ **PipelineError:**
273
+
274
+ | Field | Type | Description |
275
+ | --------- | -------- | ------------------------------------------------------- |
276
+ | `step` | `string` | Pipeline step that failed (e.g., `'config'`, `'merge'`) |
277
+ | `message` | `string` | Human-readable error description |
278
+
279
+ **Consumer Table:**
280
+
281
+ | Consumer | `mergeConflictStrategy` | Error Handling |
282
+ | -------------------- | -------------------------------- | --------------------------- |
283
+ | `architect` | `'fatal'` | Maps to `process.exit(1)` |
284
+ | `architect-validate` | `'concatenate'` | Falls back to concatenation |
285
+ | `orchestrator` | inline (equivalent to `'fatal'`) | Inline error reporting |
286
+
287
+ **Consumer Layers (ADR-006):**
288
+
289
+ | Layer | May Import | Examples |
290
+ | ---------------------- | ------------------------------------- | ----------------------------------------------------- |
291
+ | Pipeline Orchestration | `scanner/`, `extractor/`, `pipeline/` | `orchestrator.ts`, pipeline setup in CLI entry points |
292
+ | Feature Consumption | `MasterDataset`, `relationshipIndex` | codecs, ProcessStateAPI, validators, query handlers |
293
+
294
+ **Named Anti-Patterns (ADR-006):**
295
+
296
+ | Anti-Pattern | Detection Signal |
297
+ | ----------------------- | -------------------------------------------------------------------------------------------------- |
298
+ | Parallel Pipeline | Feature consumer imports from `scanner/` or `extractor/` |
299
+ | Lossy Local Type | Local interface with subset of `ExtractedPattern` fields + dedicated extraction function |
300
+ | Re-derived Relationship | Building `Map` or `Set` from `pattern.implementsPatterns`, `uses`, or `dependsOn` in consumer code |
301
+
302
+ ### Stage 3: Transformer
303
+
304
+ **Purpose:** Compute all derived views in a single O(n) pass.
305
+
306
+ **Key File:** `src/generators/pipeline/transform-dataset.ts:transformToMasterDataset()`
307
+
308
+ This is the **key innovation** of the unified pipeline. Instead of each section calling `.filter()` repeatedly:
309
+
310
+ ```typescript
311
+ // OLD: Each section filters independently - O(n) per section
312
+ const completed = patterns.filter((p) => normalizeStatus(p.status) === 'completed');
313
+ const active = patterns.filter((p) => normalizeStatus(p.status) === 'active');
314
+ const phase3 = patterns.filter((p) => p.phase === 3);
315
+ ```
316
+
317
+ The transformer computes ALL views upfront:
318
+
319
+ ```typescript
320
+ // NEW: Single-pass transformation - O(n) total
321
+ const masterDataset = transformToMasterDataset({ patterns, tagRegistry, workflow });
322
+
323
+ // Sections access pre-computed views - O(1)
324
+ const completed = masterDataset.byStatus.completed;
325
+ const phase3 = masterDataset.byPhase.find((p) => p.phaseNumber === 3);
326
+ ```
327
+
328
+ ### Stage 4: Codec
329
+
330
+ **Purpose:** Transform MasterDataset into RenderableDocument, then render to markdown.
331
+
332
+ **Key Files:**
333
+
334
+ - `src/renderable/codecs/*.ts` - Document codecs
335
+ - `src/renderable/render.ts` - Markdown renderer
336
+
337
+ ```typescript
338
+ // Codec transforms to universal intermediate format
339
+ const doc = PatternsDocumentCodec.decode(masterDataset);
340
+
341
+ // Renderer produces markdown files
342
+ const files = renderDocumentWithFiles(doc, 'PATTERNS.md');
343
+ ```
344
+
345
+ ---
346
+
347
+ ## Unified Transformation Architecture
348
+
349
+ ### MasterDataset Schema
350
+
351
+ **Key File:** `src/validation-schemas/master-dataset.ts`
352
+
353
+ The `MasterDataset` is the central data structure containing all pre-computed views:
354
+
355
+ ```typescript
356
+ interface MasterDataset {
357
+ // ─── Raw Data ───────────────────────────────────────────────────────────
358
+ patterns: ExtractedPattern[];
359
+ tagRegistry: TagRegistry;
360
+
361
+ // ─── Pre-computed Views (O(1) access) ───────────────────────────────────
362
+ byStatus: {
363
+ completed: ExtractedPattern[]; // status: completed
364
+ active: ExtractedPattern[]; // status: active
365
+ planned: ExtractedPattern[]; // status: roadmap|planned|undefined
366
+ };
367
+
368
+ byPhase: Array<{
369
+ phaseNumber: number;
370
+ phaseName?: string; // From workflow config
371
+ patterns: ExtractedPattern[];
372
+ counts: StatusCounts; // Pre-computed per-phase counts
373
+ }>; // Sorted by phase number ascending
374
+
375
+ byQuarter: Record<string, ExtractedPattern[]>; // e.g., "Q4-2024"
376
+ byCategory: Record<string, ExtractedPattern[]>;
377
+
378
+ bySource: {
379
+ typescript: ExtractedPattern[]; // From .ts files
380
+ gherkin: ExtractedPattern[]; // From .feature files
381
+ roadmap: ExtractedPattern[]; // Has phase metadata
382
+ prd: ExtractedPattern[]; // Has productArea/userRole/businessValue
383
+ };
384
+
385
+ // ─── Aggregate Statistics ───────────────────────────────────────────────
386
+ counts: StatusCounts; // { completed, active, planned, total }
387
+ phaseCount: number;
388
+ categoryCount: number;
389
+
390
+ // ─── Relationship Index (10 fields) ─────────────────────────────────────
391
+ relationshipIndex?: Record<
392
+ string,
393
+ {
394
+ // Forward relationships (from annotations)
395
+ uses: string[]; // @architect-uses
396
+ dependsOn: string[]; // @architect-depends-on
397
+ implementsPatterns: string[]; // @architect-implements
398
+ extendsPattern?: string; // @architect-extends
399
+ seeAlso: string[]; // @architect-see-also
400
+ apiRef: string[]; // @architect-api-ref
401
+
402
+ // Reverse lookups (computed by transformer)
403
+ usedBy: string[]; // inverse of uses
404
+ enables: string[]; // inverse of dependsOn
405
+ implementedBy: ImplementationRef[]; // inverse of implementsPatterns (with file paths)
406
+ extendedBy: string[]; // inverse of extendsPattern
407
+ }
408
+ >;
409
+
410
+ // ─── Architecture Data (optional) ──────────────────────────────────────
411
+ archIndex?: {
412
+ byRole: Record<string, ExtractedPattern[]>;
413
+ byContext: Record<string, ExtractedPattern[]>;
414
+ byLayer: Record<string, ExtractedPattern[]>;
415
+ byView: Record<string, ExtractedPattern[]>;
416
+ all: ExtractedPattern[];
417
+ };
418
+ }
419
+ ```
420
+
421
+ ### RuntimeMasterDataset
422
+
423
+ The runtime type extends `MasterDataset` with non-serializable workflow:
424
+
425
+ ```typescript
426
+ // transform-dataset.ts:50-53
427
+ interface RuntimeMasterDataset extends MasterDataset {
428
+ readonly workflow?: LoadedWorkflow; // Contains Maps - not JSON-serializable
429
+ }
430
+ ```
431
+
432
+ ### Single-Pass Transformation
433
+
434
+ The `transformToMasterDataset()` function iterates over patterns exactly once, accumulating all views:
435
+
436
+ ```typescript
437
+ // transform-dataset.ts:98-235 (simplified)
438
+ export function transformToMasterDataset(raw: RawDataset): RuntimeMasterDataset {
439
+ // Initialize accumulators
440
+ const byStatus: StatusGroups = { completed: [], active: [], planned: [] };
441
+ const byPhaseMap = new Map<number, ExtractedPattern[]>();
442
+ const byQuarter: Record<string, ExtractedPattern[]> = {};
443
+ const byCategoryMap = new Map<string, ExtractedPattern[]>();
444
+ const bySource: SourceViews = { typescript: [], gherkin: [], roadmap: [], prd: [] };
445
+
446
+ // Single pass over all patterns
447
+ for (const pattern of patterns) {
448
+ // Status grouping
449
+ const status = normalizeStatus(pattern.status);
450
+ byStatus[status].push(pattern);
451
+
452
+ // Phase grouping (also adds to roadmap)
453
+ if (pattern.phase !== undefined) {
454
+ byPhaseMap.get(pattern.phase)?.push(pattern) ?? byPhaseMap.set(pattern.phase, [pattern]);
455
+ bySource.roadmap.push(pattern);
456
+ }
457
+
458
+ // Quarter grouping
459
+ if (pattern.quarter) {
460
+ byQuarter[pattern.quarter] ??= [];
461
+ byQuarter[pattern.quarter].push(pattern);
462
+ }
463
+
464
+ // Category grouping
465
+ byCategoryMap.get(pattern.category)?.push(pattern) ?? /* ... */;
466
+
467
+ // Source grouping (typescript vs gherkin)
468
+ // PRD grouping (has productArea/userRole/businessValue)
469
+ // Relationship index building
470
+ }
471
+
472
+ // Build sorted phase groups with counts
473
+ const byPhase = Array.from(byPhaseMap.entries())
474
+ .sort(([a], [b]) => a - b)
475
+ .map(([phaseNumber, patterns]) => ({ phaseNumber, patterns, counts: computeCounts(patterns) }));
476
+
477
+ return { patterns, tagRegistry, byStatus, byPhase, byQuarter, byCategory, bySource, counts, /* ... */ };
478
+ }
479
+ ```
480
+
481
+ ---
482
+
483
+ ## Codec Architecture
484
+
485
+ ### Key Concepts
486
+
487
+ The Architect package uses a codec-based architecture for document generation:
488
+
489
+ ```
490
+ MasterDataset → Codec.decode() → RenderableDocument ─┬→ renderToMarkdown → Markdown Files
491
+ └→ renderToClaudeMdModule → Modular Claude.md
492
+ ```
493
+
494
+ | Component | Description |
495
+ | -------------------------- | --------------------------------------------------------------------------------- |
496
+ | **MasterDataset** | Aggregated view of all extracted patterns with indexes by category, phase, status |
497
+ | **Codec** | Zod 4 codec that transforms MasterDataset into RenderableDocument |
498
+ | **RenderableDocument** | Universal intermediate format with typed section blocks |
499
+ | **renderToMarkdown** | Domain-agnostic markdown renderer for human documentation |
500
+ | **renderToClaudeMdModule** | Modular-claude-md renderer (H3-rooted headings, omits Mermaid/link-outs) |
501
+
502
+ ### Block Vocabulary (9 Types)
503
+
504
+ The RenderableDocument uses a fixed vocabulary of section blocks:
505
+
506
+ | Category | Block Types |
507
+ | --------------- | ----------------------------------- |
508
+ | **Structural** | `heading`, `paragraph`, `separator` |
509
+ | **Content** | `table`, `list`, `code`, `mermaid` |
510
+ | **Progressive** | `collapsible`, `link-out` |
511
+
512
+ ### Factory Pattern
513
+
514
+ Every codec provides two exports:
515
+
516
+ ```typescript
517
+ // Default codec with standard options
518
+ import { PatternsDocumentCodec } from './codecs';
519
+ const doc = PatternsDocumentCodec.decode(dataset);
520
+
521
+ // Factory for custom options
522
+ import { createPatternsCodec } from './codecs';
523
+ const codec = createPatternsCodec({ generateDetailFiles: false });
524
+ const doc = codec.decode(dataset);
525
+ ```
526
+
527
+ ---
528
+
529
+ ## Available Codecs
530
+
531
+ > **Note:** Codec options shown below are illustrative. For complete and current options,
532
+ > see the source files in `src/renderable/codecs/` and `src/generators/types.ts`.
533
+
534
+ ### Pattern-Focused Codecs
535
+
536
+ #### PatternsDocumentCodec
537
+
538
+ **Purpose:** Pattern registry with category-based organization.
539
+
540
+ **Output Files:**
541
+
542
+ - `PATTERNS.md` - Main index with progress summary, navigation, and pattern table
543
+ - `patterns/<category>.md` - Detail files per category (when progressive disclosure enabled)
544
+
545
+ **Options (PatternsCodecOptions):**
546
+
547
+ | Option | Type | Default | Description |
548
+ | -------------------------- | --------------------------------------- | ------------ | ------------------------------------------- |
549
+ | `generateDetailFiles` | boolean | `true` | Create category detail files |
550
+ | `detailLevel` | `"summary" \| "standard" \| "detailed"` | `"standard"` | Output verbosity |
551
+ | `includeDependencyGraph` | boolean | `true` | Render Mermaid dependency graph |
552
+ | `includeUseCases` | boolean | `true` | Show use cases section |
553
+ | `filterCategories` | string[] | `[]` | Filter to specific categories (empty = all) |
554
+ | `limits.recentItems` | number | `10` | Max recent items in summaries |
555
+ | `limits.collapseThreshold` | number | `5` | Items before collapsing |
556
+
557
+ #### RequirementsDocumentCodec
558
+
559
+ **Purpose:** Product requirements documentation grouped by product area or user role.
560
+
561
+ **Output Files:**
562
+
563
+ - `PRODUCT-REQUIREMENTS.md` - Main requirements index
564
+ - `requirements/<area-slug>.md` - Detail files per product area
565
+
566
+ **Options (RequirementsCodecOptions):**
567
+
568
+ | Option | Type | Default | Description |
569
+ | ---------------------- | ------------------------------------------ | ---------------- | -------------------------------- |
570
+ | `generateDetailFiles` | boolean | `true` | Create product area detail files |
571
+ | `groupBy` | `"product-area" \| "user-role" \| "phase"` | `"product-area"` | Primary grouping |
572
+ | `filterStatus` | `NormalizedStatusFilter[]` | `[]` | Filter by status (empty = all) |
573
+ | `includeScenarioSteps` | boolean | `true` | Show Given/When/Then steps |
574
+ | `includeBusinessValue` | boolean | `true` | Display business value metadata |
575
+ | `includeBusinessRules` | boolean | `true` | Show Gherkin Rule: sections |
576
+
577
+ ---
578
+
579
+ ### Timeline-Focused Codecs
580
+
581
+ #### RoadmapDocumentCodec
582
+
583
+ **Purpose:** Development roadmap organized by phase with progress tracking.
584
+
585
+ **Output Files:**
586
+
587
+ - `ROADMAP.md` - Main roadmap with phase navigation and quarterly timeline
588
+ - `phases/phase-<N>-<name>.md` - Detail files per phase
589
+
590
+ **Options (RoadmapCodecOptions):**
591
+
592
+ | Option | Type | Default | Description |
593
+ | --------------------- | -------------------------- | ------- | ----------------------------------- |
594
+ | `generateDetailFiles` | boolean | `true` | Create phase detail files |
595
+ | `filterStatus` | `NormalizedStatusFilter[]` | `[]` | Filter by status |
596
+ | `includeProcess` | boolean | `true` | Show quarter, effort, team metadata |
597
+ | `includeDeliverables` | boolean | `true` | List deliverables per phase |
598
+ | `filterPhases` | number[] | `[]` | Filter to specific phases |
599
+
600
+ #### CompletedMilestonesCodec
601
+
602
+ **Purpose:** Historical record of completed work organized by quarter.
603
+
604
+ **Output Files:**
605
+
606
+ - `COMPLETED-MILESTONES.md` - Summary with completed phases and recent completions
607
+ - `milestones/<quarter>.md` - Detail files per quarter (e.g., `Q1-2026.md`)
608
+
609
+ #### CurrentWorkCodec
610
+
611
+ **Purpose:** Active development work currently in progress.
612
+
613
+ **Output Files:**
614
+
615
+ - `CURRENT-WORK.md` - Summary of active phases and patterns
616
+ - `current/phase-<N>-<name>.md` - Detail files for active phases
617
+
618
+ #### ChangelogCodec
619
+
620
+ **Purpose:** Keep a Changelog format changelog grouped by release version.
621
+
622
+ **Output Files:**
623
+
624
+ - `CHANGELOG.md` - Changelog with `[vNEXT]`, `[v0.1.0]` sections
625
+
626
+ **Options (ChangelogCodecOptions):**
627
+
628
+ | Option | Type | Default | Description |
629
+ | ------------------- | ------------------------ | ------- | --------------------------------- |
630
+ | `includeUnreleased` | boolean | `true` | Include unreleased section |
631
+ | `includeLinks` | boolean | `true` | Include links |
632
+ | `categoryMapping` | `Record<string, string>` | `{}` | Map categories to changelog types |
633
+
634
+ ---
635
+
636
+ ### Session-Focused Codecs
637
+
638
+ #### SessionContextCodec
639
+
640
+ **Purpose:** Current session context for AI agents and developers.
641
+
642
+ **Output Files:**
643
+
644
+ - `SESSION-CONTEXT.md` - Session status, active work, current phase focus
645
+ - `sessions/phase-<N>-<name>.md` - Detail files for incomplete phases
646
+
647
+ #### RemainingWorkCodec
648
+
649
+ **Purpose:** Aggregate view of all incomplete work across phases.
650
+
651
+ **Output Files:**
652
+
653
+ - `REMAINING-WORK.md` - Summary by phase, priority breakdown, next actionable
654
+ - `remaining/phase-<N>-<name>.md` - Detail files per incomplete phase
655
+
656
+ **Options (RemainingWorkCodecOptions):**
657
+
658
+ | Option | Type | Default | Description |
659
+ | ----------------------- | ------------------------------------------------ | --------- | ----------------------------- |
660
+ | `includeIncomplete` | boolean | `true` | Include planned items |
661
+ | `includeBlocked` | boolean | `true` | Show blocked items analysis |
662
+ | `includeNextActionable` | boolean | `true` | Next actionable items section |
663
+ | `maxNextActionable` | number | `5` | Max items in next actionable |
664
+ | `sortBy` | `"phase" \| "priority" \| "effort" \| "quarter"` | `"phase"` | Sort order |
665
+ | `groupPlannedBy` | `"quarter" \| "priority" \| "level" \| "none"` | `"none"` | Group planned items |
666
+
667
+ ---
668
+
669
+ ### Planning Codecs
670
+
671
+ #### PlanningChecklistCodec
672
+
673
+ **Purpose:** Pre-planning questions and Definition of Done validation.
674
+
675
+ **Output Files:** `PLANNING-CHECKLIST.md`
676
+
677
+ #### SessionPlanCodec
678
+
679
+ **Purpose:** Implementation plans for coding sessions.
680
+
681
+ **Output Files:** `SESSION-PLAN.md`
682
+
683
+ #### SessionFindingsCodec
684
+
685
+ **Purpose:** Retrospective discoveries for roadmap refinement.
686
+
687
+ **Output Files:** `SESSION-FINDINGS.md`
688
+
689
+ **Finding Sources:**
690
+
691
+ - `pattern.discoveredGaps` - Gap findings
692
+ - `pattern.discoveredImprovements` - Improvement suggestions
693
+ - `pattern.discoveredRisks` / `pattern.risk` - Risk findings
694
+ - `pattern.discoveredLearnings` - Learned insights
695
+
696
+ ---
697
+
698
+ ### Other Codecs
699
+
700
+ #### AdrDocumentCodec
701
+
702
+ **Purpose:** Architecture Decision Records extracted from patterns with @architect-adr tags.
703
+
704
+ **Output Files:**
705
+
706
+ - `DECISIONS.md` - ADR index with summary and grouping
707
+ - `decisions/<category-slug>.md` - Detail files per category
708
+
709
+ #### PrChangesCodec
710
+
711
+ **Purpose:** PR-scoped view filtered by changed files or release version.
712
+
713
+ **Output Files:** `working/PR-CHANGES.md`
714
+
715
+ #### TraceabilityCodec
716
+
717
+ **Purpose:** Timeline to behavior file coverage report.
718
+
719
+ **Output Files:** `TRACEABILITY.md`
720
+
721
+ #### OverviewCodec
722
+
723
+ **Purpose:** Project architecture and status overview.
724
+
725
+ **Output Files:** `OVERVIEW.md`
726
+
727
+ #### BusinessRulesCodec
728
+
729
+ **Purpose:** Business rules documentation organized by product area, phase, and feature. Extracts domain constraints from Gherkin `Rule:` blocks.
730
+
731
+ **Output Files:**
732
+
733
+ - `BUSINESS-RULES.md` - Main index with statistics and all rules
734
+
735
+ **Options (BusinessRulesCodecOptions extends BaseCodecOptions):**
736
+
737
+ | Option | Type | Default | Description |
738
+ | ---------------------- | -------------------------------------------- | --------------------- | ----------------------------------------- |
739
+ | `groupBy` | `"domain" \| "phase" \| "domain-then-phase"` | `"domain-then-phase"` | Primary grouping strategy |
740
+ | `includeCodeExamples` | boolean | `false` | Include code examples from DocStrings |
741
+ | `includeTables` | boolean | `true` | Include markdown tables from descriptions |
742
+ | `includeRationale` | boolean | `true` | Include rationale section per rule |
743
+ | `filterDomains` | string[] | `[]` | Filter by domain categories (empty = all) |
744
+ | `filterPhases` | number[] | `[]` | Filter by phases (empty = all) |
745
+ | `onlyWithInvariants` | boolean | `false` | Show only rules with explicit invariants |
746
+ | `includeSource` | boolean | `true` | Include source feature file link |
747
+ | `includeVerifiedBy` | boolean | `true` | Include "Verified by" scenario links |
748
+ | `maxDescriptionLength` | number | `150` | Max description length in standard mode |
749
+ | `excludeSourcePaths` | string[] | `[]` | Exclude patterns by source path prefix |
750
+
751
+ #### ArchitectureDocumentCodec
752
+
753
+ **Purpose:** Architecture diagrams (Mermaid) generated from source annotations. Supports component and layered views.
754
+
755
+ **Output Files:**
756
+
757
+ - `ARCHITECTURE.md` (generated) - Architecture diagrams with component inventory
758
+
759
+ **Options (ArchitectureCodecOptions extends BaseCodecOptions):**
760
+
761
+ | Option | Type | Default | Description |
762
+ | ------------------ | -------------------------- | ------------- | ----------------------------------------- |
763
+ | `diagramType` | `"component" \| "layered"` | `"component"` | Type of diagram to generate |
764
+ | `includeInventory` | boolean | `true` | Include component inventory table |
765
+ | `includeLegend` | boolean | `true` | Include legend for arrow styles |
766
+ | `filterContexts` | string[] | `[]` | Filter to specific contexts (empty = all) |
767
+
768
+ #### TaxonomyDocumentCodec
769
+
770
+ **Purpose:** Taxonomy reference documentation with tag definitions, preset comparison, and format type reference.
771
+
772
+ **Output Files:**
773
+
774
+ - `TAXONOMY.md` - Main taxonomy reference
775
+ - `taxonomy/*.md` - Detail files per tag domain
776
+
777
+ **Options (TaxonomyCodecOptions extends BaseCodecOptions):**
778
+
779
+ | Option | Type | Default | Description |
780
+ | -------------------- | ------- | ------- | ------------------------------- |
781
+ | `includePresets` | boolean | `true` | Include preset comparison table |
782
+ | `includeFormatTypes` | boolean | `true` | Include format type reference |
783
+ | `includeArchDiagram` | boolean | `true` | Include architecture diagram |
784
+ | `groupByDomain` | boolean | `true` | Group metadata tags by domain |
785
+
786
+ #### ValidationRulesCodec
787
+
788
+ **Purpose:** Process Guard validation rules reference with FSM diagrams and protection level matrix.
789
+
790
+ **Output Files:**
791
+
792
+ - `VALIDATION-RULES.md` - Main validation rules reference
793
+ - `validation/*.md` - Detail files per rule category
794
+
795
+ **Options (ValidationRulesCodecOptions extends BaseCodecOptions):**
796
+
797
+ | Option | Type | Default | Description |
798
+ | ------------------------- | ------- | ------- | -------------------------------- |
799
+ | `includeFSMDiagram` | boolean | `true` | Include FSM state diagram |
800
+ | `includeCLIUsage` | boolean | `true` | Include CLI usage section |
801
+ | `includeEscapeHatches` | boolean | `true` | Include escape hatches section |
802
+ | `includeProtectionMatrix` | boolean | `true` | Include protection levels matrix |
803
+
804
+ ---
805
+
806
+ ### Reference & Composition Codecs
807
+
808
+ #### ReferenceCodec
809
+
810
+ **Purpose:** Scoped reference documentation assembling four content layers into a single document.
811
+
812
+ **Output Files:**
813
+
814
+ - Configured per-instance (e.g., `docs/REFERENCE-SAMPLE.md`, `_claude-md/architecture/reference-sample.md`)
815
+
816
+ **4-Layer Composition (in order):**
817
+
818
+ 1. **Convention content** — Extracted from `@architect-convention`-tagged patterns (rules, invariants, tables)
819
+ 2. **Scoped diagrams** — Mermaid diagrams filtered by `archContext`, `archLayer`, `patterns`, or `archView`
820
+ 3. **TypeScript shapes** — API surfaces from `shapeSelectors` (declaration-level filtering)
821
+ 4. **Behavior content** — Gherkin-sourced patterns from `behaviorCategories`
822
+
823
+ **Diagram Types (via `DiagramScope.diagramType`):**
824
+
825
+ | Type | Description |
826
+ | ----------------- | -------------------------------------------------------------- |
827
+ | `graph` (default) | Flowchart with subgraphs by `archContext`, custom node shapes |
828
+ | `sequenceDiagram` | Sequence diagram with typed messages between participants |
829
+ | `stateDiagram-v2` | State diagram with transitions from `dependsOn` relationships |
830
+ | `C4Context` | C4 context diagram with boundaries, systems, and relationships |
831
+ | `classDiagram` | Class diagram with `<<archRole>>` stereotypes and typed arrows |
832
+
833
+ **Key Options (ReferenceDocConfig):**
834
+
835
+ | Option | Type | Description |
836
+ | -------------------- | ----------------- | ---------------------------------------------- |
837
+ | `diagramScopes` | `DiagramScope[]` | Multiple diagrams (takes precedence) |
838
+ | `shapeSelectors` | `ShapeSelector[]` | Fine-grained declaration-level shape filtering |
839
+ | `behaviorCategories` | `string[]` | Category tags for behavior pattern content |
840
+ | `conventionTags` | `string[]` | Convention tag values to include |
841
+
842
+ **ShapeSelector Variants:**
843
+
844
+ | Variant | Example | Behavior |
845
+ | ------------------- | ----------------------------------------------- | ------------------------- |
846
+ | `{ group: string }` | `{ group: "api-types" }` | Match shapes by group tag |
847
+ | `{ source, names }` | `{ source: "src/types.ts", names: ["Config"] }` | Named shapes from file |
848
+ | `{ source }` | `{ source: "src/**/*.ts" }` | All shapes from glob |
849
+
850
+ #### CompositeCodec
851
+
852
+ **Purpose:** Assembles documents from multiple child codecs into a single RenderableDocument.
853
+
854
+ **Key Exports:**
855
+
856
+ - `createCompositeCodec(codecs, options)` — Factory that decodes each child codec against the same MasterDataset and composes their outputs
857
+ - `composeDocuments(documents, options)` — Pure document-level composition (concatenates sections, merges `additionalFiles` with last-wins semantics)
858
+
859
+ **Options (CompositeCodecOptions):**
860
+
861
+ | Option | Type | Default | Description |
862
+ | ------------------ | ------- | ------- | -------------------------------------- |
863
+ | `title` | string | — | Document title |
864
+ | `purpose` | string | — | Document purpose for frontmatter |
865
+ | `separateSections` | boolean | `true` | Insert separator blocks between codecs |
866
+
867
+ ---
868
+
869
+ ## Progressive Disclosure
870
+
871
+ Progressive disclosure splits large documents into a main index plus detail files. This improves readability and enables focused navigation.
872
+
873
+ ### How It Works
874
+
875
+ 1. Main document contains summaries and navigation links
876
+ 2. Detail files contain full information for each grouping
877
+ 3. `link-out` blocks in main doc point to detail files
878
+ 4. `additionalFiles` in RenderableDocument specifies detail paths
879
+
880
+ ### Codec Split Logic
881
+
882
+ | Codec | Split By | Detail Path Pattern |
883
+ | ------------------ | ---------------------- | ------------------------------- |
884
+ | `patterns` | Category | `patterns/<category>.md` |
885
+ | `roadmap` | Phase | `phases/phase-<N>-<name>.md` |
886
+ | `milestones` | Quarter | `milestones/<quarter>.md` |
887
+ | `current` | Active Phase | `current/phase-<N>-<name>.md` |
888
+ | `requirements` | Product Area | `requirements/<area-slug>.md` |
889
+ | `session` | Incomplete Phase | `sessions/phase-<N>-<name>.md` |
890
+ | `remaining` | Incomplete Phase | `remaining/phase-<N>-<name>.md` |
891
+ | `adrs` | Category (≥ threshold) | `decisions/<category-slug>.md` |
892
+ | `taxonomy` | Tag Domain | `taxonomy/<domain>.md` |
893
+ | `validation-rules` | Rule Category | `validation/<category>.md` |
894
+ | `pr-changes` | None | Single file only |
895
+
896
+ ### Disabling Progressive Disclosure
897
+
898
+ All codecs accept `generateDetailFiles: false` to produce compact single-file output:
899
+
900
+ ```typescript
901
+ const codec = createPatternsCodec({ generateDetailFiles: false });
902
+ // Only produces PATTERNS.md, no patterns/*.md files
903
+ ```
904
+
905
+ ### Detail Level
906
+
907
+ The `detailLevel` option controls output verbosity:
908
+
909
+ | Value | Behavior |
910
+ | ------------ | ------------------------------------- |
911
+ | `"summary"` | Minimal output, key metrics only |
912
+ | `"standard"` | Default with all sections |
913
+ | `"detailed"` | Maximum detail, all optional sections |
914
+
915
+ ---
916
+
917
+ ## Source Systems
918
+
919
+ ### TypeScript Scanner
920
+
921
+ **Key Files:**
922
+
923
+ - `src/scanner/pattern-scanner.ts` - File discovery and opt-in detection
924
+ - `src/scanner/ast-parser.ts` - TypeScript AST parsing
925
+
926
+ > **Note:** The scanner uses `RegexBuilders` from configuration to detect tags.
927
+ > The examples below use `@architect-*` (DDD_ES_CQRS_PRESET). For other prefixes, substitute accordingly.
928
+
929
+ **Annotation Format:**
930
+
931
+ ```typescript
932
+ /**
933
+ * @architect // Required opt-in (file level)
934
+ * @architect-core @architect-infra // Category tags
935
+ * @architect-pattern MyPatternName // Pattern name
936
+ * @architect-status completed // Status: roadmap|active|completed|deferred
937
+ * @architect-phase 14 // Roadmap phase number
938
+ * @architect-uses OtherPattern, Another // Dependencies (CSV)
939
+ * @architect-usecase "When doing X" // Use cases (repeatable)
940
+ * @architect-convention fsm-rules // Convention tag (CSV, links to decisions)
941
+ * @architect-extract-shapes * // Auto-shape discovery (wildcard = all exports)
942
+ *
943
+ * ## Pattern Description // Markdown description
944
+ *
945
+ * Detailed description of the pattern...
946
+ */
947
+ ```
948
+
949
+ **Declaration-Level Shape Tagging:**
950
+
951
+ Individual declarations can be tagged with `@architect-shape` in their JSDoc, without requiring a file-level `@architect-extract-shapes` tag:
952
+
953
+ ```typescript
954
+ /**
955
+ * @architect-shape api-types
956
+ * Configuration for the architect pipeline.
957
+ */
958
+ export interface PipelineConfig { ... }
959
+ ```
960
+
961
+ The optional value (e.g., `api-types`) sets the shape's `group` field, enabling `ShapeSelector` filtering by group in reference codecs.
962
+
963
+ **Tag Registry:** Defines categories, priorities, and metadata formats. Source: `src/taxonomy/` TypeScript modules.
964
+
965
+ ### Gherkin Scanner
966
+
967
+ **Key Files:**
968
+
969
+ - `src/scanner/gherkin-scanner.ts` - Feature file discovery
970
+ - `src/scanner/gherkin-ast-parser.ts` - Cucumber Gherkin parsing
971
+
972
+ **Annotation Format:**
973
+
974
+ ```gherkin
975
+ @architect-pattern:MyPattern @architect-phase:15 @architect-status:roadmap
976
+ @architect-quarter:Q1-2025 @architect-effort:2w @architect-team:platform
977
+ @architect-depends-on:OtherPattern @architect-enables:NextPattern
978
+ @architect-product-area:Generators @architect-user-role:Developer
979
+ @architect-release:v0.1.0
980
+ Feature: My Pattern Implementation
981
+
982
+ Background:
983
+ Given the following deliverables:
984
+ | Deliverable | Status |
985
+ | Core implementation | completed |
986
+ | Tests | active |
987
+
988
+ @acceptance-criteria
989
+ Scenario: Basic usage
990
+ When user does X
991
+ Then Y happens
992
+ ```
993
+
994
+ **Data-Driven Tag Extraction:**
995
+
996
+ The Gherkin parser uses a data-driven approach — a `TAG_LOOKUP` map is built from `buildRegistry().metadataTags` at module load. For each tag, the registry definition provides: format (number/enum/csv/flag/value/quoted-value), optional transforms (`hyphenToSpace`, `padAdr`, `stripQuotes`), and the target `metadataKey`. Adding new Gherkin tags requires only a registry definition — no parser code changes.
997
+
998
+ **Tag Mapping:**
999
+
1000
+ | Gherkin Tag | ExtractedPattern Field |
1001
+ | ----------------------------- | ---------------------- |
1002
+ | `@architect-pattern:Name` | `patternName` |
1003
+ | `@architect-phase:N` | `phase` |
1004
+ | `@architect-status:*` | `status` |
1005
+ | `@architect-quarter:*` | `quarter` |
1006
+ | `@architect-release:*` | `release` |
1007
+ | `@architect-depends-on:*` | `dependsOn` |
1008
+ | `@architect-product-area:*` | `productArea` |
1009
+ | `@architect-convention:*` | `convention` |
1010
+ | `@architect-discovered-gap:*` | `discoveredGaps` |
1011
+
1012
+ ### Status Normalization
1013
+
1014
+ All codecs normalize status to three canonical values:
1015
+
1016
+ | Input Status | Normalized To |
1017
+ | --------------------------------------- | ------------- |
1018
+ | `"completed"` | `"completed"` |
1019
+ | `"active"` | `"active"` |
1020
+ | `"roadmap"`, `"deferred"`, or undefined | `"planned"` |
1021
+
1022
+ ---
1023
+
1024
+ ## Key Design Patterns
1025
+
1026
+ ### Result Monad
1027
+
1028
+ All operations return `Result<T, E>` for explicit error handling:
1029
+
1030
+ ```typescript
1031
+ // types/result.ts
1032
+ type Result<T, E> = { ok: true; value: T } | { ok: false; error: E };
1033
+
1034
+ // Usage
1035
+ const result = await scanPatterns(options);
1036
+ if (result.ok) {
1037
+ const { files } = result.value;
1038
+ } else {
1039
+ console.error(result.error); // Explicit error handling
1040
+ }
1041
+ ```
1042
+
1043
+ **Benefits:**
1044
+
1045
+ - No exception swallowing
1046
+ - Partial success scenarios supported
1047
+ - Type-safe error handling at boundaries
1048
+
1049
+ ### Schema-First Validation
1050
+
1051
+ Types are defined as Zod schemas first, TypeScript types inferred:
1052
+
1053
+ ```typescript
1054
+ // src/validation-schemas/extracted-pattern.ts
1055
+ export const ExtractedPatternSchema = z
1056
+ .object({
1057
+ id: PatternIdSchema,
1058
+ name: z.string().min(1),
1059
+ category: CategoryNameSchema,
1060
+ status: PatternStatusSchema.optional(),
1061
+ phase: z.number().int().positive().optional(),
1062
+ // ... 30+ fields
1063
+ })
1064
+ .strict();
1065
+
1066
+ export type ExtractedPattern = z.infer<typeof ExtractedPatternSchema>;
1067
+ ```
1068
+
1069
+ **Benefits:**
1070
+
1071
+ - Runtime validation at all boundaries
1072
+ - Type inference from schemas (single source of truth)
1073
+ - Codec support for transformations
1074
+
1075
+ ### Tag Registry
1076
+
1077
+ Data-driven configuration for pattern categorization:
1078
+
1079
+ ```json
1080
+ // Generated from TypeScript taxonomy (src/taxonomy/)
1081
+ {
1082
+ "categories": [
1083
+ { "tag": "core", "domain": "Core", "priority": 1, "description": "Core patterns" },
1084
+ { "tag": "scanner", "domain": "Scanner", "priority": 10, "aliases": ["scan"] },
1085
+ { "tag": "generator", "domain": "Generator", "priority": 20, "aliases": ["gen"] }
1086
+ ],
1087
+ "metadataTags": [
1088
+ { "tag": "status", "format": "enum", "values": ["roadmap", "active", "completed", "deferred"] },
1089
+ { "tag": "phase", "format": "number" },
1090
+ { "tag": "release", "format": "value" },
1091
+ { "tag": "usecase", "format": "quoted-value", "repeatable": true }
1092
+ ]
1093
+ }
1094
+ ```
1095
+
1096
+ **Category Inference Algorithm:**
1097
+
1098
+ 1. Extract tag parts (e.g., `@architect-core-utils` → `["core", "utils"]`)
1099
+ 2. Find matching categories in registry (with aliases)
1100
+ 3. Select highest priority (lowest number)
1101
+ 4. Fallback to "uncategorized"
1102
+
1103
+ ---
1104
+
1105
+ ## Data Flow Diagrams
1106
+
1107
+ ### Complete Pipeline Flow
1108
+
1109
+ ```
1110
+ ┌─────────────────────────────────────────────────────────────────────────────────┐
1111
+ │ ORCHESTRATOR │
1112
+ │ │
1113
+ │ ┌─────────────────────────────────────────────────────────────────────────────┐│
1114
+ │ │ Step 1: Load Tag Registry ││
1115
+ │ │ buildRegistry() → TagRegistry ││
1116
+ │ └─────────────────────────────────────────────────────────────────────────────┘│
1117
+ │ │ │
1118
+ │ ▼ │
1119
+ │ ┌─────────────────────────────────────────────────────────────────────────────┐│
1120
+ │ │ Step 2-3: Scan TypeScript Sources ││
1121
+ │ │ scanPatterns() → extractPatterns() → ExtractedPattern[] ││
1122
+ │ └─────────────────────────────────────────────────────────────────────────────┘│
1123
+ │ │ │
1124
+ │ ▼ │
1125
+ │ ┌─────────────────────────────────────────────────────────────────────────────┐│
1126
+ │ │ Step 4-5: Scan Gherkin Sources ││
1127
+ │ │ scanGherkinFiles() → extractPatternsFromGherkin() ││
1128
+ │ └─────────────────────────────────────────────────────────────────────────────┘│
1129
+ │ │ │
1130
+ │ ▼ │
1131
+ │ ┌─────────────────────────────────────────────────────────────────────────────┐│
1132
+ │ │ Step 6: Merge Patterns (with conflict detection) ││
1133
+ │ │ mergePatterns(tsPatterns, gherkinPatterns) ││
1134
+ │ └─────────────────────────────────────────────────────────────────────────────┘│
1135
+ │ │ │
1136
+ │ ▼ │
1137
+ │ ┌─────────────────────────────────────────────────────────────────────────────┐│
1138
+ │ │ Step 7: Compute Hierarchy Children ││
1139
+ │ │ computeHierarchyChildren() → patterns with children[] populated ││
1140
+ │ └─────────────────────────────────────────────────────────────────────────────┘│
1141
+ │ │ │
1142
+ │ ▼ │
1143
+ │ ┌─────────────────────────────────────────────────────────────────────────────┐│
1144
+ │ │ Step 8: Transform to MasterDataset (SINGLE PASS) ││
1145
+ │ │ transformToMasterDataset({ patterns, tagRegistry, workflow }) ││
1146
+ │ │ ││
1147
+ │ │ Computes: byStatus, byPhase, byQuarter, byCategory, bySource, ││
1148
+ │ │ counts, phaseCount, categoryCount, relationshipIndex ││
1149
+ │ └─────────────────────────────────────────────────────────────────────────────┘│
1150
+ │ │ │
1151
+ │ ▼ │
1152
+ │ ┌─────────────────────────────────────────────────────────────────────────────┐│
1153
+ │ │ Step 9: Run Codecs ││
1154
+ │ │ for each generator: ││
1155
+ │ │ doc = Codec.decode(masterDataset) ││
1156
+ │ │ files = renderDocumentWithFiles(doc, outputPath) ││
1157
+ │ └─────────────────────────────────────────────────────────────────────────────┘│
1158
+ │ │ │
1159
+ │ ▼ │
1160
+ │ ┌─────────────────────────────────────────────────────────────────────────────┐│
1161
+ │ │ Step 10: Write Output Files ││
1162
+ │ │ fs.writeFile() for each OutputFile ││
1163
+ │ └─────────────────────────────────────────────────────────────────────────────┘│
1164
+ │ │
1165
+ └─────────────────────────────────────────────────────────────────────────────────┘
1166
+ ```
1167
+
1168
+ ### Pipeline Factory Entry Point (ADR-006)
1169
+
1170
+ Steps 1-8 are also available via `buildMasterDataset()` from `src/generators/pipeline/build-pipeline.ts`. The orchestrator adds Steps 9-10 (codec execution and file writing).
1171
+
1172
+ ```
1173
+ buildMasterDataset(options)
1174
+
1175
+
1176
+ Steps 1-8 (scan → extract → merge → transform)
1177
+
1178
+
1179
+ Result<PipelineResult, PipelineError>
1180
+
1181
+ ├── process-api CLI (mergeConflictStrategy: 'fatal')
1182
+ │ └── query handlers consume dataset
1183
+
1184
+ ├── validate-patterns CLI (mergeConflictStrategy: 'concatenate')
1185
+ │ └── cross-source validation via relationshipIndex
1186
+
1187
+ └── orchestrator (inline pipeline, adds Steps 9-10)
1188
+ ├── Step 9: Codec execution → RenderableDocument[]
1189
+ └── Step 10: File writing → OutputFile[]
1190
+ ```
1191
+
1192
+ ### MasterDataset Views
1193
+
1194
+ ```
1195
+ ┌─────────────────────────────────────┐
1196
+ │ MasterDataset │
1197
+ │ │
1198
+ │ patterns: ExtractedPattern[] │
1199
+ │ tagRegistry: TagRegistry │
1200
+ └─────────────────┬───────────────────┘
1201
+
1202
+ ┌───────────────────────────────┼───────────────────────────────┐
1203
+ │ │ │
1204
+ ▼ ▼ ▼
1205
+ ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
1206
+ │ byStatus │ │ byPhase │ │ byQuarter │
1207
+ │ │ │ │ │ │
1208
+ │ .completed[] │ │ [0] phaseNumber: 1 │ │ "Q4-2024": [...] │
1209
+ │ .active[] │ │ patterns[] │ │ "Q1-2025": [...] │
1210
+ │ .planned[] │ │ counts │ │ "Q2-2025": [...] │
1211
+ └─────────────────────┘ │ │ └─────────────────────┘
1212
+ │ [1] phaseNumber: 14 │
1213
+ ┌─────────────────│ patterns[] │───────────────────┐
1214
+ │ │ counts │ │
1215
+ ▼ └─────────────────────┘ ▼
1216
+ ┌─────────────────────┐ ┌─────────────────────┐
1217
+ │ byCategory │ │ bySource │
1218
+ │ │ │ │
1219
+ │ "core": [...] │ │ .typescript[] │
1220
+ │ "scanner": [...] │ │ .gherkin[] │
1221
+ │ "generator": [...] │ │ .roadmap[] │
1222
+ └─────────────────────┘ │ .prd[] │
1223
+ └─────────────────────┘
1224
+ │ │
1225
+ └───────────────────────┬───────────────────────────────┘
1226
+
1227
+
1228
+ ┌─────────────────────────────┐
1229
+ │ Aggregate Statistics │
1230
+ │ │
1231
+ │ counts: { completed: 45, │
1232
+ │ active: 12, │
1233
+ │ planned: 38, │
1234
+ │ total: 95 } │
1235
+ │ │
1236
+ │ phaseCount: 15 │
1237
+ │ categoryCount: 9 │
1238
+ └─────────────────────────────┘
1239
+ ```
1240
+
1241
+ ### Codec Transformation
1242
+
1243
+ ````
1244
+ ┌─────────────────────────────┐
1245
+ │ MasterDataset │
1246
+ └──────────────┬──────────────┘
1247
+
1248
+ ┌──────────────────────────┼──────────────────────────┐
1249
+ │ │ │
1250
+ ▼ ▼ ▼
1251
+ ┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
1252
+ │ PatternsCodec │ │ RoadmapCodec │ │ SessionCodec │
1253
+ │ .decode() │ │ .decode() │ │ .decode() │
1254
+ └─────────┬─────────┘ └─────────┬─────────┘ └─────────┬─────────┘
1255
+ │ │ │
1256
+ ▼ ▼ ▼
1257
+ ┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
1258
+ │RenderableDocument │ │RenderableDocument │ │RenderableDocument │
1259
+ │ │ │ │ │ │
1260
+ │ title: "Patterns" │ │ title: "Roadmap" │ │ title: "Session" │
1261
+ │ sections: [ │ │ sections: [ │ │ sections: [ │
1262
+ │ heading(...), │ │ heading(...), │ │ heading(...), │
1263
+ │ table(...), │ │ list(...), │ │ paragraph(...), │
1264
+ │ link-out(...) │ │ mermaid(...) │ │ collapsible() │
1265
+ │ ] │ │ ] │ │ ] │
1266
+ │ │ │ │ │ │
1267
+ │ additionalFiles: │ │ additionalFiles: │ │ additionalFiles: │
1268
+ │ { "patterns/ │ │ { "phases/ │ │ { "sessions/ │
1269
+ │ core.md": ... }│ │ phase-14.md" } │ │ phase-15.md" } │
1270
+ └───────────────────┘ └───────────────────┘ └───────────────────┘
1271
+ │ │ │
1272
+ └───────────────────────┼───────────────────────┘
1273
+
1274
+
1275
+ ┌─────────────────────────────┐
1276
+ │ renderToMarkdown() │
1277
+ │ │
1278
+ │ Traverses blocks: │
1279
+ │ heading → ## Title │
1280
+ │ table → | col | col | │
1281
+ │ list → - item │
1282
+ │ code → ```lang │
1283
+ │ mermaid → ```mermaid │
1284
+ │ link-out → [See ...](path)│
1285
+ └─────────────────────────────┘
1286
+ ````
1287
+
1288
+ ---
1289
+
1290
+ ## Workflow Integration
1291
+
1292
+ ### Planning a PR
1293
+
1294
+ Use planning codecs to prepare for implementation:
1295
+
1296
+ ```typescript
1297
+ import { createSessionPlanCodec, createPlanningChecklistCodec } from '@libar-dev/architect';
1298
+
1299
+ // Generate planning documents
1300
+ const planCodec = createSessionPlanCodec({
1301
+ statusFilter: ['planned'],
1302
+ includeAcceptanceCriteria: true,
1303
+ });
1304
+
1305
+ const checklistCodec = createPlanningChecklistCodec({
1306
+ forActivePhases: false,
1307
+ forNextActionable: true,
1308
+ });
1309
+ ```
1310
+
1311
+ **Output documents:**
1312
+
1313
+ - `SESSION-PLAN.md` - What to implement
1314
+ - `PLANNING-CHECKLIST.md` - Pre-flight verification
1315
+
1316
+ ### Implementing a PR
1317
+
1318
+ Use session context and PR changes for active development:
1319
+
1320
+ ```typescript
1321
+ import { createSessionContextCodec, createPrChangesCodec } from '@libar-dev/architect';
1322
+
1323
+ // Current session context
1324
+ const sessionCodec = createSessionContextCodec({
1325
+ includeAcceptanceCriteria: true,
1326
+ includeDependencies: true,
1327
+ });
1328
+
1329
+ // PR-scoped changes
1330
+ const prCodec = createPrChangesCodec({
1331
+ changedFiles: getChangedFiles(), // from git
1332
+ includeReviewChecklist: true,
1333
+ });
1334
+ ```
1335
+
1336
+ **Output documents:**
1337
+
1338
+ - `SESSION-CONTEXT.md` - Current focus and blocked items
1339
+ - `working/PR-CHANGES.md` - PR review context
1340
+
1341
+ ### Release Preparation
1342
+
1343
+ Use milestone and changelog codecs for release documentation:
1344
+
1345
+ ```typescript
1346
+ import { createMilestonesCodec, createChangelogCodec } from '@libar-dev/architect';
1347
+
1348
+ // Quarter-filtered milestones
1349
+ const milestonesCodec = createMilestonesCodec({
1350
+ filterQuarters: ['Q1-2026'],
1351
+ });
1352
+
1353
+ // Changelog with release tagging
1354
+ const changelogCodec = createChangelogCodec({
1355
+ includeUnreleased: false,
1356
+ });
1357
+ ```
1358
+
1359
+ **Output documents:**
1360
+
1361
+ - `COMPLETED-MILESTONES.md` - What shipped
1362
+ - `CHANGELOG.md` - Release notes
1363
+
1364
+ ### Session Context Generation
1365
+
1366
+ For AI agents or session handoffs:
1367
+
1368
+ ```typescript
1369
+ import {
1370
+ createSessionContextCodec,
1371
+ createRemainingWorkCodec,
1372
+ createCurrentWorkCodec,
1373
+ } from '@libar-dev/architect';
1374
+
1375
+ // Full session context bundle
1376
+ const sessionCodec = createSessionContextCodec({
1377
+ includeHandoffContext: true,
1378
+ includeRelatedPatterns: true,
1379
+ });
1380
+
1381
+ const remainingCodec = createRemainingWorkCodec({
1382
+ includeNextActionable: true,
1383
+ maxNextActionable: 10,
1384
+ groupPlannedBy: 'priority',
1385
+ });
1386
+
1387
+ const currentCodec = createCurrentWorkCodec({
1388
+ includeDeliverables: true,
1389
+ includeProcess: true,
1390
+ });
1391
+ ```
1392
+
1393
+ **Output documents:**
1394
+
1395
+ - `SESSION-CONTEXT.md` - Where we are
1396
+ - `REMAINING-WORK.md` - What's left
1397
+ - `CURRENT-WORK.md` - What's in progress
1398
+
1399
+ ---
1400
+
1401
+ ## Programmatic Usage
1402
+
1403
+ ### Direct Codec Usage
1404
+
1405
+ ```typescript
1406
+ import { createPatternsCodec, type MasterDataset } from '@libar-dev/architect';
1407
+ import { renderToMarkdown } from '@libar-dev/architect/renderable';
1408
+
1409
+ // Create custom codec
1410
+ const codec = createPatternsCodec({
1411
+ filterCategories: ['core'],
1412
+ generateDetailFiles: false,
1413
+ });
1414
+
1415
+ // Transform dataset
1416
+ const document = codec.decode(masterDataset);
1417
+
1418
+ // Render to markdown
1419
+ const markdown = renderToMarkdown(document);
1420
+ ```
1421
+
1422
+ ### Using generateDocument
1423
+
1424
+ ```typescript
1425
+ import { generateDocument, type DocumentType } from '@libar-dev/architect/renderable';
1426
+
1427
+ // Generate with default options
1428
+ const files = generateDocument('patterns', masterDataset);
1429
+
1430
+ // files is OutputFile[]
1431
+ for (const file of files) {
1432
+ console.log(`${file.path}: ${file.content.length} bytes`);
1433
+ }
1434
+ ```
1435
+
1436
+ ### Accessing Additional Files
1437
+
1438
+ The RenderableDocument includes detail files in `additionalFiles`:
1439
+
1440
+ ```typescript
1441
+ const document = PatternsDocumentCodec.decode(dataset);
1442
+
1443
+ // Main content
1444
+ console.log(document.title); // "Pattern Registry"
1445
+ console.log(document.sections.length);
1446
+
1447
+ // Detail files (for progressive disclosure)
1448
+ if (document.additionalFiles) {
1449
+ for (const [path, subDoc] of Object.entries(document.additionalFiles)) {
1450
+ console.log(`Detail file: ${path}`);
1451
+ console.log(` Title: ${subDoc.title}`);
1452
+ }
1453
+ }
1454
+ ```
1455
+
1456
+ ---
1457
+
1458
+ ## Extending the System
1459
+
1460
+ ### Creating a Custom Codec
1461
+
1462
+ ```typescript
1463
+ import { z } from 'zod';
1464
+ import { MasterDatasetSchema, type MasterDataset } from '../validation-schemas/master-dataset';
1465
+ import { type RenderableDocument, document, heading, paragraph } from '../renderable/schema';
1466
+ import { RenderableDocumentOutputSchema } from '../renderable/codecs/shared-schema';
1467
+
1468
+ // Define options
1469
+ interface MyCodecOptions {
1470
+ includeCustomSection?: boolean;
1471
+ }
1472
+
1473
+ // Create factory
1474
+ export function createMyCodec(options?: MyCodecOptions) {
1475
+ const opts = { includeCustomSection: true, ...options };
1476
+
1477
+ return z.codec(MasterDatasetSchema, RenderableDocumentOutputSchema, {
1478
+ decode: (dataset: MasterDataset): RenderableDocument => {
1479
+ const sections = [
1480
+ heading(2, 'Summary'),
1481
+ paragraph(`Total patterns: ${dataset.counts.total}`),
1482
+ ];
1483
+
1484
+ if (opts.includeCustomSection) {
1485
+ sections.push(heading(2, 'Custom Section'));
1486
+ sections.push(paragraph('Custom content here'));
1487
+ }
1488
+
1489
+ return document('My Custom Document', sections, {
1490
+ purpose: 'Custom document purpose',
1491
+ });
1492
+ },
1493
+ encode: () => {
1494
+ throw new Error('MyCodec is decode-only');
1495
+ },
1496
+ });
1497
+ }
1498
+ ```
1499
+
1500
+ ### Registering a Custom Generator
1501
+
1502
+ ```typescript
1503
+ import { generatorRegistry } from '@libar-dev/architect/generators';
1504
+ import { createCodecGenerator } from '@libar-dev/architect/generators/codec-based';
1505
+
1506
+ // Register if using existing document type
1507
+ generatorRegistry.register(createCodecGenerator('my-patterns', 'patterns'));
1508
+
1509
+ // Or create custom generator class for new codec
1510
+ class MyCustomGenerator implements DocumentGenerator {
1511
+ readonly name = 'my-custom';
1512
+ readonly description = 'My custom generator';
1513
+
1514
+ generate(patterns, context) {
1515
+ const codec = createMyCodec();
1516
+ const doc = codec.decode(context.masterDataset);
1517
+ const files = renderDocumentWithFiles(doc, 'MY-CUSTOM.md');
1518
+ return Promise.resolve({ files });
1519
+ }
1520
+ }
1521
+
1522
+ generatorRegistry.register(new MyCustomGenerator());
1523
+ ```
1524
+
1525
+ ---
1526
+
1527
+ ## Quick Reference
1528
+
1529
+ ### Codec to Generator Mapping
1530
+
1531
+ | Codec | Generator Name | CLI Flag |
1532
+ | --------------------------- | -------------------- | ----------------------- |
1533
+ | `PatternsDocumentCodec` | `patterns` | `-g patterns` |
1534
+ | `RoadmapDocumentCodec` | `roadmap` | `-g roadmap` |
1535
+ | `CompletedMilestonesCodec` | `milestones` | `-g milestones` |
1536
+ | `CurrentWorkCodec` | `current` | `-g current` |
1537
+ | `RequirementsDocumentCodec` | `requirements` | `-g requirements` |
1538
+ | `SessionContextCodec` | `session` | `-g session` |
1539
+ | `RemainingWorkCodec` | `remaining` | `-g remaining` |
1540
+ | `PrChangesCodec` | `pr-changes` | `-g pr-changes` |
1541
+ | `AdrDocumentCodec` | `adrs` | `-g adrs` |
1542
+ | `PlanningChecklistCodec` | `planning-checklist` | `-g planning-checklist` |
1543
+ | `SessionPlanCodec` | `session-plan` | `-g session-plan` |
1544
+ | `SessionFindingsCodec` | `session-findings` | `-g session-findings` |
1545
+ | `ChangelogCodec` | `changelog` | `-g changelog` |
1546
+ | `TraceabilityCodec` | `traceability` | `-g traceability` |
1547
+ | `OverviewCodec` | `overview-rdm` | `-g overview-rdm` |
1548
+ | `BusinessRulesCodec` | `business-rules` | `-g business-rules` |
1549
+ | `ArchitectureDocumentCodec` | `architecture` | `-g architecture` |
1550
+ | `TaxonomyDocumentCodec` | `taxonomy` | `-g taxonomy` |
1551
+ | `ValidationRulesCodec` | `validation-rules` | `-g validation-rules` |
1552
+ | `ReferenceCodec` | `reference-sample` | `-g reference-sample` |
1553
+ | `DecisionDocGenerator` | `doc-from-decision` | `-g doc-from-decision` |
1554
+
1555
+ ### CLI Usage
1556
+
1557
+ ```bash
1558
+ # Single generator
1559
+ pnpm exec architect-generate -i "src/**/*.ts" -g patterns -o docs
1560
+
1561
+ # Multiple generators
1562
+ pnpm exec architect-generate -i "src/**/*.ts" -g patterns -g roadmap -g session -o docs
1563
+
1564
+ # List available generators
1565
+ pnpm exec architect-generate --list-generators
1566
+ ```
1567
+
1568
+ ### Common Filter Patterns
1569
+
1570
+ ```typescript
1571
+ // Status filters
1572
+ filterStatus: ['completed']; // Historical only
1573
+ filterStatus: ['active', 'planned']; // Future work
1574
+ filterStatus: []; // All (default)
1575
+
1576
+ // Phase filters
1577
+ filterPhases: [14, 15, 16]; // Specific phases
1578
+ filterPhases: []; // All (default)
1579
+
1580
+ // Category filters
1581
+ filterCategories: ['core', 'ddd']; // Specific categories
1582
+ filterCategories: []; // All (default)
1583
+
1584
+ // Quarter filters
1585
+ filterQuarters: ['Q1-2026']; // Specific quarter
1586
+ filterQuarters: []; // All (default)
1587
+ ```
1588
+
1589
+ ### Output Mode Shortcuts
1590
+
1591
+ ```typescript
1592
+ // Compact single-file output
1593
+ { generateDetailFiles: false, detailLevel: "summary" }
1594
+
1595
+ // Standard with progressive disclosure
1596
+ { generateDetailFiles: true, detailLevel: "standard" }
1597
+
1598
+ // Maximum detail
1599
+ { generateDetailFiles: true, detailLevel: "detailed" }
1600
+ ```
1601
+
1602
+ ---
1603
+
1604
+ ## Related Documentation
1605
+
1606
+ - [README.md](../README.md) - Package quick start and API overview
1607
+ - [CONFIGURATION.md](./CONFIGURATION.md) - Configuration guide, presets, customization
1608
+ - [TAXONOMY.md](./TAXONOMY.md) - Tag taxonomy concepts and API
1609
+ - [src/taxonomy/](../src/taxonomy/) - TypeScript taxonomy source (categories, status values, priorities)
1610
+
1611
+ ---
1612
+
1613
+ ## Code References
1614
+
1615
+ | Component | File | Purpose |
1616
+ | ------------------------ | --------------------------------------------------- | ---------------------------------------------- |
1617
+ | MasterDataset Schema | `src/validation-schemas/master-dataset.ts` | Central data structure |
1618
+ | transformToMasterDataset | `src/generators/pipeline/transform-dataset.ts` | Single-pass transformation |
1619
+ | Document Codecs | `src/renderable/codecs/*.ts` | Zod 4 codec implementations |
1620
+ | Reference Codec | `src/renderable/codecs/reference.ts` | Scoped reference documents |
1621
+ | Composite Codec | `src/renderable/codecs/composite.ts` | Multi-codec assembly |
1622
+ | Convention Extractor | `src/renderable/codecs/convention-extractor.ts` | Convention content extraction |
1623
+ | Shape Matcher | `src/renderable/codecs/shape-matcher.ts` | Declaration-level filtering |
1624
+ | Markdown Renderer | `src/renderable/render.ts` | Block → Markdown |
1625
+ | Claude Context Renderer | `src/renderable/render.ts` | LLM-optimized rendering |
1626
+ | Orchestrator | `src/generators/orchestrator.ts` | Pipeline coordination |
1627
+ | TypeScript Scanner | `src/scanner/pattern-scanner.ts` | TS AST parsing |
1628
+ | Gherkin Scanner | `src/scanner/gherkin-scanner.ts` | Feature file parsing |
1629
+ | Pipeline Factory | `src/generators/pipeline/build-pipeline.ts` | Shared 8-step pipeline for CLI consumers |
1630
+ | Business Rules Query | `src/api/rules-query.ts` | Rules domain query (from Gherkin Rule: blocks) |
1631
+ | Business Rules Codec | `src/renderable/codecs/business-rules.ts` | Business rules from Gherkin Rule: blocks |
1632
+ | Architecture Codec | `src/renderable/codecs/architecture.ts` | Architecture diagrams from annotations |
1633
+ | Taxonomy Codec | `src/renderable/codecs/taxonomy.ts` | Taxonomy reference documentation |
1634
+ | Validation Rules Codec | `src/renderable/codecs/validation-rules.ts` | Process Guard validation rules reference |
1635
+ | Decision Doc Generator | `src/generators/built-in/decision-doc-generator.ts` | ADR/PDR decision documents |
1636
+ | Shape Extractor | `src/extractor/shape-extractor.ts` | Shape extraction from TS |