@warpgogol/forge 5.2.3 → 5.3.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 (584) hide show
  1. package/AGENTS.md +34 -2
  2. package/README.md +1 -1
  3. package/README.uk.md +8 -8
  4. package/bin/cli.ts +1 -0
  5. package/dist/bin/cli.js +1 -0
  6. package/dist/bin/cli.js.map +1 -1
  7. package/dist/os/adr/adr.module.d.ts.map +1 -1
  8. package/dist/os/adr/adr.module.js +8 -3
  9. package/dist/os/adr/adr.module.js.map +1 -1
  10. package/dist/os/adr/frontmatter-io.js +5 -5
  11. package/dist/os/adr/frontmatter-io.js.map +1 -1
  12. package/dist/os/adr/handlers/archive.d.ts.map +1 -1
  13. package/dist/os/adr/handlers/archive.js +10 -4
  14. package/dist/os/adr/handlers/archive.js.map +1 -1
  15. package/dist/os/adr/handlers/implement-stamp.d.ts.map +1 -1
  16. package/dist/os/adr/handlers/implement-stamp.js +10 -9
  17. package/dist/os/adr/handlers/implement-stamp.js.map +1 -1
  18. package/dist/os/adr/handlers/list-create.js +5 -5
  19. package/dist/os/adr/handlers/list-create.js.map +1 -1
  20. package/dist/os/adr/handlers/validate.js +1 -1
  21. package/dist/os/adr/handlers/validate.js.map +1 -1
  22. package/dist/os/audit/audit.module.js +3 -3
  23. package/dist/os/audit/audit.module.js.map +1 -1
  24. package/dist/os/audit/frontmatter-io.js +5 -5
  25. package/dist/os/audit/frontmatter-io.js.map +1 -1
  26. package/dist/os/audit/handlers/archive.d.ts.map +1 -1
  27. package/dist/os/audit/handlers/archive.js +10 -4
  28. package/dist/os/audit/handlers/archive.js.map +1 -1
  29. package/dist/os/compass/compass.module.d.ts.map +1 -1
  30. package/dist/os/compass/compass.module.js +17 -1
  31. package/dist/os/compass/compass.module.js.map +1 -1
  32. package/dist/os/compass/handlers/compass-audit-handler.d.ts.map +1 -1
  33. package/dist/os/compass/handlers/compass-audit-handler.js +12 -5
  34. package/dist/os/compass/handlers/compass-audit-handler.js.map +1 -1
  35. package/dist/os/compass/handlers/compass-change-summary-handler.d.ts.map +1 -1
  36. package/dist/os/compass/handlers/compass-change-summary-handler.js +3 -2
  37. package/dist/os/compass/handlers/compass-change-summary-handler.js.map +1 -1
  38. package/dist/os/compass/handlers/compass-inventory-handler.d.ts.map +1 -1
  39. package/dist/os/compass/handlers/compass-inventory-handler.js +6 -4
  40. package/dist/os/compass/handlers/compass-inventory-handler.js.map +1 -1
  41. package/dist/os/compass/handlers/compass-inventory.d.ts.map +1 -1
  42. package/dist/os/compass/handlers/compass-inventory.js +10 -8
  43. package/dist/os/compass/handlers/compass-inventory.js.map +1 -1
  44. package/dist/os/compass/handlers/compass-migrate-handler.js +1 -1
  45. package/dist/os/compass/handlers/compass-migrate-handler.js.map +1 -1
  46. package/dist/os/compass/handlers/compass-migrate.d.ts.map +1 -1
  47. package/dist/os/compass/handlers/compass-migrate.js +6 -3
  48. package/dist/os/compass/handlers/compass-migrate.js.map +1 -1
  49. package/dist/os/compass/handlers/git-revision.d.ts.map +1 -1
  50. package/dist/os/compass/handlers/git-revision.js +9 -6
  51. package/dist/os/compass/handlers/git-revision.js.map +1 -1
  52. package/dist/os/compass/handlers/resolve-scan-root.js +1 -1
  53. package/dist/os/compass/handlers/resolve-scan-root.js.map +1 -1
  54. package/dist/os/compass/handlers/summary-record.d.ts.map +1 -1
  55. package/dist/os/compass/handlers/summary-record.js +8 -4
  56. package/dist/os/compass/handlers/summary-record.js.map +1 -1
  57. package/dist/os/core/core.module.d.ts.map +1 -1
  58. package/dist/os/core/core.module.js +57 -4
  59. package/dist/os/core/core.module.js.map +1 -1
  60. package/dist/os/core/handlers/assets-helpers.d.ts.map +1 -1
  61. package/dist/os/core/handlers/assets-helpers.js +6 -3
  62. package/dist/os/core/handlers/assets-helpers.js.map +1 -1
  63. package/dist/os/core/handlers/build.js +1 -1
  64. package/dist/os/core/handlers/build.js.map +1 -1
  65. package/dist/os/core/handlers/determinism-check.d.ts.map +1 -1
  66. package/dist/os/core/handlers/determinism-check.js +10 -6
  67. package/dist/os/core/handlers/determinism-check.js.map +1 -1
  68. package/dist/os/core/handlers/dev.js +1 -1
  69. package/dist/os/core/handlers/dev.js.map +1 -1
  70. package/dist/os/core/handlers/file-size-lint.d.ts.map +1 -1
  71. package/dist/os/core/handlers/file-size-lint.js +11 -7
  72. package/dist/os/core/handlers/file-size-lint.js.map +1 -1
  73. package/dist/os/core/handlers/forge-autonomy-validate.d.ts.map +1 -1
  74. package/dist/os/core/handlers/forge-autonomy-validate.js +9 -5
  75. package/dist/os/core/handlers/forge-autonomy-validate.js.map +1 -1
  76. package/dist/os/core/handlers/knowledge-compact.js +1 -1
  77. package/dist/os/core/handlers/knowledge-compact.js.map +1 -1
  78. package/dist/os/core/handlers/package-health.js +1 -1
  79. package/dist/os/core/handlers/package-health.js.map +1 -1
  80. package/dist/os/core/handlers/pinned-check.js +2 -2
  81. package/dist/os/core/handlers/pinned-check.js.map +1 -1
  82. package/dist/os/core/handlers/pinned-init.d.ts.map +1 -1
  83. package/dist/os/core/handlers/pinned-init.js +9 -8
  84. package/dist/os/core/handlers/pinned-init.js.map +1 -1
  85. package/dist/os/core/handlers/pinned-validate.js +3 -3
  86. package/dist/os/core/handlers/pinned-validate.js.map +1 -1
  87. package/dist/os/core/handlers/profile-resolve.js +1 -1
  88. package/dist/os/core/handlers/profile-resolve.js.map +1 -1
  89. package/dist/os/core/handlers/public-surface.js +1 -1
  90. package/dist/os/core/handlers/public-surface.js.map +1 -1
  91. package/dist/os/core/handlers/release-prepare.d.ts.map +1 -1
  92. package/dist/os/core/handlers/release-prepare.js +10 -6
  93. package/dist/os/core/handlers/release-prepare.js.map +1 -1
  94. package/dist/os/core/handlers/release-publish.js +6 -6
  95. package/dist/os/core/handlers/release-publish.js.map +1 -1
  96. package/dist/os/core/handlers/validate.js +1 -1
  97. package/dist/os/core/handlers/validate.js.map +1 -1
  98. package/dist/os/exploration/exploration.module.d.ts.map +1 -1
  99. package/dist/os/exploration/exploration.module.js +1 -0
  100. package/dist/os/exploration/exploration.module.js.map +1 -1
  101. package/dist/os/exploration/frontmatter-io.js +4 -4
  102. package/dist/os/exploration/frontmatter-io.js.map +1 -1
  103. package/dist/os/exploration/handlers/archive.js +3 -3
  104. package/dist/os/exploration/handlers/archive.js.map +1 -1
  105. package/dist/os/mission/handlers/archive.d.ts.map +1 -1
  106. package/dist/os/mission/handlers/archive.js +22 -19
  107. package/dist/os/mission/handlers/archive.js.map +1 -1
  108. package/dist/os/mission/mission.module.js +3 -3
  109. package/dist/os/mission/mission.module.js.map +1 -1
  110. package/dist/os/naming/naming-convention.d.ts.map +1 -1
  111. package/dist/os/naming/naming-convention.js +7 -3
  112. package/dist/os/naming/naming-convention.js.map +1 -1
  113. package/dist/os/naming/naming.module.d.ts.map +1 -1
  114. package/dist/os/naming/naming.module.js +4 -3
  115. package/dist/os/naming/naming.module.js.map +1 -1
  116. package/dist/os/notes/notes.module.d.ts.map +1 -1
  117. package/dist/os/notes/notes.module.js +6 -3
  118. package/dist/os/notes/notes.module.js.map +1 -1
  119. package/dist/os/plan/frontmatter-io.js +5 -5
  120. package/dist/os/plan/frontmatter-io.js.map +1 -1
  121. package/dist/os/plan/handlers/archive.d.ts.map +1 -1
  122. package/dist/os/plan/handlers/archive.js +10 -4
  123. package/dist/os/plan/handlers/archive.js.map +1 -1
  124. package/dist/os/plan/plan.module.js +3 -3
  125. package/dist/os/plan/plan.module.js.map +1 -1
  126. package/dist/os/plugin/plugin.module.d.ts.map +1 -1
  127. package/dist/os/plugin/plugin.module.js +6 -3
  128. package/dist/os/plugin/plugin.module.js.map +1 -1
  129. package/dist/os/program/discovery.js +2 -2
  130. package/dist/os/program/discovery.js.map +1 -1
  131. package/dist/os/program/handlers/complete.js +1 -1
  132. package/dist/os/program/handlers/complete.js.map +1 -1
  133. package/dist/os/program/handlers/lease.js +1 -1
  134. package/dist/os/program/handlers/lease.js.map +1 -1
  135. package/dist/os/program/handlers/seal.js +1 -1
  136. package/dist/os/program/handlers/seal.js.map +1 -1
  137. package/dist/os/program/lease.js +1 -1
  138. package/dist/os/program/lease.js.map +1 -1
  139. package/dist/os/program/program.module.d.ts.map +1 -1
  140. package/dist/os/program/program.module.js +9 -3
  141. package/dist/os/program/program.module.js.map +1 -1
  142. package/dist/os/queue/index.js +1 -1
  143. package/dist/os/queue/manifest.d.ts.map +1 -1
  144. package/dist/os/queue/manifest.js +4 -8
  145. package/dist/os/queue/manifest.js.map +1 -1
  146. package/dist/os/rfc/acceptance.d.ts.map +1 -1
  147. package/dist/os/rfc/acceptance.js +10 -6
  148. package/dist/os/rfc/acceptance.js.map +1 -1
  149. package/dist/os/rfc/decision-log.d.ts.map +1 -1
  150. package/dist/os/rfc/decision-log.js +4 -3
  151. package/dist/os/rfc/decision-log.js.map +1 -1
  152. package/dist/os/rfc/dna-trace.d.ts.map +1 -1
  153. package/dist/os/rfc/dna-trace.js +7 -2
  154. package/dist/os/rfc/dna-trace.js.map +1 -1
  155. package/dist/os/rfc/frontmatter-io.js +5 -5
  156. package/dist/os/rfc/frontmatter-io.js.map +1 -1
  157. package/dist/os/rfc/handlers/archive.d.ts.map +1 -1
  158. package/dist/os/rfc/handlers/archive.js +11 -5
  159. package/dist/os/rfc/handlers/archive.js.map +1 -1
  160. package/dist/os/rfc/handlers/check.d.ts.map +1 -1
  161. package/dist/os/rfc/handlers/check.js +6 -3
  162. package/dist/os/rfc/handlers/check.js.map +1 -1
  163. package/dist/os/rfc/handlers/implement-stamp.d.ts.map +1 -1
  164. package/dist/os/rfc/handlers/implement-stamp.js +11 -10
  165. package/dist/os/rfc/handlers/implement-stamp.js.map +1 -1
  166. package/dist/os/rfc/handlers/index-graph.js +3 -3
  167. package/dist/os/rfc/handlers/index-graph.js.map +1 -1
  168. package/dist/os/rfc/handlers/lifecycle.d.ts.map +1 -1
  169. package/dist/os/rfc/handlers/lifecycle.js +6 -2
  170. package/dist/os/rfc/handlers/lifecycle.js.map +1 -1
  171. package/dist/os/rfc/handlers/list-create.d.ts.map +1 -1
  172. package/dist/os/rfc/handlers/list-create.js +7 -6
  173. package/dist/os/rfc/handlers/list-create.js.map +1 -1
  174. package/dist/os/rfc/handlers/shared.js +3 -3
  175. package/dist/os/rfc/handlers/shared.js.map +1 -1
  176. package/dist/os/rfc/handlers/supersede-propose.d.ts.map +1 -1
  177. package/dist/os/rfc/handlers/supersede-propose.js +7 -3
  178. package/dist/os/rfc/handlers/supersede-propose.js.map +1 -1
  179. package/dist/os/rfc/handlers/validate-rules.d.ts.map +1 -1
  180. package/dist/os/rfc/handlers/validate-rules.js +8 -5
  181. package/dist/os/rfc/handlers/validate-rules.js.map +1 -1
  182. package/dist/os/rfc/rfc.module.d.ts.map +1 -1
  183. package/dist/os/rfc/rfc.module.js +44 -4
  184. package/dist/os/rfc/rfc.module.js.map +1 -1
  185. package/dist/os/rfc/verification-evidence.d.ts.map +1 -1
  186. package/dist/os/rfc/verification-evidence.js +9 -5
  187. package/dist/os/rfc/verification-evidence.js.map +1 -1
  188. package/dist/os/rfc/verification-refresh.d.ts.map +1 -1
  189. package/dist/os/rfc/verification-refresh.js +4 -3
  190. package/dist/os/rfc/verification-refresh.js.map +1 -1
  191. package/dist/os/session/frontmatter-io.js +12 -12
  192. package/dist/os/session/frontmatter-io.js.map +1 -1
  193. package/dist/os/session/handlers/archive.d.ts.map +1 -1
  194. package/dist/os/session/handlers/archive.js +10 -4
  195. package/dist/os/session/handlers/archive.js.map +1 -1
  196. package/dist/os/session/handlers/metrics-aggregate.d.ts.map +1 -1
  197. package/dist/os/session/handlers/metrics-aggregate.js +9 -5
  198. package/dist/os/session/handlers/metrics-aggregate.js.map +1 -1
  199. package/dist/os/session/handlers/metrics-rfc.d.ts.map +1 -1
  200. package/dist/os/session/handlers/metrics-rfc.js +11 -8
  201. package/dist/os/session/handlers/metrics-rfc.js.map +1 -1
  202. package/dist/os/session/handlers/metrics-session.d.ts.map +1 -1
  203. package/dist/os/session/handlers/metrics-session.js +6 -3
  204. package/dist/os/session/handlers/metrics-session.js.map +1 -1
  205. package/dist/os/session/handlers/save.d.ts.map +1 -1
  206. package/dist/os/session/handlers/save.js +14 -8
  207. package/dist/os/session/handlers/save.js.map +1 -1
  208. package/dist/os/session/session.module.d.ts.map +1 -1
  209. package/dist/os/session/session.module.js +6 -0
  210. package/dist/os/session/session.module.js.map +1 -1
  211. package/dist/os/spec/live-spec-list.js +4 -4
  212. package/dist/os/spec/live-spec-list.js.map +1 -1
  213. package/dist/os/spec/live-spec-merge.js +5 -5
  214. package/dist/os/spec/live-spec-merge.js.map +1 -1
  215. package/dist/os/spec/live-spec-show.js +3 -3
  216. package/dist/os/spec/live-spec-show.js.map +1 -1
  217. package/dist/os/spec/live-spec-validate.js +4 -4
  218. package/dist/os/spec/live-spec-validate.js.map +1 -1
  219. package/dist/os/spec/spec-materialize.js +9 -9
  220. package/dist/os/spec/spec-materialize.js.map +1 -1
  221. package/dist/os/spec/spec-status.js +9 -9
  222. package/dist/os/spec/spec-status.js.map +1 -1
  223. package/dist/os/spec/spec-validate.js +7 -7
  224. package/dist/os/spec/spec-validate.js.map +1 -1
  225. package/dist/os/spec/spec.module.d.ts.map +1 -1
  226. package/dist/os/spec/spec.module.js +8 -0
  227. package/dist/os/spec/spec.module.js.map +1 -1
  228. package/dist/os/werkstatt/handlers/lock.js +16 -16
  229. package/dist/os/werkstatt/handlers/lock.js.map +1 -1
  230. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js +3 -3
  231. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js.map +1 -1
  232. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts.map +1 -1
  233. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js +3 -2
  234. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js.map +1 -1
  235. package/dist/os/werkstatt/werkstatt.module.d.ts.map +1 -1
  236. package/dist/os/werkstatt/werkstatt.module.js +6 -2
  237. package/dist/os/werkstatt/werkstatt.module.js.map +1 -1
  238. package/dist/os/workflow/handlers.d.ts.map +1 -1
  239. package/dist/os/workflow/handlers.js +8 -5
  240. package/dist/os/workflow/handlers.js.map +1 -1
  241. package/dist/os/workflow/workflow.module.d.ts.map +1 -1
  242. package/dist/os/workflow/workflow.module.js +6 -3
  243. package/dist/os/workflow/workflow.module.js.map +1 -1
  244. package/dist/src/compass/contract-registry.js +1 -1
  245. package/dist/src/compass/contract-registry.js.map +1 -1
  246. package/dist/src/config/forge-config.d.ts +10 -1
  247. package/dist/src/config/forge-config.d.ts.map +1 -1
  248. package/dist/src/config/forge-config.js +8 -1
  249. package/dist/src/config/forge-config.js.map +1 -1
  250. package/dist/src/knowledge/budgets.js +1 -1
  251. package/dist/src/knowledge/budgets.js.map +1 -1
  252. package/dist/src/knowledge/compact.js +1 -1
  253. package/dist/src/knowledge/compact.js.map +1 -1
  254. package/dist/src/knowledge/parse.js +1 -1
  255. package/dist/src/knowledge/parse.js.map +1 -1
  256. package/dist/src/knowledge/sync.d.ts.map +1 -1
  257. package/dist/src/knowledge/sync.js +3 -5
  258. package/dist/src/knowledge/sync.js.map +1 -1
  259. package/dist/src/migration-adapters/git-utils.js +2 -2
  260. package/dist/src/migration-adapters/git-utils.js.map +1 -1
  261. package/dist/src/migration-adapters/ignored-files.js +2 -2
  262. package/dist/src/migration-adapters/ignored-files.js.map +1 -1
  263. package/dist/src/migration-adapters/node-typescript-pnpm/index.js +1 -1
  264. package/dist/src/migration-adapters/node-typescript-pnpm/index.js.map +1 -1
  265. package/dist/src/migration-adapters/phaser-pnpm/index.js +1 -1
  266. package/dist/src/migration-adapters/phaser-pnpm/index.js.map +1 -1
  267. package/dist/src/onboarding/agents-generate.d.ts +2 -0
  268. package/dist/src/onboarding/agents-generate.d.ts.map +1 -1
  269. package/dist/src/onboarding/agents-generate.js +73 -48
  270. package/dist/src/onboarding/agents-generate.js.map +1 -1
  271. package/dist/src/onboarding/create.d.ts.map +1 -1
  272. package/dist/src/onboarding/create.js +10 -10
  273. package/dist/src/onboarding/create.js.map +1 -1
  274. package/dist/src/onboarding/doctor.d.ts +6 -0
  275. package/dist/src/onboarding/doctor.d.ts.map +1 -1
  276. package/dist/src/onboarding/doctor.js +179 -61
  277. package/dist/src/onboarding/doctor.js.map +1 -1
  278. package/dist/src/onboarding/init.d.ts.map +1 -1
  279. package/dist/src/onboarding/init.js +30 -1
  280. package/dist/src/onboarding/init.js.map +1 -1
  281. package/dist/src/onboarding/invariant-engine.js +1 -1
  282. package/dist/src/onboarding/invariant-engine.js.map +1 -1
  283. package/dist/src/onboarding/memory-compact.d.ts +22 -0
  284. package/dist/src/onboarding/memory-compact.d.ts.map +1 -0
  285. package/dist/src/onboarding/memory-compact.js +148 -0
  286. package/dist/src/onboarding/memory-compact.js.map +1 -0
  287. package/dist/src/onboarding/memory-scaffold.d.ts +1 -0
  288. package/dist/src/onboarding/memory-scaffold.d.ts.map +1 -1
  289. package/dist/src/onboarding/memory-scaffold.js +2 -2
  290. package/dist/src/onboarding/memory-scaffold.js.map +1 -1
  291. package/dist/src/onboarding/nested-agents-generate.d.ts +4 -1
  292. package/dist/src/onboarding/nested-agents-generate.d.ts.map +1 -1
  293. package/dist/src/onboarding/nested-agents-generate.js +35 -6
  294. package/dist/src/onboarding/nested-agents-generate.js.map +1 -1
  295. package/dist/src/onboarding/nested-agents-templates.d.ts.map +1 -1
  296. package/dist/src/onboarding/nested-agents-templates.js +8 -12
  297. package/dist/src/onboarding/nested-agents-templates.js.map +1 -1
  298. package/dist/src/onboarding/npm-token-check.js +2 -2
  299. package/dist/src/onboarding/npm-token-check.js.map +1 -1
  300. package/dist/src/onboarding/prettierignore.d.ts +29 -0
  301. package/dist/src/onboarding/prettierignore.d.ts.map +1 -0
  302. package/dist/src/onboarding/prettierignore.js +231 -0
  303. package/dist/src/onboarding/prettierignore.js.map +1 -0
  304. package/dist/src/onboarding/profile-validate.d.ts.map +1 -1
  305. package/dist/src/onboarding/profile-validate.js +5 -4
  306. package/dist/src/onboarding/profile-validate.js.map +1 -1
  307. package/dist/src/onboarding/scaffold-project.d.ts.map +1 -1
  308. package/dist/src/onboarding/scaffold-project.js +35 -27
  309. package/dist/src/onboarding/scaffold-project.js.map +1 -1
  310. package/dist/src/onboarding/scaffold.js +1 -1
  311. package/dist/src/onboarding/scaffold.js.map +1 -1
  312. package/dist/src/onboarding/skill-markers.d.ts +27 -0
  313. package/dist/src/onboarding/skill-markers.d.ts.map +1 -0
  314. package/dist/src/onboarding/skill-markers.js +131 -0
  315. package/dist/src/onboarding/skill-markers.js.map +1 -0
  316. package/dist/src/onboarding/upgrade.d.ts +10 -0
  317. package/dist/src/onboarding/upgrade.d.ts.map +1 -1
  318. package/dist/src/onboarding/upgrade.js +215 -74
  319. package/dist/src/onboarding/upgrade.js.map +1 -1
  320. package/dist/src/onboarding/workspace-discovery.d.ts +1 -1
  321. package/dist/src/onboarding/workspace-discovery.d.ts.map +1 -1
  322. package/dist/src/onboarding/workspace-discovery.js +15 -3
  323. package/dist/src/onboarding/workspace-discovery.js.map +1 -1
  324. package/dist/src/pipeline-status.d.ts +6 -5
  325. package/dist/src/pipeline-status.d.ts.map +1 -1
  326. package/dist/src/pipeline-status.js +24 -19
  327. package/dist/src/pipeline-status.js.map +1 -1
  328. package/dist/src/profiles/stack-profile.js +1 -1
  329. package/dist/src/profiles/stack-profile.js.map +1 -1
  330. package/dist/src/registry.d.ts +1 -1
  331. package/dist/src/registry.d.ts.map +1 -1
  332. package/dist/src/registry.js +3 -3
  333. package/dist/src/registry.js.map +1 -1
  334. package/dist/src/skill-schema.d.ts +1 -1
  335. package/dist/src/skill-schema.d.ts.map +1 -1
  336. package/dist/src/skill-schema.js +4 -1
  337. package/dist/src/skill-schema.js.map +1 -1
  338. package/dist/src/types.d.ts +116 -0
  339. package/dist/src/types.d.ts.map +1 -1
  340. package/dist/src/utils/editable-region.d.ts +46 -0
  341. package/dist/src/utils/editable-region.d.ts.map +1 -0
  342. package/dist/src/utils/editable-region.js +125 -0
  343. package/dist/src/utils/editable-region.js.map +1 -0
  344. package/dist/src/utils/fs-idempotent.d.ts +2 -1
  345. package/dist/src/utils/fs-idempotent.d.ts.map +1 -1
  346. package/dist/src/utils/fs-idempotent.js +11 -7
  347. package/dist/src/utils/fs-idempotent.js.map +1 -1
  348. package/dist/src/utils/generated-marker.d.ts +17 -0
  349. package/dist/src/utils/generated-marker.d.ts.map +1 -1
  350. package/dist/src/utils/generated-marker.js +29 -1
  351. package/dist/src/utils/generated-marker.js.map +1 -1
  352. package/dist/src/utils/index.d.ts +3 -1
  353. package/dist/src/utils/index.d.ts.map +1 -1
  354. package/dist/src/utils/index.js +3 -1
  355. package/dist/src/utils/index.js.map +1 -1
  356. package/dist/src/utils/io.d.ts +9 -0
  357. package/dist/src/utils/io.d.ts.map +1 -0
  358. package/dist/src/utils/io.js +130 -0
  359. package/dist/src/utils/io.js.map +1 -0
  360. package/dist/src/utils/markdown-table.d.ts +21 -0
  361. package/dist/src/utils/markdown-table.d.ts.map +1 -0
  362. package/dist/src/utils/markdown-table.js +116 -0
  363. package/dist/src/utils/markdown-table.js.map +1 -0
  364. package/dist/src/utils/sync-fs.d.ts +5 -0
  365. package/dist/src/utils/sync-fs.d.ts.map +1 -0
  366. package/dist/src/utils/sync-fs.js +26 -0
  367. package/dist/src/utils/sync-fs.js.map +1 -0
  368. package/dist/src/validators/note-frontmatter-validate.js +1 -1
  369. package/dist/src/validators/note-frontmatter-validate.js.map +1 -1
  370. package/dist/src/validators/note-link-validate.js +1 -1
  371. package/dist/src/validators/note-link-validate.js.map +1 -1
  372. package/dist/src/validators/note-orphan-detect.js +1 -1
  373. package/dist/src/validators/note-orphan-detect.js.map +1 -1
  374. package/dist/src/validators/port-validate.js +1 -1
  375. package/dist/src/validators/port-validate.js.map +1 -1
  376. package/dist/src/validators/skill-validate.d.ts.map +1 -1
  377. package/dist/src/validators/skill-validate.js +34 -13
  378. package/dist/src/validators/skill-validate.js.map +1 -1
  379. package/docs/reference/forge-yaml.md +12 -0
  380. package/os/adr/adr.module.ts +136 -132
  381. package/os/adr/frontmatter-io.ts +5 -5
  382. package/os/adr/handlers/archive.ts +8 -4
  383. package/os/adr/handlers/implement-stamp.ts +14 -9
  384. package/os/adr/handlers/list-create.ts +5 -5
  385. package/os/adr/handlers/validate.ts +1 -1
  386. package/os/audit/audit.module.ts +33 -34
  387. package/os/audit/frontmatter-io.ts +5 -5
  388. package/os/audit/handlers/archive.ts +8 -4
  389. package/os/compass/compass.module.ts +17 -1
  390. package/os/compass/handlers/compass-audit-handler.ts +13 -5
  391. package/os/compass/handlers/compass-change-summary-handler.ts +4 -2
  392. package/os/compass/handlers/compass-inventory-handler.ts +7 -4
  393. package/os/compass/handlers/compass-inventory.ts +11 -8
  394. package/os/compass/handlers/compass-migrate-handler.ts +1 -1
  395. package/os/compass/handlers/compass-migrate.ts +7 -3
  396. package/os/compass/handlers/git-revision.ts +11 -6
  397. package/os/compass/handlers/resolve-scan-root.ts +1 -1
  398. package/os/compass/handlers/summary-record.ts +10 -4
  399. package/os/compass/handlers/tests/compass-audit-plan.test.ts +2 -1
  400. package/os/core/core.module.ts +58 -4
  401. package/os/core/handlers/assets-helpers.ts +7 -3
  402. package/os/core/handlers/build.ts +1 -1
  403. package/os/core/handlers/determinism-check.ts +12 -6
  404. package/os/core/handlers/dev.ts +1 -1
  405. package/os/core/handlers/file-size-lint.ts +16 -9
  406. package/os/core/handlers/forge-autonomy-validate.ts +10 -5
  407. package/os/core/handlers/knowledge-compact.ts +1 -1
  408. package/os/core/handlers/package-health.ts +1 -1
  409. package/os/core/handlers/pinned-check.ts +2 -2
  410. package/os/core/handlers/pinned-init.ts +9 -8
  411. package/os/core/handlers/pinned-validate.ts +3 -3
  412. package/os/core/handlers/profile-resolve.ts +1 -1
  413. package/os/core/handlers/public-surface.ts +1 -1
  414. package/os/core/handlers/release-prepare.ts +11 -6
  415. package/os/core/handlers/release-publish.ts +6 -6
  416. package/os/core/handlers/validate.ts +1 -1
  417. package/os/exploration/exploration.module.ts +1 -0
  418. package/os/exploration/frontmatter-io.ts +4 -4
  419. package/os/exploration/handlers/archive.ts +3 -3
  420. package/os/mission/handlers/archive.ts +27 -19
  421. package/os/mission/mission.module.ts +38 -39
  422. package/os/naming/naming-convention.ts +9 -3
  423. package/os/naming/naming.module.ts +25 -25
  424. package/os/notes/notes.module.ts +87 -85
  425. package/os/plan/frontmatter-io.ts +5 -5
  426. package/os/plan/handlers/archive.ts +8 -4
  427. package/os/plan/plan.module.ts +33 -34
  428. package/os/plugin/plugin.module.ts +8 -6
  429. package/os/program/discovery.ts +2 -2
  430. package/os/program/handlers/complete.ts +1 -1
  431. package/os/program/handlers/lease.ts +1 -1
  432. package/os/program/handlers/seal.ts +1 -1
  433. package/os/program/lease.ts +1 -1
  434. package/os/program/program.module.ts +198 -193
  435. package/os/queue/index.ts +1 -1
  436. package/os/queue/manifest.ts +10 -9
  437. package/os/queue/queue-validate.test.ts +6 -15
  438. package/os/rfc/acceptance.ts +12 -6
  439. package/os/rfc/decision-log.ts +4 -3
  440. package/os/rfc/dna-trace.ts +8 -2
  441. package/os/rfc/frontmatter-io.ts +5 -5
  442. package/os/rfc/handlers/archive.ts +9 -5
  443. package/os/rfc/handlers/check.ts +5 -3
  444. package/os/rfc/handlers/implement-stamp.ts +15 -10
  445. package/os/rfc/handlers/index-graph.ts +3 -3
  446. package/os/rfc/handlers/lifecycle.ts +7 -2
  447. package/os/rfc/handlers/list-create.ts +7 -6
  448. package/os/rfc/handlers/shared.ts +3 -3
  449. package/os/rfc/handlers/supersede-propose.ts +8 -3
  450. package/os/rfc/handlers/validate-rules-rfc1006.test.ts +18 -6
  451. package/os/rfc/handlers/validate-rules.ts +10 -5
  452. package/os/rfc/rfc-create-concurrent.test.ts +11 -3
  453. package/os/rfc/rfc.module.ts +413 -374
  454. package/os/rfc/verification-evidence.ts +11 -5
  455. package/os/rfc/verification-refresh.ts +4 -3
  456. package/os/session/frontmatter-io.ts +14 -14
  457. package/os/session/handlers/archive.ts +8 -4
  458. package/os/session/handlers/metrics-aggregate.ts +34 -13
  459. package/os/session/handlers/metrics-rfc.ts +13 -8
  460. package/os/session/handlers/metrics-session.ts +7 -3
  461. package/os/session/handlers/save.ts +12 -8
  462. package/os/session/session.module.ts +6 -0
  463. package/os/spec/live-spec-list.ts +4 -4
  464. package/os/spec/live-spec-merge.ts +5 -5
  465. package/os/spec/live-spec-show.ts +3 -3
  466. package/os/spec/live-spec-validate.ts +4 -4
  467. package/os/spec/spec-materialize.ts +9 -9
  468. package/os/spec/spec-status.ts +9 -9
  469. package/os/spec/spec-validate.ts +7 -7
  470. package/os/spec/spec.module.ts +8 -0
  471. package/os/werkstatt/handlers/lock.ts +16 -16
  472. package/os/werkstatt/handlers/werkstatt-lock-recover.ts +3 -3
  473. package/os/werkstatt/handlers/werkstatt-operation-validate.ts +4 -2
  474. package/os/werkstatt/werkstatt.module.ts +8 -5
  475. package/os/workflow/handlers.ts +7 -5
  476. package/os/workflow/workflow.module.ts +45 -44
  477. package/package.json +1 -1
  478. package/profiles/forge-shell.yaml +3 -0
  479. package/profiles/godot-game.yaml +3 -0
  480. package/profiles/phaser-game.yaml +3 -0
  481. package/profiles/site-workshop.yaml +567 -564
  482. package/skills/fo/fo-add-tests/SKILL.md +2 -2
  483. package/skills/fo/fo-architecture/SKILL.md +2 -2
  484. package/skills/fo/fo-compass-annotate/SKILL.md +2 -2
  485. package/skills/fo/fo-design-summit/SKILL.md +2 -2
  486. package/skills/fo/fo-doc-audit/SKILL.md +2 -2
  487. package/skills/fo/fo-explore/SKILL.md +2 -2
  488. package/skills/fo/fo-extract-dna/SKILL.md +2 -2
  489. package/skills/fo/fo-fix/SKILL.md +2 -2
  490. package/skills/fo/fo-handoff/SKILL.md +2 -2
  491. package/skills/fo/fo-harvest/SKILL.md +2 -2
  492. package/skills/fo/fo-idea/SKILL.md +2 -2
  493. package/skills/fo/fo-idea-audit/SKILL.md +2 -2
  494. package/skills/fo/fo-idea-create-adr/SKILL.md +3 -3
  495. package/skills/fo/fo-idea-create-rfc/SKILL.md +3 -3
  496. package/skills/fo/fo-idea-enhance/SKILL.md +2 -2
  497. package/skills/fo/fo-idea-i-just-want-to-see-the-plan/SKILL.md +2 -2
  498. package/skills/fo/fo-idea-i-just-want-to-see-the-result/SKILL.md +1 -1
  499. package/skills/fo/fo-idea-implement/SKILL.md +2 -2
  500. package/skills/fo/fo-idea-plan/SKILL.md +2 -2
  501. package/skills/fo/fo-idea-status/SKILL.md +2 -2
  502. package/skills/fo/fo-knowledge-distill/SKILL.md +2 -2
  503. package/skills/fo/fo-memory-sync/SKILL.md +2 -2
  504. package/skills/fo/fo-qa/SKILL.md +2 -2
  505. package/skills/fo/fo-review/SKILL.md +2 -2
  506. package/skills/fo/fo-session-retro/SKILL.md +2 -2
  507. package/skills/fo/fo-session-save/SKILL.md +2 -2
  508. package/skills/fo/fo-spec-ingest/SKILL.md +2 -2
  509. package/skills/fo/fo-step-commit/SKILL.md +1 -1
  510. package/skills/fo/fo-triage/SKILL.md +2 -2
  511. package/skills/meta/forge-bootstrap/SKILL.md +1 -1
  512. package/skills/meta/port-to-forge/SKILL.md +1 -1
  513. package/skills/meta/skill-create/SKILL.md +1 -1
  514. package/skills/shared/grilling/SKILL.md +1 -1
  515. package/skills/shared/grilling/learned-principles.archive.md +17 -0
  516. package/skills/shared/grilling/learned-principles.md +0 -1
  517. package/skills/shared/knowledge/learned-principles.md +6 -0
  518. package/skills/shared/my-preferences/SKILL.md +1 -1
  519. package/skills/shared/windows-ai-tooling/SKILL.md +1 -1
  520. package/skills/shared/writing-great-skills/SKILL.md +1 -1
  521. package/src/compass/contract-registry.ts +1 -1
  522. package/src/config/forge-config.ts +12 -1
  523. package/src/knowledge/__tests__/sync.test.ts +2 -7
  524. package/src/knowledge/budgets.ts +1 -1
  525. package/src/knowledge/compact.ts +1 -1
  526. package/src/knowledge/parse.ts +1 -1
  527. package/src/knowledge/sync.ts +3 -5
  528. package/src/migration-adapters/git-utils.ts +2 -2
  529. package/src/migration-adapters/ignored-files.ts +2 -2
  530. package/src/migration-adapters/node-typescript-pnpm/index.ts +1 -1
  531. package/src/migration-adapters/phaser-pnpm/index.ts +1 -1
  532. package/src/onboarding/agents-generate.ts +91 -50
  533. package/src/onboarding/create.ts +10 -10
  534. package/src/onboarding/doctor.ts +199 -59
  535. package/src/onboarding/init.ts +38 -1
  536. package/src/onboarding/invariant-engine.ts +1 -1
  537. package/src/onboarding/memory-compact.ts +189 -0
  538. package/src/onboarding/memory-scaffold.ts +2 -2
  539. package/src/onboarding/nested-agents-generate.ts +50 -5
  540. package/src/onboarding/nested-agents-templates.ts +19 -13
  541. package/src/onboarding/npm-token-check.ts +2 -2
  542. package/src/onboarding/prettierignore.ts +263 -0
  543. package/src/onboarding/profile-validate.ts +5 -4
  544. package/src/onboarding/scaffold-project.ts +38 -27
  545. package/src/onboarding/scaffold.ts +1 -1
  546. package/src/onboarding/skill-markers.ts +162 -0
  547. package/src/onboarding/templates/behavioral-layer-core.md +2 -4
  548. package/src/onboarding/upgrade.ts +285 -89
  549. package/src/onboarding/workspace-discovery.ts +16 -2
  550. package/src/pipeline-status.test.ts +1 -4
  551. package/src/pipeline-status.ts +30 -13
  552. package/src/profiles/stack-profile.ts +1 -1
  553. package/src/registry.ts +4 -4
  554. package/src/skill-schema.ts +4 -1
  555. package/src/tests/acceptance-probe-kinds.test.ts +5 -15
  556. package/src/tests/agents-generate.test.ts +32 -7
  557. package/src/tests/contract-registry.test.ts +12 -6
  558. package/src/tests/doctor-dist-freshness.test.ts +110 -0
  559. package/src/tests/doctor-fix.test.ts +142 -0
  560. package/src/tests/doctor-nested-agents.test.ts +160 -0
  561. package/src/tests/editable-generated-region.test.ts +231 -0
  562. package/src/tests/file-size-lint.test.ts +8 -12
  563. package/src/tests/fixtures/agents-generate-business-before.txt +54 -54
  564. package/src/tests/markdown-table.test.ts +107 -0
  565. package/src/tests/memory-compact.test.ts +143 -0
  566. package/src/tests/prettierignore-manage.test.ts +134 -0
  567. package/src/tests/skill-agents-sync.test.ts +168 -0
  568. package/src/tests/skill-sync-marker.test.ts +134 -0
  569. package/src/tests/skill-validate.test.ts +12 -5
  570. package/src/tests/upgrade.test.ts +87 -41
  571. package/src/tests/workspace-discovery.test.ts +28 -0
  572. package/src/types.ts +123 -0
  573. package/src/utils/editable-region.ts +156 -0
  574. package/src/utils/fs-idempotent.ts +12 -6
  575. package/src/utils/generated-marker.ts +36 -2
  576. package/src/utils/index.ts +17 -0
  577. package/src/utils/io.ts +143 -0
  578. package/src/utils/markdown-table.ts +121 -0
  579. package/src/utils/sync-fs.ts +43 -0
  580. package/src/validators/note-frontmatter-validate.ts +1 -1
  581. package/src/validators/note-link-validate.ts +1 -1
  582. package/src/validators/note-orphan-detect.ts +1 -1
  583. package/src/validators/port-validate.ts +1 -1
  584. package/src/validators/skill-validate.ts +38 -13
