@warpgogol/forge 4.2.3 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/AGENTS.md +12 -4
  2. package/dist/os/adr/handlers/list-create.d.ts.map +1 -1
  3. package/dist/os/adr/handlers/list-create.js +4 -1
  4. package/dist/os/adr/handlers/list-create.js.map +1 -1
  5. package/dist/os/adr/handlers/validate.d.ts.map +1 -1
  6. package/dist/os/adr/handlers/validate.js +6 -1
  7. package/dist/os/adr/handlers/validate.js.map +1 -1
  8. package/dist/os/adr/types.d.ts.map +1 -1
  9. package/dist/os/adr/types.js +7 -3
  10. package/dist/os/adr/types.js.map +1 -1
  11. package/dist/os/compass/compass.module.d.ts.map +1 -1
  12. package/dist/os/compass/compass.module.js +76 -10
  13. package/dist/os/compass/compass.module.js.map +1 -1
  14. package/dist/os/compass/handlers/compass-audit-handler.d.ts.map +1 -1
  15. package/dist/os/compass/handlers/compass-audit-handler.js +7 -3
  16. package/dist/os/compass/handlers/compass-audit-handler.js.map +1 -1
  17. package/dist/os/compass/handlers/compass-change-summary-handler.d.ts +1 -9
  18. package/dist/os/compass/handlers/compass-change-summary-handler.d.ts.map +1 -1
  19. package/dist/os/compass/handlers/compass-change-summary-handler.js +44 -186
  20. package/dist/os/compass/handlers/compass-change-summary-handler.js.map +1 -1
  21. package/dist/os/compass/handlers/compass-inventory-handler.d.ts +2 -0
  22. package/dist/os/compass/handlers/compass-inventory-handler.d.ts.map +1 -1
  23. package/dist/os/compass/handlers/compass-inventory-handler.js +24 -12
  24. package/dist/os/compass/handlers/compass-inventory-handler.js.map +1 -1
  25. package/dist/os/compass/handlers/compass-inventory.d.ts +7 -5
  26. package/dist/os/compass/handlers/compass-inventory.d.ts.map +1 -1
  27. package/dist/os/compass/handlers/compass-inventory.js +84 -241
  28. package/dist/os/compass/handlers/compass-inventory.js.map +1 -1
  29. package/dist/os/compass/handlers/compass-migrate-handler.d.ts +4 -0
  30. package/dist/os/compass/handlers/compass-migrate-handler.d.ts.map +1 -0
  31. package/dist/os/compass/handlers/compass-migrate-handler.js +100 -0
  32. package/dist/os/compass/handlers/compass-migrate-handler.js.map +1 -0
  33. package/dist/os/compass/handlers/compass-migrate.d.ts +34 -0
  34. package/dist/os/compass/handlers/compass-migrate.d.ts.map +1 -0
  35. package/dist/os/compass/handlers/compass-migrate.js +273 -0
  36. package/dist/os/compass/handlers/compass-migrate.js.map +1 -0
  37. package/dist/os/compass/handlers/resolve-scan-root.d.ts.map +1 -1
  38. package/dist/os/compass/handlers/resolve-scan-root.js +15 -8
  39. package/dist/os/compass/handlers/resolve-scan-root.js.map +1 -1
  40. package/dist/os/compass/handlers/summary-record.d.ts +46 -0
  41. package/dist/os/compass/handlers/summary-record.d.ts.map +1 -0
  42. package/dist/os/compass/handlers/summary-record.js +233 -0
  43. package/dist/os/compass/handlers/summary-record.js.map +1 -0
  44. package/dist/os/compass/index.d.ts +4 -1
  45. package/dist/os/compass/index.d.ts.map +1 -1
  46. package/dist/os/compass/index.js +9 -1
  47. package/dist/os/compass/index.js.map +1 -1
  48. package/dist/os/compass/policy.d.ts +65 -0
  49. package/dist/os/compass/policy.d.ts.map +1 -0
  50. package/dist/os/compass/policy.js +241 -0
  51. package/dist/os/compass/policy.js.map +1 -0
  52. package/dist/os/core/core.module.d.ts.map +1 -1
  53. package/dist/os/core/core.module.js +9 -21
  54. package/dist/os/core/core.module.js.map +1 -1
  55. package/dist/os/core/handlers/forge-autonomy-validate.d.ts.map +1 -1
  56. package/dist/os/core/handlers/forge-autonomy-validate.js +7 -1
  57. package/dist/os/core/handlers/forge-autonomy-validate.js.map +1 -1
  58. package/dist/os/core/handlers/package-health.d.ts.map +1 -1
  59. package/dist/os/core/handlers/package-health.js +6 -1
  60. package/dist/os/core/handlers/package-health.js.map +1 -1
  61. package/dist/os/core/handlers/pinned-check.d.ts.map +1 -1
  62. package/dist/os/core/handlers/pinned-check.js +6 -1
  63. package/dist/os/core/handlers/pinned-check.js.map +1 -1
  64. package/dist/os/core/handlers/pinned-validate.d.ts.map +1 -1
  65. package/dist/os/core/handlers/pinned-validate.js +6 -1
  66. package/dist/os/core/handlers/pinned-validate.js.map +1 -1
  67. package/dist/os/core/handlers/validate.d.ts.map +1 -1
  68. package/dist/os/core/handlers/validate.js +6 -1
  69. package/dist/os/core/handlers/validate.js.map +1 -1
  70. package/dist/os/exploration/exploration.module.d.ts.map +1 -1
  71. package/dist/os/exploration/exploration.module.js +6 -4
  72. package/dist/os/exploration/exploration.module.js.map +1 -1
  73. package/dist/os/exploration/handlers/list.d.ts.map +1 -1
  74. package/dist/os/exploration/handlers/list.js +4 -1
  75. package/dist/os/exploration/handlers/list.js.map +1 -1
  76. package/dist/os/mission/handlers/archive.d.ts.map +1 -1
  77. package/dist/os/mission/handlers/archive.js +7 -3
  78. package/dist/os/mission/handlers/archive.js.map +1 -1
  79. package/dist/os/mission/index.d.ts.map +1 -1
  80. package/dist/os/mission/index.js +13 -0
  81. package/dist/os/mission/index.js.map +1 -1
  82. package/dist/os/notes/index.d.ts.map +1 -1
  83. package/dist/os/notes/index.js +7 -1
  84. package/dist/os/notes/index.js.map +1 -1
  85. package/dist/os/rfc/frontmatter-io.d.ts.map +1 -1
  86. package/dist/os/rfc/frontmatter-io.js +6 -1
  87. package/dist/os/rfc/frontmatter-io.js.map +1 -1
  88. package/dist/os/rfc/handlers/archive.d.ts.map +1 -1
  89. package/dist/os/rfc/handlers/archive.js +6 -1
  90. package/dist/os/rfc/handlers/archive.js.map +1 -1
  91. package/dist/os/rfc/handlers/implement-stamp.d.ts.map +1 -1
  92. package/dist/os/rfc/handlers/implement-stamp.js +7 -3
  93. package/dist/os/rfc/handlers/implement-stamp.js.map +1 -1
  94. package/dist/os/rfc/handlers/index-graph.d.ts.map +1 -1
  95. package/dist/os/rfc/handlers/index-graph.js +6 -1
  96. package/dist/os/rfc/handlers/index-graph.js.map +1 -1
  97. package/dist/os/rfc/handlers/lifecycle.d.ts.map +1 -1
  98. package/dist/os/rfc/handlers/lifecycle.js +6 -1
  99. package/dist/os/rfc/handlers/lifecycle.js.map +1 -1
  100. package/dist/os/rfc/handlers/list-create.d.ts.map +1 -1
  101. package/dist/os/rfc/handlers/list-create.js +6 -1
  102. package/dist/os/rfc/handlers/list-create.js.map +1 -1
  103. package/dist/os/rfc/handlers/pipeline-status.d.ts.map +1 -1
  104. package/dist/os/rfc/handlers/pipeline-status.js +6 -1
  105. package/dist/os/rfc/handlers/pipeline-status.js.map +1 -1
  106. package/dist/os/rfc/handlers/supersede-propose.d.ts.map +1 -1
  107. package/dist/os/rfc/handlers/supersede-propose.js +6 -1
  108. package/dist/os/rfc/handlers/supersede-propose.js.map +1 -1
  109. package/dist/os/rfc/handlers/validate-rules.d.ts.map +1 -1
  110. package/dist/os/rfc/handlers/validate-rules.js +7 -3
  111. package/dist/os/rfc/handlers/validate-rules.js.map +1 -1
  112. package/dist/os/rfc/handlers/validate.d.ts.map +1 -1
  113. package/dist/os/rfc/handlers/validate.js +6 -1
  114. package/dist/os/rfc/handlers/validate.js.map +1 -1
  115. package/dist/os/rfc/index.d.ts.map +1 -1
  116. package/dist/os/rfc/index.js +6 -1
  117. package/dist/os/rfc/index.js.map +1 -1
  118. package/dist/os/rfc/rfc.module.d.ts.map +1 -1
  119. package/dist/os/rfc/rfc.module.js +6 -1
  120. package/dist/os/rfc/rfc.module.js.map +1 -1
  121. package/dist/os/rfc/types.d.ts +7 -4
  122. package/dist/os/rfc/types.d.ts.map +1 -1
  123. package/dist/os/rfc/types.js +7 -4
  124. package/dist/os/rfc/types.js.map +1 -1
  125. package/dist/os/session/handlers/save.d.ts.map +1 -1
  126. package/dist/os/session/handlers/save.js +6 -1
  127. package/dist/os/session/handlers/save.js.map +1 -1
  128. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts.map +1 -1
  129. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js +6 -1
  130. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js.map +1 -1
  131. package/dist/os/werkstatt/handlers/workspace-deps.js +3 -3
  132. package/dist/os/werkstatt/handlers/workspace-deps.js.map +1 -1
  133. package/dist/os/workflow/index.d.ts.map +1 -1
  134. package/dist/os/workflow/index.js +6 -1
  135. package/dist/os/workflow/index.js.map +1 -1
  136. package/dist/src/config/forge-config.d.ts +50 -4
  137. package/dist/src/config/forge-config.d.ts.map +1 -1
  138. package/dist/src/config/forge-config.js +11 -19
  139. package/dist/src/config/forge-config.js.map +1 -1
  140. package/dist/src/forge-module.d.ts.map +1 -1
  141. package/dist/src/forge-module.js +6 -1
  142. package/dist/src/forge-module.js.map +1 -1
  143. package/dist/src/index.d.ts.map +1 -1
  144. package/dist/src/index.js +10 -2
  145. package/dist/src/index.js.map +1 -1
  146. package/dist/src/migration-adapters/git-utils.d.ts.map +1 -1
  147. package/dist/src/migration-adapters/git-utils.js +6 -2
  148. package/dist/src/migration-adapters/git-utils.js.map +1 -1
  149. package/dist/src/migration-adapters/ignored-files.d.ts.map +1 -1
  150. package/dist/src/migration-adapters/ignored-files.js +6 -1
  151. package/dist/src/migration-adapters/ignored-files.js.map +1 -1
  152. package/dist/src/migration-adapters/index.d.ts.map +1 -1
  153. package/dist/src/migration-adapters/index.js +4 -1
  154. package/dist/src/migration-adapters/index.js.map +1 -1
  155. package/dist/src/migration-adapters/types.d.ts.map +1 -1
  156. package/dist/src/migration-adapters/types.js +6 -2
  157. package/dist/src/migration-adapters/types.js.map +1 -1
  158. package/dist/src/onboarding/agents-generate.js +7 -7
  159. package/dist/src/onboarding/create.d.ts.map +1 -1
  160. package/dist/src/onboarding/create.js +7 -6
  161. package/dist/src/onboarding/create.js.map +1 -1
  162. package/dist/src/onboarding/doctor.d.ts.map +1 -1
  163. package/dist/src/onboarding/doctor.js +7 -13
  164. package/dist/src/onboarding/doctor.js.map +1 -1
  165. package/dist/src/onboarding/init.d.ts.map +1 -1
  166. package/dist/src/onboarding/init.js +7 -12
  167. package/dist/src/onboarding/init.js.map +1 -1
  168. package/dist/src/onboarding/invariant-engine.d.ts.map +1 -1
  169. package/dist/src/onboarding/invariant-engine.js +7 -2
  170. package/dist/src/onboarding/invariant-engine.js.map +1 -1
  171. package/dist/src/onboarding/nested-agents-generate.d.ts.map +1 -1
  172. package/dist/src/onboarding/nested-agents-generate.js +7 -2
  173. package/dist/src/onboarding/nested-agents-generate.js.map +1 -1
  174. package/dist/src/onboarding/nested-agents-templates.d.ts.map +1 -1
  175. package/dist/src/onboarding/nested-agents-templates.js +6 -1
  176. package/dist/src/onboarding/nested-agents-templates.js.map +1 -1
  177. package/dist/src/onboarding/scaffold-project.d.ts.map +1 -1
  178. package/dist/src/onboarding/scaffold-project.js +6 -1
  179. package/dist/src/onboarding/scaffold-project.js.map +1 -1
  180. package/dist/src/onboarding/upgrade.d.ts.map +1 -1
  181. package/dist/src/onboarding/upgrade.js +7 -3
  182. package/dist/src/onboarding/upgrade.js.map +1 -1
  183. package/dist/src/profiles/profile-schema.d.ts +54 -4
  184. package/dist/src/profiles/profile-schema.d.ts.map +1 -1
  185. package/dist/src/profiles/profile-schema.js +34 -14
  186. package/dist/src/profiles/profile-schema.js.map +1 -1
  187. package/dist/src/profiles/stack-profile.d.ts +24 -0
  188. package/dist/src/profiles/stack-profile.d.ts.map +1 -1
  189. package/dist/src/profiles/stack-profile.js +7 -3
  190. package/dist/src/profiles/stack-profile.js.map +1 -1
  191. package/dist/src/registry.d.ts.map +1 -1
  192. package/dist/src/registry.js +7 -9
  193. package/dist/src/registry.js.map +1 -1
  194. package/dist/src/types.d.ts.map +1 -1
  195. package/dist/src/types.js +6 -1
  196. package/dist/src/types.js.map +1 -1
  197. package/dist/src/utils/fs-atomic.d.ts.map +1 -1
  198. package/dist/src/utils/fs-atomic.js +13 -1
  199. package/dist/src/utils/fs-atomic.js.map +1 -1
  200. package/dist/src/utils/fs-idempotent.d.ts.map +1 -1
  201. package/dist/src/utils/fs-idempotent.js +13 -0
  202. package/dist/src/utils/fs-idempotent.js.map +1 -1
  203. package/dist/src/utils/fs-trash-sync.d.ts.map +1 -1
  204. package/dist/src/utils/fs-trash-sync.js +13 -1
  205. package/dist/src/utils/fs-trash-sync.js.map +1 -1
  206. package/dist/src/utils/fs-trash.d.ts.map +1 -1
  207. package/dist/src/utils/fs-trash.js +13 -1
  208. package/dist/src/utils/fs-trash.js.map +1 -1
  209. package/dist/src/utils/fs.d.ts.map +1 -1
  210. package/dist/src/utils/fs.js +14 -3
  211. package/dist/src/utils/fs.js.map +1 -1
  212. package/dist/src/utils/hash.d.ts.map +1 -1
  213. package/dist/src/utils/hash.js +12 -1
  214. package/dist/src/utils/hash.js.map +1 -1
  215. package/dist/src/utils/index.d.ts.map +1 -1
  216. package/dist/src/utils/index.js +13 -2
  217. package/dist/src/utils/index.js.map +1 -1
  218. package/dist/src/utils/string-utils.d.ts.map +1 -1
  219. package/dist/src/utils/string-utils.js +12 -1
  220. package/dist/src/utils/string-utils.js.map +1 -1
  221. package/dist/src/validators/port-validate.js +1 -1
  222. package/dist/src/validators/port-validate.js.map +1 -1
  223. package/dist/src/validators/skill-validate.d.ts.map +1 -1
  224. package/dist/src/validators/skill-validate.js +7 -8
  225. package/dist/src/validators/skill-validate.js.map +1 -1
  226. package/docs/reference/forge-yaml.md +38 -9
  227. package/os/adr/handlers/list-create.ts +4 -1
  228. package/os/adr/handlers/validate.ts +6 -1
  229. package/os/adr/types.ts +7 -3
  230. package/os/compass/compass.module.ts +79 -13
  231. package/os/compass/handlers/compass-audit-handler.ts +22 -3
  232. package/os/compass/handlers/compass-change-summary-handler.ts +55 -227
  233. package/os/compass/handlers/compass-inventory-handler.ts +30 -12
  234. package/os/compass/handlers/compass-inventory.ts +103 -240
  235. package/os/compass/handlers/compass-migrate-handler.ts +122 -0
  236. package/os/compass/handlers/compass-migrate.ts +361 -0
  237. package/os/compass/handlers/resolve-scan-root-package.test.ts +70 -0
  238. package/os/compass/handlers/resolve-scan-root.ts +15 -8
  239. package/os/compass/handlers/summary-record.ts +313 -0
  240. package/os/compass/handlers/tests/compass-migrate.test.ts +291 -0
  241. package/os/compass/handlers/tests/compass-policy.test.ts +249 -0
  242. package/os/compass/handlers/tests/compass-v2-contract.test.ts +9 -9
  243. package/os/compass/handlers/tests/summary-record.test.ts +224 -0
  244. package/os/compass/index.ts +23 -5
  245. package/os/compass/policy.ts +350 -0
  246. package/os/core/core.module.ts +9 -21
  247. package/os/core/handlers/forge-autonomy-validate.ts +7 -1
  248. package/os/core/handlers/package-health.ts +6 -1
  249. package/os/core/handlers/pinned-check.ts +6 -1
  250. package/os/core/handlers/pinned-validate.ts +6 -1
  251. package/os/core/handlers/validate.ts +6 -1
  252. package/os/exploration/exploration.module.ts +72 -71
  253. package/os/exploration/handlers/list.ts +4 -1
  254. package/os/mission/handlers/archive.ts +7 -3
  255. package/os/mission/index.ts +14 -0
  256. package/os/notes/index.ts +7 -1
  257. package/os/rfc/frontmatter-io.ts +6 -1
  258. package/os/rfc/handlers/archive.ts +6 -1
  259. package/os/rfc/handlers/implement-stamp.ts +7 -3
  260. package/os/rfc/handlers/index-graph.ts +6 -1
  261. package/os/rfc/handlers/lifecycle.ts +6 -1
  262. package/os/rfc/handlers/list-create.ts +6 -1
  263. package/os/rfc/handlers/pipeline-status.ts +6 -1
  264. package/os/rfc/handlers/supersede-propose.ts +6 -1
  265. package/os/rfc/handlers/validate-rules.ts +7 -3
  266. package/os/rfc/handlers/validate.ts +6 -1
  267. package/os/rfc/index.ts +6 -1
  268. package/os/rfc/rfc.module.ts +6 -1
  269. package/os/rfc/types.ts +7 -4
  270. package/os/session/handlers/save.ts +6 -1
  271. package/os/werkstatt/handlers/werkstatt-lock-recover.ts +6 -1
  272. package/os/werkstatt/handlers/workspace-deps.ts +3 -3
  273. package/os/workflow/index.ts +6 -1
  274. package/package.json +1 -1
  275. package/skills/fo/fo-add-tests/SKILL.md +14 -0
  276. package/skills/fo/fo-architecture/SKILL.md +14 -0
  277. package/skills/fo/fo-compass-annotate/SKILL.md +14 -0
  278. package/skills/fo/fo-design-summit/SKILL.md +14 -0
  279. package/skills/fo/fo-doc-audit/SKILL.md +14 -0
  280. package/skills/fo/fo-explore/SKILL.md +14 -0
  281. package/skills/fo/fo-extract-dna/SKILL.md +14 -0
  282. package/skills/fo/fo-fix/SKILL.md +14 -0
  283. package/skills/fo/fo-handoff/SKILL.md +14 -0
  284. package/skills/fo/fo-harvest/SKILL.md +14 -0
  285. package/skills/fo/fo-idea/SKILL.md +14 -0
  286. package/skills/fo/fo-idea-audit/SKILL.md +14 -0
  287. package/skills/fo/fo-idea-create-adr/SKILL.md +14 -0
  288. package/skills/fo/fo-idea-create-rfc/SKILL.md +14 -0
  289. package/skills/fo/fo-idea-enhance/SKILL.md +14 -0
  290. package/skills/fo/fo-idea-i-just-want-to-see-the-plan/SKILL.md +14 -0
  291. package/skills/fo/fo-idea-i-just-want-to-see-the-result/SKILL.md +14 -0
  292. package/skills/fo/fo-idea-implement/SKILL.md +14 -0
  293. package/skills/fo/fo-idea-plan/SKILL.md +14 -0
  294. package/skills/fo/fo-idea-status/SKILL.md +14 -0
  295. package/skills/fo/fo-knowledge-distill/SKILL.md +14 -0
  296. package/skills/fo/fo-memory-sync/SKILL.md +14 -0
  297. package/skills/fo/fo-qa/SKILL.md +14 -0
  298. package/skills/fo/fo-review/SKILL.md +14 -0
  299. package/skills/fo/fo-session-retro/SKILL.md +14 -0
  300. package/skills/fo/fo-session-save/SKILL.md +14 -0
  301. package/skills/fo/fo-spec-ingest/SKILL.md +14 -0
  302. package/skills/fo/fo-step-commit/SKILL.md +14 -0
  303. package/skills/fo/fo-triage/SKILL.md +14 -0
  304. package/skills/meta/forge-bootstrap/SKILL.md +14 -0
  305. package/skills/meta/port-to-forge/SKILL.md +14 -0
  306. package/skills/meta/skill-create/SKILL.md +14 -0
  307. package/skills/shared/grilling/SKILL.md +14 -0
  308. package/skills/shared/my-preferences/SKILL.md +14 -0
  309. package/skills/shared/windows-ai-tooling/SKILL.md +14 -0
  310. package/skills/shared/writing-great-skills/SKILL.md +14 -0
  311. package/src/config/forge-config.ts +16 -23
  312. package/src/forge-module.ts +6 -1
  313. package/src/index.ts +10 -2
  314. package/src/migration-adapters/git-utils.ts +6 -2
  315. package/src/migration-adapters/ignored-files.ts +6 -1
  316. package/src/migration-adapters/index.ts +4 -1
  317. package/src/migration-adapters/types.ts +6 -2
  318. package/src/onboarding/agents-generate.ts +7 -7
  319. package/src/onboarding/create.ts +7 -6
  320. package/src/onboarding/doctor.ts +7 -13
  321. package/src/onboarding/init.ts +7 -12
  322. package/src/onboarding/invariant-engine.ts +7 -2
  323. package/src/onboarding/nested-agents-generate.ts +7 -2
  324. package/src/onboarding/nested-agents-templates.ts +6 -1
  325. package/src/onboarding/scaffold-project.ts +6 -1
  326. package/src/onboarding/upgrade.ts +7 -3
  327. package/src/profiles/profile-schema.ts +42 -18
  328. package/src/profiles/stack-profile.ts +7 -3
  329. package/src/registry.ts +7 -9
  330. package/src/tests/agents-generate.test.ts +2 -2
  331. package/src/tests/forge-autonomy-validate.test.ts +1 -1
  332. package/src/types.ts +6 -1
  333. package/src/utils/fs-atomic.ts +13 -1
  334. package/src/utils/fs-idempotent.ts +13 -0
  335. package/src/utils/fs-trash-sync.ts +13 -1
  336. package/src/utils/fs-trash.ts +13 -1
  337. package/src/utils/fs.ts +14 -3
  338. package/src/utils/hash.ts +12 -1
  339. package/src/utils/index.ts +13 -2
  340. package/src/utils/string-utils.ts +12 -1
  341. package/src/validators/port-validate.ts +1 -1
  342. package/src/validators/skill-validate.ts +7 -8
  343. package/src/types/werkstatt-engine-shims.d.ts +0 -1416
  344. package/src/types/werkstatt-shared-shims.d.ts +0 -5686
