forgecraft-mcp 1.4.0 → 1.7.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 (418) hide show
  1. package/LICENSE +67 -0
  2. package/README.md +527 -525
  3. package/dist/analyzers/anchors/anchor-loader.d.ts +47 -0
  4. package/dist/analyzers/anchors/anchor-loader.d.ts.map +1 -0
  5. package/dist/analyzers/anchors/anchor-loader.js +113 -0
  6. package/dist/analyzers/anchors/anchor-loader.js.map +1 -0
  7. package/dist/analyzers/anti-pattern.d.ts.map +1 -1
  8. package/dist/analyzers/anti-pattern.js +38 -26
  9. package/dist/analyzers/anti-pattern.js.map +1 -1
  10. package/dist/analyzers/completeness-helpers.d.ts +5 -0
  11. package/dist/analyzers/completeness-helpers.d.ts.map +1 -1
  12. package/dist/analyzers/completeness-helpers.js +17 -0
  13. package/dist/analyzers/completeness-helpers.js.map +1 -1
  14. package/dist/analyzers/completeness.d.ts.map +1 -1
  15. package/dist/analyzers/completeness.js +4 -4
  16. package/dist/analyzers/completeness.js.map +1 -1
  17. package/dist/analyzers/gs-scorer.d.ts +3 -1
  18. package/dist/analyzers/gs-scorer.d.ts.map +1 -1
  19. package/dist/analyzers/gs-scorer.js +5 -2
  20. package/dist/analyzers/gs-scorer.js.map +1 -1
  21. package/dist/analyzers/package-json.d.ts.map +1 -1
  22. package/dist/analyzers/package-json.js +194 -34
  23. package/dist/analyzers/package-json.js.map +1 -1
  24. package/dist/analyzers/scorers/composable-scorer.d.ts +4 -2
  25. package/dist/analyzers/scorers/composable-scorer.d.ts.map +1 -1
  26. package/dist/analyzers/scorers/composable-scorer.js +50 -2
  27. package/dist/analyzers/scorers/composable-scorer.js.map +1 -1
  28. package/dist/analyzers/scorers/executable-scorer.d.ts +3 -2
  29. package/dist/analyzers/scorers/executable-scorer.d.ts.map +1 -1
  30. package/dist/analyzers/scorers/executable-scorer.js +64 -4
  31. package/dist/analyzers/scorers/executable-scorer.js.map +1 -1
  32. package/dist/analyzers/scorers/scorer-utils.d.ts +5 -3
  33. package/dist/analyzers/scorers/scorer-utils.d.ts.map +1 -1
  34. package/dist/analyzers/scorers/scorer-utils.js +34 -9
  35. package/dist/analyzers/scorers/scorer-utils.js.map +1 -1
  36. package/dist/analyzers/scorers/self-describing-scorer.d.ts +7 -4
  37. package/dist/analyzers/scorers/self-describing-scorer.d.ts.map +1 -1
  38. package/dist/analyzers/scorers/self-describing-scorer.js +17 -18
  39. package/dist/analyzers/scorers/self-describing-scorer.js.map +1 -1
  40. package/dist/cli/help.js +51 -51
  41. package/dist/disciplines/catalog.d.ts +16 -0
  42. package/dist/disciplines/catalog.d.ts.map +1 -0
  43. package/dist/disciplines/catalog.js +196 -0
  44. package/dist/disciplines/catalog.js.map +1 -0
  45. package/dist/disciplines/runner.d.ts +13 -0
  46. package/dist/disciplines/runner.d.ts.map +1 -0
  47. package/dist/disciplines/runner.js +35 -0
  48. package/dist/disciplines/runner.js.map +1 -0
  49. package/dist/registry/composer.d.ts.map +1 -1
  50. package/dist/registry/composer.js +9 -4
  51. package/dist/registry/composer.js.map +1 -1
  52. package/dist/registry/loader-tag.d.ts.map +1 -1
  53. package/dist/registry/loader-tag.js +1 -0
  54. package/dist/registry/loader-tag.js.map +1 -1
  55. package/dist/registry/remote-gates.js +1 -1
  56. package/dist/registry/remote-gates.js.map +1 -1
  57. package/dist/registry/renderer-skeletons.js +92 -92
  58. package/dist/registry/sentinel-renderer.js +299 -20
  59. package/dist/registry/sentinel-renderer.js.map +1 -1
  60. package/dist/sentinel/detect.d.ts +41 -0
  61. package/dist/sentinel/detect.d.ts.map +1 -0
  62. package/dist/sentinel/detect.js +122 -0
  63. package/dist/sentinel/detect.js.map +1 -0
  64. package/dist/sentinel/write.d.ts +54 -0
  65. package/dist/sentinel/write.d.ts.map +1 -0
  66. package/dist/sentinel/write.js +75 -0
  67. package/dist/sentinel/write.js.map +1 -0
  68. package/dist/shared/cnt-health.d.ts +16 -0
  69. package/dist/shared/cnt-health.d.ts.map +1 -1
  70. package/dist/shared/cnt-health.js +55 -8
  71. package/dist/shared/cnt-health.js.map +1 -1
  72. package/dist/shared/config.d.ts +14 -0
  73. package/dist/shared/config.d.ts.map +1 -1
  74. package/dist/shared/config.js +45 -0
  75. package/dist/shared/config.js.map +1 -1
  76. package/dist/shared/gs-score-logger.js +6 -6
  77. package/dist/shared/hook-installer.d.ts +58 -0
  78. package/dist/shared/hook-installer.d.ts.map +1 -0
  79. package/dist/shared/hook-installer.js +316 -0
  80. package/dist/shared/hook-installer.js.map +1 -0
  81. package/dist/shared/project-gates-helpers.d.ts +9 -0
  82. package/dist/shared/project-gates-helpers.d.ts.map +1 -1
  83. package/dist/shared/project-gates-helpers.js +35 -0
  84. package/dist/shared/project-gates-helpers.js.map +1 -1
  85. package/dist/shared/types/config.d.ts +7 -1
  86. package/dist/shared/types/config.d.ts.map +1 -1
  87. package/dist/shared/types/gates.d.ts +34 -0
  88. package/dist/shared/types/gates.d.ts.map +1 -1
  89. package/dist/shared/types/project.d.ts +68 -2
  90. package/dist/shared/types/project.d.ts.map +1 -1
  91. package/dist/shared/types/project.js +1 -0
  92. package/dist/shared/types/project.js.map +1 -1
  93. package/dist/shared/types/templates.d.ts +8 -1
  94. package/dist/shared/types/templates.d.ts.map +1 -1
  95. package/dist/shared/types/verify.d.ts +51 -1
  96. package/dist/shared/types/verify.d.ts.map +1 -1
  97. package/dist/shared/types/verify.js +37 -1
  98. package/dist/shared/types/verify.js.map +1 -1
  99. package/dist/tools/add-hook.d.ts.map +1 -1
  100. package/dist/tools/add-hook.js +8 -1
  101. package/dist/tools/add-hook.js.map +1 -1
  102. package/dist/tools/add-module.js +123 -123
  103. package/dist/tools/advice-registry.d.ts.map +1 -1
  104. package/dist/tools/advice-registry.js +108 -18
  105. package/dist/tools/advice-registry.js.map +1 -1
  106. package/dist/tools/advise-session-advisor.d.ts +16 -0
  107. package/dist/tools/advise-session-advisor.d.ts.map +1 -0
  108. package/dist/tools/advise-session-advisor.js +89 -0
  109. package/dist/tools/advise-session-advisor.js.map +1 -0
  110. package/dist/tools/advise-session-signals.d.ts +21 -0
  111. package/dist/tools/advise-session-signals.d.ts.map +1 -0
  112. package/dist/tools/advise-session-signals.js +113 -0
  113. package/dist/tools/advise-session-signals.js.map +1 -0
  114. package/dist/tools/advise-session.d.ts +22 -0
  115. package/dist/tools/advise-session.d.ts.map +1 -0
  116. package/dist/tools/advise-session.js +31 -0
  117. package/dist/tools/advise-session.js.map +1 -0
  118. package/dist/tools/analyze-harness.d.ts +18 -0
  119. package/dist/tools/analyze-harness.d.ts.map +1 -0
  120. package/dist/tools/analyze-harness.js +298 -0
  121. package/dist/tools/analyze-harness.js.map +1 -0
  122. package/dist/tools/audit.d.ts.map +1 -1
  123. package/dist/tools/audit.js +19 -0
  124. package/dist/tools/audit.js.map +1 -1
  125. package/dist/tools/change-request.d.ts +53 -0
  126. package/dist/tools/change-request.d.ts.map +1 -0
  127. package/dist/tools/change-request.js +395 -0
  128. package/dist/tools/change-request.js.map +1 -0
  129. package/dist/tools/check-cascade-contracts.d.ts +13 -0
  130. package/dist/tools/check-cascade-contracts.d.ts.map +1 -1
  131. package/dist/tools/check-cascade-contracts.js +73 -2
  132. package/dist/tools/check-cascade-contracts.js.map +1 -1
  133. package/dist/tools/check-cascade-report.js +64 -64
  134. package/dist/tools/check-cascade-steps.d.ts +3 -0
  135. package/dist/tools/check-cascade-steps.d.ts.map +1 -1
  136. package/dist/tools/check-cascade-steps.js +104 -15
  137. package/dist/tools/check-cascade-steps.js.map +1 -1
  138. package/dist/tools/check-cascade.d.ts +4 -3
  139. package/dist/tools/check-cascade.d.ts.map +1 -1
  140. package/dist/tools/check-cascade.js +30 -12
  141. package/dist/tools/check-cascade.js.map +1 -1
  142. package/dist/tools/check-derivation-chain.d.ts +37 -0
  143. package/dist/tools/check-derivation-chain.d.ts.map +1 -0
  144. package/dist/tools/check-derivation-chain.js +418 -0
  145. package/dist/tools/check-derivation-chain.js.map +1 -0
  146. package/dist/tools/check-spec-consistency.d.ts +25 -0
  147. package/dist/tools/check-spec-consistency.d.ts.map +1 -0
  148. package/dist/tools/check-spec-consistency.js +339 -0
  149. package/dist/tools/check-spec-consistency.js.map +1 -0
  150. package/dist/tools/check-t4.d.ts +54 -0
  151. package/dist/tools/check-t4.d.ts.map +1 -0
  152. package/dist/tools/check-t4.js +305 -0
  153. package/dist/tools/check-t4.js.map +1 -0
  154. package/dist/tools/close-cycle.d.ts +11 -0
  155. package/dist/tools/close-cycle.d.ts.map +1 -1
  156. package/dist/tools/close-cycle.js +364 -4
  157. package/dist/tools/close-cycle.js.map +1 -1
  158. package/dist/tools/cnt-add-routing.d.ts +31 -0
  159. package/dist/tools/cnt-add-routing.d.ts.map +1 -0
  160. package/dist/tools/cnt-add-routing.js +99 -0
  161. package/dist/tools/cnt-add-routing.js.map +1 -0
  162. package/dist/tools/configure-mcp.d.ts.map +1 -1
  163. package/dist/tools/configure-mcp.js +52 -2
  164. package/dist/tools/configure-mcp.js.map +1 -1
  165. package/dist/tools/consolidate-status.d.ts +31 -0
  166. package/dist/tools/consolidate-status.d.ts.map +1 -1
  167. package/dist/tools/consolidate-status.js +105 -0
  168. package/dist/tools/consolidate-status.js.map +1 -1
  169. package/dist/tools/executable-gates.d.ts +52 -0
  170. package/dist/tools/executable-gates.d.ts.map +1 -0
  171. package/dist/tools/executable-gates.js +333 -0
  172. package/dist/tools/executable-gates.js.map +1 -0
  173. package/dist/tools/extract-adrs-from-spec.d.ts +33 -0
  174. package/dist/tools/extract-adrs-from-spec.d.ts.map +1 -0
  175. package/dist/tools/extract-adrs-from-spec.js +410 -0
  176. package/dist/tools/extract-adrs-from-spec.js.map +1 -0
  177. package/dist/tools/extract-adrs-history.d.ts +47 -0
  178. package/dist/tools/extract-adrs-history.d.ts.map +1 -0
  179. package/dist/tools/extract-adrs-history.js +265 -0
  180. package/dist/tools/extract-adrs-history.js.map +1 -0
  181. package/dist/tools/forgecraft-dispatch-extended.d.ts.map +1 -1
  182. package/dist/tools/forgecraft-dispatch-extended.js +137 -0
  183. package/dist/tools/forgecraft-dispatch-extended.js.map +1 -1
  184. package/dist/tools/forgecraft-dispatch.d.ts.map +1 -1
  185. package/dist/tools/forgecraft-dispatch.js +16 -0
  186. package/dist/tools/forgecraft-dispatch.js.map +1 -1
  187. package/dist/tools/forgecraft-schema-params.d.ts +174 -2
  188. package/dist/tools/forgecraft-schema-params.d.ts.map +1 -1
  189. package/dist/tools/forgecraft-schema-params.js +197 -0
  190. package/dist/tools/forgecraft-schema-params.js.map +1 -1
  191. package/dist/tools/forgecraft-schema.d.ts +179 -7
  192. package/dist/tools/forgecraft-schema.d.ts.map +1 -1
  193. package/dist/tools/forgecraft-schema.js +37 -0
  194. package/dist/tools/forgecraft-schema.js.map +1 -1
  195. package/dist/tools/generate-adr.js +6 -6
  196. package/dist/tools/generate-adr.js.map +1 -1
  197. package/dist/tools/generate-decision.d.ts +77 -0
  198. package/dist/tools/generate-decision.d.ts.map +1 -0
  199. package/dist/tools/generate-decision.js +162 -0
  200. package/dist/tools/generate-decision.js.map +1 -0
  201. package/dist/tools/generate-env-probe.d.ts +49 -0
  202. package/dist/tools/generate-env-probe.d.ts.map +1 -0
  203. package/dist/tools/generate-env-probe.js +365 -0
  204. package/dist/tools/generate-env-probe.js.map +1 -0
  205. package/dist/tools/generate-harness.d.ts +53 -0
  206. package/dist/tools/generate-harness.d.ts.map +1 -0
  207. package/dist/tools/generate-harness.js +395 -0
  208. package/dist/tools/generate-harness.js.map +1 -0
  209. package/dist/tools/generate-roadmap.d.ts +1 -1
  210. package/dist/tools/generate-roadmap.d.ts.map +1 -1
  211. package/dist/tools/generate-roadmap.js +38 -4
  212. package/dist/tools/generate-roadmap.js.map +1 -1
  213. package/dist/tools/generate-session-prompt.d.ts +3 -3
  214. package/dist/tools/generate-session-prompt.d.ts.map +1 -1
  215. package/dist/tools/generate-session-prompt.js +9 -1
  216. package/dist/tools/generate-session-prompt.js.map +1 -1
  217. package/dist/tools/generate-slo-probe.d.ts +53 -0
  218. package/dist/tools/generate-slo-probe.d.ts.map +1 -0
  219. package/dist/tools/generate-slo-probe.js +366 -0
  220. package/dist/tools/generate-slo-probe.js.map +1 -0
  221. package/dist/tools/layer-status-gates.d.ts +24 -0
  222. package/dist/tools/layer-status-gates.d.ts.map +1 -0
  223. package/dist/tools/layer-status-gates.js +151 -0
  224. package/dist/tools/layer-status-gates.js.map +1 -0
  225. package/dist/tools/layer-status.d.ts +126 -0
  226. package/dist/tools/layer-status.d.ts.map +1 -0
  227. package/dist/tools/layer-status.js +647 -0
  228. package/dist/tools/layer-status.js.map +1 -0
  229. package/dist/tools/list.d.ts.map +1 -1
  230. package/dist/tools/list.js +9 -5
  231. package/dist/tools/list.js.map +1 -1
  232. package/dist/tools/postcondition-coverage.d.ts +57 -0
  233. package/dist/tools/postcondition-coverage.d.ts.map +1 -0
  234. package/dist/tools/postcondition-coverage.js +256 -0
  235. package/dist/tools/postcondition-coverage.js.map +1 -0
  236. package/dist/tools/probe-runners.d.ts +21 -0
  237. package/dist/tools/probe-runners.d.ts.map +1 -0
  238. package/dist/tools/probe-runners.js +246 -0
  239. package/dist/tools/probe-runners.js.map +1 -0
  240. package/dist/tools/probe-templates.d.ts +27 -0
  241. package/dist/tools/probe-templates.d.ts.map +1 -0
  242. package/dist/tools/probe-templates.js +279 -0
  243. package/dist/tools/probe-templates.js.map +1 -0
  244. package/dist/tools/propose-session.d.ts +28 -0
  245. package/dist/tools/propose-session.d.ts.map +1 -0
  246. package/dist/tools/propose-session.js +333 -0
  247. package/dist/tools/propose-session.js.map +1 -0
  248. package/dist/tools/refresh-output.js +14 -14
  249. package/dist/tools/review-stubs.d.ts +29 -0
  250. package/dist/tools/review-stubs.d.ts.map +1 -0
  251. package/dist/tools/review-stubs.js +173 -0
  252. package/dist/tools/review-stubs.js.map +1 -0
  253. package/dist/tools/roadmap-builder.d.ts +49 -1
  254. package/dist/tools/roadmap-builder.d.ts.map +1 -1
  255. package/dist/tools/roadmap-builder.js +210 -5
  256. package/dist/tools/roadmap-builder.js.map +1 -1
  257. package/dist/tools/run-env-probe.d.ts +57 -0
  258. package/dist/tools/run-env-probe.d.ts.map +1 -0
  259. package/dist/tools/run-env-probe.js +270 -0
  260. package/dist/tools/run-env-probe.js.map +1 -0
  261. package/dist/tools/run-harness.d.ts +52 -0
  262. package/dist/tools/run-harness.d.ts.map +1 -0
  263. package/dist/tools/run-harness.js +279 -0
  264. package/dist/tools/run-harness.js.map +1 -0
  265. package/dist/tools/run-slo-probe.d.ts +50 -0
  266. package/dist/tools/run-slo-probe.d.ts.map +1 -0
  267. package/dist/tools/run-slo-probe.js +281 -0
  268. package/dist/tools/run-slo-probe.js.map +1 -0
  269. package/dist/tools/scaffold-spec-stubs.js +115 -115
  270. package/dist/tools/scaffold-templates.js +62 -62
  271. package/dist/tools/scaffold-writer.d.ts.map +1 -1
  272. package/dist/tools/scaffold-writer.js +9 -0
  273. package/dist/tools/scaffold-writer.js.map +1 -1
  274. package/dist/tools/score-rubric.d.ts +19 -0
  275. package/dist/tools/score-rubric.d.ts.map +1 -0
  276. package/dist/tools/score-rubric.js +411 -0
  277. package/dist/tools/score-rubric.js.map +1 -0
  278. package/dist/tools/session-prompt-builders.d.ts +20 -0
  279. package/dist/tools/session-prompt-builders.d.ts.map +1 -1
  280. package/dist/tools/session-prompt-builders.js +78 -5
  281. package/dist/tools/session-prompt-builders.js.map +1 -1
  282. package/dist/tools/session-prompt-sections.d.ts +4 -2
  283. package/dist/tools/session-prompt-sections.d.ts.map +1 -1
  284. package/dist/tools/session-prompt-sections.js +22 -10
  285. package/dist/tools/session-prompt-sections.js.map +1 -1
  286. package/dist/tools/setup-artifact-writers.d.ts +69 -4
  287. package/dist/tools/setup-artifact-writers.d.ts.map +1 -1
  288. package/dist/tools/setup-artifact-writers.js +681 -5
  289. package/dist/tools/setup-artifact-writers.js.map +1 -1
  290. package/dist/tools/setup-cnt-builders.d.ts.map +1 -1
  291. package/dist/tools/setup-cnt-builders.js +162 -34
  292. package/dist/tools/setup-cnt-builders.js.map +1 -1
  293. package/dist/tools/setup-monitoring.d.ts +41 -0
  294. package/dist/tools/setup-monitoring.d.ts.map +1 -0
  295. package/dist/tools/setup-monitoring.js +364 -0
  296. package/dist/tools/setup-monitoring.js.map +1 -0
  297. package/dist/tools/setup-phase1.d.ts.map +1 -1
  298. package/dist/tools/setup-phase1.js +14 -1
  299. package/dist/tools/setup-phase1.js.map +1 -1
  300. package/dist/tools/setup-phase2.d.ts +14 -0
  301. package/dist/tools/setup-phase2.d.ts.map +1 -1
  302. package/dist/tools/setup-phase2.js +130 -3
  303. package/dist/tools/setup-phase2.js.map +1 -1
  304. package/dist/tools/setup-project.d.ts +8 -0
  305. package/dist/tools/setup-project.d.ts.map +1 -1
  306. package/dist/tools/setup-project.js +52 -2
  307. package/dist/tools/setup-project.js.map +1 -1
  308. package/dist/tools/spec-parser-tags.d.ts.map +1 -1
  309. package/dist/tools/spec-parser-tags.js +1 -0
  310. package/dist/tools/spec-parser-tags.js.map +1 -1
  311. package/dist/tools/verify-formatter.d.ts.map +1 -1
  312. package/dist/tools/verify-formatter.js +15 -1
  313. package/dist/tools/verify-formatter.js.map +1 -1
  314. package/dist/tools/verify.d.ts.map +1 -1
  315. package/dist/tools/verify.js +3 -0
  316. package/dist/tools/verify.js.map +1 -1
  317. package/package.json +98 -89
  318. package/templates/analytics/instructions.yaml +37 -37
  319. package/templates/analytics/mcp-servers.yaml +11 -11
  320. package/templates/analytics/structure.yaml +25 -25
  321. package/templates/api/harness/uc-template.hurl +20 -0
  322. package/templates/api/instructions.yaml +231 -231
  323. package/templates/api/mcp-servers.yaml +22 -22
  324. package/templates/api/nfr.yaml +23 -23
  325. package/templates/api/review.yaml +103 -103
  326. package/templates/api/structure.yaml +34 -34
  327. package/templates/api/verification.yaml +132 -132
  328. package/templates/cli/instructions.yaml +31 -31
  329. package/templates/cli/mcp-servers.yaml +11 -11
  330. package/templates/cli/review.yaml +53 -53
  331. package/templates/cli/structure.yaml +16 -16
  332. package/templates/data-lineage/instructions.yaml +28 -28
  333. package/templates/data-lineage/mcp-servers.yaml +22 -22
  334. package/templates/data-pipeline/instructions.yaml +84 -84
  335. package/templates/data-pipeline/mcp-servers.yaml +13 -13
  336. package/templates/data-pipeline/nfr.yaml +39 -39
  337. package/templates/data-pipeline/structure.yaml +23 -23
  338. package/templates/docs-manifest.yaml +227 -0
  339. package/templates/fintech/hooks.yaml +55 -55
  340. package/templates/fintech/instructions.yaml +112 -112
  341. package/templates/fintech/mcp-servers.yaml +13 -13
  342. package/templates/fintech/nfr.yaml +46 -46
  343. package/templates/fintech/playbook.yaml +210 -210
  344. package/templates/fintech/verification.yaml +239 -239
  345. package/templates/game/harness/uc-template.sim.ts +29 -0
  346. package/templates/game/instructions.yaml +289 -289
  347. package/templates/game/mcp-servers.yaml +38 -38
  348. package/templates/game/nfr.yaml +64 -64
  349. package/templates/game/playbook.yaml +214 -214
  350. package/templates/game/review.yaml +97 -97
  351. package/templates/game/structure.yaml +67 -67
  352. package/templates/game/verification.yaml +174 -174
  353. package/templates/healthcare/instructions.yaml +42 -42
  354. package/templates/healthcare/mcp-servers.yaml +13 -13
  355. package/templates/healthcare/nfr.yaml +47 -47
  356. package/templates/hipaa/instructions.yaml +41 -41
  357. package/templates/hipaa/mcp-servers.yaml +13 -13
  358. package/templates/infra/instructions.yaml +104 -104
  359. package/templates/infra/mcp-servers.yaml +20 -20
  360. package/templates/infra/nfr.yaml +46 -46
  361. package/templates/infra/review.yaml +65 -65
  362. package/templates/infra/structure.yaml +25 -25
  363. package/templates/library/instructions.yaml +36 -36
  364. package/templates/library/mcp-servers.yaml +20 -20
  365. package/templates/library/review.yaml +56 -56
  366. package/templates/library/structure.yaml +19 -19
  367. package/templates/medallion-architecture/instructions.yaml +41 -41
  368. package/templates/medallion-architecture/mcp-servers.yaml +22 -22
  369. package/templates/ml/instructions.yaml +85 -85
  370. package/templates/ml/mcp-servers.yaml +11 -11
  371. package/templates/ml/nfr.yaml +39 -39
  372. package/templates/ml/structure.yaml +25 -25
  373. package/templates/ml/verification.yaml +156 -156
  374. package/templates/mobile/instructions.yaml +44 -44
  375. package/templates/mobile/mcp-servers.yaml +11 -11
  376. package/templates/mobile/nfr.yaml +49 -49
  377. package/templates/mobile/structure.yaml +27 -27
  378. package/templates/mobile/verification.yaml +121 -121
  379. package/templates/observability-xray/instructions.yaml +40 -40
  380. package/templates/observability-xray/mcp-servers.yaml +15 -15
  381. package/templates/realtime/instructions.yaml +42 -42
  382. package/templates/realtime/mcp-servers.yaml +13 -13
  383. package/templates/soc2/instructions.yaml +41 -41
  384. package/templates/soc2/mcp-servers.yaml +24 -24
  385. package/templates/social/instructions.yaml +43 -43
  386. package/templates/social/mcp-servers.yaml +24 -24
  387. package/templates/state-machine/instructions.yaml +42 -42
  388. package/templates/state-machine/mcp-servers.yaml +11 -11
  389. package/templates/tools-registry.yaml +164 -164
  390. package/templates/universal/claude-md-blocks/layer-navigation.md +20 -0
  391. package/templates/universal/claude-md-blocks/nfr-contracts.md +22 -0
  392. package/templates/universal/hooks.yaml +879 -723
  393. package/templates/universal/instructions.yaml +1692 -1692
  394. package/templates/universal/mcp-servers.yaml +50 -50
  395. package/templates/universal/nfr.yaml +197 -197
  396. package/templates/universal/reference.yaml +326 -326
  397. package/templates/universal/review.yaml +204 -204
  398. package/templates/universal/skills.yaml +262 -262
  399. package/templates/universal/structure.yaml +67 -67
  400. package/templates/universal/verification.yaml +416 -416
  401. package/templates/web-next/hooks.yaml +114 -0
  402. package/templates/web-next/instructions.yaml +106 -0
  403. package/templates/web-react/harness/uc-template.spec.ts +35 -0
  404. package/templates/web-react/hooks.yaml +156 -44
  405. package/templates/web-react/instructions.yaml +296 -207
  406. package/templates/web-react/mcp-servers.yaml +20 -20
  407. package/templates/web-react/nfr.yaml +27 -27
  408. package/templates/web-react/review.yaml +94 -94
  409. package/templates/web-react/structure.yaml +46 -46
  410. package/templates/web-react/verification.yaml +126 -126
  411. package/templates/web-static/hooks.yaml +85 -0
  412. package/templates/web-static/instructions.yaml +204 -115
  413. package/templates/web-static/mcp-servers.yaml +20 -20
  414. package/templates/web3/instructions.yaml +44 -44
  415. package/templates/web3/mcp-servers.yaml +11 -11
  416. package/templates/web3/verification.yaml +159 -159
  417. package/templates/zero-trust/instructions.yaml +41 -41
  418. package/templates/zero-trust/mcp-servers.yaml +15 -15