@@ -15,416 +15,455 @@ Mechanical v1 to v2 header migration across the workspace: 942 files rewritten
15
15
  <item>RFC-1097: sweep — werkstatt-engine clean
16
16
 
17
17
  Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics.</item>
18
+ <item>RFC-1173: declare mutatesState on all kernel commands — collectDeclarationDiagnostics emits error-severity MUTATES-STATE-DECLARED, command.manifest.validate is the blocking consumer in packages.check, sweep declares the flag on every command definition (factories hardcode false for read-only check specs)</item>
18
19
  </CHANGE_SUMMARY>
19
20
  */
20
21
 
21
22
  import type { ForgeModule } from "../../src/forge-module.ts";
22
23
 
23
24
  export async function createForgeRfcModule(): Promise<ForgeModule> {
24
- const {
25
- runRfcList,
26
- runRfcCreate,
27
- runRfcNextId,
28
- runRfcValidate,
29
- runRfcCommandLifecycleValidate,
30
- runRfcCheck,
31
- runRfcIndexGenerate,
32
- runRfcIndexValidate,
33
- runRfcGraph,
34
- } = await import("./handlers.ts");
35
- const { runRfcAcceptanceRun } = await import("./acceptance.ts");
36
- const { runRfcVerificationEmit } = await import("./verification-evidence.ts");
37
- const { runRfcVerificationRefresh } = await import("./verification-refresh.ts");
38
- const { runRfcDnaTraceValidate, runRfcDnaTraceGenerate } = await import("./dna-trace.ts");
39
- const { runRfcDecisionLogGenerate } = await import("./decision-log.ts");
40
- const { runRfcSupersedePropose } = await import("./handlers/supersede-propose.ts");
41
- const { runRfcArchive } = await import("./handlers/archive.ts");
42
- const { runRfcPipelineStatus } = await import("./handlers/pipeline-status.ts");
43
- const { runRfcImplementStamp } = await import("./handlers/implement-stamp.ts");
44
- // ── rfc.list ─────────────────────────────────────────────────────────────;
25
+ const {
26
+ runRfcList,
27
+ runRfcCreate,
28
+ runRfcNextId,
29
+ runRfcValidate,
30
+ runRfcCommandLifecycleValidate,
31
+ runRfcCheck,
32
+ runRfcIndexGenerate,
33
+ runRfcIndexValidate,
34
+ runRfcGraph,
35
+ } = await import("./handlers.ts");
36
+ const { runRfcAcceptanceRun } = await import("./acceptance.ts");
37
+ const { runRfcVerificationEmit } = await import("./verification-evidence.ts");
38
+ const { runRfcVerificationRefresh } = await import("./verification-refresh.ts");
39
+ const { runRfcDnaTraceValidate, runRfcDnaTraceGenerate } = await import("./dna-trace.ts");
40
+ const { runRfcDecisionLogGenerate } = await import("./decision-log.ts");
41
+ const { runRfcSupersedePropose } = await import("./handlers/supersede-propose.ts");
42
+ const { runRfcArchive } = await import("./handlers/archive.ts");
43
+ const { runRfcPipelineStatus } = await import("./handlers/pipeline-status.ts");
44
+ const { runRfcImplementStamp } = await import("./handlers/implement-stamp.ts");
45
+ // ── rfc.list ─────────────────────────────────────────────────────────────;
45
46
  return {
46
- name: "rfc",
47
- version: "0.1.0",
48
- runtime: "autonomous",
47
+ name: "rfc",
48
+ version: "0.1.0",
49
+ runtime: "autonomous",
49
50
 
50
51
  declarations: [],
51
- commands: [
52
- {
53
- name: "rfc.list",
54
- description:
55
- "List all RFCs. Filter with --status, --kind, --owner flags. " +
56
- "Use --json for machine-readable output. " +
57
- "Parses frontmatter on the fly — no index file needed.",
58
- scope: "workspace",
59
- // RFC-0260: typed flag schema.
60
- flags: {
61
- status: {
62
- kind: "string",
63
- description: "Filter by RFC status (e.g. draft, accepted, implemented).",
64
- },
65
- kind: {
66
- kind: "string",
67
- description: "Filter by RFC kind (e.g. architecture, contract, command).",
68
- },
69
- owner: { kind: "string", description: "Filter by an owner string." },
70
- batch: {
71
- kind: "string",
72
- description: "Filter by batch slug (e.g. engine-consolidation).",
52
+ commands: [
53
+ {
54
+ name: "rfc.list",
55
+ mutatesState: false,
56
+ description:
57
+ "List all RFCs. Filter with --status, --kind, --owner flags. " +
58
+ "Use --json for machine-readable output. " +
59
+ "Parses frontmatter on the fly — no index file needed.",
60
+ scope: "workspace",
61
+ // RFC-0260: typed flag schema.
62
+ flags: {
63
+ status: {
64
+ kind: "string",
65
+ description: "Filter by RFC status (e.g. draft, accepted, implemented).",
66
+ },
67
+ kind: {
68
+ kind: "string",
69
+ description: "Filter by RFC kind (e.g. architecture, contract, command).",
70
+ },
71
+ owner: { kind: "string", description: "Filter by an owner string." },
72
+ batch: {
73
+ kind: "string",
74
+ description: "Filter by batch slug (e.g. engine-consolidation).",
75
+ },
73
76
  },
77
+ reads: ["docs/rfcs/**/*.md"],
78
+ execute: runRfcList,
74
79
  },
75
- reads: ["docs/rfcs/**/*.md"],
76
- execute: runRfcList,
77
- },
78
- {
79
- name: "rfc.create",
80
- description:
81
- "Create a new RFC draft from the template. " +
82
- 'Pass --title "Short title" (required). ' +
83
- "Optional: --kind, --scope, --satisfies DNA-N,DNA-M. " +
84
- "Always creates status: draft. " +
85
- "AI agents are allowed to use this command.",
86
- scope: "workspace",
87
- mutatesState: true,
88
- writes: ["docs/rfcs/RFC-*.md"],
89
- reads: ["docs/rfcs/**/*.md"],
90
- cacheable: false,
91
- // RFC-0260: typed flag schema.
92
- flags: {
93
- title: { kind: "string", required: true, description: "Short imperative RFC title." },
94
- kind: {
95
- kind: "string",
96
- default: "architecture",
97
- description: "RFC kind: architecture | contract | command | policy | deprecation.",
80
+ {
81
+ name: "rfc.create",
82
+ description:
83
+ "Create a new RFC draft from the template. " +
84
+ 'Pass --title "Short title" (required). ' +
85
+ "Optional: --kind, --scope, --satisfies DNA-N,DNA-M. " +
86
+ "Always creates status: draft. " +
87
+ "AI agents are allowed to use this command.",
88
+ scope: "workspace",
89
+ mutatesState: true,
90
+ writes: ["docs/rfcs/RFC-*.md"],
91
+ generates: [],
92
+ reads: ["docs/rfcs/**/*.md"],
93
+ cacheable: false,
94
+ // RFC-0260: typed flag schema.
95
+ flags: {
96
+ title: { kind: "string", required: true, description: "Short imperative RFC title." },
97
+ kind: {
98
+ kind: "string",
99
+ default: "architecture",
100
+ description: "RFC kind: architecture | contract | command | policy | deprecation.",
101
+ },
102
+ scope: {
103
+ kind: "string",
104
+ default: "workspace",
105
+ description: "RFC scope: app | workspace.",
106
+ },
107
+ satisfies: {
108
+ kind: "string",
109
+ description:
110
+ "Comma-separated DNA ids this RFC satisfies. Required for architecture/contract RFCs.",
111
+ },
98
112
  },
99
- scope: { kind: "string", default: "workspace", description: "RFC scope: app | workspace." },
100
- satisfies: {
101
- kind: "string",
102
- description:
103
- "Comma-separated DNA ids this RFC satisfies. Required for architecture/contract RFCs.",
104
- },
105
- },
106
- execute: runRfcCreate,
107
- },
108
- {
109
- name: "rfc.next-id",
110
- description:
111
- "Return the next free RFC number (max existing + 1) by scanning docs/rfcs/ recursively including archive/.",
112
- scope: "workspace",
113
- flags: {},
114
- reads: ["docs/rfcs/**/*.md"],
115
- execute: runRfcNextId,
116
- },
117
- {
118
- name: "rfc.validate",
119
- contract: "rfc",
120
- rules: [],
121
- description:
122
- "Validate RFC frontmatter schema, required markdown sections, " +
123
- "referential integrity (supersedes/supersededBy), date consistency, " +
124
- "and RFC command lifecycle metadata (RFC-CMD-*). " +
125
- "Pass --id to validate a single file, or run without arguments for all.",
126
- scope: "workspace",
127
- flags: {
128
- id: { kind: "string", description: "Target a single RFC by id (e.g. RFC-0609)." },
113
+ execute: runRfcCreate,
129
114
  },
130
- reads: ["docs/rfcs/**/*.md"],
131
- execute: runRfcValidate,
132
- },
133
- {
134
- name: "rfc.command-lifecycle.validate",
135
- contract: "rfc",
136
- rules: [],
137
- description:
138
- "Validate RFC commands.proposed/added/changed/removed lifecycle metadata " +
139
- "against live registered commands. Emits RFC-CMD-* diagnostics.",
140
- scope: "workspace",
141
- flags: {
142
- id: { kind: "string", description: "Target a single RFC by id (e.g. RFC-0609)." },
115
+ {
116
+ name: "rfc.next-id",
117
+ mutatesState: false,
118
+ description:
119
+ "Return the next free RFC number (max existing + 1) by scanning docs/rfcs/ recursively including archive/.",
120
+ scope: "workspace",
121
+ flags: {},
122
+ reads: ["docs/rfcs/**/*.md"],
123
+ execute: runRfcNextId,
143
124
  },
144
- reads: ["docs/rfcs/**/*.md"],
145
- cacheable: false,
146
- execute: runRfcCommandLifecycleValidate,
147
- },
148
- {
149
- name: "rfc.check",
150
- contract: "rfc",
151
- rules: [],
152
- description:
153
- "Validate that artifacts declared by accepted/implemented RFCs exist on disk. " +
154
- "Checks files from 'File system responsibilities' tables and feature flag references. " +
155
- "Use --status to override which RFC statuses to check.",
156
- scope: "workspace",
157
- // RFC-0260: typed flag schema.
158
- flags: {
159
- status: {
160
- kind: "string[]",
161
- description: "Override which RFC statuses to check (default: accepted, implemented).",
125
+ {
126
+ name: "rfc.validate",
127
+ mutatesState: false,
128
+ contract: "rfc",
129
+ rules: [],
130
+ description:
131
+ "Validate RFC frontmatter schema, required markdown sections, " +
132
+ "referential integrity (supersedes/supersededBy), date consistency, " +
133
+ "and RFC command lifecycle metadata (RFC-CMD-*). " +
134
+ "Pass --id to validate a single file, or run without arguments for all.",
135
+ scope: "workspace",
136
+ flags: {
137
+ id: { kind: "string", description: "Target a single RFC by id (e.g. RFC-0609)." },
162
138
  },
139
+ reads: ["docs/rfcs/**/*.md"],
140
+ execute: runRfcValidate,
163
141
  },
164
- reads: ["docs/rfcs/**/*.md"],
165
- execute: runRfcCheck,
166
- },
167
- {
168
- name: "rfc.index.generate",
169
- description:
170
- "Emit a machine-readable relationship index of all RFCs (id, status, dates, " +
171
- "supersedes/supersededBy/amends/amendedBy/related). Use --json, or --write to " +
172
- "persist docs/rfcs/index.yaml.",
173
- scope: "workspace",
174
- // RFC-0260: typed flag schema.
175
- flags: {
176
- write: {
177
- kind: "boolean",
178
- description: "Persist the generated index to docs/rfcs/index.yaml.",
142
+ {
143
+ name: "rfc.command-lifecycle.validate",
144
+ mutatesState: false,
145
+ contract: "rfc",
146
+ rules: [],
147
+ description:
148
+ "Validate RFC commands.proposed/added/changed/removed lifecycle metadata " +
149
+ "against live registered commands. Emits RFC-CMD-* diagnostics.",
150
+ scope: "workspace",
151
+ flags: {
152
+ id: { kind: "string", description: "Target a single RFC by id (e.g. RFC-0609)." },
179
153
  },
154
+ reads: ["docs/rfcs/**/*.md"],
155
+ cacheable: false,
156
+ execute: runRfcCommandLifecycleValidate,
180
157
  },
181
- reads: ["docs/rfcs/**/*.md"],
182
- cacheable: false,
183
- execute: runRfcIndexGenerate,
184
- },
185
- {
186
- name: "rfc.index.validate",
187
- contract: "rfc",
188
- rules: [],
189
- description:
190
- "Validate that docs/rfcs/index.yaml exists, is parseable, and its entry count " +
191
- "matches the number of RFC files on disk. Reports RFC-IDX-01 (missing), " +
192
- "RFC-IDX-02 (unparseable), RFC-IDX-03 (count mismatch).",
193
- scope: "workspace",
194
- flags: {},
195
- reads: ["docs/rfcs/**/*.md", "docs/rfcs/index.yaml"],
196
- execute: runRfcIndexValidate,
197
- },
198
- {
199
- name: "rfc.graph",
200
- description:
201
- "Print one RFC's relationship neighbours (supersedes/supersededBy/amends/" +
202
- "amendedBy/related). Pass --id RFC-0152.",
203
- scope: "workspace",
204
- flags: {
205
- id: { kind: "string", description: "Target a single RFC by id (e.g. RFC-0152)." },
206
- },
207
- reads: ["docs/rfcs/**/*.md"],
208
- execute: runRfcGraph,
209
- },
210
- {
211
- name: "rfc.acceptance.run",
212
- description:
213
- "RFC-0268: execute the acceptance: probes declared in an RFC's frontmatter and report " +
214
- "pass/fail per probe (RFC-ACC-01 failed probe, RFC-ACC-02 accepted/implemented RFC with " +
215
- "zero probes). Requires --id <rfc-id> or --status <status>; never runs automatically inside " +
216
- "build pipelines.",
217
- scope: "workspace",
218
- flags: {
219
- id: { kind: "string", description: "Target a single RFC by id (e.g. rfc-0268)." },
220
- status: {
221
- kind: "string",
222
- description: "Target every RFC with this status (e.g. accepted).",
158
+ {
159
+ name: "rfc.check",
160
+ mutatesState: false,
161
+ contract: "rfc",
162
+ rules: [],
163
+ description:
164
+ "Validate that artifacts declared by accepted/implemented RFCs exist on disk. " +
165
+ "Checks files from 'File system responsibilities' tables and feature flag references. " +
166
+ "Use --status to override which RFC statuses to check.",
167
+ scope: "workspace",
168
+ // RFC-0260: typed flag schema.
169
+ flags: {
170
+ status: {
171
+ kind: "string[]",
172
+ description: "Override which RFC statuses to check (default: accepted, implemented).",
173
+ },
223
174
  },
175
+ reads: ["docs/rfcs/**/*.md"],
176
+ execute: runRfcCheck,
224
177
  },
225
- reads: ["docs/rfcs/**/*.md"],
226
- cacheable: false,
227
- execute: runRfcAcceptanceRun,
228
- },
229
- {
230
- name: "rfc.verification.emit",
231
- description:
232
- "RFC-0330: execute acceptance probes for target RFC(s) and write per-RFC verification " +
233
- "evidence artifacts to docs/rfcs/verification/*.generated.yaml. Requires --id <rfc-id> " +
234
- "or --status <status>. Reuses runProbe from RFC-0268. Writes via writeFileAtomic.",
235
- scope: "workspace",
236
- mutatesState: true,
237
- writes: ["docs/rfcs/verification/*.generated.yaml"],
238
- reads: ["docs/rfcs/**/*.md"],
239
- cacheable: false,
240
- flags: {
241
- id: { kind: "string", description: "Target a single RFC by id (e.g. rfc-0330)." },
242
- status: {
243
- kind: "string",
244
- description: "Target every RFC with this status (e.g. implemented).",
178
+ {
179
+ name: "rfc.index.generate",
180
+ mutatesState: true,
181
+ description:
182
+ "Emit a machine-readable relationship index of all RFCs (id, status, dates, " +
183
+ "supersedes/supersededBy/amends/amendedBy/related). Use --json, or --write to " +
184
+ "persist docs/rfcs/index.yaml.",
185
+ scope: "workspace",
186
+ // RFC-0260: typed flag schema.
187
+ flags: {
188
+ write: {
189
+ kind: "boolean",
190
+ description: "Persist the generated index to docs/rfcs/index.yaml.",
191
+ },
245
192
  },
193
+ reads: ["docs/rfcs/**/*.md"],
194
+ writes: ["docs/rfcs/index.yaml"],
195
+ generates: [],
196
+ cacheable: false,
197
+ execute: runRfcIndexGenerate,
246
198
  },
247
- execute: runRfcVerificationEmit,
248
- },
249
- {
250
- name: "rfc.verification.refresh",
251
- description:
252
- "RFC-0999: re-run acceptance probes for implemented RFC(s) and update verification " +
253
- "evidence envelopes in-place. Preserves emittedAt, adds lastRefreshedAt, replaces " +
254
- "probes[] with fresh results. Requires --id <rfc-id> or --all. Use --dry-run to " +
255
- "run probes without writing envelope files.",
256
- scope: "workspace",
257
- mutatesState: true,
258
- writes: ["docs/rfcs/verification/*.generated.yaml"],
259
- reads: ["docs/rfcs/**/*.md", "docs/rfcs/verification/*.generated.yaml"],
260
- cacheable: false,
261
- flags: {
262
- id: { kind: "string", description: "Target a single RFC by id (e.g. rfc-0330)." },
263
- all: {
264
- kind: "boolean",
265
- description: "Refresh all implemented RFCs with existing evidence envelopes.",
266
- },
267
- "dry-run": {
268
- kind: "boolean",
269
- description: "Run probes and report results without writing envelope files.",
270
- },
199
+ {
200
+ name: "rfc.index.validate",
201
+ mutatesState: false,
202
+ contract: "rfc",
203
+ rules: [],
204
+ description:
205
+ "Validate that docs/rfcs/index.yaml exists, is parseable, and its entry count " +
206
+ "matches the number of RFC files on disk. Reports RFC-IDX-01 (missing), " +
207
+ "RFC-IDX-02 (unparseable), RFC-IDX-03 (count mismatch).",
208
+ scope: "workspace",
209
+ flags: {},
210
+ reads: ["docs/rfcs/**/*.md", "docs/rfcs/index.yaml"],
211
+ execute: runRfcIndexValidate,
271
212
  },
272
- execute: runRfcVerificationRefresh,
273
- },
274
- {
275
- name: "rfc.dna.trace.validate",
276
- contract: "rfc",
277
- rules: [],
278
- description:
279
- "RFC-0331: validate the bidirectional DNA-trace matrix — which RFCs satisfy each DNA " +
280
- "invariant and which invariants each RFC claims to satisfy. Reports DNA-TRACE-01 " +
281
- "(nonexistent id), DNA-TRACE-02 (uncovered invariant), DNA-TRACE-03 (rejected claim).",
282
- scope: "workspace",
283
- flags: {
284
- dna: {
285
- kind: "string",
286
- description: "Filter output to a single DNA invariant (e.g. DNA-35).",
213
+ {
214
+ name: "rfc.graph",
215
+ mutatesState: false,
216
+ description:
217
+ "Print one RFC's relationship neighbours (supersedes/supersededBy/amends/" +
218
+ "amendedBy/related). Pass --id RFC-0152.",
219
+ scope: "workspace",
220
+ flags: {
221
+ id: { kind: "string", description: "Target a single RFC by id (e.g. RFC-0152)." },
287
222
  },
223
+ reads: ["docs/rfcs/**/*.md"],
224
+ execute: runRfcGraph,
288
225
  },
289
- reads: ["docs/rfcs/**/*.md", "docs/architecture-dna.md"],
290
- execute: runRfcDnaTraceValidate,
291
- },
292
- {
293
- name: "rfc.dna.trace.generate",
294
- description:
295
- "RFC-0331: generate docs/rfcs/dna-trace.generated.yaml — the machine-readable " +
296
- "requirements-traceability matrix of DNA invariants and satisfying RFCs.",
297
- scope: "workspace",
298
- mutatesState: true,
299
- writes: ["docs/rfcs/dna-trace.generated.yaml"],
300
- reads: ["docs/rfcs/**/*.md", "docs/architecture-dna.md"],
301
- cacheable: false,
302
- flags: {},
303
- execute: runRfcDnaTraceGenerate,
304
- },
305
- {
306
- name: "rfc.decision-log.generate",
307
- description:
308
- "RFC-0329: generate docs/rfcs/decision-log.generated.yaml and .md aggregating every " +
309
- "rejected/superseded RFC and every non-empty Alternatives considered section. " +
310
- "Use --check to verify projections are up to date without writing.",
311
- scope: "workspace",
312
- mutatesState: true,
313
- writes: ["docs/rfcs/decision-log.generated.yaml", "docs/rfcs/decision-log.generated.md"],
314
- reads: ["docs/rfcs/**/*.md"],
315
- cacheable: false,
316
- flags: {
317
- check: {
318
- kind: "boolean",
319
- description: "Drift check only — no writes, exit 1 if projections differ.",
226
+ {
227
+ name: "rfc.acceptance.run",
228
+ mutatesState: true,
229
+ description:
230
+ "RFC-0268: execute the acceptance: probes declared in an RFC's frontmatter and report " +
231
+ "pass/fail per probe (RFC-ACC-01 failed probe, RFC-ACC-02 accepted/implemented RFC with " +
232
+ "zero probes). Requires --id <rfc-id> or --status <status>; never runs automatically inside " +
233
+ "build pipelines.",
234
+ scope: "workspace",
235
+ flags: {
236
+ id: { kind: "string", description: "Target a single RFC by id (e.g. rfc-0268)." },
237
+ status: {
238
+ kind: "string",
239
+ description: "Target every RFC with this status (e.g. accepted).",
240
+ },
320
241
  },
242
+ reads: ["docs/rfcs/**/*.md"],
243
+ cacheable: false,
244
+ execute: runRfcAcceptanceRun,
321
245
  },
322
- execute: runRfcDecisionLogGenerate,
323
- },
324
- {
325
- name: "rfc.supersede.propose",
326
- description:
327
- "RFC-0334: escalate a blocked implementation by creating a draft superseding RFC " +
328
- "with the conflict stated and TODO sections for the proposed alternative.",
329
- scope: "workspace",
330
- mutatesState: true,
331
- writes: ["docs/rfcs/RFC-*.md"],
332
- reads: ["docs/rfcs/**/*.md"],
333
- cacheable: false,
334
- flags: {
335
- id: {
336
- kind: "string",
337
- description: "Target RFC id to supersede (e.g. RFC-0322).",
338
- },
339
- reason: {
340
- kind: "string",
341
- description: "Why the accepted design is unimplementable.",
246
+ {
247
+ name: "rfc.verification.emit",
248
+ modulePath: "packages/forge/os/rfc/rfc.module.ts",
249
+ description:
250
+ "RFC-0330: execute acceptance probes for target RFC(s) and write per-RFC verification " +
251
+ "evidence artifacts to docs/rfcs/verification/*.generated.yaml. Requires --id <rfc-id> " +
252
+ "or --status <status>. Reuses runProbe from RFC-0268. Writes via writeFileAtomic.",
253
+ scope: "workspace",
254
+ mutatesState: true,
255
+ writes: ["docs/rfcs/verification/*.generated.yaml"],
256
+ generates: [{ path: "docs/rfcs/verification/*.generated.yaml", phase: "on-demand" }],
257
+ reads: ["docs/rfcs/**/*.md"],
258
+ cacheable: false,
259
+ flags: {
260
+ id: { kind: "string", description: "Target a single RFC by id (e.g. rfc-0330)." },
261
+ status: {
262
+ kind: "string",
263
+ description: "Target every RFC with this status (e.g. implemented).",
264
+ },
342
265
  },
343
- invariant: {
344
- kind: "string",
345
- description: "Comma-separated invariant ids (DNA-N or RFC-XXXX) that conflict.",
346
- },
347
- title: {
348
- kind: "string",
349
- description: "Optional replacement title for the new draft.",
266
+ execute: runRfcVerificationEmit,
267
+ },
268
+ {
269
+ name: "rfc.verification.refresh",
270
+ modulePath: "packages/forge/os/rfc/rfc.module.ts",
271
+ description:
272
+ "RFC-0999: re-run acceptance probes for implemented RFC(s) and update verification " +
273
+ "evidence envelopes in-place. Preserves emittedAt, adds lastRefreshedAt, replaces " +
274
+ "probes[] with fresh results. Requires --id <rfc-id> or --all. Use --dry-run to " +
275
+ "run probes without writing envelope files.",
276
+ scope: "workspace",
277
+ mutatesState: true,
278
+ writes: ["docs/rfcs/verification/*.generated.yaml"],
279
+ // Secondary writer — rfc.verification.emit owns these envelopes;
280
+ // conditional keeps OWN-DUP-01 from flagging the shared glob.
281
+ generates: [
282
+ {
283
+ path: "docs/rfcs/verification/*.generated.yaml",
284
+ phase: "on-demand",
285
+ conditional: true,
286
+ },
287
+ ],
288
+ reads: ["docs/rfcs/**/*.md", "docs/rfcs/verification/*.generated.yaml"],
289
+ cacheable: false,
290
+ flags: {
291
+ id: { kind: "string", description: "Target a single RFC by id (e.g. rfc-0330)." },
292
+ all: {
293
+ kind: "boolean",
294
+ description: "Refresh all implemented RFCs with existing evidence envelopes.",
295
+ },
296
+ "dry-run": {
297
+ kind: "boolean",
298
+ description: "Run probes and report results without writing envelope files.",
299
+ },
350
300
  },
301
+ execute: runRfcVerificationRefresh,
351
302
  },
352
- execute: runRfcSupersedePropose,
353
- },
354
- {
355
- name: "rfc.archive",
356
- description:
357
- "Move terminal-status RFC files (implemented, rejected, superseded) into " +
358
- "docs/rfcs/archive/<status>/ subdirectories. Bidirectional: moves non-terminal " +
359
- "files found in subdirectories back to root. Use --dry-run to preview. " +
360
- "Use --status to filter to a single terminal status. " +
361
- "Prefer the docs.archive umbrella command unless you need to archive only RFCs.",
362
- scope: "workspace",
363
- mutatesState: true,
364
- writes: ["docs/rfcs/*.md", "docs/rfcs/archive/**"],
365
- reads: ["docs/rfcs/**/*.md"],
366
- cacheable: false,
367
- flags: {
368
- "dry-run": {
369
- kind: "boolean",
370
- description: "Preview what would be moved without touching the filesystem.",
303
+ {
304
+ name: "rfc.dna.trace.validate",
305
+ mutatesState: false,
306
+ contract: "rfc",
307
+ rules: [],
308
+ description:
309
+ "RFC-0331: validate the bidirectional DNA-trace matrix — which RFCs satisfy each DNA " +
310
+ "invariant and which invariants each RFC claims to satisfy. Reports DNA-TRACE-01 " +
311
+ "(nonexistent id), DNA-TRACE-02 (uncovered invariant), DNA-TRACE-03 (rejected claim).",
312
+ scope: "workspace",
313
+ flags: {
314
+ dna: {
315
+ kind: "string",
316
+ description: "Filter output to a single DNA invariant (e.g. DNA-35).",
317
+ },
371
318
  },
372
- status: {
373
- kind: "string",
374
- description: "Filter to a single terminal status (implemented, rejected, superseded).",
319
+ reads: ["docs/rfcs/**/*.md", "docs/architecture-dna.md"],
320
+ execute: runRfcDnaTraceValidate,
321
+ },
322
+ {
323
+ name: "rfc.dna.trace.generate",
324
+ modulePath: "packages/forge/os/rfc/rfc.module.ts",
325
+ description:
326
+ "RFC-0331: generate docs/rfcs/dna-trace.generated.yaml — the machine-readable " +
327
+ "requirements-traceability matrix of DNA invariants and satisfying RFCs.",
328
+ scope: "workspace",
329
+ mutatesState: true,
330
+ writes: ["docs/rfcs/dna-trace.generated.yaml"],
331
+ generates: [{ path: "docs/rfcs/dna-trace.generated.yaml", phase: "on-demand" }],
332
+ reads: ["docs/rfcs/**/*.md", "docs/architecture-dna.md"],
333
+ cacheable: false,
334
+ flags: {},
335
+ execute: runRfcDnaTraceGenerate,
336
+ },
337
+ {
338
+ name: "rfc.decision-log.generate",
339
+ modulePath: "packages/forge/os/rfc/rfc.module.ts",
340
+ description:
341
+ "RFC-0329: generate docs/rfcs/decision-log.generated.yaml and .md aggregating every " +
342
+ "rejected/superseded RFC and every non-empty Alternatives considered section. " +
343
+ "Use --check to verify projections are up to date without writing.",
344
+ scope: "workspace",
345
+ mutatesState: true,
346
+ writes: ["docs/rfcs/decision-log.generated.yaml", "docs/rfcs/decision-log.generated.md"],
347
+ generates: [
348
+ { path: "docs/rfcs/decision-log.generated.yaml", phase: "on-demand" },
349
+ { path: "docs/rfcs/decision-log.generated.md", phase: "on-demand" },
350
+ ],
351
+ reads: ["docs/rfcs/**/*.md"],
352
+ cacheable: false,
353
+ flags: {
354
+ check: {
355
+ kind: "boolean",
356
+ description: "Drift check only — no writes, exit 1 if projections differ.",
357
+ },
375
358
  },
359
+ execute: runRfcDecisionLogGenerate,
376
360
  },
377
- execute: runRfcArchive,
378
- },
379
- {
380
- name: "rfc.pipeline.status",
381
- description:
382
- "Report the pipeline status of RFCs — which steps (audit, enhance, plan, implement) " +
383
- "are complete or missing. Pass --id to check a single file, or run without " +
384
- "arguments for all. Read-only — does not mutate files. Skills keep their own " +
385
- "prerequisite checks; this command is for agents and humans to inspect pipeline state.",
386
- scope: "workspace",
387
- flags: {
388
- id: { kind: "string", description: "Target a single RFC by id (e.g. RFC-0609)." },
361
+ {
362
+ name: "rfc.supersede.propose",
363
+ description:
364
+ "RFC-0334: escalate a blocked implementation by creating a draft superseding RFC " +
365
+ "with the conflict stated and TODO sections for the proposed alternative.",
366
+ scope: "workspace",
367
+ mutatesState: true,
368
+ writes: ["docs/rfcs/RFC-*.md"],
369
+ generates: [],
370
+ reads: ["docs/rfcs/**/*.md"],
371
+ cacheable: false,
372
+ flags: {
373
+ id: {
374
+ kind: "string",
375
+ description: "Target RFC id to supersede (e.g. RFC-0322).",
376
+ },
377
+ reason: {
378
+ kind: "string",
379
+ description: "Why the accepted design is unimplementable.",
380
+ },
381
+ invariant: {
382
+ kind: "string",
383
+ description: "Comma-separated invariant ids (DNA-N or RFC-XXXX) that conflict.",
384
+ },
385
+ title: {
386
+ kind: "string",
387
+ description: "Optional replacement title for the new draft.",
388
+ },
389
+ },
390
+ execute: runRfcSupersedePropose,
389
391
  },
390
- reads: ["docs/rfcs/**/*.md"],
391
- execute: runRfcPipelineStatus,
392
- },
393
- {
394
- name: "rfc.implement.stamp",
395
- description:
396
- "RFC-0476: the exclusive atomic path for accepted → implemented transitions. " +
397
- "Verifies preconditions (accepted status, checked+evidenced criteria, clean tree, " +
398
- "reachable RFC-referencing commit, passing probe evidence) then atomically sets " +
399
- "status: implemented, implementedAt, and updatedAt. Use --dry-run to preview. Required flags: `--id`.",
400
- scope: "workspace",
401
- mutatesState: true,
402
- writes: ["docs/rfcs/**/*.md"],
403
- reads: ["docs/rfcs/**/*.md", "docs/rfcs/verification/*.generated.yaml"],
404
- cacheable: false,
405
- flags: {
406
- id: {
407
- kind: "string",
408
- required: true,
409
- description: "Target RFC id to stamp (e.g. RFC-0476).",
392
+ {
393
+ name: "rfc.archive",
394
+ description:
395
+ "Move terminal-status RFC files (implemented, rejected, superseded) into " +
396
+ "docs/rfcs/archive/<status>/ subdirectories. Bidirectional: moves non-terminal " +
397
+ "files found in subdirectories back to root. Use --dry-run to preview. " +
398
+ "Use --status to filter to a single terminal status. " +
399
+ "Prefer the docs.archive umbrella command unless you need to archive only RFCs.",
400
+ scope: "workspace",
401
+ mutatesState: true,
402
+ writes: ["docs/rfcs/*.md", "docs/rfcs/archive/**"],
403
+ generates: [],
404
+ reads: ["docs/rfcs/**/*.md"],
405
+ cacheable: false,
406
+ flags: {
407
+ "dry-run": {
408
+ kind: "boolean",
409
+ description: "Preview what would be moved without touching the filesystem.",
410
+ },
411
+ status: {
412
+ kind: "string",
413
+ description: "Filter to a single terminal status (implemented, rejected, superseded).",
414
+ },
410
415
  },
411
- "implementation-commit": {
412
- kind: "string",
413
- required: false,
414
- description:
415
- "SHA of the implementation commit (must be reachable from HEAD and reference the RFC id). " +
416
- "When omitted, the command auto-detects the commit via git log --grep=<RFC-ID> (RFC-0756).",
416
+ execute: runRfcArchive,
417
+ },
418
+ {
419
+ name: "rfc.pipeline.status",
420
+ mutatesState: false,
421
+ description:
422
+ "Report the pipeline status of RFCs — which steps (audit, enhance, plan, implement) " +
423
+ "are complete or missing. Pass --id to check a single file, or run without " +
424
+ "arguments for all. Read-only — does not mutate files. Skills keep their own " +
425
+ "prerequisite checks; this command is for agents and humans to inspect pipeline state.",
426
+ scope: "workspace",
427
+ flags: {
428
+ id: { kind: "string", description: "Target a single RFC by id (e.g. RFC-0609)." },
417
429
  },
418
- "dry-run": {
419
- kind: "boolean",
420
- description: "Perform all checks without mutating the RFC file or emitting evidence.",
430
+ reads: ["docs/rfcs/**/*.md"],
431
+ execute: runRfcPipelineStatus,
432
+ },
433
+ {
434
+ name: "rfc.implement.stamp",
435
+ description:
436
+ "RFC-0476: the exclusive atomic path for accepted → implemented transitions. " +
437
+ "Verifies preconditions (accepted status, checked+evidenced criteria, clean tree, " +
438
+ "reachable RFC-referencing commit, passing probe evidence) then atomically sets " +
439
+ "status: implemented, implementedAt, and updatedAt. Use --dry-run to preview. Required flags: `--id`.",
440
+ scope: "workspace",
441
+ mutatesState: true,
442
+ writes: ["docs/rfcs/**/*.md"],
443
+ generates: [],
444
+ reads: ["docs/rfcs/**/*.md", "docs/rfcs/verification/*.generated.yaml"],
445
+ cacheable: false,
446
+ flags: {
447
+ id: {
448
+ kind: "string",
449
+ required: true,
450
+ description: "Target RFC id to stamp (e.g. RFC-0476).",
451
+ },
452
+ "implementation-commit": {
453
+ kind: "string",
454
+ required: false,
455
+ description:
456
+ "SHA of the implementation commit (must be reachable from HEAD and reference the RFC id). " +
457
+ "When omitted, the command auto-detects the commit via git log --grep=<RFC-ID> (RFC-0756).",
458
+ },
459
+ "dry-run": {
460
+ kind: "boolean",
461
+ description: "Perform all checks without mutating the RFC file or emitting evidence.",
462
+ },
421
463
  },
464
+ execute: runRfcImplementStamp,
422
465
  },
423
- execute: runRfcImplementStamp,
424
- }
425
- ],
426
- pipelines: [
427
-
428
- ]};
466
+ ],
467
+ pipelines: [],
468
+ };
429
469
  }
430
- ;