@@ -31,18 +31,18 @@ syncedVersion: 4.1.6
31
31
 
32
32
  ## project
33
33
 
34
- | Field | Type | Required | Description |
35
- | --- | --- | --- | --- |
36
- | `name` | string | yes | Project name, used in generated AGENTS.md and CI |
37
- | `stack` | string[] | yes | Stack identifiers (e.g. `[typescript]`, `[phaser]`) |
38
- | `packageManager` | string | yes | Package manager (`pnpm` only) |
34
+ | Field | Type | Required | Description |
35
+ | ---------------- | -------- | -------- | --------------------------------------------------- |
36
+ | `name` | string | yes | Project name, used in generated AGENTS.md and CI |
37
+ | `stack` | string[] | yes | Stack identifiers (e.g. `[typescript]`, `[phaser]`) |
38
+ | `packageManager` | string | yes | Package manager (`pnpm` only) |
39
39
 
40
40
  ## paths
41
41
 
42
- | Field | Default | Description |
43
- | --- | --- | --- |
44
- | `rfcsDir` | `docs/rfcs` | Directory for RFC files |
45
- | `adrsDir` | `docs/adrs` | Directory for ADR files |
42
+ | Field | Default | Description |
43
+ | ----------- | ---------------- | ----------------------------- |
44
+ | `rfcsDir` | `docs/rfcs` | Directory for RFC files |
45
+ | `adrsDir` | `docs/adrs` | Directory for ADR files |
46
46
  | `skillsDir` | `.agents/skills` | Directory for deployed skills |
