@zigrivers/scaffold 3.28.0 → 3.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (669) hide show
  1. package/README.md +5 -1
  2. package/content/guides/.gitkeep +0 -0
  3. package/content/guides/index.html +1188 -0
  4. package/content/guides/mmr/.diagrams/diagram-0.svg +1 -0
  5. package/content/guides/mmr/.diagrams/manifest.json +3 -0
  6. package/content/guides/mmr/index.html +1728 -0
  7. package/content/guides/mmr/index.md +403 -0
  8. package/content/knowledge/VERSION +1 -0
  9. package/content/knowledge/backend/backend-api-design.md +8 -0
  10. package/content/knowledge/backend/backend-architecture.md +8 -0
  11. package/content/knowledge/backend/backend-async-patterns.md +7 -0
  12. package/content/knowledge/backend/backend-auth-patterns.md +9 -0
  13. package/content/knowledge/backend/backend-conventions.md +6 -0
  14. package/content/knowledge/backend/backend-data-modeling.md +7 -0
  15. package/content/knowledge/backend/backend-deployment.md +8 -0
  16. package/content/knowledge/backend/backend-dev-environment.md +5 -0
  17. package/content/knowledge/backend/backend-fintech-broker-integration.md +6 -0
  18. package/content/knowledge/backend/backend-fintech-compliance.md +10 -2
  19. package/content/knowledge/backend/backend-fintech-data-modeling.md +6 -0
  20. package/content/knowledge/backend/backend-fintech-ledger.md +6 -0
  21. package/content/knowledge/backend/backend-fintech-observability.md +6 -0
  22. package/content/knowledge/backend/backend-fintech-order-lifecycle.md +6 -0
  23. package/content/knowledge/backend/backend-fintech-risk-management.md +6 -0
  24. package/content/knowledge/backend/backend-fintech-testing.md +6 -0
  25. package/content/knowledge/backend/backend-observability.md +7 -0
  26. package/content/knowledge/backend/backend-project-structure.md +6 -0
  27. package/content/knowledge/backend/backend-requirements.md +6 -0
  28. package/content/knowledge/backend/backend-security.md +7 -0
  29. package/content/knowledge/backend/backend-testing.md +7 -0
  30. package/content/knowledge/backend/backend-worker-patterns.md +6 -0
  31. package/content/knowledge/browser-extension/browser-extension-architecture.md +6 -0
  32. package/content/knowledge/browser-extension/browser-extension-content-scripts.md +6 -0
  33. package/content/knowledge/browser-extension/browser-extension-conventions.md +6 -0
  34. package/content/knowledge/browser-extension/browser-extension-cross-browser.md +6 -0
  35. package/content/knowledge/browser-extension/browser-extension-dev-environment.md +6 -0
  36. package/content/knowledge/browser-extension/browser-extension-manifest.md +6 -0
  37. package/content/knowledge/browser-extension/browser-extension-project-structure.md +6 -0
  38. package/content/knowledge/browser-extension/browser-extension-requirements.md +6 -0
  39. package/content/knowledge/browser-extension/browser-extension-security.md +7 -0
  40. package/content/knowledge/browser-extension/browser-extension-service-workers.md +6 -0
  41. package/content/knowledge/browser-extension/browser-extension-store-submission.md +6 -0
  42. package/content/knowledge/browser-extension/browser-extension-testing.md +6 -0
  43. package/content/knowledge/cli/cli-architecture.md +4 -0
  44. package/content/knowledge/cli/cli-conventions.md +4 -0
  45. package/content/knowledge/cli/cli-dev-environment.md +5 -0
  46. package/content/knowledge/cli/cli-distribution-patterns.md +5 -0
  47. package/content/knowledge/cli/cli-interactivity-patterns.md +4 -0
  48. package/content/knowledge/cli/cli-output-patterns.md +4 -0
  49. package/content/knowledge/cli/cli-project-structure.md +4 -0
  50. package/content/knowledge/cli/cli-requirements.md +4 -0
  51. package/content/knowledge/cli/cli-shell-integration.md +4 -0
  52. package/content/knowledge/cli/cli-testing.md +4 -0
  53. package/content/knowledge/core/adr-craft.md +8 -0
  54. package/content/knowledge/core/ai-memory-management.md +6 -0
  55. package/content/knowledge/core/api-design.md +6 -0
  56. package/content/knowledge/core/automated-review-tooling.md +8 -0
  57. package/content/knowledge/core/claude-md-patterns.md +8 -0
  58. package/content/knowledge/core/coding-conventions.md +8 -0
  59. package/content/knowledge/core/database-design.md +8 -0
  60. package/content/knowledge/core/design-system-tokens.md +8 -0
  61. package/content/knowledge/core/dev-environment.md +4 -0
  62. package/content/knowledge/core/domain-modeling.md +6 -0
  63. package/content/knowledge/core/eval-craft.md +6 -0
  64. package/content/knowledge/core/git-workflow-patterns.md +8 -0
  65. package/content/knowledge/core/multi-model-research-dispatch.md +6 -0
  66. package/content/knowledge/core/multi-model-review-dispatch.md +6 -0
  67. package/content/knowledge/core/multi-service-api-contracts.md +5 -0
  68. package/content/knowledge/core/multi-service-architecture.md +5 -0
  69. package/content/knowledge/core/multi-service-auth.md +6 -0
  70. package/content/knowledge/core/multi-service-data-ownership.md +8 -0
  71. package/content/knowledge/core/multi-service-observability.md +8 -0
  72. package/content/knowledge/core/multi-service-resilience.md +5 -0
  73. package/content/knowledge/core/multi-service-task-decomposition.md +8 -0
  74. package/content/knowledge/core/multi-service-testing.md +5 -0
  75. package/content/knowledge/core/operations-runbook.md +8 -0
  76. package/content/knowledge/core/project-structure-patterns.md +4 -0
  77. package/content/knowledge/core/review-step-template.md +4 -0
  78. package/content/knowledge/core/security-best-practices.md +6 -0
  79. package/content/knowledge/core/system-architecture.md +6 -0
  80. package/content/knowledge/core/task-decomposition.md +5 -0
  81. package/content/knowledge/core/task-tracking.md +8 -0
  82. package/content/knowledge/core/tech-stack-selection.md +8 -0
  83. package/content/knowledge/core/test-skeleton-generation.md +4 -0
  84. package/content/knowledge/core/testing-strategy.md +8 -0
  85. package/content/knowledge/core/user-stories.md +8 -0
  86. package/content/knowledge/core/user-story-innovation.md +4 -0
  87. package/content/knowledge/core/ux-specification.md +5 -0
  88. package/content/knowledge/data-pipeline/data-pipeline-architecture.md +5 -0
  89. package/content/knowledge/data-pipeline/data-pipeline-batch-patterns.md +4 -0
  90. package/content/knowledge/data-pipeline/data-pipeline-conventions.md +4 -0
  91. package/content/knowledge/data-pipeline/data-pipeline-dev-environment.md +4 -0
  92. package/content/knowledge/data-pipeline/data-pipeline-orchestration.md +4 -0
  93. package/content/knowledge/data-pipeline/data-pipeline-project-structure.md +4 -0
  94. package/content/knowledge/data-pipeline/data-pipeline-quality.md +4 -0
  95. package/content/knowledge/data-pipeline/data-pipeline-requirements.md +4 -0
  96. package/content/knowledge/data-pipeline/data-pipeline-schema-management.md +4 -0
  97. package/content/knowledge/data-pipeline/data-pipeline-security.md +4 -0
  98. package/content/knowledge/data-pipeline/data-pipeline-streaming-patterns.md +4 -0
  99. package/content/knowledge/data-pipeline/data-pipeline-testing.md +4 -0
  100. package/content/knowledge/data-science/data-science-architecture.md +5 -0
  101. package/content/knowledge/data-science/data-science-conventions.md +6 -0
  102. package/content/knowledge/data-science/data-science-data-versioning.md +6 -0
  103. package/content/knowledge/data-science/data-science-dev-environment.md +6 -0
  104. package/content/knowledge/data-science/data-science-experiment-tracking.md +8 -0
  105. package/content/knowledge/data-science/data-science-model-evaluation.md +5 -0
  106. package/content/knowledge/data-science/data-science-notebook-discipline.md +5 -0
  107. package/content/knowledge/data-science/data-science-observability.md +6 -0
  108. package/content/knowledge/data-science/data-science-project-structure.md +5 -0
  109. package/content/knowledge/data-science/data-science-reproducibility.md +8 -0
  110. package/content/knowledge/data-science/data-science-requirements.md +5 -0
  111. package/content/knowledge/data-science/data-science-security.md +8 -0
  112. package/content/knowledge/data-science/data-science-testing.md +5 -0
  113. package/content/knowledge/execution/enhancement-workflow.md +4 -0
  114. package/content/knowledge/execution/multi-agent-coordination.md +12 -1
  115. package/content/knowledge/execution/task-claiming-strategy.md +4 -0
  116. package/content/knowledge/execution/tdd-execution-loop.md +5 -0
  117. package/content/knowledge/execution/worktree-management.md +5 -0
  118. package/content/knowledge/finalization/apply-fixes-and-freeze.md +4 -0
  119. package/content/knowledge/finalization/developer-onboarding.md +4 -0
  120. package/content/knowledge/finalization/implementation-playbook.md +4 -0
  121. package/content/knowledge/game/game-accessibility.md +4 -0
  122. package/content/knowledge/game/game-ai-patterns.md +4 -0
  123. package/content/knowledge/game/game-asset-pipeline.md +4 -0
  124. package/content/knowledge/game/game-audio-design.md +4 -0
  125. package/content/knowledge/game/game-binary-vcs-strategy.md +5 -0
  126. package/content/knowledge/game/game-design-document.md +4 -0
  127. package/content/knowledge/game/game-domain-patterns.md +4 -0
  128. package/content/knowledge/game/game-economy-design.md +4 -0
  129. package/content/knowledge/game/game-engine-selection.md +4 -0
  130. package/content/knowledge/game/game-ideation.md +4 -0
  131. package/content/knowledge/game/game-input-systems.md +4 -0
  132. package/content/knowledge/game/game-level-content-design.md +4 -0
  133. package/content/knowledge/game/game-liveops-analytics.md +4 -0
  134. package/content/knowledge/game/game-localization.md +4 -0
  135. package/content/knowledge/game/game-milestone-definitions.md +4 -0
  136. package/content/knowledge/game/game-modding-ugc.md +4 -0
  137. package/content/knowledge/game/game-narrative-design.md +4 -0
  138. package/content/knowledge/game/game-networking.md +4 -0
  139. package/content/knowledge/game/game-performance-budgeting.md +4 -0
  140. package/content/knowledge/game/game-platform-certification.md +6 -0
  141. package/content/knowledge/game/game-project-structure.md +4 -0
  142. package/content/knowledge/game/game-save-systems.md +4 -0
  143. package/content/knowledge/game/game-testing-strategy.md +4 -0
  144. package/content/knowledge/game/game-ui-patterns.md +4 -0
  145. package/content/knowledge/game/game-vr-ar-design.md +6 -0
  146. package/content/knowledge/library/library-api-design.md +4 -0
  147. package/content/knowledge/library/library-architecture.md +4 -0
  148. package/content/knowledge/library/library-bundling.md +4 -0
  149. package/content/knowledge/library/library-conventions.md +5 -0
  150. package/content/knowledge/library/library-dev-environment.md +4 -0
  151. package/content/knowledge/library/library-documentation.md +4 -0
  152. package/content/knowledge/library/library-project-structure.md +4 -0
  153. package/content/knowledge/library/library-requirements.md +4 -0
  154. package/content/knowledge/library/library-security.md +4 -0
  155. package/content/knowledge/library/library-testing.md +4 -0
  156. package/content/knowledge/library/library-type-definitions.md +4 -0
  157. package/content/knowledge/library/library-versioning.md +5 -0
  158. package/content/knowledge/ml/ml-architecture.md +4 -0
  159. package/content/knowledge/ml/ml-conventions.md +4 -0
  160. package/content/knowledge/ml/ml-dev-environment.md +4 -0
  161. package/content/knowledge/ml/ml-experiment-tracking.md +6 -0
  162. package/content/knowledge/ml/ml-model-evaluation.md +4 -0
  163. package/content/knowledge/ml/ml-observability.md +5 -0
  164. package/content/knowledge/ml/ml-project-structure.md +4 -0
  165. package/content/knowledge/ml/ml-requirements.md +4 -0
  166. package/content/knowledge/ml/ml-security.md +5 -0
  167. package/content/knowledge/ml/ml-serving-patterns.md +4 -0
  168. package/content/knowledge/ml/ml-testing.md +4 -0
  169. package/content/knowledge/ml/ml-training-patterns.md +4 -0
  170. package/content/knowledge/mobile-app/mobile-app-architecture.md +6 -0
  171. package/content/knowledge/mobile-app/mobile-app-conventions.md +6 -0
  172. package/content/knowledge/mobile-app/mobile-app-deployment.md +6 -0
  173. package/content/knowledge/mobile-app/mobile-app-dev-environment.md +6 -0
  174. package/content/knowledge/mobile-app/mobile-app-distribution.md +6 -0
  175. package/content/knowledge/mobile-app/mobile-app-observability.md +7 -0
  176. package/content/knowledge/mobile-app/mobile-app-offline-patterns.md +7 -0
  177. package/content/knowledge/mobile-app/mobile-app-project-structure.md +6 -0
  178. package/content/knowledge/mobile-app/mobile-app-push-notifications.md +6 -0
  179. package/content/knowledge/mobile-app/mobile-app-requirements.md +7 -0
  180. package/content/knowledge/mobile-app/mobile-app-security.md +8 -0
  181. package/content/knowledge/mobile-app/mobile-app-testing.md +6 -0
  182. package/content/knowledge/product/gap-analysis.md +4 -0
  183. package/content/knowledge/product/ideation-craft.md +4 -0
  184. package/content/knowledge/product/prd-craft.md +4 -0
  185. package/content/knowledge/product/prd-innovation.md +4 -0
  186. package/content/knowledge/product/vision-craft.md +4 -0
  187. package/content/knowledge/product/vision-innovation.md +4 -0
  188. package/content/knowledge/research/research-architecture.md +4 -0
  189. package/content/knowledge/research/research-conventions.md +6 -0
  190. package/content/knowledge/research/research-dev-environment.md +6 -0
  191. package/content/knowledge/research/research-experiment-loop.md +4 -0
  192. package/content/knowledge/research/research-experiment-tracking.md +6 -0
  193. package/content/knowledge/research/research-ml-architecture-search.md +4 -0
  194. package/content/knowledge/research/research-ml-evaluation.md +4 -0
  195. package/content/knowledge/research/research-ml-experiment-tracking.md +6 -0
  196. package/content/knowledge/research/research-ml-training-patterns.md +4 -0
  197. package/content/knowledge/research/research-observability.md +5 -0
  198. package/content/knowledge/research/research-overfitting-prevention.md +5 -0
  199. package/content/knowledge/research/research-project-structure.md +5 -0
  200. package/content/knowledge/research/research-quant-backtesting.md +4 -0
  201. package/content/knowledge/research/research-quant-market-data.md +4 -0
  202. package/content/knowledge/research/research-quant-metrics.md +4 -0
  203. package/content/knowledge/research/research-quant-requirements.md +4 -0
  204. package/content/knowledge/research/research-quant-risk.md +4 -0
  205. package/content/knowledge/research/research-quant-strategy-patterns.md +4 -0
  206. package/content/knowledge/research/research-requirements.md +5 -0
  207. package/content/knowledge/research/research-security.md +5 -0
  208. package/content/knowledge/research/research-sim-compute-management.md +4 -0
  209. package/content/knowledge/research/research-sim-engine-patterns.md +4 -0
  210. package/content/knowledge/research/research-sim-parameter-spaces.md +4 -0
  211. package/content/knowledge/research/research-sim-validation.md +4 -0
  212. package/content/knowledge/research/research-testing.md +5 -0
  213. package/content/knowledge/review/review-adr.md +6 -0
  214. package/content/knowledge/review/review-api-design.md +6 -0
  215. package/content/knowledge/review/review-art-bible.md +4 -0
  216. package/content/knowledge/review/review-database-design.md +5 -0
  217. package/content/knowledge/review/review-domain-modeling.md +5 -0
  218. package/content/knowledge/review/review-game-design.md +4 -0
  219. package/content/knowledge/review/review-game-economy.md +4 -0
  220. package/content/knowledge/review/review-game-ui.md +5 -0
  221. package/content/knowledge/review/review-implementation-tasks.md +5 -0
  222. package/content/knowledge/review/review-methodology.md +4 -0
  223. package/content/knowledge/review/review-netcode.md +4 -0
  224. package/content/knowledge/review/review-operations.md +6 -0
  225. package/content/knowledge/review/review-platform-cert.md +4 -0
  226. package/content/knowledge/review/review-prd.md +4 -0
  227. package/content/knowledge/review/review-security.md +7 -0
  228. package/content/knowledge/review/review-system-architecture.md +6 -0
  229. package/content/knowledge/review/review-testing-strategy.md +6 -0
  230. package/content/knowledge/review/review-user-stories.md +5 -0
  231. package/content/knowledge/review/review-ux-specification.md +6 -0
  232. package/content/knowledge/review/review-vision.md +4 -0
  233. package/content/knowledge/tools/post-implementation-review-methodology.md +4 -0
  234. package/content/knowledge/tools/release-management.md +5 -0
  235. package/content/knowledge/tools/session-analysis.md +4 -0
  236. package/content/knowledge/tools/version-strategy.md +4 -0
  237. package/content/knowledge/validation/critical-path-analysis.md +4 -0
  238. package/content/knowledge/validation/cross-phase-consistency.md +4 -0
  239. package/content/knowledge/validation/decision-completeness.md +5 -0
  240. package/content/knowledge/validation/dependency-validation.md +4 -0
  241. package/content/knowledge/validation/implementability-review.md +4 -0
  242. package/content/knowledge/validation/scope-management.md +4 -0
  243. package/content/knowledge/validation/traceability.md +4 -0
  244. package/content/knowledge/web-app/web-app-api-patterns.md +6 -0
  245. package/content/knowledge/web-app/web-app-architecture.md +6 -0
  246. package/content/knowledge/web-app/web-app-auth-patterns.md +9 -0
  247. package/content/knowledge/web-app/web-app-conventions.md +5 -0
  248. package/content/knowledge/web-app/web-app-data-patterns.md +6 -0
  249. package/content/knowledge/web-app/web-app-deployment-workflow.md +6 -0
  250. package/content/knowledge/web-app/web-app-deployment.md +6 -0
  251. package/content/knowledge/web-app/web-app-design-system.md +6 -0
  252. package/content/knowledge/web-app/web-app-dev-environment.md +6 -0
  253. package/content/knowledge/web-app/web-app-observability.md +6 -0
  254. package/content/knowledge/web-app/web-app-project-structure.md +5 -0
  255. package/content/knowledge/web-app/web-app-rendering-strategies.md +6 -0
  256. package/content/knowledge/web-app/web-app-requirements.md +6 -0
  257. package/content/knowledge/web-app/web-app-security.md +8 -0
  258. package/content/knowledge/web-app/web-app-session-patterns.md +7 -0
  259. package/content/knowledge/web-app/web-app-testing.md +6 -0
  260. package/content/knowledge/web-app/web-app-ux-patterns.md +6 -0
  261. package/content/knowledge/web3/web3-access-control.md +8 -0
  262. package/content/knowledge/web3/web3-architecture.md +7 -0
  263. package/content/knowledge/web3/web3-audit-workflow.md +7 -0
  264. package/content/knowledge/web3/web3-common-vulnerabilities.md +8 -0
  265. package/content/knowledge/web3/web3-conventions.md +6 -0
  266. package/content/knowledge/web3/web3-deployment-and-verification.md +7 -0
  267. package/content/knowledge/web3/web3-dev-environment.md +6 -0
  268. package/content/knowledge/web3/web3-gas-optimization.md +7 -0
  269. package/content/knowledge/web3/web3-oracles-and-external-data.md +7 -0
  270. package/content/knowledge/web3/web3-project-structure.md +6 -0
  271. package/content/knowledge/web3/web3-requirements.md +6 -0
  272. package/content/knowledge/web3/web3-security.md +8 -0
  273. package/content/knowledge/web3/web3-testing.md +6 -0
  274. package/content/knowledge/web3/web3-upgradeability.md +7 -0
  275. package/content/tools/knowledge-audit-entry.md +79 -0
  276. package/content/tools/review-code.md +41 -14
  277. package/content/tools/review-pr.md +32 -14
  278. package/dist/cli/commands/dashboard.d.ts +1 -1
  279. package/dist/cli/commands/dashboard.d.ts.map +1 -1
  280. package/dist/cli/commands/dashboard.js +10 -10
  281. package/dist/cli/commands/dashboard.js.map +1 -1
  282. package/dist/cli/commands/dashboard.test.js +1 -1
  283. package/dist/cli/commands/dashboard.test.js.map +1 -1
  284. package/dist/cli/commands/guides.d.ts +24 -0
  285. package/dist/cli/commands/guides.d.ts.map +1 -0
  286. package/dist/cli/commands/guides.js +103 -0
  287. package/dist/cli/commands/guides.js.map +1 -0
  288. package/dist/cli/commands/knowledge-freshness-anti-over-rewrite.d.ts +9 -0
  289. package/dist/cli/commands/knowledge-freshness-anti-over-rewrite.d.ts.map +1 -0
  290. package/dist/cli/commands/knowledge-freshness-anti-over-rewrite.js +112 -0
  291. package/dist/cli/commands/knowledge-freshness-anti-over-rewrite.js.map +1 -0
  292. package/dist/cli/commands/knowledge-freshness-audit-apply.d.ts +8 -0
  293. package/dist/cli/commands/knowledge-freshness-audit-apply.d.ts.map +1 -0
  294. package/dist/cli/commands/knowledge-freshness-audit-apply.js +96 -0
  295. package/dist/cli/commands/knowledge-freshness-audit-apply.js.map +1 -0
  296. package/dist/cli/commands/knowledge-freshness-audit-prefilter.d.ts +7 -0
  297. package/dist/cli/commands/knowledge-freshness-audit-prefilter.d.ts.map +1 -0
  298. package/dist/cli/commands/knowledge-freshness-audit-prefilter.js +42 -0
  299. package/dist/cli/commands/knowledge-freshness-audit-prefilter.js.map +1 -0
  300. package/dist/cli/commands/knowledge-freshness-audit-run-entry.d.ts +9 -0
  301. package/dist/cli/commands/knowledge-freshness-audit-run-entry.d.ts.map +1 -0
  302. package/dist/cli/commands/knowledge-freshness-audit-run-entry.js +63 -0
  303. package/dist/cli/commands/knowledge-freshness-audit-run-entry.js.map +1 -0
  304. package/dist/cli/commands/knowledge-freshness-bump-version.d.ts +8 -0
  305. package/dist/cli/commands/knowledge-freshness-bump-version.d.ts.map +1 -0
  306. package/dist/cli/commands/knowledge-freshness-bump-version.js +34 -0
  307. package/dist/cli/commands/knowledge-freshness-bump-version.js.map +1 -0
  308. package/dist/cli/commands/knowledge-freshness-deep-guidance-check.d.ts +7 -0
  309. package/dist/cli/commands/knowledge-freshness-deep-guidance-check.d.ts.map +1 -0
  310. package/dist/cli/commands/knowledge-freshness-deep-guidance-check.js +51 -0
  311. package/dist/cli/commands/knowledge-freshness-deep-guidance-check.js.map +1 -0
  312. package/dist/cli/commands/knowledge-freshness-link-check.d.ts +7 -0
  313. package/dist/cli/commands/knowledge-freshness-link-check.d.ts.map +1 -0
  314. package/dist/cli/commands/knowledge-freshness-link-check.js +57 -0
  315. package/dist/cli/commands/knowledge-freshness-link-check.js.map +1 -0
  316. package/dist/cli/commands/knowledge-freshness-lint-unsourced.d.ts +8 -0
  317. package/dist/cli/commands/knowledge-freshness-lint-unsourced.d.ts.map +1 -0
  318. package/dist/cli/commands/knowledge-freshness-lint-unsourced.js +58 -0
  319. package/dist/cli/commands/knowledge-freshness-lint-unsourced.js.map +1 -0
  320. package/dist/cli/commands/knowledge-freshness.d.ts +4 -0
  321. package/dist/cli/commands/knowledge-freshness.d.ts.map +1 -0
  322. package/dist/cli/commands/knowledge-freshness.js +25 -0
  323. package/dist/cli/commands/knowledge-freshness.js.map +1 -0
  324. package/dist/cli/commands/observe.d.ts +4 -0
  325. package/dist/cli/commands/observe.d.ts.map +1 -1
  326. package/dist/cli/commands/observe.js +13 -0
  327. package/dist/cli/commands/observe.js.map +1 -1
  328. package/dist/cli/commands/observe.test.js +46 -0
  329. package/dist/cli/commands/observe.test.js.map +1 -1
  330. package/dist/cli/commands/validate-knowledge.d.ts +4 -0
  331. package/dist/cli/commands/validate-knowledge.d.ts.map +1 -0
  332. package/dist/cli/commands/validate-knowledge.js +32 -0
  333. package/dist/cli/commands/validate-knowledge.js.map +1 -0
  334. package/dist/cli/index.d.ts.map +1 -1
  335. package/dist/cli/index.js +6 -0
  336. package/dist/cli/index.js.map +1 -1
  337. package/dist/core/adapters/claude-code.d.ts.map +1 -1
  338. package/dist/core/adapters/claude-code.js +6 -3
  339. package/dist/core/adapters/claude-code.js.map +1 -1
  340. package/dist/core/adapters/claude-code.test.js +45 -1
  341. package/dist/core/adapters/claude-code.test.js.map +1 -1
  342. package/dist/core/assembly/engine.d.ts.map +1 -1
  343. package/dist/core/assembly/engine.js +7 -3
  344. package/dist/core/assembly/engine.js.map +1 -1
  345. package/dist/core/assembly/engine.test.js +45 -1
  346. package/dist/core/assembly/engine.test.js.map +1 -1
  347. package/dist/core/assembly/gap-signal-tail.d.ts +18 -0
  348. package/dist/core/assembly/gap-signal-tail.d.ts.map +1 -0
  349. package/dist/core/assembly/gap-signal-tail.js +43 -0
  350. package/dist/core/assembly/gap-signal-tail.js.map +1 -0
  351. package/dist/core/assembly/gap-signal-tail.test.d.ts +2 -0
  352. package/dist/core/assembly/gap-signal-tail.test.d.ts.map +1 -0
  353. package/dist/core/assembly/gap-signal-tail.test.js +49 -0
  354. package/dist/core/assembly/gap-signal-tail.test.js.map +1 -0
  355. package/dist/core/assembly/knowledge-loader.d.ts +11 -0
  356. package/dist/core/assembly/knowledge-loader.d.ts.map +1 -1
  357. package/dist/core/assembly/knowledge-loader.js +54 -1
  358. package/dist/core/assembly/knowledge-loader.js.map +1 -1
  359. package/dist/core/assembly/knowledge-loader.test.js +73 -0
  360. package/dist/core/assembly/knowledge-loader.test.js.map +1 -1
  361. package/dist/guides/build.d.ts +12 -0
  362. package/dist/guides/build.d.ts.map +1 -0
  363. package/dist/guides/build.js +50 -0
  364. package/dist/guides/build.js.map +1 -0
  365. package/dist/guides/build.test.d.ts +2 -0
  366. package/dist/guides/build.test.d.ts.map +1 -0
  367. package/dist/guides/build.test.js +74 -0
  368. package/dist/guides/build.test.js.map +1 -0
  369. package/dist/guides/chrome.d.ts +24 -0
  370. package/dist/guides/chrome.d.ts.map +1 -0
  371. package/dist/guides/chrome.js +118 -0
  372. package/dist/guides/chrome.js.map +1 -0
  373. package/dist/guides/cli-guides.test.d.ts +2 -0
  374. package/dist/guides/cli-guides.test.d.ts.map +1 -0
  375. package/dist/guides/cli-guides.test.js +41 -0
  376. package/dist/guides/cli-guides.test.js.map +1 -0
  377. package/dist/guides/dashboard-theme.css +1073 -0
  378. package/dist/guides/directives-callout.test.d.ts +2 -0
  379. package/dist/guides/directives-callout.test.d.ts.map +1 -0
  380. package/dist/guides/directives-callout.test.js +22 -0
  381. package/dist/guides/directives-callout.test.js.map +1 -0
  382. package/dist/guides/directives-chart.test.d.ts +2 -0
  383. package/dist/guides/directives-chart.test.d.ts.map +1 -0
  384. package/dist/guides/directives-chart.test.js +25 -0
  385. package/dist/guides/directives-chart.test.js.map +1 -0
  386. package/dist/guides/directives-filter-table.test.d.ts +2 -0
  387. package/dist/guides/directives-filter-table.test.d.ts.map +1 -0
  388. package/dist/guides/directives-filter-table.test.js +22 -0
  389. package/dist/guides/directives-filter-table.test.js.map +1 -0
  390. package/dist/guides/directives-sev.test.d.ts +2 -0
  391. package/dist/guides/directives-sev.test.d.ts.map +1 -0
  392. package/dist/guides/directives-sev.test.js +15 -0
  393. package/dist/guides/directives-sev.test.js.map +1 -0
  394. package/dist/guides/directives-tabs.test.d.ts +2 -0
  395. package/dist/guides/directives-tabs.test.d.ts.map +1 -0
  396. package/dist/guides/directives-tabs.test.js +52 -0
  397. package/dist/guides/directives-tabs.test.js.map +1 -0
  398. package/dist/guides/directives.d.ts +7 -0
  399. package/dist/guides/directives.d.ts.map +1 -0
  400. package/dist/guides/directives.js +158 -0
  401. package/dist/guides/directives.js.map +1 -0
  402. package/dist/guides/fs-guides.test.d.ts +2 -0
  403. package/dist/guides/fs-guides.test.d.ts.map +1 -0
  404. package/dist/guides/fs-guides.test.js +14 -0
  405. package/dist/guides/fs-guides.test.js.map +1 -0
  406. package/dist/guides/index-page.d.ts +3 -0
  407. package/dist/guides/index-page.d.ts.map +1 -0
  408. package/dist/guides/index-page.js +14 -0
  409. package/dist/guides/index-page.js.map +1 -0
  410. package/dist/guides/lint.d.ts +6 -0
  411. package/dist/guides/lint.d.ts.map +1 -0
  412. package/dist/guides/lint.js +27 -0
  413. package/dist/guides/lint.js.map +1 -0
  414. package/dist/guides/lint.test.d.ts +2 -0
  415. package/dist/guides/lint.test.d.ts.map +1 -0
  416. package/dist/guides/lint.test.js +24 -0
  417. package/dist/guides/lint.test.js.map +1 -0
  418. package/dist/guides/loader.d.ts +4 -0
  419. package/dist/guides/loader.d.ts.map +1 -0
  420. package/dist/guides/loader.js +63 -0
  421. package/dist/guides/loader.js.map +1 -0
  422. package/dist/guides/loader.test.d.ts +2 -0
  423. package/dist/guides/loader.test.d.ts.map +1 -0
  424. package/dist/guides/loader.test.js +85 -0
  425. package/dist/guides/loader.test.js.map +1 -0
  426. package/dist/guides/mermaid-sanitize.test.d.ts +2 -0
  427. package/dist/guides/mermaid-sanitize.test.d.ts.map +1 -0
  428. package/dist/guides/mermaid-sanitize.test.js +57 -0
  429. package/dist/guides/mermaid-sanitize.test.js.map +1 -0
  430. package/dist/guides/mermaid.d.ts +18 -0
  431. package/dist/guides/mermaid.d.ts.map +1 -0
  432. package/dist/guides/mermaid.js +137 -0
  433. package/dist/guides/mermaid.js.map +1 -0
  434. package/dist/guides/mermaid.test.d.ts +2 -0
  435. package/dist/guides/mermaid.test.d.ts.map +1 -0
  436. package/dist/guides/mermaid.test.js +105 -0
  437. package/dist/guides/mermaid.test.js.map +1 -0
  438. package/dist/guides/render.d.ts +12 -0
  439. package/dist/guides/render.d.ts.map +1 -0
  440. package/dist/guides/render.js +58 -0
  441. package/dist/guides/render.js.map +1 -0
  442. package/dist/guides/render.test.d.ts +2 -0
  443. package/dist/guides/render.test.d.ts.map +1 -0
  444. package/dist/guides/render.test.js +46 -0
  445. package/dist/guides/render.test.js.map +1 -0
  446. package/dist/guides/sanitize.d.ts +3 -0
  447. package/dist/guides/sanitize.d.ts.map +1 -0
  448. package/dist/guides/sanitize.js +76 -0
  449. package/dist/guides/sanitize.js.map +1 -0
  450. package/dist/guides/sanitize.test.d.ts +2 -0
  451. package/dist/guides/sanitize.test.d.ts.map +1 -0
  452. package/dist/guides/sanitize.test.js +45 -0
  453. package/dist/guides/sanitize.test.js.map +1 -0
  454. package/dist/guides/template.d.ts +11 -0
  455. package/dist/guides/template.d.ts.map +1 -0
  456. package/dist/guides/template.js +38 -0
  457. package/dist/guides/template.js.map +1 -0
  458. package/dist/guides/template.test.d.ts +2 -0
  459. package/dist/guides/template.test.d.ts.map +1 -0
  460. package/dist/guides/template.test.js +41 -0
  461. package/dist/guides/template.test.js.map +1 -0
  462. package/dist/guides/types.d.ts +20 -0
  463. package/dist/guides/types.d.ts.map +1 -0
  464. package/dist/guides/types.js +2 -0
  465. package/dist/guides/types.js.map +1 -0
  466. package/dist/knowledge-freshness/audit-apply-pr.d.ts +64 -0
  467. package/dist/knowledge-freshness/audit-apply-pr.d.ts.map +1 -0
  468. package/dist/knowledge-freshness/audit-apply-pr.js +309 -0
  469. package/dist/knowledge-freshness/audit-apply-pr.js.map +1 -0
  470. package/dist/knowledge-freshness/audit-apply-pr.test.d.ts +2 -0
  471. package/dist/knowledge-freshness/audit-apply-pr.test.d.ts.map +1 -0
  472. package/dist/knowledge-freshness/audit-apply-pr.test.js +211 -0
  473. package/dist/knowledge-freshness/audit-apply-pr.test.js.map +1 -0
  474. package/dist/knowledge-freshness/audit-apply.d.ts +16 -0
  475. package/dist/knowledge-freshness/audit-apply.d.ts.map +1 -0
  476. package/dist/knowledge-freshness/audit-apply.js +193 -0
  477. package/dist/knowledge-freshness/audit-apply.js.map +1 -0
  478. package/dist/knowledge-freshness/audit-apply.test.d.ts +2 -0
  479. package/dist/knowledge-freshness/audit-apply.test.d.ts.map +1 -0
  480. package/dist/knowledge-freshness/audit-apply.test.js +482 -0
  481. package/dist/knowledge-freshness/audit-apply.test.js.map +1 -0
  482. package/dist/knowledge-freshness/audit-prefilter.d.ts +12 -0
  483. package/dist/knowledge-freshness/audit-prefilter.d.ts.map +1 -0
  484. package/dist/knowledge-freshness/audit-prefilter.js +74 -0
  485. package/dist/knowledge-freshness/audit-prefilter.js.map +1 -0
  486. package/dist/knowledge-freshness/audit-prefilter.test.d.ts +2 -0
  487. package/dist/knowledge-freshness/audit-prefilter.test.d.ts.map +1 -0
  488. package/dist/knowledge-freshness/audit-prefilter.test.js +78 -0
  489. package/dist/knowledge-freshness/audit-prefilter.test.js.map +1 -0
  490. package/dist/knowledge-freshness/audit-runner.d.ts +135 -0
  491. package/dist/knowledge-freshness/audit-runner.d.ts.map +1 -0
  492. package/dist/knowledge-freshness/audit-runner.js +168 -0
  493. package/dist/knowledge-freshness/audit-runner.js.map +1 -0
  494. package/dist/knowledge-freshness/audit-runner.test.d.ts +2 -0
  495. package/dist/knowledge-freshness/audit-runner.test.d.ts.map +1 -0
  496. package/dist/knowledge-freshness/audit-runner.test.js +130 -0
  497. package/dist/knowledge-freshness/audit-runner.test.js.map +1 -0
  498. package/dist/knowledge-freshness/bump-version.d.ts +24 -0
  499. package/dist/knowledge-freshness/bump-version.d.ts.map +1 -0
  500. package/dist/knowledge-freshness/bump-version.js +69 -0
  501. package/dist/knowledge-freshness/bump-version.js.map +1 -0
  502. package/dist/knowledge-freshness/bump-version.test.d.ts +2 -0
  503. package/dist/knowledge-freshness/bump-version.test.d.ts.map +1 -0
  504. package/dist/knowledge-freshness/bump-version.test.js +82 -0
  505. package/dist/knowledge-freshness/bump-version.test.js.map +1 -0
  506. package/dist/knowledge-freshness/gates/anti-over-rewrite.d.ts +86 -0
  507. package/dist/knowledge-freshness/gates/anti-over-rewrite.d.ts.map +1 -0
  508. package/dist/knowledge-freshness/gates/anti-over-rewrite.js +210 -0
  509. package/dist/knowledge-freshness/gates/anti-over-rewrite.js.map +1 -0
  510. package/dist/knowledge-freshness/gates/anti-over-rewrite.test.d.ts +2 -0
  511. package/dist/knowledge-freshness/gates/anti-over-rewrite.test.d.ts.map +1 -0
  512. package/dist/knowledge-freshness/gates/anti-over-rewrite.test.js +115 -0
  513. package/dist/knowledge-freshness/gates/anti-over-rewrite.test.js.map +1 -0
  514. package/dist/knowledge-freshness/gates/changed-files.d.ts +53 -0
  515. package/dist/knowledge-freshness/gates/changed-files.d.ts.map +1 -0
  516. package/dist/knowledge-freshness/gates/changed-files.js +128 -0
  517. package/dist/knowledge-freshness/gates/changed-files.js.map +1 -0
  518. package/dist/knowledge-freshness/gates/deep-guidance-check.d.ts +23 -0
  519. package/dist/knowledge-freshness/gates/deep-guidance-check.d.ts.map +1 -0
  520. package/dist/knowledge-freshness/gates/deep-guidance-check.js +27 -0
  521. package/dist/knowledge-freshness/gates/deep-guidance-check.js.map +1 -0
  522. package/dist/knowledge-freshness/gates/deep-guidance-check.test.d.ts +2 -0
  523. package/dist/knowledge-freshness/gates/deep-guidance-check.test.d.ts.map +1 -0
  524. package/dist/knowledge-freshness/gates/deep-guidance-check.test.js +23 -0
  525. package/dist/knowledge-freshness/gates/deep-guidance-check.test.js.map +1 -0
  526. package/dist/knowledge-freshness/gates/link-check.d.ts +55 -0
  527. package/dist/knowledge-freshness/gates/link-check.d.ts.map +1 -0
  528. package/dist/knowledge-freshness/gates/link-check.js +161 -0
  529. package/dist/knowledge-freshness/gates/link-check.js.map +1 -0
  530. package/dist/knowledge-freshness/gates/link-check.test.d.ts +2 -0
  531. package/dist/knowledge-freshness/gates/link-check.test.d.ts.map +1 -0
  532. package/dist/knowledge-freshness/gates/link-check.test.js +76 -0
  533. package/dist/knowledge-freshness/gates/link-check.test.js.map +1 -0
  534. package/dist/knowledge-freshness/gates/lint-unsourced.d.ts +40 -0
  535. package/dist/knowledge-freshness/gates/lint-unsourced.d.ts.map +1 -0
  536. package/dist/knowledge-freshness/gates/lint-unsourced.js +143 -0
  537. package/dist/knowledge-freshness/gates/lint-unsourced.js.map +1 -0
  538. package/dist/knowledge-freshness/gates/lint-unsourced.test.d.ts +2 -0
  539. package/dist/knowledge-freshness/gates/lint-unsourced.test.d.ts.map +1 -0
  540. package/dist/knowledge-freshness/gates/lint-unsourced.test.js +68 -0
  541. package/dist/knowledge-freshness/gates/lint-unsourced.test.js.map +1 -0
  542. package/dist/knowledge-freshness/gates/parse-entry.d.ts +25 -0
  543. package/dist/knowledge-freshness/gates/parse-entry.d.ts.map +1 -0
  544. package/dist/knowledge-freshness/gates/parse-entry.js +41 -0
  545. package/dist/knowledge-freshness/gates/parse-entry.js.map +1 -0
  546. package/dist/knowledge-freshness/gates/parse-entry.test.d.ts +2 -0
  547. package/dist/knowledge-freshness/gates/parse-entry.test.d.ts.map +1 -0
  548. package/dist/knowledge-freshness/gates/parse-entry.test.js +34 -0
  549. package/dist/knowledge-freshness/gates/parse-entry.test.js.map +1 -0
  550. package/dist/knowledge-freshness/providers/anthropic.d.ts +33 -0
  551. package/dist/knowledge-freshness/providers/anthropic.d.ts.map +1 -0
  552. package/dist/knowledge-freshness/providers/anthropic.js +36 -0
  553. package/dist/knowledge-freshness/providers/anthropic.js.map +1 -0
  554. package/dist/knowledge-freshness/providers/anthropic.test.d.ts +2 -0
  555. package/dist/knowledge-freshness/providers/anthropic.test.d.ts.map +1 -0
  556. package/dist/knowledge-freshness/providers/anthropic.test.js +32 -0
  557. package/dist/knowledge-freshness/providers/anthropic.test.js.map +1 -0
  558. package/dist/knowledge-freshness/providers/deepseek.d.ts +33 -0
  559. package/dist/knowledge-freshness/providers/deepseek.d.ts.map +1 -0
  560. package/dist/knowledge-freshness/providers/deepseek.js +157 -0
  561. package/dist/knowledge-freshness/providers/deepseek.js.map +1 -0
  562. package/dist/knowledge-freshness/providers/deepseek.test.d.ts +2 -0
  563. package/dist/knowledge-freshness/providers/deepseek.test.d.ts.map +1 -0
  564. package/dist/knowledge-freshness/providers/deepseek.test.js +142 -0
  565. package/dist/knowledge-freshness/providers/deepseek.test.js.map +1 -0
  566. package/dist/knowledge-freshness/providers/index.d.ts +41 -0
  567. package/dist/knowledge-freshness/providers/index.d.ts.map +1 -0
  568. package/dist/knowledge-freshness/providers/index.js +108 -0
  569. package/dist/knowledge-freshness/providers/index.js.map +1 -0
  570. package/dist/knowledge-freshness/providers/index.test.d.ts +2 -0
  571. package/dist/knowledge-freshness/providers/index.test.d.ts.map +1 -0
  572. package/dist/knowledge-freshness/providers/index.test.js +97 -0
  573. package/dist/knowledge-freshness/providers/index.test.js.map +1 -0
  574. package/dist/knowledge-freshness/source-hash.d.ts +39 -0
  575. package/dist/knowledge-freshness/source-hash.d.ts.map +1 -0
  576. package/dist/knowledge-freshness/source-hash.js +180 -0
  577. package/dist/knowledge-freshness/source-hash.js.map +1 -0
  578. package/dist/knowledge-freshness/source-hash.test.d.ts +2 -0
  579. package/dist/knowledge-freshness/source-hash.test.d.ts.map +1 -0
  580. package/dist/knowledge-freshness/source-hash.test.js +63 -0
  581. package/dist/knowledge-freshness/source-hash.test.js.map +1 -0
  582. package/dist/knowledge-freshness/source-url-validator.d.ts +57 -0
  583. package/dist/knowledge-freshness/source-url-validator.d.ts.map +1 -0
  584. package/dist/knowledge-freshness/source-url-validator.js +304 -0
  585. package/dist/knowledge-freshness/source-url-validator.js.map +1 -0
  586. package/dist/knowledge-freshness/source-url-validator.test.d.ts +2 -0
  587. package/dist/knowledge-freshness/source-url-validator.test.d.ts.map +1 -0
  588. package/dist/knowledge-freshness/source-url-validator.test.js +167 -0
  589. package/dist/knowledge-freshness/source-url-validator.test.js.map +1 -0
  590. package/dist/observability/checks/lens-i-knowledge-gaps.d.ts +3 -0
  591. package/dist/observability/checks/lens-i-knowledge-gaps.d.ts.map +1 -0
  592. package/dist/observability/checks/lens-i-knowledge-gaps.js +165 -0
  593. package/dist/observability/checks/lens-i-knowledge-gaps.js.map +1 -0
  594. package/dist/observability/checks/lens-i-knowledge-gaps.test.d.ts +2 -0
  595. package/dist/observability/checks/lens-i-knowledge-gaps.test.d.ts.map +1 -0
  596. package/dist/observability/checks/lens-i-knowledge-gaps.test.js +421 -0
  597. package/dist/observability/checks/lens-i-knowledge-gaps.test.js.map +1 -0
  598. package/dist/observability/checks/lens-i-lessons-scanner.d.ts +16 -0
  599. package/dist/observability/checks/lens-i-lessons-scanner.d.ts.map +1 -0
  600. package/dist/observability/checks/lens-i-lessons-scanner.js +106 -0
  601. package/dist/observability/checks/lens-i-lessons-scanner.js.map +1 -0
  602. package/dist/observability/checks/lens-i-lessons-scanner.test.d.ts +2 -0
  603. package/dist/observability/checks/lens-i-lessons-scanner.test.d.ts.map +1 -0
  604. package/dist/observability/checks/lens-i-lessons-scanner.test.js +174 -0
  605. package/dist/observability/checks/lens-i-lessons-scanner.test.js.map +1 -0
  606. package/dist/observability/engine/api.d.ts +4 -0
  607. package/dist/observability/engine/api.d.ts.map +1 -1
  608. package/dist/observability/engine/api.js +17 -1
  609. package/dist/observability/engine/api.js.map +1 -1
  610. package/dist/observability/engine/checks/observability-config.d.ts +4 -0
  611. package/dist/observability/engine/checks/observability-config.d.ts.map +1 -1
  612. package/dist/observability/engine/checks/observability-config.js +1 -0
  613. package/dist/observability/engine/checks/observability-config.js.map +1 -1
  614. package/dist/observability/engine/checks/registry.d.ts.map +1 -1
  615. package/dist/observability/engine/checks/registry.js +7 -0
  616. package/dist/observability/engine/checks/registry.js.map +1 -1
  617. package/dist/observability/engine/checks/registry.test.js +3 -2
  618. package/dist/observability/engine/checks/registry.test.js.map +1 -1
  619. package/dist/observability/engine/checks/runner.d.ts +30 -0
  620. package/dist/observability/engine/checks/runner.d.ts.map +1 -1
  621. package/dist/observability/engine/checks/runner.js +8 -1
  622. package/dist/observability/engine/checks/runner.js.map +1 -1
  623. package/dist/observability/engine/checks/runner.test.js +74 -0
  624. package/dist/observability/engine/checks/runner.test.js.map +1 -1
  625. package/dist/observability/engine/event-schemas.d.ts.map +1 -1
  626. package/dist/observability/engine/event-schemas.js +41 -3
  627. package/dist/observability/engine/event-schemas.js.map +1 -1
  628. package/dist/observability/engine/event-schemas.test.js +105 -0
  629. package/dist/observability/engine/event-schemas.test.js.map +1 -1
  630. package/dist/observability/engine/fix-flow.d.ts +7 -0
  631. package/dist/observability/engine/fix-flow.d.ts.map +1 -1
  632. package/dist/observability/engine/fix-flow.js +5 -3
  633. package/dist/observability/engine/fix-flow.js.map +1 -1
  634. package/dist/observability/engine/knowledge-root-integration.test.d.ts +2 -0
  635. package/dist/observability/engine/knowledge-root-integration.test.d.ts.map +1 -0
  636. package/dist/observability/engine/knowledge-root-integration.test.js +103 -0
  637. package/dist/observability/engine/knowledge-root-integration.test.js.map +1 -0
  638. package/dist/observability/engine/types.d.ts +20 -1
  639. package/dist/observability/engine/types.d.ts.map +1 -1
  640. package/dist/observability/engine/types.test.js +1 -1
  641. package/dist/observability/engine/types.test.js.map +1 -1
  642. package/dist/observability/knowledge-index.d.ts +145 -0
  643. package/dist/observability/knowledge-index.d.ts.map +1 -0
  644. package/dist/observability/knowledge-index.js +353 -0
  645. package/dist/observability/knowledge-index.js.map +1 -0
  646. package/dist/observability/knowledge-index.test.d.ts +2 -0
  647. package/dist/observability/knowledge-index.test.d.ts.map +1 -0
  648. package/dist/observability/knowledge-index.test.js +364 -0
  649. package/dist/observability/knowledge-index.test.js.map +1 -0
  650. package/dist/observability/renderers/markdown.d.ts.map +1 -1
  651. package/dist/observability/renderers/markdown.js +14 -0
  652. package/dist/observability/renderers/markdown.js.map +1 -1
  653. package/dist/observability/renderers/markdown.test.js +30 -0
  654. package/dist/observability/renderers/markdown.test.js.map +1 -1
  655. package/dist/types/assembly.d.ts +10 -0
  656. package/dist/types/assembly.d.ts.map +1 -1
  657. package/dist/utils/fs.d.ts +6 -0
  658. package/dist/utils/fs.d.ts.map +1 -1
  659. package/dist/utils/fs.js +13 -0
  660. package/dist/utils/fs.js.map +1 -1
  661. package/dist/validation/knowledge-frontmatter-validator.d.ts +15 -0
  662. package/dist/validation/knowledge-frontmatter-validator.d.ts.map +1 -0
  663. package/dist/validation/knowledge-frontmatter-validator.js +131 -0
  664. package/dist/validation/knowledge-frontmatter-validator.js.map +1 -0
  665. package/dist/validation/knowledge-frontmatter-validator.test.d.ts +2 -0
  666. package/dist/validation/knowledge-frontmatter-validator.test.d.ts.map +1 -0
  667. package/dist/validation/knowledge-frontmatter-validator.test.js +66 -0
  668. package/dist/validation/knowledge-frontmatter-validator.test.js.map +1 -0
  669. package/package.json +13 -4