@@ -10,27 +10,84 @@ import { createLogger } from "../shared/logger/index.js";
10
10
  const logger = createLogger("analyzers/package-json");
11
11
  /** Framework/dependency patterns that map to tags. */
12
12
  const DEPENDENCY_PATTERNS = [
13
- { packages: ["react", "react-dom"], tag: "WEB-REACT", evidence: "react in dependencies" },
14
- { packages: ["next"], tag: "WEB-REACT", evidence: "next.js in dependencies" },
15
- { packages: ["@remix-run/react"], tag: "WEB-REACT", evidence: "remix in dependencies" },
16
- { packages: ["express", "fastify", "koa", "hapi", "nestjs"], tag: "API", evidence: "HTTP framework in dependencies" },
17
- { packages: ["ethers", "web3", "viem", "@solana/web3.js"], tag: "WEB3", evidence: "blockchain library in dependencies" },
18
- { packages: ["socket.io", "ws", "pusher"], tag: "REALTIME", evidence: "WebSocket library in dependencies" },
19
- { packages: ["xstate", "robot3"], tag: "STATE-MACHINE", evidence: "state machine library in dependencies" },
20
- { packages: ["phaser", "pixi.js", "three", "babylon"], tag: "GAME", evidence: "game engine in dependencies" },
21
- { packages: ["commander", "yargs", "meow", "oclif"], tag: "CLI", evidence: "CLI framework in dependencies" },
22
- { packages: ["react-native", "expo"], tag: "MOBILE", evidence: "mobile framework in dependencies" },
23
- { packages: ["@tensorflow/tfjs", "onnxruntime-node"], tag: "ML", evidence: "ML library in dependencies" },
24
- { packages: ["terraform-cdk", "pulumi", "@aws-cdk"], tag: "INFRA", evidence: "IaC library in dependencies" },
13
+ {
14
+ packages: ["react", "react-dom"],
15
+ tag: "WEB-REACT",
16
+ evidence: "react in dependencies",
17
+ },
18
+ { packages: ["next"], tag: "WEB-NEXT", evidence: "next.js in dependencies" },
19
+ {
20
+ packages: ["@remix-run/react"],
21
+ tag: "WEB-REACT",
22
+ evidence: "remix in dependencies",
23
+ },
24
+ {
25
+ packages: ["express", "fastify", "koa", "hapi", "nestjs"],
26
+ tag: "API",
27
+ evidence: "HTTP framework in dependencies",
28
+ },
29
+ {
30
+ packages: ["ethers", "web3", "viem", "@solana/web3.js"],
31
+ tag: "WEB3",
32
+ evidence: "blockchain library in dependencies",
33
+ },
34
+ {
35
+ packages: ["socket.io", "ws", "pusher"],
36
+ tag: "REALTIME",
37
+ evidence: "WebSocket library in dependencies",
38
+ },
39
+ {
40
+ packages: ["xstate", "robot3"],
41
+ tag: "STATE-MACHINE",
42
+ evidence: "state machine library in dependencies",
43
+ },
44
+ {
45
+ packages: ["phaser", "pixi.js", "three", "babylon"],
46
+ tag: "GAME",
47
+ evidence: "game engine in dependencies",
48
+ },
49
+ {
50
+ packages: ["commander", "yargs", "meow", "oclif"],
51
+ tag: "CLI",
52
+ evidence: "CLI framework in dependencies",
53
+ },
54
+ {
55
+ packages: ["react-native", "expo"],
56
+ tag: "MOBILE",
57
+ evidence: "mobile framework in dependencies",
58
+ },
59
+ {
60
+ packages: ["@tensorflow/tfjs", "onnxruntime-node"],
61
+ tag: "ML",
62
+ evidence: "ML library in dependencies",
63
+ },
64
+ {
65
+ packages: ["terraform-cdk", "pulumi", "@aws-cdk"],
66
+ tag: "INFRA",
67
+ evidence: "IaC library in dependencies",
68
+ },
25
69
  ];