47
47
 
48
48
  ## bindings.commands
@@ -77,6 +77,35 @@ bindings:
77
77
  invariants: DNA
78
78
  ```
79
79
 
80
+ ## bindings.compass
81
+
82
+ Optional. Consumer-level Compass policy overrides (RFC-1096). The same shape is available to stack profiles via their `compass:` section — resolution order is generic defaults → profile `compass:` → `bindings.compass`.
83
+
84
+ ```yaml
85
+ bindings:
86
+ compass:
87
+ fileExtensions: [.ts, .tsx, ".svelte", "!.astro"]
88
+ testPatterns: ["**/*.test.ts", "test/**"]
89
+ scanRoots: [packages, services]
90
+ ignoredDirs: [spec, todo]
91
+ ignoredDirPrefixes: ["old-", "-"]
92
+ highRiskPaths: ["packages/engine/src/kernel/**"]
93
+ idPattern: "\\b([A-Z][A-Z0-9]*-)+\\d+\\b"
94
+ purposeBoilerplatePatterns: ["^(this file|the file)\\b"]
95
+ layerRules:
96
+ - { pattern: "src/pages/**", layer: page, risk: medium }
97
+ workspaceKinds: { apps: app, packages: package, services: service }
98
+ excludedPaths:
99
+ - { pattern: "src/templates/**", reason: template-source }
100
+ ```
101
+
102
+ Merge semantics per key:
103
+
104
+ - **Union-merge** (`fileExtensions`, `testPatterns`, `ignoredDirs`, `ignoredDirPrefixes`, `highRiskPaths`, `excludedPaths`): values merge with the generic defaults; an entry prefixed with `!` removes it (for `excludedPaths`, `!` matches on `pattern`).
105
+ - **Replace** (`scanRoots`, `idPattern`, `purposeBoilerplatePatterns`, `layerRules`, `workspaceKinds`): the consumer value replaces the whole list — repeat generic entries you still need.
106
+
107
+ `idPattern` must compile and match the `NAMESPACE-NUMBER` probe `ABC-123`, otherwise `resolveCompassPolicy` throws `CompassPolicyConfigError` naming the key. `layerRules` are evaluated first-match on the workspace-relative path; `highRiskPaths` are picomatch globs on the root-relative path that force `riskClass: high`. `excludedPaths` mark matching files `authoringStatus: excluded` with the given `reason` (they are still inventoried).
108
+
80
109
  ## skillPacks
81
110
 
82
111
  Optional. Declares project-local skill packs:
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  <MODULE_CONTRACT>
3
- <purpose>ADR list and create handlers mirroring the RFC domain.</purpose>
3
+ <purpose>ADR list and create command handlers mirroring the RFC domain lifecycle for architecture decision records.</purpose>
4
4
  <non-goals>
5
5
  <item>Do not introduce app-specific runtime composition or deployment behavior.</item>
6
6
  </non-goals>
@@ -8,6 +8,9 @@
8
8
  <CHANGE_SUMMARY>
9
9
  <item>RFC-0366: create ADR list and create handlers mirroring the RFC domain.</item>
10
10
  <item>RFC-0521: migrated from packages/os/site-kernel/src/adr/ to packages/forge/os/adr/.</item>
11
+ <item>RFC-1097: sweep — packages/forge + services clean
12
+
13
+ Sweep batch 2: real KEY_DECISIONS on 10 files, expanded purposes (CONTRACT-02/PURPOSE-02), headers on mission/index + gen-upstreams, sanitizeItemText in summary.record (literal Compass tags corrupted history), excludedPaths for wrangler types, test-fixtures testPattern. forge+services now 0 diagnostics under --mode error.</item>
11
14
  </CHANGE_SUMMARY>
12
15
  */
13
16
 
@@ -7,9 +7,14 @@
7
7
  </MODULE_CONTRACT>
8
8
  <CHANGE_SUMMARY>
9
9
  <item>RFC-0366: implement fail-hard ADR validation for the new adrModule.</item>
10
- <item>Post-refactor hardening: allow ADRs to be superseded by existing RFC decisions.</item>
11
10
  <item>RFC-0521: migrated from packages/os/site-kernel/src/adr/ to packages/forge/os/adr/.</item>
12
11
  <item>RFC-0722: add ADR-DIR-01 directory structure warning rule for unsanctioned subdirectories.</item>
12
+ <item>RFC-1097: step 6 — compass.migrate codemod run
13
+
14
+ Mechanical v1 to v2 header migration across the workspace: 942 files rewritten — CHANGE_SUMMARY windows collapsed into history, forbidden v1 blocks stripped, KEY_DECISIONS seeded from @ai-invariant comments (5 files) or TODO placeholders (103 files), blocks reordered to canonical order.</item>
15
+ <item>RFC-1097: sweep — werkstatt-engine clean
16
+
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>
13
18
  </CHANGE_SUMMARY>
14
19
  */
15
20
 
package/os/adr/types.ts CHANGED
@@ -11,12 +11,16 @@ statuses, scopes, frontmatter shape, validation results, and list output.
11
11
  </non-goals>
12
12
  </MODULE_CONTRACT>
13
13
  <CHANGE_SUMMARY>
14
- <item>RFC-0366: introduce ADR types and constants mirroring the RFC domain contract.</item>
15
- <item>RFC-0367: extend AdrStatus with reviewing and implemented; add implementedAt, closedAt, reviewers fields.</item>
16
- <item>Post-refactor hardening: document that an ADR may be superseded by a broader RFC.</item>
17
14
  <item>RFC-0521: migrated from packages/os/site-kernel/src/adr/ to packages/forge/os/adr/.</item>
18
15
  <item>RFC-0727: add AdrImplementStamp types for atomic ADR status transition.</item>
19
16
  <item>RFC-0996: add AV-17 acceptance criteria completeness check for implemented post-cutoff ADRs.</item>
17
+ <item>RFC-1097: step 6 — compass.migrate codemod run
18
+
19
+ Mechanical v1 to v2 header migration across the workspace: 942 files rewritten — CHANGE_SUMMARY windows collapsed into history, forbidden v1 blocks stripped, KEY_DECISIONS seeded from @ai-invariant comments (5 files) or TODO placeholders (103 files), blocks reordered to canonical order.</item>
20
+ <item>RFC-1097: sweep — packages/forge + services clean
21
+
22
+ Sweep batch 2: real KEY_DECISIONS on 10 files, expanded purposes (CONTRACT-02/PURPOSE-02), headers on mission/index + gen-upstreams, sanitizeItemText in summary.record (literal Compass tags corrupted history), excludedPaths for wrangler types, test-fixtures testPattern. forge+services now 0 diagnostics under --mode error.</item>
23
+ <history>RFC-0366, RFC-0367</history>
20
24
  </CHANGE_SUMMARY>
21
25
  */
22
26
 
@@ -9,6 +9,10 @@
9
9
  <item>RFC-0374: initial forgeCompassModule registering 12 compass commands.</item>
10
10
  <item>RFC-0538: renamed compass.changesummary.tidy to compass.summary.trim, removed compass.annotate, compass.clear, compass.markup.migrate, compass.invariant.add.</item>
11
11
  <item>RFC-0556: removed dynamic import of @warpgogol/site-kernel-checks, all handlers now inlined in forge/os/compass/handlers/.</item>
12
+ <item>RFC-1095: compass.summary.record, trim repair rewrite, commit integration</item>
13
+ <item>RFC-1097: steps 1-4 — compass.migrate codemod
14
+
15
+ Add the v1 to v2 Compass header codemod: migrateFile pure transform (collapse, strip, seed, reorder, purpose-flag actions), migrateWorkspace walker, runCompassMigrate handler with dirty-tree refusal and --force/--files/--dry-run flags, module registration, and 15 unit tests.</item>
12
16
  </CHANGE_SUMMARY>
13
17
  */
14
18
 
@@ -21,10 +25,9 @@ import {
21
25
  runCompassAuditBaseline,
22
26
  runCompassAuditValidate,
23
27
  } from "./handlers/compass-audit-handler.ts";
24
- import {
25
- runCompassChangeSummaryValidate,
26
- runCompassSummaryTrim,
27
- } from "./handlers/compass-change-summary-handler.ts";
28
+ import { runCompassSummaryTrim } from "./handlers/compass-change-summary-handler.ts";
29
+ import { runCompassSummaryRecord } from "./handlers/summary-record.ts";
30
+ import { runCompassMigrate } from "./handlers/compass-migrate-handler.ts";
28
31
 
29
32
  const compassScanFlags = {
30
33
  packages: {
@@ -33,7 +36,7 @@ const compassScanFlags = {
33
36
  },
34
37
  package: {
35
38
  kind: "string",
36
- description: "With --packages, scan one package by directory/name.",
39
+ description: "Scan one package by directory/name (implies --packages).",
37
40
  },
38
41
  workpiece: {
39
42
  kind: "string",
@@ -85,25 +88,47 @@ export const forgeCompassModule: ForgeModule = {
85
88
  execute: runCompassValidation,
86
89
  },
87
90
  {
88
- name: "compass.changesummary.validate",
89
- contract: "compass",
90
- rules: [],
91
+ name: "compass.summary.record",
91
92
  description:
92
- "Validate CHANGE_SUMMARY blocks for boilerplate items and over-cap unprotected items (RFC-0349).",
93
+ "Append a governance-referencing item to each target file's CHANGE_SUMMARY and collapse the 5-item window into <history> (RFC-1095). Invoked by commit commands when a commit carries an RFC/ADR reference.",
93
94
  scope: "workspace",
95
+ mutatesState: true,
94
96
  supportsAllSites: true,
95
- flags: { ...compassScanFlags, mode: compassModeFlag },
97
+ writes: [
98
+ "apps/**/*.{astro,ts,tsx,js,mjs,css,cs,tscn,tres,gd,md}",
99
+ "packages/**/*.{astro,ts,tsx,js,mjs,css,cs,tscn,tres,gd,md}",
100
+ "services/**/*.{ts,tsx,js,mjs,css,cs,tscn,tres,gd,md}",
101
+ ],
96
102
  reads: [
97
103
  "packages/**/*.{ts,tsx,astro,js,mjs,css,cs,tscn,tres,gd,md}",
98
104
  "apps/**/*.{ts,tsx,astro,js,mjs,css,cs,tscn,tres,gd,md}",
99
105
  "services/**/*.{ts,tsx,astro,js,mjs,css,cs,tscn,tres,gd,md}",
100
106
  ],
101
- execute: runCompassChangeSummaryValidate,
107
+ cacheable: false,
108
+ flags: {
109
+ ...compassScanFlags,
110
+ id: {
111
+ kind: "string",
112
+ required: true,
113
+ description: "Governance ID to record (e.g. RFC-1095, ADR-0042).",
114
+ },
115
+ files: {
116
+ kind: "string[]",
117
+ description:
118
+ "Target files (repo-relative, or workpiece-relative with --workpiece). Commit integrations pass the commit's changed-file set.",
119
+ },
120
+ text: {
121
+ kind: "string",
122
+ description:
123
+ "Item description. Default: commit subject minus conventional prefix; bare ID outside commit context.",
124
+ },
125
+ },
126
+ execute: runCompassSummaryRecord,
102
127
  },
103
128
  {
104
129
  name: "compass.summary.trim",
105
130
  description:
106
- "Deterministically trim CHANGE_SUMMARY blocks: remove boilerplate, cap total items to 30, preserve protected items (RFC-0538).",
131
+ "Repair CHANGE_SUMMARY blocks to the v2 shape: collapse described items past 5 into <history>, remove ID-less items, normalize <history> (RFC-1095).",
107
132
  scope: "workspace",
108
133
  mutatesState: true,
109
134
  supportsAllSites: true,
@@ -118,9 +143,50 @@ export const forgeCompassModule: ForgeModule = {
118
143
  "services/**/*.{ts,tsx,astro,js,mjs,css,cs,tscn,tres,gd,md}",
119
144
  ],
120
145
  cacheable: false,
121
- flags: { ...compassScanFlags },
146
+ flags: {
147
+ ...compassScanFlags,
148
+ mode: {
149
+ kind: "string",
150
+ description: "Repair mode: repair (default, only mode — reserved for future modes).",
151
+ },
152
+ },
122
153
  execute: runCompassSummaryTrim,
123
154
  },
155
+ {
156
+ name: "compass.migrate",
157
+ description:
158
+ "Rewrite authored file headers to the Compass v2 shape (RFC-1097): collapse CHANGE_SUMMARY into <history>, strip forbidden v1 blocks, seed KEY_DECISIONS from @ai-invariant comments, reorder blocks canonically. Refuses a dirty git tree unless --force.",
159
+ scope: "workspace",
160
+ mutatesState: true,
161
+ supportsAllSites: true,
162
+ writes: [
163
+ "apps/**/*.{astro,ts,tsx,js,mjs,css,cs,tscn,tres,gd,md}",
164
+ "packages/**/*.{astro,ts,tsx,js,mjs,css,cs,tscn,tres,gd,md}",
165
+ "services/**/*.{ts,tsx,js,mjs,css,cs,tscn,tres,gd,md}",
166
+ ],
167
+ reads: [
168
+ "packages/**/*.{ts,tsx,astro,js,mjs,css,cs,tscn,tres,gd,md}",
169
+ "apps/**/*.{ts,tsx,astro,js,mjs,css,cs,tscn,tres,gd,md}",
170
+ "services/**/*.{ts,tsx,astro,js,mjs,css,cs,tscn,tres,gd,md}",
171
+ ],
172
+ cacheable: false,
173
+ flags: {
174
+ ...compassScanFlags,
175
+ files: {
176
+ kind: "string[]",
177
+ description: "Explicit root-relative file list — bypasses scan-root filtering entirely.",
178
+ },
179
+ "dry-run": {
180
+ kind: "boolean",
181
+ description: "Print the action manifest without writing any file.",
182
+ },
183
+ force: {
184
+ kind: "boolean",
185
+ description: "Override the dirty-tree refusal.",
186
+ },
187
+ },
188
+ execute: runCompassMigrate,
189
+ },
124
190
  {
125
191
  name: "compass.audit.plan",
126
192
  description:
@@ -21,6 +21,7 @@ import { resolve, relative } from "node:path";
21
21
  import { execFile } from "node:child_process";
22
22
  import { promisify } from "node:util";
23
23
  import { createCompassInventoryEntries } from "./compass-inventory.ts";
24
+ import { resolveCompassPolicy } from "../policy.ts";
24
25
  import { resolveCompassScanRoot } from "./resolve-scan-root.ts";
25
26
  import { getRevisionByPath } from "./git-revision.ts";
26
27
  import type { CompassInventoryEntry } from "./compass-inventory.ts";
@@ -139,7 +140,13 @@ export async function runCompassAuditPlan(
139
140
  }>
140
141
  > {
141
142
  const scanRoot = resolveCompassScanRoot(input, context);
142
- const entries = await createCompassInventoryEntries(context.workspaceRoot, input, scanRoot);
143
+ const policy = resolveCompassPolicy(context.workspaceRoot, context.forgeRoot);
144
+ const entries = await createCompassInventoryEntries(
145
+ context.workspaceRoot,
146
+ input,
147
+ scanRoot,
148
+ policy,
149
+ );
143
150
  const authored = getAuthoredEntries(entries);
144
151
  const ledger = await loadLedger(context.workspaceRoot);
145
152
 
@@ -283,7 +290,13 @@ export async function runCompassAuditBaseline(
283
290
  }>
284
291
  > {
285
292
  const scanRoot = resolveCompassScanRoot(input, context);
286
- const entries = await createCompassInventoryEntries(context.workspaceRoot, input, scanRoot);
293
+ const policy = resolveCompassPolicy(context.workspaceRoot, context.forgeRoot);
294
+ const entries = await createCompassInventoryEntries(
295
+ context.workspaceRoot,
296
+ input,
297
+ scanRoot,
298
+ policy,
299
+ );
287
300
  const authored = getAuthoredEntries(entries);
288
301
  const ledger = await loadLedger(context.workspaceRoot);
289
302
 
@@ -347,7 +360,13 @@ export async function runCompassAuditValidate(
347
360
  > {
348
361
  const strict = input.flags["strict"] === true;
349
362
  const scanRoot = resolveCompassScanRoot(input, context);
350
- const entries = await createCompassInventoryEntries(context.workspaceRoot, input, scanRoot);
363
+ const policy = resolveCompassPolicy(context.workspaceRoot, context.forgeRoot);
364
+ const entries = await createCompassInventoryEntries(
365
+ context.workspaceRoot,
366
+ input,
367
+ scanRoot,
368
+ policy,
369
+ );
351
370
  const authored = getAuthoredEntries(entries);
352
371
  const ledger = await loadLedger(context.workspaceRoot);
353
372