@@ -0,0 +1,403 @@
1
+ ---
2
+ title: MMR Reference
3
+ topic: mmr
4
+ description: Multi-Model Review — independent AI reviewers, reconciliation, and verdict gating
5
+ category: tools
6
+ order: 10
7
+ ---
8
+
9
+ ## What MMR is
10
+
11
+ Multi-Model Review runs your changes past several **independent** AI code
12
+ reviewers ("channels"), then **reconciles** their findings into a single
13
+ de-duplicated list and a **verdict** that gates the work. No channel ever sees
14
+ another channel's output — agreement between them is what raises confidence, and
15
+ disagreement is what surfaces ambiguity.
16
+
17
+ ### The core idea in five moves
18
+
19
+ 1. **Resolve a diff** — from a PR, staged changes, a branch range, or a piped diff.
20
+ 2. **Dispatch channels** — each channel is a separate subprocess given the same
21
+ prompt, run in parallel and isolated.
22
+ 3. **Parse** — each channel's raw output is parsed into a common `Finding` shape.
23
+ 4. **Reconcile** — findings are grouped by a stable key, de-duplicated, and
24
+ scored for agreement and confidence.
25
+ 5. **Verdict** — a severity gate yields `pass`, `degraded-pass`, `blocked`, or
26
+ `needs-user-decision`.
27
+
28
+ :::callout{type=tip}
29
+ **Two layers, one mental model.** The `mmr` CLI is the engine that dispatches
30
+ the built-in channels and computes the verdict. The `scaffold run review-pr` /
31
+ `review-code` wrappers sit on top: they add a Superpowers code-reviewer *agent*
32
+ channel via `mmr reconcile`, handle auth recovery, and drive the fix loop.
33
+ :::
34
+
35
+ ## End-to-end flow
36
+
37
+ A single `mmr review … --sync` run walks the whole pipeline. Channels fan out in
38
+ parallel; everything converges at reconciliation.
39
+
40
+ ```mermaid
41
+ flowchart LR
42
+ R["Resolve diff
43
+ (--pr / --staged
44
+ --diff / --base)"] --> B["Build prompt
45
+ (+ focus, criteria)"]
46
+ B --> C1["codex"]
47
+ B --> C2["gemini"]
48
+ B --> C3["claude"]
49
+ B --> C4["grok"]
50
+ B --> C5["doc-conformance
51
+ (opt-in)"]
52
+ C1 --> P["Parse
53
+ → Finding"]
54
+ C2 --> P
55
+ C3 --> P
56
+ C4 --> P
57
+ C5 --> P
58
+ P --> RC["Reconcile
59
+ (dedupe + score)"]
60
+ RC --> V["Verdict
61
+ (gate + exit code)"]
62
+ ```
63
+
64
+ Compensating passes (see *Degraded mode* below) are injected *after* the first
65
+ dispatch round for any channel that was unavailable, then folded back into the
66
+ same reconcile step.
67
+
68
+ ## The `mmr review` command
69
+
70
+ One command, several input modes. Pick the flag that matches your target;
71
+ everything else is control and output options. Type in the box to filter the
72
+ table.
73
+
74
+ :::filter-table
75
+ | Flag | Group | Description |
76
+ | --- | --- | --- |
77
+ | `--diff <path\|->` | input | Read a unified diff from a file, or `-` for stdin. Highest-priority input mode. |
78
+ | `--pr <n>` | input | Fetch the PR diff via `gh pr diff`. |
79
+ | `--staged` | input | Review staged changes (`git diff --cached`). |
80
+ | `--base <ref> [--head <ref>]` | input | Review a branch range (`git diff base...head`, head defaults to HEAD). |
81
+ | *(no input flag)* | input | Falls back to unstaged working-tree changes (`git diff`). |
82
+ | `--focus <text>` | control | Free-text focus areas appended to every channel prompt. |
83
+ | `--fix-threshold <P0\|P1\|P2\|P3>` | control | Severity gate. Findings at or above this block. Default P2 (from `.mmr.yaml`). |
84
+ | `--channels <names…>` | control | Run only these channels, overriding config defaults. Abstract channels are filtered out. |
85
+ | `--timeout <seconds>` | control | Per-channel timeout override. |
86
+ | `--template <name>` | control | Use a named review-criteria template from config. |
87
+ | `--format <json\|text\|markdown>` | output | Output format. Default `json`. |
88
+ | `--sync` | mode | Run the full pipeline (dispatch → parse → reconcile → verdict) and return results. Without it, dispatch is fire-and-forget. |
89
+ | `--dry-run` | mode | Resolve the diff and assemble the prompt without dispatching any channel. |
90
+ | `--session <id>` | rounds | Link this run into a multi-round session (`[A-Za-z0-9_-]`). |
91
+ | `--round <n>` | rounds | 1-based round counter within a session. |
92
+ | `--max-rounds <n>` | rounds | Hard cap on rounds. Defaults to 5 when `--session` is set without it. |
93
+ | `--accept-new-acks` | trust | Trust acknowledgment files newly introduced by the diff. |
94
+ | `--trust-project-acks` | trust | Trust working-tree project acks in non-Git / untrusted modes. |
95
+ | `--trust-project-config` | trust | Trust working-tree `.mmr.yaml` in untrusted modes. |
96
+ | `--config-base-ref <ref>` | trust | Load `.mmr.yaml` and acks from a trusted Git ref instead of HEAD. |
97
+ :::
98
+
99
+ ### Copy-paste commands by target
100
+
101
+ ```bash
102
+ # PR review (full pipeline, JSON out)
103
+ mmr review --pr 123 --sync --format json
104
+
105
+ # Staged changes before commit
106
+ mmr review --staged --sync --format json
107
+
108
+ # All tracked uncommitted changes (no untracked)
109
+ git diff HEAD | mmr review --diff - --sync --format json
110
+
111
+ # Branch range
112
+ mmr review --base main --head "$BRANCH" --sync --format json
113
+
114
+ # A single file's current contents, as an "all-added" diff
115
+ (diff -u /dev/null path/to/file.ts || true) | mmr review --diff - --sync --format json
116
+
117
+ # Only specific channels (e.g. just grok + claude)
118
+ mmr review --pr 123 --channels grok claude --sync --format json
119
+ ```
120
+
121
+ ## Other subcommands
122
+
123
+ | Command | Purpose |
124
+ | --- | --- |
125
+ | `mmr reconcile <job-id> --channel <name> --input <data>` | Inject an external channel's findings (e.g. the Superpowers agent) into an existing job and re-run the results pipeline. Input is a file, `-` for stdin, or inline JSON. |
126
+ | `mmr status <job-id>` | Per-channel status and elapsed time. Exit 0 = all complete, 1 = running, 2 = a channel failed, 5 = not found. |
127
+ | `mmr results <job-id> [--raw]` | Re-run parse → reconcile → format on a completed job. Exit code reflects the verdict. |
128
+ | `mmr jobs <list\|prune>` | List jobs, or prune old ones per `job_retention_days`. |
129
+ | `mmr sessions <start\|list\|show\|end> <id>` | Manage multi-round review sessions (stored under `~/.mmr/sessions/`). |
130
+ | `mmr config <init\|show\|validate…>` | Scaffold and inspect `.mmr.yaml` (including OSS-runtime example blocks). |
131
+ | `mmr ack <add\|list\|rm\|prune>` | Sticky acknowledgments — silence a finding by its stable key so it stops blocking across rounds. |
132
+
133
+ ```bash
134
+ # Capture a job_id from a review, then fold in an agent channel:
135
+ mmr reconcile "$JOB_ID" --channel superpowers --input findings.json
136
+ ```
137
+
138
+ ## Channel architecture
139
+
140
+ A channel is **pure config data** — there is no per-channel code. The dispatcher
141
+ runs whatever `command` the channel defines, hands it the prompt, and parses its
142
+ output with the configured parser. Adding a channel is normally a `.mmr.yaml`
143
+ edit, not a code change.
144
+
145
+ ### The channel config shape
146
+
147
+ ```yaml
148
+ channels:
149
+ <name>:
150
+ enabled: true # run by default?
151
+ command: "codex exec" # whitespace-split, spawned WITHOUT a shell
152
+ flags: ["--ephemeral"] # appended after the command tokens
153
+ env: { KEY: value } # extra environment
154
+ prompt_delivery: stdin # stdin (default) | prompt-file
155
+ prompt_wrapper: "{{prompt}}" # template wrapped around the prompt
156
+ output_parser: default # default | gemini | doc-conformance | {kind:…}
157
+ stderr: capture # capture | suppress | passthrough
158
+ timeout: 300 # seconds (falls back to defaults.timeout)
159
+ auth: { check, timeout, failure_exit_codes, recovery }
160
+ extends: base-channel # inherit from another channel (≤4 levels)
161
+ abstract: false # template-only; never dispatched directly
162
+ ```
163
+
164
+ ### Built-in channels
165
+
166
+ :::callout{type=info}
167
+ **Why grok is different.** codex/gemini/claude all read the prompt from `stdin`.
168
+ Grok's CLI requires the prompt as an argument and ignores stdin, so its channel
169
+ uses `prompt_delivery: prompt-file` — the dispatcher writes the prompt to a temp
170
+ file and passes its path via the `{{prompt_file}}` placeholder. Grok wraps its
171
+ reply in a JSON `.text` field, which the parser unwraps before extracting
172
+ findings.
173
+ :::
174
+
175
+ ::::tabs
176
+
177
+ :::tab{title="Compare"}
178
+ | Channel | Default | Strength | Prompt delivery | Parser |
179
+ | --- | --- | --- | --- | --- |
180
+ | `codex` | enabled | Correctness, security, API contracts | stdin | `default` |
181
+ | `gemini` | enabled | Architecture, broad-context reasoning | stdin | `gemini` |
182
+ | `claude` | enabled | Plan alignment, code quality, testing | stdin | `default` |
183
+ | `grok` | enabled | Independent second opinion (xAI; proprietary) | **prompt-file** | `unwrap $.text → default` |
184
+ | `doc-conformance` | opt-in | PRD/stories/standards conformance (LLM-graded) | stdin | `doc-conformance` |
185
+ :::
186
+
187
+ :::tab{title="codex"}
188
+ ```yaml
189
+ command: codex exec
190
+ flags: [--skip-git-repo-check, -s, read-only, --ephemeral]
191
+ auth.check: codex login status # local file check (fast, 5s)
192
+ recovery: codex login
193
+ output_parser: default
194
+ stderr: suppress
195
+ ```
196
+ :::
197
+
198
+ :::tab{title="gemini"}
199
+ ```yaml
200
+ command: gemini # NO -p: gemini reads stdin natively
201
+ flags: [--output-format, json]
202
+ env: { NO_BROWSER: "true" }
203
+ auth.check: NO_BROWSER=true gemini -p "respond with ok" -o json # LLM round-trip, 20s
204
+ recovery: gemini -p "hello"
205
+ output_parser: gemini # unwraps { "response": "…" }
206
+ timeout: 360
207
+ ```
208
+ :::
209
+
210
+ :::tab{title="claude"}
211
+ ```yaml
212
+ command: claude -p
213
+ flags: [--output-format, json]
214
+ auth.check: claude -p "respond with ok" # LLM round-trip, 20s
215
+ recovery: claude login
216
+ output_parser: default
217
+ ```
218
+ :::
219
+
220
+ :::tab{title="grok"}
221
+ ```yaml
222
+ command: grok
223
+ prompt_delivery: prompt-file
224
+ flags: [--prompt-file, "{{prompt_file}}", --output-format, json]
225
+ auth.check: grok models # lists models / login state (no round-trip)
226
+ recovery: grok login
227
+ output_parser: { kind: unwrap-jsonpath, wrap: "$.text", then: default }
228
+ ```
229
+
230
+ Grok is proprietary (xAI), not open-source — it joins the standard set
231
+ mechanically as a 4th CLI channel. Disable it with
232
+ `channels_disabled: ["grok"]`.
233
+ :::
234
+
235
+ :::tab{title="doc-conformance"}
236
+ ```yaml
237
+ enabled: false # opt-in: runs up to 3 LLM calls (~3 min)
238
+ command: scaffold observe audit --profile=full --scope=all --output-mode=mmr-findings
239
+ output_parser: doc-conformance # expects a JSON array of findings
240
+ timeout: 240
241
+ ```
242
+
243
+ Enable with `--channels doc-conformance` or in `.mmr.yaml`.
244
+ :::
245
+
246
+ ::::
247
+
248
+ ### The dispatcher
249
+
250
+ - **Isolation.** Each channel is spawned as its own detached subprocess writing
251
+ to its own output file; channels run in parallel and never share output.
252
+ - **Prompt delivery.** `stdin` mode pipes the prompt and closes stdin (avoids
253
+ `E2BIG` on large diffs). `prompt-file` mode writes the prompt to
254
+ `<channel>.prompt.txt` and substitutes `{{prompt_file}}` in the flags.
255
+ - **Timeout.** A per-channel timer SIGKILLs the whole process group and marks
256
+ the channel `timeout`.
257
+ - **Command parsing.** `command` is split on whitespace and spawned without a
258
+ shell — so quoting/pipelines in `command` won't work; that's exactly why
259
+ arg-only CLIs like grok use `prompt_delivery` rather than a shell shim.
260
+
261
+ **Adding a new channel — where it's clean vs. hard-coded.** *Clean (config
262
+ only):* a new subprocess channel (`command` + `flags` + `auth` +
263
+ `output_parser`), output reshaping via the `unwrap-jsonpath` or
264
+ `regex-findings` parser kinds, disabling/timeout overrides, and pointing the
265
+ compensator at a different channel — all pure `.mmr.yaml`. *Needs code:* a
266
+ brand-new *named* parser must be registered in `core/parser.ts`; HTTP-endpoint
267
+ channels (`kind: http`) need the planned http-dispatcher; and the
268
+ `COMPENSATING_FOCUS` map carries per-channel focus text (falls back gracefully
269
+ if absent).
270
+
271
+ ## Scaffold wrappers
272
+
273
+ Direct `mmr review` runs the built-in CLI channels. The `scaffold run` wrappers
274
+ add orchestration on top.
275
+
276
+ | Wrapper | Target | Adds on top of `mmr review` |
277
+ | --- | --- | --- |
278
+ | `scaffold run review-pr` | A PR (`--pr`) | Auth checks, the Superpowers code-reviewer *agent* channel via `mmr reconcile`, consensus/verdict handling, the 3-strike-per-finding round bookkeeping, optional Beads issue bridge. |
279
+ | `scaffold run review-code` | Local pre-push | Synthesizes a "delivery candidate" diff (committed + staged + unstaged), gathers file & standards context for the file-blind CLIs, then the same agent channel + round bounding. *Untracked files aren't covered.* |
280
+ | `scaffold run post-implementation-review` | Full codebase | Two phases — systemic review + per-story functional review via parallel agents — with its own report under `docs/reviews/`. (See its own doc for the exact channel layout.) |
281
+
282
+ :::callout{type=warning}
283
+ **Foreground only.** The wrappers' manual fallback runs Codex, Gemini, Claude,
284
+ and Grok as foreground Bash calls when the `mmr` CLI isn't available — never in
285
+ the background. Background execution produces empty output.
286
+ :::
287
+
288
+ ## Findings, reconciliation & verdicts
289
+
290
+ ### The Finding shape
291
+
292
+ ```json
293
+ {
294
+ "id": "F-001",
295
+ "category": "security",
296
+ "severity": "P0",
297
+ "location": "src/auth.ts:42",
298
+ "description": "…",
299
+ "suggestion": "…"
300
+ }
301
+ ```
302
+
303
+ After reconciliation, each finding also carries `confidence`, `sources[]`,
304
+ `agreement`, a stable `finding_key`, a `description_shingle` (for fuzzy
305
+ cross-round matching), and `acknowledged`.
306
+
307
+ ### Stable identity (`finding_key`)
308
+
309
+ ```text
310
+ finding_key = sha1( normLocation | category | sha1(normDescription) | sha1(normSuggestion) )
311
+ ```
312
+
313
+ Line numbers are stripped from the location and severity is *excluded*, so the
314
+ same issue at P1 vs P2 collapses to one key. A character-5-gram shingle backs a
315
+ Jaccard ≥ 0.7 fuzzy match when wording drifts between rounds.
316
+
317
+ ### Agreement & confidence
318
+
319
+ | Sources | Severity | Agreement | Confidence |
320
+ | --- | --- | --- | --- |
321
+ | 2+ | same | consensus | high |
322
+ | 2+ | differ | majority | medium |
323
+ | 1 | :sev[P0]{level=p0} | unique | high |
324
+ | 1 | `compensating-*` | unique | low |
325
+ | 1 | other | unique | medium |
326
+
327
+ ### The gate & the four verdicts
328
+
329
+ The gate **passes** when every unacknowledged finding is *below* the
330
+ `fix_threshold` (default :sev[P2]{level=p2}). Severity tiers run
331
+ :sev[P0]{level=p0} (highest) → :sev[P1]{level=p1} → :sev[P2]{level=p2} →
332
+ :sev[P3]{level=p3} (lowest).
333
+
334
+ | Verdict | Condition | Exit |
335
+ | --- | --- | --- |
336
+ | `pass` | Gate passed, all channels completed | 0 |
337
+ | `degraded-pass` | Gate passed, but some channels failed / timed out / weren't installed | 0 |
338
+ | `blocked` | An unacknowledged finding sits at or above the threshold | 2 |
339
+ | `needs-user-decision` | No channel completed (can't make a determination) | 3 |
340
+
341
+ :::callout{type=warning}
342
+ Proceed only on **pass** or **degraded-pass**. On **blocked** or
343
+ **needs-user-decision**, surface the verdict and findings — don't merge
344
+ automatically.
345
+ :::
346
+
347
+ ## Degraded mode, compensation & auth
348
+
349
+ A channel is "degraded" when it's `not_installed` (no binary), `auth_failed`,
350
+ `timeout`, `skipped`, or `failed`. The review doesn't stop — it compensates and
351
+ tells you how to recover.
352
+
353
+ - **Compensating pass.** For each degraded external channel, a `claude -p` pass
354
+ runs with that channel's focus area, labeled e.g.
355
+ `[compensating: Grok-equivalent]`. These findings are single-source, low
356
+ confidence. The compensator channel is configurable via
357
+ `defaults.compensator.channel`.
358
+ - **Auth recovery** is surfaced, never silent.
359
+
360
+ | Channel | Auth check | Recovery |
361
+ | --- | --- | --- |
362
+ | `codex` | `codex login status` | `codex login` |
363
+ | `gemini` | `gemini -p "respond with ok"` | `gemini -p "hello"` |
364
+ | `claude` | `claude -p "respond with ok"` | `claude login` |
365
+ | `grok` | `grok models` | `grok login` |
366
+
367
+ ## Configuration (`.mmr.yaml`)
368
+
369
+ Config is layered: built-in defaults → `~/.mmr/config.yaml` → project
370
+ `.mmr.yaml` → CLI flags. Arrays replace; objects deep-merge.
371
+
372
+ ```yaml
373
+ version: 1
374
+ defaults:
375
+ fix_threshold: P2 # gate severity
376
+ timeout: 300 # default per-channel timeout (s)
377
+ parallel: true
378
+ channels_disabled: ["grok"] # opt OUT of a built-in (e.g. no grok installed)
379
+ channels:
380
+ doc-conformance:
381
+ enabled: true # opt IN to a default-off channel
382
+ # Bring-your-own model via channel inheritance:
383
+ qwen-local:
384
+ command: ollama run
385
+ flags: ["qwen2.5-coder:32b", "--format", "json"]
386
+ output_parser: { kind: unwrap-jsonpath, wrap: "$.response", then: default }
387
+ auth: { check: "ollama list", timeout: 5, failure_exit_codes: [1], recovery: "ollama serve" }
388
+ ```
389
+
390
+ - `channels_disabled` — skip these built-ins in the default dispatch (ignored
391
+ when you pass an explicit `--channels` list).
392
+ - `enabled: false` — per-channel off switch (how `doc-conformance` ships).
393
+ - `extends` — inherit from another channel (≤ 4 levels, cycle-checked); child
394
+ fields override the parent.
395
+ - `fix_threshold` — project gate; override per-run with `--fix-threshold`.
396
+
397
+ :::callout{type=danger}
398
+ **Trust boundary.** When reviewing a diff, project `.mmr.yaml` and acks should
399
+ be read from the diff's *base ref*, not the working tree — otherwise a PR could
400
+ add a channel that exfiltrates secrets or self-acknowledge its own findings. Use
401
+ `--config-base-ref` / the `--trust-project-*` flags to control this in untrusted
402
+ (e.g. CI) contexts.
403
+ :::
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -2,6 +2,14 @@
2
2
  name: backend-api-design
3
3
  description: REST maturity levels, GraphQL schema-first design, gRPC protobuf conventions, tRPC router patterns, API versioning strategies, pagination, and filtering
4
4
  topics: [backend, api-design, rest, graphql, grpc, trpc, versioning, pagination]
5
+ volatility: evolving
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://spec.openapis.org/oas/latest.html
10
+ - url: https://spec.graphql.org/
11
+ - url: https://www.rfc-editor.org/rfc/rfc9110.html
12
+ - url: https://martinfowler.com/articles/richardsonMaturityModel.html
5
13
  ---
6
14
 
7
15
  API design is a long-lived contract. Every structural decision — URL shape, error format, pagination scheme, versioning strategy — is expensive to change after consumers depend on it. Design APIs from the consumer's perspective first. The best API is one where new developers can predict the shape of an endpoint they have never seen before, because every other endpoint follows the same patterns.
@@ -2,6 +2,14 @@
2
2
  name: backend-architecture
3
3
  description: Monolith vs microservices decision framework, layered architecture patterns, CQRS, event sourcing, hexagonal architecture, and service mesh considerations
4
4
  topics: [backend, architecture, microservices, monolith, cqrs, event-sourcing, hexagonal, clean-architecture]
5
+ volatility: evolving
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://microservices.io/patterns/
10
+ - url: https://martinfowler.com/bliki/CQRS.html
11
+ - url: https://martinfowler.com/eaaDev/EventSourcing.html
12
+ - url: https://martinfowler.com/bliki/MonolithFirst.html
5
13
  ---
6
14
 
7
15
  Backend architecture is the set of structural decisions that determine how the system scales, how teams work independently, and how expensive future changes will be. The single most common backend architecture mistake is choosing microservices before the problem demands them. Start with the simplest architecture that solves the current problem, and evolve to complexity only when specific pain points — not hypothetical future ones — force the change.
@@ -2,6 +2,13 @@
2
2
  name: backend-async-patterns
3
3
  description: Message queue patterns, event-driven architecture, saga patterns, retry strategies, and idempotency keys
4
4
  topics: [backend, async, message-queues, event-driven, saga, retry, idempotency, cqrs]
5
+ volatility: evolving
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://microservices.io/patterns/data/saga.html
10
+ - url: https://martinfowler.com/articles/patterns-of-distributed-systems/
11
+ - url: https://sre.google/sre-book/handling-overload/
5
12
  ---
6
13
 
7
14
  Asynchronous patterns decouple services in time and space, enabling systems to absorb load spikes, survive partial failures, and scale independently — but they introduce delivery guarantees and consistency tradeoffs that must be designed for explicitly from the start.
@@ -2,6 +2,15 @@
2
2
  name: backend-auth-patterns
3
3
  description: JWT lifecycle, OAuth2 authorization code flow, API key management, and service-to-service authentication
4
4
  topics: [backend, auth, jwt, oauth2, api-keys, mtls, security]
5
+ volatility: evolving
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://www.rfc-editor.org/rfc/rfc6749
10
+ - url: https://www.rfc-editor.org/rfc/rfc7519
11
+ - url: https://www.rfc-editor.org/rfc/rfc7636
12
+ - url: https://openid.net/specs/openid-connect-core-1_0.html
13
+ - url: https://owasp.org/www-project-api-security/
5
14
  ---
6
15
 
7
16
  Authentication and authorization are the first line of defense for any backend service — mistakes here compromise the entire system, making it essential to use proven patterns like JWTs with rotation, OAuth2 with PKCE, and workload identity from the start.
@@ -2,6 +2,12 @@
2
2
  name: backend-conventions
3
3
  description: Service and handler naming conventions, structured error handling patterns, structured logging with correlation IDs, and file organization standards for backend codebases
4
4
  topics: [backend, conventions, error-handling, logging, naming, file-organization]
5
+ volatility: stable
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://google.github.io/styleguide/
10
+ - url: https://martinfowler.com/tags/clean%20code.html
5
11
  ---
6
12
 
7
13
  Consistent conventions in a backend codebase reduce cognitive load, make code reviewable at a glance, and prevent entire classes of bugs. Naming, error handling, and logging are the three highest-leverage areas — they touch every layer of the stack and every engineer on the team. Establish these conventions before the first PR, codify them in linting rules where possible, and treat violations as blocking review comments.
@@ -2,6 +2,13 @@
2
2
  name: backend-data-modeling
3
3
  description: Relational vs document modeling tradeoffs, migration strategies, connection pooling, ORM vs query builder tradeoffs, multi-tenancy patterns, and eventual consistency
4
4
  topics: [backend, data-modeling, database, migrations, orm, multi-tenancy, eventual-consistency, connection-pooling]
5
+ volatility: stable
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://www.postgresql.org/docs/current/
10
+ - url: https://martinfowler.com/articles/evodb.html
11
+ - url: https://microservices.io/patterns/data/database-per-service.html
5
12
  ---
6
13
 
7
14
  Data modeling decisions have the highest reversal cost of any backend choice. A schema design that seemed reasonable at launch can become an operational crisis at scale — queries that worked at 10,000 rows fail at 100 million. The goal is to match the data model to the access patterns of the application, not to normalize for its own sake or to denormalize prematurely. Design the schema with the queries in mind from day one.
@@ -2,6 +2,14 @@
2
2
  name: backend-deployment
3
3
  description: Containerization best practices, serverless patterns, health check endpoints, graceful shutdown, and deployment strategies
4
4
  topics: [backend, deployment, docker, serverless, health-checks, graceful-shutdown, blue-green, canary]
5
+ volatility: evolving
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://martinfowler.com/bliki/BlueGreenDeployment.html
10
+ - url: https://martinfowler.com/bliki/CanaryRelease.html
11
+ - url: https://sre.google/sre-book/release-engineering/
12
+ - url: https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/welcome.html
5
13
  ---
6
14
 
7
15
  Deployment reliability is a multiplier on every other engineering investment — a well-written service that deploys poorly will cause more incidents than a mediocre service that deploys safely and rolls back cleanly.
@@ -2,6 +2,11 @@
2
2
  name: backend-dev-environment
3
3
  description: Docker Compose for local databases and queues, database seeding and migration scripts, API testing tools, environment variable management, and local SSL setup
4
4
  topics: [backend, dev-environment, docker, migrations, testing, environment-variables]
5
+ volatility: evolving
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://www.postgresql.org/docs/current/
5
10
  ---
6
11
 
7
12
  A backend development environment that requires manual setup steps is a productivity drain and an onboarding failure. The standard should be: clone the repo, run one command, and have a fully functional local environment in under five minutes. Docker Compose is the primary tool for achieving this — it pins the exact versions of every external dependency and makes the environment reproducible across all developer machines.
@@ -2,6 +2,12 @@
2
2
  name: backend-fintech-broker-integration
3
3
  description: Multi-broker adapter pattern; credential rotation; error harmonization; rate-limit management; broker-side quirks.
4
4
  topics: [backend, fintech, brokers, integration, adapter-pattern, rate-limits, credentials, retry]
5
+ volatility: evolving
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://microservices.io/patterns/reliability/circuit-breaker.html
10
+ - url: https://martinfowler.com/bliki/CircuitBreaker.html
5
11
  ---
6
12
 
7
13
  A fintech backend that routes orders or reads positions across more than one broker inherits the union of every broker's quirks, outages, auth schemes, and undocumented behaviors. The broker-integration layer exists to hide that mess behind one normalized internal contract so the rest of the system — risk, order lifecycle, ledger, UI — can stay clean. This doc covers the adapter contract, credential handling, error harmonization, rate-limit strategy, and the specific pitfalls that recur regardless of which brokers you connect.
@@ -2,13 +2,21 @@
2
2
  name: backend-fintech-compliance
3
3
  description: PCI-DSS, SOC 2, SEC/FINRA regulations for consumer/B2B fintech backends; audit trail immutability; data retention; segregation of duties.
4
4
  topics: [backend, fintech, compliance, pci-dss, soc2, sec, finra, audit-trail, gdpr]
5
+ volatility: evolving
6
+ last-reviewed: null
7
+ version-pin: 'PCI-DSS v4.0.1'
8
+ sources:
9
+ - url: https://www.pcisecuritystandards.org/document_library/
10
+ - url: https://www.aicpa-cima.com/topic/audit-assurance
11
+ - url: https://www.finra.org/rules-guidance/rulebooks/finra-rules
12
+ - url: https://eur-lex.europa.eu/eli/reg/2016/679/oj
5
13
  ---
6
14
 
7
15
  Fintech compliance is not a checklist applied at the end — it determines schema design, deployment pipelines, and system boundaries. Most regulations apply based on what a service *touches* (cards, trades, PII), so scope reduction is the single highest-leverage design decision available to engineering. This doc covers the regulatory regimes a typical US/EU fintech encounters, the audit-trail patterns they demand, and concrete implementation choices that keep audits survivable.
8
16
 
9
17
  ## Summary
10
18
 
11
- Which regulations apply depends on what the service handles. Handling card data (PAN, CVV, track data) triggers PCI-DSS v4.0. Storing customer PII, financial records, or operating as a service provider to regulated firms triggers SOC 2 Type II expectations from customers and GLBA obligations (US financial privacy). Executing securities trades or routing orders triggers SEC Rule 17a-4 record retention and FINRA supervisory requirements. Operating in the EU triggers GDPR and — for crypto — MiCA. Serving retail vs institutional customers changes consumer-protection obligations (Reg Z, Reg E, CFPB oversight vs institutional carve-outs).
19
+ Which regulations apply depends on what the service handles. Handling card data (PAN, CVV, track data) triggers PCI-DSS v4.0.1. Storing customer PII, financial records, or operating as a service provider to regulated firms triggers SOC 2 Type II expectations from customers and GLBA obligations (US financial privacy). Executing securities trades or routing orders triggers SEC Rule 17a-4 record retention and FINRA supervisory requirements. Operating in the EU triggers GDPR and — for crypto — MiCA. Serving retail vs institutional customers changes consumer-protection obligations (Reg Z, Reg E, CFPB oversight vs institutional carve-outs).
12
20
 
13
21
  Compliance cost scales with scope, not with traffic. A service that never sees raw PANs is *out of scope* for most PCI-DSS controls. A microservice that only handles trade metadata (not orders themselves) may be out of the SEC 17a-4 retention perimeter. Practical scope-reduction strategies: tokenize at the edge (Stripe, Marqeta, Basis Theory) so internal services only ever see tokens; keep regulated datastores (ledger, order book, card vault) in dedicated VPCs with narrow IAM; route regulated-data logs to a separate SIEM stream so the main observability stack stays out of scope; design SDK boundaries where PII-sensitive fields are never emitted to general-purpose workers.
14
22
 
@@ -22,7 +30,7 @@ Encryption is assumed baseline: TLS 1.2+ in transit (1.3 preferred), AES-256 at
22
30
 
23
31
  ### PCI-DSS Scoping and Tokenization
24
32
 
25
- PCI-DSS v4.0 applies to any system that stores, processes, or transmits cardholder data (CHD) — the Primary Account Number (PAN), cardholder name, expiration date, service code — or sensitive authentication data (full track, CVV, PIN). The cost of compliance is roughly quadratic in the scope of the "cardholder data environment" (CDE): every service inside the CDE needs quarterly ASV scans, annual penetration tests, hardened configurations, FIM, and quarterly access reviews.
33
+ PCI-DSS v4.0.1 applies to any system that stores, processes, or transmits cardholder data (CHD) — the Primary Account Number (PAN), cardholder name, expiration date, service code — or sensitive authentication data (full track, CVV, PIN). The cost of compliance is roughly quadratic in the scope of the "cardholder data environment" (CDE): every service inside the CDE needs quarterly ASV scans, annual penetration tests, hardened configurations, FIM, and quarterly access reviews.
26
34
 
27
35
  **Scope reduction via tokenization** is the dominant pattern. Instead of your application receiving raw PANs, the card is submitted directly from the browser/mobile app to a tokenization provider (Stripe Elements, Braintree Hosted Fields, Marqeta, Basis Theory, Very Good Security) which returns an opaque token. Your backend stores only the token. The card vault is the provider's CDE; your systems are *SAQ A* eligible (the lightest form).
28
36
 
@@ -2,6 +2,12 @@
2
2
  name: backend-fintech-data-modeling
3
3
  description: Financial data models; currency handling; decimal precision; positions, trades, prices; time-series designs.
4
4
  topics: [backend, fintech, data-modeling, decimal, currency, time-series, positions, trades]
5
+ volatility: stable
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://www.postgresql.org/docs/current/datatype-numeric.html
10
+ - url: https://www.iso.org/iso-4217-currency-codes.html
5
11
  ---
6
12
 
7
13
  Financial data modeling is where most fintech bugs are born: a float creeps into a money field, a currency is implied instead of stored, a tick table grows unbounded, or a `current_position` column drifts from the journal. This doc covers the non-negotiable shapes of money, quantity, and price data, and the time-series and derived-view patterns that keep a trading or banking system honest at scale.
@@ -2,6 +2,12 @@
2
2
  name: backend-fintech-ledger
3
3
  description: Double-entry accounting for fintech ledgers; journal vs ledger tables; idempotent posting; reconciliation patterns; balance invariants.
4
4
  topics: [backend, fintech, ledger, double-entry, accounting, reconciliation, idempotency, invariants]
5
+ volatility: stable
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://martinfowler.com/eaaCatalog/
10
+ - url: https://www.postgresql.org/docs/current/ddl-constraints.html
5
11
  ---
6
12
 
7
13
  A fintech ledger is the authoritative record of money movement; if it is wrong, nothing else in the system can be trusted. The discipline is borrowed intact from 700 years of double-entry bookkeeping — not a new invention, and not negotiable. This doc covers the invariants, schema shape, idempotent posting mechanics, and reconciliation patterns that keep a ledger survivable at production scale.
@@ -2,6 +2,12 @@
2
2
  name: backend-fintech-observability
3
3
  description: Trade event correlation; market-hours aware scheduling; SLOs for fintech systems; compliance logging; alerting strategy.
4
4
  topics: [backend, fintech, observability, tracing, slos, alerting, correlation-id, market-hours]
5
+ volatility: evolving
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://opentelemetry.io/docs/
10
+ - url: https://sre.google/sre-book/service-level-objectives/
5
11
  ---
6
12
 
7
13
  Observability for a trading system is not generic APM with a finance skin — it is the ability to reconstruct any single order, end to end, across six or more services, on demand, years later, with timezone-correct timestamps and a stable correlation identifier. It is also the early-warning system that catches a sudden drop in fill rate at 09:31 ET before the desk calls. Done well it overlaps with — but does not replace — the immutable audit trail (`backend-fintech-compliance.md`).
@@ -2,6 +2,12 @@
2
2
  name: backend-fintech-order-lifecycle
3
3
  description: Order state machine; fills, partial fills, cancellation; event-driven order tracking; idempotency; handling "unknown" states.
4
4
  topics: [backend, fintech, orders, state-machine, fills, partial-fills, event-driven, webhooks]
5
+ volatility: evolving
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://microservices.io/patterns/data/saga.html
10
+ - url: https://martinfowler.com/articles/patterns-of-distributed-systems/
5
11
  ---
6
12
 
7
13
  Orders in a trading system are long-lived, asynchronous, externally mutated objects — the exact shape of problem a disciplined state machine is built for. This doc covers the canonical states and transitions, how fills and partial fills land, why "unknown" is a real state you cannot wish away, and the reconciliation posture that keeps internal bookkeeping aligned with the broker of record.
@@ -2,6 +2,12 @@
2
2
  name: backend-fintech-risk-management
3
3
  description: Position limits, drawdown caps, circuit breakers, kill switches; pre-trade and post-trade risk checks; operational risk controls.
4
4
  topics: [backend, fintech, risk, position-limits, drawdown, circuit-breakers, kill-switch, pre-trade-checks]
5
+ volatility: evolving
6
+ last-reviewed: null
7
+ version-pin: null
8
+ sources:
9
+ - url: https://martinfowler.com/bliki/CircuitBreaker.html
10
+ - url: https://microservices.io/patterns/reliability/circuit-breaker.html
5
11
  ---
6
12
 
7
13
  Risk management in a trading system is the set of controls that stops a bad day from becoming a catastrophic one. It lives in two places: *before* an order goes to the broker (pre-trade checks that block) and *after* fills land (post-trade monitoring that alerts, throttles, or halts). Neither half is optional, and both are exercised continuously, not just during incidents.