26
70
  /** File patterns that indicate tags. Optional confidence overrides the default 0.7. */
27
71
  const FILE_PATTERNS = [
28
- { files: ["next.config.js", "next.config.mjs", "next.config.ts"], tag: "WEB-REACT", evidence: "next.config found" },
72
+ {
73
+ files: ["next.config.js", "next.config.mjs", "next.config.ts"],
74
+ tag: "WEB-NEXT",
75
+ evidence: "next.config found",
76
+ },
29
77
  { files: ["tsconfig.json"], tag: "LIBRARY", evidence: "TypeScript project" },
30
- { files: [".solhint.json", "hardhat.config.ts", "foundry.toml"], tag: "WEB3", evidence: "smart contract tooling found" },
78
+ {
79
+ files: [".solhint.json", "hardhat.config.ts", "foundry.toml"],
80
+ tag: "WEB3",
81
+ evidence: "smart contract tooling found",
82
+ },
31
83
  // Docker alone is insufficient for INFRA — set below 0.6 threshold.
32
84
  // IaC deps (terraform-cdk, pulumi, @aws-cdk) in DEPENDENCY_PATTERNS correctly trigger INFRA at 0.6+.
33
- { files: ["Dockerfile", "docker-compose.yml", "docker-compose.yaml"], tag: "INFRA", evidence: "Docker config found", confidence: 0.45 },
85
+ {
86
+ files: ["Dockerfile", "docker-compose.yml", "docker-compose.yaml"],
87
+ tag: "INFRA",
88
+ evidence: "Docker config found",
89
+ confidence: 0.45,
90
+ },
34
91
  ];
35
92
  /**
36
93
  * Analyze a project directory and detect likely tags from config files.
@@ -124,21 +181,27 @@ function analyzePythonProject(projectDir) {
124
181
  if (existsSync(pyprojectPath)) {
125
182
  try {
126
183
  const content = readFileSync(pyprojectPath, "utf-8");
127
- if (content.includes("fastapi") || content.includes("flask") || content.includes("django")) {
184
+ if (content.includes("fastapi") ||
185
+ content.includes("flask") ||
186
+ content.includes("django")) {
128
187
  detections.push({
129
188
  tag: "API",
130
189
  confidence: 0.85,
131
190
  evidence: ["Python web framework in pyproject.toml"],
132
191
  });
133
192
  }
134
- if (content.includes("pandas") || content.includes("apache-airflow") || content.includes("prefect")) {
193
+ if (content.includes("pandas") ||
194
+ content.includes("apache-airflow") ||
195
+ content.includes("prefect")) {
135
196
  detections.push({
136
197
  tag: "DATA-PIPELINE",
137
198
  confidence: 0.8,
138
199
  evidence: ["Data processing library in pyproject.toml"],
139
200
  });
140
201
  }
141
- if (content.includes("scikit-learn") || content.includes("torch") || content.includes("tensorflow")) {
202
+ if (content.includes("scikit-learn") ||
203
+ content.includes("torch") ||
204
+ content.includes("tensorflow")) {
142
205
  detections.push({
143
206
  tag: "ML",
144
207
  confidence: 0.85,
@@ -197,22 +260,119 @@ export function analyzeDescription(description) {
197
260
  const detections = [];
198
261
  const lower = description.toLowerCase();
199
262
  const descriptionPatterns = [
200
- { keywords: ["react", "next.js", "nextjs", "frontend", "ui component"], tag: "WEB-REACT", evidence: "React/frontend mentioned in description" },
201
- { keywords: ["api", "rest", "graphql", "backend", "server", "endpoint"], tag: "API", evidence: "API/backend mentioned in description" },
202
- { keywords: ["blockchain", "crypto", "defi", "web3", "solidity", "ethereum", "smart contract"], tag: "WEB3", evidence: "Blockchain/Web3 mentioned in description" },
203
- { keywords: ["game", "arcade", "gameplay", "player"], tag: "GAME", evidence: "Game mentioned in description" },
204
- { keywords: ["social", "networking", "linkedin", "profile", "feed", "connection"], tag: "SOCIAL", evidence: "Social features mentioned in description" },
205
- { keywords: ["realtime", "real-time", "websocket", "live", "streaming"], tag: "REALTIME", evidence: "Real-time features mentioned in description" },
206
- { keywords: ["state machine", "workflow", "finite state", "transition"], tag: "STATE-MACHINE", evidence: "State machine mentioned in description" },
207
- { keywords: ["cli", "command-line", "command line", "terminal tool"], tag: "CLI", evidence: "CLI tool mentioned in description" },
208
- { keywords: ["library", "package", "npm", "sdk", "module"], tag: "LIBRARY", evidence: "Library/package mentioned in description" },
209
- { keywords: ["data pipeline", "etl", "data processing", "batch"], tag: "DATA-PIPELINE", evidence: "Data pipeline mentioned in description" },
210
- { keywords: ["machine learning", "ml model", "training", "inference", "neural"], tag: "ML", evidence: "ML mentioned in description" },
211
- { keywords: ["hipaa", "phi", "healthcare", "medical", "patient"], tag: "HEALTHCARE", evidence: "Healthcare mentioned in description" },
212
- { keywords: ["financial", "fintech", "payment", "transaction", "banking"], tag: "FINTECH", evidence: "Fintech mentioned in description" },
213
- { keywords: ["analytics", "dashboard", "reporting", "metrics", "data warehouse"], tag: "ANALYTICS", evidence: "Analytics mentioned in description" },
214
- { keywords: ["mobile", "react native", "flutter", "ios", "android"], tag: "MOBILE", evidence: "Mobile mentioned in description" },
215
- { keywords: ["infrastructure", "terraform", "kubernetes", "devops", "deploy"], tag: "INFRA", evidence: "Infrastructure mentioned in description" },
263
+ {
264
+ keywords: ["react", "next.js", "nextjs", "frontend", "ui component"],
265
+ tag: "WEB-REACT",
266
+ evidence: "React/frontend mentioned in description",
267
+ },
268
+ {
269
+ keywords: ["api", "rest", "graphql", "backend", "server", "endpoint"],
270
+ tag: "API",
271
+ evidence: "API/backend mentioned in description",
272
+ },
273
+ {
274
+ keywords: [
275
+ "blockchain",
276
+ "crypto",
277
+ "defi",
278
+ "web3",
279
+ "solidity",
280
+ "ethereum",
281
+ "smart contract",
282
+ ],
283
+ tag: "WEB3",
284
+ evidence: "Blockchain/Web3 mentioned in description",
285
+ },
286
+ {
287
+ keywords: ["game", "arcade", "gameplay", "player"],
288
+ tag: "GAME",
289
+ evidence: "Game mentioned in description",
290
+ },
291
+ {
292
+ keywords: [
293
+ "social",
294
+ "networking",
295
+ "linkedin",
296
+ "profile",
297
+ "feed",
298
+ "connection",
299
+ ],
300
+ tag: "SOCIAL",
301
+ evidence: "Social features mentioned in description",
302
+ },
303
+ {
304
+ keywords: ["realtime", "real-time", "websocket", "live", "streaming"],
305
+ tag: "REALTIME",
306
+ evidence: "Real-time features mentioned in description",
307
+ },
308
+ {
309
+ keywords: ["state machine", "workflow", "finite state", "transition"],
310
+ tag: "STATE-MACHINE",
311
+ evidence: "State machine mentioned in description",
312
+ },
313
+ {
314
+ keywords: ["cli", "command-line", "command line", "terminal tool"],
315
+ tag: "CLI",
316
+ evidence: "CLI tool mentioned in description",
317
+ },
318
+ {
319
+ keywords: ["library", "package", "npm", "sdk", "module"],
320
+ tag: "LIBRARY",
321
+ evidence: "Library/package mentioned in description",
322
+ },
323
+ {
324
+ keywords: ["data pipeline", "etl", "data processing", "batch"],
325
+ tag: "DATA-PIPELINE",
326
+ evidence: "Data pipeline mentioned in description",
327
+ },
328
+ {
329
+ keywords: [
330
+ "machine learning",
331
+ "ml model",
332
+ "training",
333
+ "inference",
334
+ "neural",
335
+ ],
336
+ tag: "ML",
337
+ evidence: "ML mentioned in description",
338
+ },
339
+ {
340
+ keywords: ["hipaa", "phi", "healthcare", "medical", "patient"],
341
+ tag: "HEALTHCARE",
342
+ evidence: "Healthcare mentioned in description",
343
+ },
344
+ {
345
+ keywords: ["financial", "fintech", "payment", "transaction", "banking"],
346
+ tag: "FINTECH",
347
+ evidence: "Fintech mentioned in description",
348
+ },
349
+ {
350
+ keywords: [
351
+ "analytics",
352
+ "dashboard",
353
+ "reporting",
354
+ "metrics",
355
+ "data warehouse",
356
+ ],
357
+ tag: "ANALYTICS",
358
+ evidence: "Analytics mentioned in description",
359
+ },
360
+ {
361
+ keywords: ["mobile", "react native", "flutter", "ios", "android"],
362
+ tag: "MOBILE",
363
+ evidence: "Mobile mentioned in description",
364
+ },
365
+ {
366
+ keywords: [
367
+ "infrastructure",
368
+ "terraform",
369
+ "kubernetes",
370
+ "devops",
371
+ "deploy",
372
+ ],
373
+ tag: "INFRA",
374
+ evidence: "Infrastructure mentioned in description",
375
+ },
216
376
  ];
217
377
  for (const pattern of descriptionPatterns) {
218
378
  const found = pattern.keywords.filter((kw) => lower.includes(kw));
@@ -1 +1 @@
1
- {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/analyzers/package-json.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/analyzers/package-json.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,10 @@ import type { GsPropertyScore } from "../../shared/types.js";
6
6
  * Score the Composable GS property.
7
7
  * 2 = services + repositories + interface files, 1 = services only, 0 = none.
8
8
  *
9
- * Recognizes both conventional CRUD patterns (services/repositories/) and
10
- * CLI/LIBRARY patterns (tools/handlers/ as services, registry/adapters/ as repositories).
9
+ * Project-type aware:
10
+ * - GitHub Actions: composability measured via action.yml interface contract
11
+ * - Libraries/CLIs: composability measured via exported types and public API surface
12
+ * - Web services: conventional service/repository layer split
11
13
  */
12
14
  export declare function scoreComposable(projectDir: string, allFiles: string[]): GsPropertyScore;
13
15
  //# sourceMappingURL=composable-scorer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"composable-scorer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/scorers/composable-scorer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,eAAe,CA6CvF"}
1
+ {"version":3,"file":"composable-scorer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/scorers/composable-scorer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAsC7D;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,eAAe,CAmEvF"}
@@ -4,14 +4,49 @@
4
4
  import { existsSync } from "node:fs";
5
5
  import { join } from "node:path";
6
6
  import { gs, isSourceCodeFile } from "./scorer-utils.js";
7
+ /**
8
+ * Detect whether a project is a GitHub Action (has action.yml / action.yaml at root).
9
+ * GitHub Actions define their composability contract through action.yml inputs/outputs —
10
+ * a service/repository layer split is not applicable to this project type.
11
+ */
12
+ function isGitHubAction(projectDir) {
13
+ return existsSync(join(projectDir, "action.yml")) || existsSync(join(projectDir, "action.yaml"));
14
+ }
15
+ /**
16
+ * Detect whether a project is a library, CLI, or standalone tool.
17
+ * These project types expose composability through exported types and interfaces
18
+ * rather than internal service/repository layers.
19
+ */
20
+ function isLibraryOrCli(projectDir, allFiles) {
21
+ const hasSrc = existsSync(join(projectDir, "src"));
22
+ const root = hasSrc ? join(projectDir, "src") : projectDir;
23
+ // Has a shared/ or types/ directory with source files → library interface pattern
24
+ const hasSharedOrTypes = existsSync(join(root, "shared")) || existsSync(join(root, "types"));
25
+ // Has index.ts at the root of src/ → explicit public API surface (library pattern)
26
+ const hasIndexExport = existsSync(join(root, "index.ts")) || existsSync(join(root, "index.js"));
27
+ // Has a bin/ directory or bin field in package.json → CLI project
28
+ const hasBin = existsSync(join(projectDir, "bin"));
29
+ // No route/controller files anywhere → not a web service
30
+ const hasRouteFiles = allFiles.some((f) => /\/(routes?|controllers?|handlers?|endpoints?|api)\//i.test(f.replace(/\\/g, "/")));
31
+ return !hasRouteFiles && (hasSharedOrTypes || hasIndexExport || hasBin);
32
+ }
7
33
  /**
8
34
  * Score the Composable GS property.
9
35
  * 2 = services + repositories + interface files, 1 = services only, 0 = none.
10
36
  *
11
- * Recognizes both conventional CRUD patterns (services/repositories/) and
12
- * CLI/LIBRARY patterns (tools/handlers/ as services, registry/adapters/ as repositories).
37
+ * Project-type aware:
38
+ * - GitHub Actions: composability measured via action.yml interface contract
39
+ * - Libraries/CLIs: composability measured via exported types and public API surface
40
+ * - Web services: conventional service/repository layer split
13
41
  */
14
42
  export function scoreComposable(projectDir, allFiles) {
43
+ // GitHub Actions define their contract through action.yml — service layers don't apply
44
+ if (isGitHubAction(projectDir)) {
45
+ return gs("composable", 2, [
46
+ "GitHub Action detected — composability contract defined by action.yml inputs/outputs",
47
+ "Interface boundary enforced by the GitHub Actions runner (not an internal service layer)",
48
+ ]);
49
+ }
15
50
  const hasSrc = existsSync(join(projectDir, "src"));
16
51
  const root = hasSrc ? "src" : "";
17
52
  const serviceDir = [
@@ -43,6 +78,19 @@ export function scoreComposable(projectDir, allFiles) {
43
78
  "No repository layer found — consider extracting DB access to repositories/",
44
79
  ]);
45
80
  }
81
+ // Library/CLI projects: check for public API surface as composability evidence
82
+ if (isLibraryOrCli(projectDir, allFiles)) {
83
+ if (hasInterfaces) {
84
+ return gs("composable", 2, [
85
+ "Library/CLI project — composability measured via exported interface surface",
86
+ "Interface/type files detected — public API contract is explicit",
87
+ ]);
88
+ }
89
+ return gs("composable", 1, [
90
+ "Library/CLI project — composability measured via exported interface surface",
91
+ "No dedicated interface/type files found — consider adding types/ or shared/ for explicit contracts",
92
+ ]);
93
+ }
46
94
  return gs("composable", 0, [
47
95
  "No service layer found — business logic likely lives in route handlers",
48
96
  "No repository layer found",
@@ -1 +1 @@
1
- {"version":3,"file":"composable-scorer.js","sourceRoot":"","sources":["../../../src/analyzers/scorers/composable-scorer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,QAAkB;IACpE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjC,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;QAC/C,UAAU,EAAE,SAAS;KACtB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,MAAM,aAAa,GAAG;QACpB,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;QACpD,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QAC9C,cAAc,EAAE,YAAY;KAC7B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CACJ,kDAAkD,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9E,gBAAgB,CAAC,CAAC,CAAC,CACtB,CAAC;IAEF,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE;YACzB,wBAAwB,UAAU,GAAG;YACrC,2BAA2B,aAAa,GAAG;YAC3C,aAAa;gBACX,CAAC,CAAC,mCAAmC;gBACrC,CAAC,CAAC,+CAA+C;SACpD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE;YACzB,wBAAwB,UAAU,GAAG;YACrC,4EAA4E;SAC7E,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE;QACzB,wEAAwE;QACxE,2BAA2B;KAC5B,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"composable-scorer.js","sourceRoot":"","sources":["../../../src/analyzers/scorers/composable-scorer.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,9 @@
4
4
  import type { GsPropertyScore } from "../../shared/types.js";
5
5
  /**
6
6
  * Score the Executable GS property.
7
- * 2 = tests passed + CI configured OR verification-state.json with passed steps.
8
- * 1 = tests passed locally but no CI or verification state.
7
+ * 2 = tests passed + CI configured OR verification-state.json with passed steps
8
+ * OR tests passed + harness-run.json with ≥1 PASS result AND L2 coverage ≥ 50%.
9
+ * 1 = tests passed locally but no CI, no verification state, or harness exists but 0% passing.
9
10
  * 0 = tests failed OR no test infrastructure.
10
11
  */
11
12
  export declare function scoreExecutable(projectDir: string, testsPassed: boolean): GsPropertyScore;
@@ -1 +1 @@
1
- {"version":3,"file":"executable-scorer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/scorers/executable-scorer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,eAAe,CA2CzF"}
1
+ {"version":3,"file":"executable-scorer.d.ts","sourceRoot":"","sources":["../../../src/analyzers/scorers/executable-scorer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA8C7D;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,GACnB,eAAe,CA8EjB"}
@@ -4,10 +4,44 @@
4
4
  import { existsSync, readFileSync } from "node:fs";
5
5
  import { join } from "node:path";
6
6
  import { gs } from "./scorer-utils.js";
7
+ /**
8
+ * Read harness-run.json from .forgecraft/harness-run.json.
9
+ * Returns null when file is missing or unparseable.
10
+ */
11
+ function readHarnessRun(projectDir) {
12
+ const runJsonPath = join(projectDir, ".forgecraft", "harness-run.json");
13
+ if (!existsSync(runJsonPath))
14
+ return null;
15
+ try {
16
+ const raw = readFileSync(runJsonPath, "utf-8");
17
+ return JSON.parse(raw);
18
+ }
19
+ catch {
20
+ return null;
21
+ }
22
+ }
23
+ /**
24
+ * Count total use cases in docs/use-cases.md.
25
+ * Returns 0 when file is missing or unparseable.
26
+ */
27
+ function countUseCases(projectDir) {
28
+ const useCasesPath = join(projectDir, "docs", "use-cases.md");
29
+ if (!existsSync(useCasesPath))
30
+ return 0;
31
+ try {
32
+ const content = readFileSync(useCasesPath, "utf-8");
33
+ const matches = content.match(/^##\s+UC-\d{3}:/gm);
34
+ return matches?.length ?? 0;
35
+ }
36
+ catch {
37
+ return 0;
38
+ }
39
+ }
7
40
  /**
8
41
  * Score the Executable GS property.
9
- * 2 = tests passed + CI configured OR verification-state.json with passed steps.
10
- * 1 = tests passed locally but no CI or verification state.
42
+ * 2 = tests passed + CI configured OR verification-state.json with passed steps
43
+ * OR tests passed + harness-run.json with ≥1 PASS result AND L2 coverage ≥ 50%.
44
+ * 1 = tests passed locally but no CI, no verification state, or harness exists but 0% passing.
11
45
  * 0 = tests failed OR no test infrastructure.
12
46
  */
13
47
  export function scoreExecutable(projectDir, testsPassed) {
@@ -34,8 +68,12 @@ export function scoreExecutable(projectDir, testsPassed) {
34
68
  }
35
69
  }
36
70
  const ciPaths = [
37
- ".github/workflows", ".gitlab-ci.yml", ".circleci/config.yml",
38
- "Jenkinsfile", ".travis.yml", "azure-pipelines.yml",
71
+ ".github/workflows",
72
+ ".gitlab-ci.yml",
73
+ ".circleci/config.yml",
74
+ "Jenkinsfile",
75
+ ".travis.yml",
76
+ "azure-pipelines.yml",
39
77
  ];
40
78
  const hasCi = ciPaths.some((p) => existsSync(join(projectDir, p)));
41
79
  if (hasCi) {
@@ -43,9 +81,31 @@ export function scoreExecutable(projectDir, testsPassed) {
43
81
  "Tests passed + CI pipeline configured (automated runtime execution evidence)",
44
82
  ]);
45
83
  }
84
+ // Harness evidence path
85
+ const harnessRun = readHarnessRun(projectDir);
86
+ if (harnessRun) {
87
+ const totalUcs = countUseCases(projectDir);
88
+ const l2Coverage = totalUcs > 0 ? harnessRun.passed / totalUcs : 0;
89
+ const pct = Math.round(l2Coverage * 100);
90
+ const evidenceLine = pct >= 100
91
+ ? `Harness run: ${harnessRun.passed}/${totalUcs} UCs passing (100% L2 coverage) — behavioral contracts verified`
92
+ : `Harness run: ${harnessRun.passed}/${totalUcs} UCs passing (${pct}% L2 coverage) — run more probes for full coverage`;
93
+ if (harnessRun.passed >= 1 && l2Coverage >= 0.5) {
94
+ return gs("executable", 2, [
95
+ "Tests passed + harness execution evidence recorded",
96
+ evidenceLine,
97
+ ]);
98
+ }
99
+ // Harness exists but insufficient coverage
100
+ return gs("executable", 1, [
101
+ "Tests passed locally but harness coverage below 50% or 0 probes passing",
102
+ evidenceLine,
103
+ ]);
104
+ }
46
105
  return gs("executable", 1, [
47
106
  "Tests passed locally but no CI configured and no verification-state.json",
48
107
  "Local pass is necessary but not sufficient for pre-release — add CI or record_verification steps",
108
+ "No harness-run.json found — run run_harness to generate behavioral execution evidence",
49
109
  ]);
50
110
  }
51
111
  //# sourceMappingURL=executable-scorer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"executable-scorer.js","sourceRoot":"","sources":["../../../src/analyzers/scorers/executable-scorer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,WAAoB;IACtE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE;YACzB,0FAA0F;SAC3F,CAAC,CAAC;IACL,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,yBAAyB,CAAC,CAAC;IACrF,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAG3B,CAAC;YACF,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC;YAC9E,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE;oBACzB,uEAAuE;oBACvE,gBAAgB,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;iBAC7D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG;QACd,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB;QAC7D,aAAa,EAAE,aAAa,EAAE,qBAAqB;KACpD,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE;YACzB,8EAA8E;SAC/E,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE;QACzB,0EAA0E;QAC1E,kGAAkG;KACnG,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"executable-scorer.js","sourceRoot":"","sources":["../../../src/analyzers/scorers/executable-scorer.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,11 @@ export declare const ROUTE_DIRS: string[];
8
8
  export declare const DB_CALL_PATTERNS: RegExp[];
9
9
  /** Lines that are comments or imports — excluded from DB call detection. */
10
10
  export declare const COMMENT_OR_IMPORT: RegExp;
11
- /** Minimum instruction-file length to be considered substantive. */
12
- export declare const MIN_INSTRUCTION_FILE_LINES = 40;
13
- /** Keywords that indicate an instruction file covers architecture/conventions/decisions. */
11
+ /**
12
+ * Keywords that indicate an instruction file covers architecture/conventions/decisions.
13
+ * Intentionally broad to be tech-agnostic: web services, libraries, CLIs,
14
+ * GitHub Actions, and ML projects each use different vocabulary.
15
+ */
14
16
  export declare const INSTRUCTION_COVERAGE_KEYWORDS: string[];
15
17
  /** Minimum distinct keyword hits to award score 2 for Self-describing. */
16
18
  export declare const MIN_KEYWORD_HITS = 3;
@@ -1 +1 @@
1
- {"version":3,"file":"scorer-utils.d.ts","sourceRoot":"","sources":["../../../src/analyzers/scorers/scorer-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIzF,iEAAiE;AACjE,eAAO,MAAM,UAAU,UAA4D,CAAC;AAEpF,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,EAAE,MAAM,EASpC,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,QAA+C,CAAC;AAE9E,oEAAoE;AACpE,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,4FAA4F;AAC5F,eAAO,MAAM,6BAA6B,UAUzC,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAIlC,sCAAsC;AACtC,wBAAgB,EAAE,CAChB,QAAQ,EAAE,UAAU,EACpB,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAChB,QAAQ,EAAE,MAAM,EAAE,GACjB,eAAe,CAEjB;AAID,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG7D;AAED,6DAA6D;AAC7D,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGrD;AAID,6DAA6D;AAC7D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,cAAc,EAAE,GAC3B,IAAI,CASN;AAED,gDAAgD;AAChD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAMxE"}
1
+ {"version":3,"file":"scorer-utils.d.ts","sourceRoot":"","sources":["../../../src/analyzers/scorers/scorer-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAI/B,iEAAiE;AACjE,eAAO,MAAM,UAAU,UAMtB,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,EAAE,MAAM,EASpC,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,QAA+C,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,UAuBzC,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAIlC,sCAAsC;AACtC,wBAAgB,EAAE,CAChB,QAAQ,EAAE,UAAU,EACpB,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAChB,QAAQ,EAAE,MAAM,EAAE,GACjB,eAAe,CAEjB;AAID,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI1D;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK7D;AAED,6DAA6D;AAC7D,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI/D;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKrD;AAID,6DAA6D;AAC7D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,cAAc,EAAE,GAC3B,IAAI,CAaN;AAED,gDAAgD;AAChD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAMxE"}