@accelerator-mzq/forge 1.4.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 (663) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSE-THIRD-PARTY.md +50 -0
  3. package/README.md +159 -0
  4. package/dist/cli/commands/ack.d.ts +7 -0
  5. package/dist/cli/commands/ack.d.ts.map +1 -0
  6. package/dist/cli/commands/ack.js +223 -0
  7. package/dist/cli/commands/ack.js.map +1 -0
  8. package/dist/cli/commands/archive.d.ts +44 -0
  9. package/dist/cli/commands/archive.d.ts.map +1 -0
  10. package/dist/cli/commands/archive.js +689 -0
  11. package/dist/cli/commands/archive.js.map +1 -0
  12. package/dist/cli/commands/backlog.d.ts +3 -0
  13. package/dist/cli/commands/backlog.d.ts.map +1 -0
  14. package/dist/cli/commands/backlog.js +55 -0
  15. package/dist/cli/commands/backlog.js.map +1 -0
  16. package/dist/cli/commands/config.d.ts +3 -0
  17. package/dist/cli/commands/config.d.ts.map +1 -0
  18. package/dist/cli/commands/config.js +107 -0
  19. package/dist/cli/commands/config.js.map +1 -0
  20. package/dist/cli/commands/evidence.d.ts +7 -0
  21. package/dist/cli/commands/evidence.d.ts.map +1 -0
  22. package/dist/cli/commands/evidence.js +662 -0
  23. package/dist/cli/commands/evidence.js.map +1 -0
  24. package/dist/cli/commands/finding.d.ts +3 -0
  25. package/dist/cli/commands/finding.d.ts.map +1 -0
  26. package/dist/cli/commands/finding.js +93 -0
  27. package/dist/cli/commands/finding.js.map +1 -0
  28. package/dist/cli/commands/init.d.ts +3 -0
  29. package/dist/cli/commands/init.d.ts.map +1 -0
  30. package/dist/cli/commands/init.js +126 -0
  31. package/dist/cli/commands/init.js.map +1 -0
  32. package/dist/cli/commands/legacy-bridge.d.ts +11 -0
  33. package/dist/cli/commands/legacy-bridge.d.ts.map +1 -0
  34. package/dist/cli/commands/legacy-bridge.js +586 -0
  35. package/dist/cli/commands/legacy-bridge.js.map +1 -0
  36. package/dist/cli/commands/migrate.d.ts +3 -0
  37. package/dist/cli/commands/migrate.d.ts.map +1 -0
  38. package/dist/cli/commands/migrate.js +34 -0
  39. package/dist/cli/commands/migrate.js.map +1 -0
  40. package/dist/cli/commands/monitor.d.ts +3 -0
  41. package/dist/cli/commands/monitor.d.ts.map +1 -0
  42. package/dist/cli/commands/monitor.js +113 -0
  43. package/dist/cli/commands/monitor.js.map +1 -0
  44. package/dist/cli/commands/preflight.d.ts +7 -0
  45. package/dist/cli/commands/preflight.d.ts.map +1 -0
  46. package/dist/cli/commands/preflight.js +63 -0
  47. package/dist/cli/commands/preflight.js.map +1 -0
  48. package/dist/cli/commands/scope.d.ts +3 -0
  49. package/dist/cli/commands/scope.d.ts.map +1 -0
  50. package/dist/cli/commands/scope.js +32 -0
  51. package/dist/cli/commands/scope.js.map +1 -0
  52. package/dist/cli/commands/stage-extensions.d.ts +45 -0
  53. package/dist/cli/commands/stage-extensions.d.ts.map +1 -0
  54. package/dist/cli/commands/stage-extensions.js +590 -0
  55. package/dist/cli/commands/stage-extensions.js.map +1 -0
  56. package/dist/cli/commands/update.d.ts +3 -0
  57. package/dist/cli/commands/update.d.ts.map +1 -0
  58. package/dist/cli/commands/update.js +98 -0
  59. package/dist/cli/commands/update.js.map +1 -0
  60. package/dist/cli/commands/upgrade.d.ts +3 -0
  61. package/dist/cli/commands/upgrade.d.ts.map +1 -0
  62. package/dist/cli/commands/upgrade.js +277 -0
  63. package/dist/cli/commands/upgrade.js.map +1 -0
  64. package/dist/cli/commands/validate.d.ts +3 -0
  65. package/dist/cli/commands/validate.d.ts.map +1 -0
  66. package/dist/cli/commands/validate.js +66 -0
  67. package/dist/cli/commands/validate.js.map +1 -0
  68. package/dist/cli/index.d.ts +3 -0
  69. package/dist/cli/index.d.ts.map +1 -0
  70. package/dist/cli/index.js +69 -0
  71. package/dist/cli/index.js.map +1 -0
  72. package/dist/core/ack-log.d.ts +107 -0
  73. package/dist/core/ack-log.d.ts.map +1 -0
  74. package/dist/core/ack-log.js +197 -0
  75. package/dist/core/ack-log.js.map +1 -0
  76. package/dist/core/archive/ack-log-consistency.d.ts +15 -0
  77. package/dist/core/archive/ack-log-consistency.d.ts.map +1 -0
  78. package/dist/core/archive/ack-log-consistency.js +164 -0
  79. package/dist/core/archive/ack-log-consistency.js.map +1 -0
  80. package/dist/core/archive/fence.d.ts +66 -0
  81. package/dist/core/archive/fence.d.ts.map +1 -0
  82. package/dist/core/archive/fence.js +218 -0
  83. package/dist/core/archive/fence.js.map +1 -0
  84. package/dist/core/archive/index.d.ts +4 -0
  85. package/dist/core/archive/index.d.ts.map +1 -0
  86. package/dist/core/archive/index.js +6 -0
  87. package/dist/core/archive/index.js.map +1 -0
  88. package/dist/core/archive/legacy-exemption.d.ts +14 -0
  89. package/dist/core/archive/legacy-exemption.d.ts.map +1 -0
  90. package/dist/core/archive/legacy-exemption.js +82 -0
  91. package/dist/core/archive/legacy-exemption.js.map +1 -0
  92. package/dist/core/archive/lock.d.ts +46 -0
  93. package/dist/core/archive/lock.d.ts.map +1 -0
  94. package/dist/core/archive/lock.js +98 -0
  95. package/dist/core/archive/lock.js.map +1 -0
  96. package/dist/core/archive/pause-decisions-fence.d.ts +13 -0
  97. package/dist/core/archive/pause-decisions-fence.d.ts.map +1 -0
  98. package/dist/core/archive/pause-decisions-fence.js +384 -0
  99. package/dist/core/archive/pause-decisions-fence.js.map +1 -0
  100. package/dist/core/archive/process-evidence-fence.d.ts +110 -0
  101. package/dist/core/archive/process-evidence-fence.d.ts.map +1 -0
  102. package/dist/core/archive/process-evidence-fence.js +449 -0
  103. package/dist/core/archive/process-evidence-fence.js.map +1 -0
  104. package/dist/core/archive/process-evidence-rerun.d.ts +9 -0
  105. package/dist/core/archive/process-evidence-rerun.d.ts.map +1 -0
  106. package/dist/core/archive/process-evidence-rerun.js +238 -0
  107. package/dist/core/archive/process-evidence-rerun.js.map +1 -0
  108. package/dist/core/archive/recover-prompt.d.ts +10 -0
  109. package/dist/core/archive/recover-prompt.d.ts.map +1 -0
  110. package/dist/core/archive/recover-prompt.js +29 -0
  111. package/dist/core/archive/recover-prompt.js.map +1 -0
  112. package/dist/core/archive/recover.d.ts +83 -0
  113. package/dist/core/archive/recover.d.ts.map +1 -0
  114. package/dist/core/archive/recover.js +219 -0
  115. package/dist/core/archive/recover.js.map +1 -0
  116. package/dist/core/archive/resume-summary.d.ts +22 -0
  117. package/dist/core/archive/resume-summary.d.ts.map +1 -0
  118. package/dist/core/archive/resume-summary.js +82 -0
  119. package/dist/core/archive/resume-summary.js.map +1 -0
  120. package/dist/core/archive/summary-builder.d.ts +28 -0
  121. package/dist/core/archive/summary-builder.d.ts.map +1 -0
  122. package/dist/core/archive/summary-builder.js +287 -0
  123. package/dist/core/archive/summary-builder.js.map +1 -0
  124. package/dist/core/archive/summary-render.d.ts +8 -0
  125. package/dist/core/archive/summary-render.d.ts.map +1 -0
  126. package/dist/core/archive/summary-render.js +64 -0
  127. package/dist/core/archive/summary-render.js.map +1 -0
  128. package/dist/core/archive/three-level-fence.d.ts +10 -0
  129. package/dist/core/archive/three-level-fence.d.ts.map +1 -0
  130. package/dist/core/archive/three-level-fence.js +93 -0
  131. package/dist/core/archive/three-level-fence.js.map +1 -0
  132. package/dist/core/archive/transaction.d.ts +41 -0
  133. package/dist/core/archive/transaction.d.ts.map +1 -0
  134. package/dist/core/archive/transaction.js +184 -0
  135. package/dist/core/archive/transaction.js.map +1 -0
  136. package/dist/core/archive/verify-findings-fence.d.ts +11 -0
  137. package/dist/core/archive/verify-findings-fence.d.ts.map +1 -0
  138. package/dist/core/archive/verify-findings-fence.js +80 -0
  139. package/dist/core/archive/verify-findings-fence.js.map +1 -0
  140. package/dist/core/archive/version-retrograde-fence.d.ts +10 -0
  141. package/dist/core/archive/version-retrograde-fence.d.ts.map +1 -0
  142. package/dist/core/archive/version-retrograde-fence.js +103 -0
  143. package/dist/core/archive/version-retrograde-fence.js.map +1 -0
  144. package/dist/core/artifact-graph/builder.d.ts +16 -0
  145. package/dist/core/artifact-graph/builder.d.ts.map +1 -0
  146. package/dist/core/artifact-graph/builder.js +32 -0
  147. package/dist/core/artifact-graph/builder.js.map +1 -0
  148. package/dist/core/artifact-graph/index.d.ts +3 -0
  149. package/dist/core/artifact-graph/index.d.ts.map +1 -0
  150. package/dist/core/artifact-graph/index.js +4 -0
  151. package/dist/core/artifact-graph/index.js.map +1 -0
  152. package/dist/core/artifact-graph/types.d.ts +14 -0
  153. package/dist/core/artifact-graph/types.d.ts.map +1 -0
  154. package/dist/core/artifact-graph/types.js +2 -0
  155. package/dist/core/artifact-graph/types.js.map +1 -0
  156. package/dist/core/backlog/assets/backlog-readme.md +11 -0
  157. package/dist/core/backlog/index.d.ts +20 -0
  158. package/dist/core/backlog/index.d.ts.map +1 -0
  159. package/dist/core/backlog/index.js +60 -0
  160. package/dist/core/backlog/index.js.map +1 -0
  161. package/dist/core/backlog/render.d.ts +51 -0
  162. package/dist/core/backlog/render.d.ts.map +1 -0
  163. package/dist/core/backlog/render.js +196 -0
  164. package/dist/core/backlog/render.js.map +1 -0
  165. package/dist/core/bootstrap/index.d.ts +2 -0
  166. package/dist/core/bootstrap/index.d.ts.map +1 -0
  167. package/dist/core/bootstrap/index.js +5 -0
  168. package/dist/core/bootstrap/index.js.map +1 -0
  169. package/dist/core/canonical-json.d.ts +11 -0
  170. package/dist/core/canonical-json.d.ts.map +1 -0
  171. package/dist/core/canonical-json.js +43 -0
  172. package/dist/core/canonical-json.js.map +1 -0
  173. package/dist/core/git/utils.d.ts +27 -0
  174. package/dist/core/git/utils.d.ts.map +1 -0
  175. package/dist/core/git/utils.js +53 -0
  176. package/dist/core/git/utils.js.map +1 -0
  177. package/dist/core/harness-adapters/claude.d.ts +13 -0
  178. package/dist/core/harness-adapters/claude.d.ts.map +1 -0
  179. package/dist/core/harness-adapters/claude.js +53 -0
  180. package/dist/core/harness-adapters/claude.js.map +1 -0
  181. package/dist/core/harness-adapters/codex.d.ts +14 -0
  182. package/dist/core/harness-adapters/codex.d.ts.map +1 -0
  183. package/dist/core/harness-adapters/codex.js +60 -0
  184. package/dist/core/harness-adapters/codex.js.map +1 -0
  185. package/dist/core/harness-adapters/detector.d.ts +15 -0
  186. package/dist/core/harness-adapters/detector.d.ts.map +1 -0
  187. package/dist/core/harness-adapters/detector.js +45 -0
  188. package/dist/core/harness-adapters/detector.js.map +1 -0
  189. package/dist/core/harness-adapters/hash-compare.d.ts +21 -0
  190. package/dist/core/harness-adapters/hash-compare.d.ts.map +1 -0
  191. package/dist/core/harness-adapters/hash-compare.js +49 -0
  192. package/dist/core/harness-adapters/hash-compare.js.map +1 -0
  193. package/dist/core/harness-adapters/index.d.ts +8 -0
  194. package/dist/core/harness-adapters/index.d.ts.map +1 -0
  195. package/dist/core/harness-adapters/index.js +8 -0
  196. package/dist/core/harness-adapters/index.js.map +1 -0
  197. package/dist/core/harness-adapters/interface.d.ts +52 -0
  198. package/dist/core/harness-adapters/interface.d.ts.map +1 -0
  199. package/dist/core/harness-adapters/interface.js +3 -0
  200. package/dist/core/harness-adapters/interface.js.map +1 -0
  201. package/dist/core/harness-adapters/legacy-detector.d.ts +14 -0
  202. package/dist/core/harness-adapters/legacy-detector.d.ts.map +1 -0
  203. package/dist/core/harness-adapters/legacy-detector.js +83 -0
  204. package/dist/core/harness-adapters/legacy-detector.js.map +1 -0
  205. package/dist/core/harness-adapters/transaction.d.ts +12 -0
  206. package/dist/core/harness-adapters/transaction.d.ts.map +1 -0
  207. package/dist/core/harness-adapters/transaction.js +113 -0
  208. package/dist/core/harness-adapters/transaction.js.map +1 -0
  209. package/dist/core/harness-adapters/types.d.ts +45 -0
  210. package/dist/core/harness-adapters/types.d.ts.map +1 -0
  211. package/dist/core/harness-adapters/types.js +3 -0
  212. package/dist/core/harness-adapters/types.js.map +1 -0
  213. package/dist/core/hash/content.d.ts +10 -0
  214. package/dist/core/hash/content.d.ts.map +1 -0
  215. package/dist/core/hash/content.js +131 -0
  216. package/dist/core/hash/content.js.map +1 -0
  217. package/dist/core/hash/diff.d.ts +26 -0
  218. package/dist/core/hash/diff.d.ts.map +1 -0
  219. package/dist/core/hash/diff.js +40 -0
  220. package/dist/core/hash/diff.js.map +1 -0
  221. package/dist/core/hash/index.d.ts +6 -0
  222. package/dist/core/hash/index.d.ts.map +1 -0
  223. package/dist/core/hash/index.js +7 -0
  224. package/dist/core/hash/index.js.map +1 -0
  225. package/dist/core/hash/log.d.ts +7 -0
  226. package/dist/core/hash/log.d.ts.map +1 -0
  227. package/dist/core/hash/log.js +14 -0
  228. package/dist/core/hash/log.js.map +1 -0
  229. package/dist/core/hash/tasks.d.ts +9 -0
  230. package/dist/core/hash/tasks.d.ts.map +1 -0
  231. package/dist/core/hash/tasks.js +20 -0
  232. package/dist/core/hash/tasks.js.map +1 -0
  233. package/dist/core/legacy-bridge/ack.d.ts +30 -0
  234. package/dist/core/legacy-bridge/ack.d.ts.map +1 -0
  235. package/dist/core/legacy-bridge/ack.js +133 -0
  236. package/dist/core/legacy-bridge/ack.js.map +1 -0
  237. package/dist/core/legacy-bridge/anchors.d.ts +15 -0
  238. package/dist/core/legacy-bridge/anchors.d.ts.map +1 -0
  239. package/dist/core/legacy-bridge/anchors.js +119 -0
  240. package/dist/core/legacy-bridge/anchors.js.map +1 -0
  241. package/dist/core/legacy-bridge/budget.d.ts +39 -0
  242. package/dist/core/legacy-bridge/budget.d.ts.map +1 -0
  243. package/dist/core/legacy-bridge/budget.js +83 -0
  244. package/dist/core/legacy-bridge/budget.js.map +1 -0
  245. package/dist/core/legacy-bridge/conflict.d.ts +44 -0
  246. package/dist/core/legacy-bridge/conflict.d.ts.map +1 -0
  247. package/dist/core/legacy-bridge/conflict.js +105 -0
  248. package/dist/core/legacy-bridge/conflict.js.map +1 -0
  249. package/dist/core/legacy-bridge/diff-report.d.ts +14 -0
  250. package/dist/core/legacy-bridge/diff-report.d.ts.map +1 -0
  251. package/dist/core/legacy-bridge/diff-report.js +105 -0
  252. package/dist/core/legacy-bridge/diff-report.js.map +1 -0
  253. package/dist/core/legacy-bridge/encoding.d.ts +42 -0
  254. package/dist/core/legacy-bridge/encoding.d.ts.map +1 -0
  255. package/dist/core/legacy-bridge/encoding.js +104 -0
  256. package/dist/core/legacy-bridge/encoding.js.map +1 -0
  257. package/dist/core/legacy-bridge/excel.d.ts +32 -0
  258. package/dist/core/legacy-bridge/excel.d.ts.map +1 -0
  259. package/dist/core/legacy-bridge/excel.js +124 -0
  260. package/dist/core/legacy-bridge/excel.js.map +1 -0
  261. package/dist/core/legacy-bridge/hash-anchor.d.ts +23 -0
  262. package/dist/core/legacy-bridge/hash-anchor.d.ts.map +1 -0
  263. package/dist/core/legacy-bridge/hash-anchor.js +55 -0
  264. package/dist/core/legacy-bridge/hash-anchor.js.map +1 -0
  265. package/dist/core/legacy-bridge/indexer.d.ts +28 -0
  266. package/dist/core/legacy-bridge/indexer.d.ts.map +1 -0
  267. package/dist/core/legacy-bridge/indexer.js +145 -0
  268. package/dist/core/legacy-bridge/indexer.js.map +1 -0
  269. package/dist/core/legacy-bridge/mapper.d.ts +40 -0
  270. package/dist/core/legacy-bridge/mapper.d.ts.map +1 -0
  271. package/dist/core/legacy-bridge/mapper.js +241 -0
  272. package/dist/core/legacy-bridge/mapper.js.map +1 -0
  273. package/dist/core/legacy-bridge/quality-judge.d.ts +65 -0
  274. package/dist/core/legacy-bridge/quality-judge.d.ts.map +1 -0
  275. package/dist/core/legacy-bridge/quality-judge.js +277 -0
  276. package/dist/core/legacy-bridge/quality-judge.js.map +1 -0
  277. package/dist/core/legacy-bridge/redact.d.ts +28 -0
  278. package/dist/core/legacy-bridge/redact.d.ts.map +1 -0
  279. package/dist/core/legacy-bridge/redact.js +121 -0
  280. package/dist/core/legacy-bridge/redact.js.map +1 -0
  281. package/dist/core/legacy-bridge/regenerator.d.ts +50 -0
  282. package/dist/core/legacy-bridge/regenerator.d.ts.map +1 -0
  283. package/dist/core/legacy-bridge/regenerator.js +193 -0
  284. package/dist/core/legacy-bridge/regenerator.js.map +1 -0
  285. package/dist/core/legacy-bridge/resolve.d.ts +28 -0
  286. package/dist/core/legacy-bridge/resolve.d.ts.map +1 -0
  287. package/dist/core/legacy-bridge/resolve.js +75 -0
  288. package/dist/core/legacy-bridge/resolve.js.map +1 -0
  289. package/dist/core/legacy-bridge/sync-check.d.ts +47 -0
  290. package/dist/core/legacy-bridge/sync-check.d.ts.map +1 -0
  291. package/dist/core/legacy-bridge/sync-check.js +198 -0
  292. package/dist/core/legacy-bridge/sync-check.js.map +1 -0
  293. package/dist/core/legacy-bridge/types.d.ts +114 -0
  294. package/dist/core/legacy-bridge/types.d.ts.map +1 -0
  295. package/dist/core/legacy-bridge/types.js +4 -0
  296. package/dist/core/legacy-bridge/types.js.map +1 -0
  297. package/dist/core/markers/index.d.ts +3 -0
  298. package/dist/core/markers/index.d.ts.map +1 -0
  299. package/dist/core/markers/index.js +3 -0
  300. package/dist/core/markers/index.js.map +1 -0
  301. package/dist/core/markers/parse.d.ts +12 -0
  302. package/dist/core/markers/parse.d.ts.map +1 -0
  303. package/dist/core/markers/parse.js +31 -0
  304. package/dist/core/markers/parse.js.map +1 -0
  305. package/dist/core/markers/types.d.ts +142 -0
  306. package/dist/core/markers/types.d.ts.map +1 -0
  307. package/dist/core/markers/types.js +3 -0
  308. package/dist/core/markers/types.js.map +1 -0
  309. package/dist/core/migrate/ack.d.ts +13 -0
  310. package/dist/core/migrate/ack.d.ts.map +1 -0
  311. package/dist/core/migrate/ack.js +62 -0
  312. package/dist/core/migrate/ack.js.map +1 -0
  313. package/dist/core/migrate/archive-detect.d.ts +19 -0
  314. package/dist/core/migrate/archive-detect.d.ts.map +1 -0
  315. package/dist/core/migrate/archive-detect.js +89 -0
  316. package/dist/core/migrate/archive-detect.js.map +1 -0
  317. package/dist/core/migrate/budget.d.ts +7 -0
  318. package/dist/core/migrate/budget.d.ts.map +1 -0
  319. package/dist/core/migrate/budget.js +25 -0
  320. package/dist/core/migrate/budget.js.map +1 -0
  321. package/dist/core/migrate/conflict.d.ts +49 -0
  322. package/dist/core/migrate/conflict.d.ts.map +1 -0
  323. package/dist/core/migrate/conflict.js +99 -0
  324. package/dist/core/migrate/conflict.js.map +1 -0
  325. package/dist/core/migrate/index.d.ts +7 -0
  326. package/dist/core/migrate/index.d.ts.map +1 -0
  327. package/dist/core/migrate/index.js +389 -0
  328. package/dist/core/migrate/index.js.map +1 -0
  329. package/dist/core/migrate/markdown-aware.d.ts +27 -0
  330. package/dist/core/migrate/markdown-aware.d.ts.map +1 -0
  331. package/dist/core/migrate/markdown-aware.js +112 -0
  332. package/dist/core/migrate/markdown-aware.js.map +1 -0
  333. package/dist/core/migrate/quality.d.ts +66 -0
  334. package/dist/core/migrate/quality.d.ts.map +1 -0
  335. package/dist/core/migrate/quality.js +302 -0
  336. package/dist/core/migrate/quality.js.map +1 -0
  337. package/dist/core/migrate/regenerate.d.ts +24 -0
  338. package/dist/core/migrate/regenerate.d.ts.map +1 -0
  339. package/dist/core/migrate/regenerate.js +145 -0
  340. package/dist/core/migrate/regenerate.js.map +1 -0
  341. package/dist/core/migrate/report.d.ts +36 -0
  342. package/dist/core/migrate/report.d.ts.map +1 -0
  343. package/dist/core/migrate/report.js +154 -0
  344. package/dist/core/migrate/report.js.map +1 -0
  345. package/dist/core/migrate/sources/index.d.ts +4 -0
  346. package/dist/core/migrate/sources/index.d.ts.map +1 -0
  347. package/dist/core/migrate/sources/index.js +17 -0
  348. package/dist/core/migrate/sources/index.js.map +1 -0
  349. package/dist/core/migrate/sources/openspec.d.ts +14 -0
  350. package/dist/core/migrate/sources/openspec.d.ts.map +1 -0
  351. package/dist/core/migrate/sources/openspec.js +453 -0
  352. package/dist/core/migrate/sources/openspec.js.map +1 -0
  353. package/dist/core/migrate/sources/superpowers.d.ts +12 -0
  354. package/dist/core/migrate/sources/superpowers.d.ts.map +1 -0
  355. package/dist/core/migrate/sources/superpowers.js +310 -0
  356. package/dist/core/migrate/sources/superpowers.js.map +1 -0
  357. package/dist/core/migrate/types.d.ts +183 -0
  358. package/dist/core/migrate/types.d.ts.map +1 -0
  359. package/dist/core/migrate/types.js +5 -0
  360. package/dist/core/migrate/types.js.map +1 -0
  361. package/dist/core/migrate/utils.d.ts +2 -0
  362. package/dist/core/migrate/utils.d.ts.map +1 -0
  363. package/dist/core/migrate/utils.js +28 -0
  364. package/dist/core/migrate/utils.js.map +1 -0
  365. package/dist/core/monitor/artifact-observer.d.ts +9 -0
  366. package/dist/core/monitor/artifact-observer.d.ts.map +1 -0
  367. package/dist/core/monitor/artifact-observer.js +180 -0
  368. package/dist/core/monitor/artifact-observer.js.map +1 -0
  369. package/dist/core/monitor/config.d.ts +16 -0
  370. package/dist/core/monitor/config.d.ts.map +1 -0
  371. package/dist/core/monitor/config.js +48 -0
  372. package/dist/core/monitor/config.js.map +1 -0
  373. package/dist/core/monitor/divergence-map.d.ts +5 -0
  374. package/dist/core/monitor/divergence-map.d.ts.map +1 -0
  375. package/dist/core/monitor/divergence-map.js +92 -0
  376. package/dist/core/monitor/divergence-map.js.map +1 -0
  377. package/dist/core/monitor/exit-handler.d.ts +6 -0
  378. package/dist/core/monitor/exit-handler.d.ts.map +1 -0
  379. package/dist/core/monitor/exit-handler.js +27 -0
  380. package/dist/core/monitor/exit-handler.js.map +1 -0
  381. package/dist/core/monitor/health-verdict.d.ts +9 -0
  382. package/dist/core/monitor/health-verdict.d.ts.map +1 -0
  383. package/dist/core/monitor/health-verdict.js +55 -0
  384. package/dist/core/monitor/health-verdict.js.map +1 -0
  385. package/dist/core/monitor/report-renderer.d.ts +4 -0
  386. package/dist/core/monitor/report-renderer.d.ts.map +1 -0
  387. package/dist/core/monitor/report-renderer.js +82 -0
  388. package/dist/core/monitor/report-renderer.js.map +1 -0
  389. package/dist/core/monitor/trace-store.d.ts +39 -0
  390. package/dist/core/monitor/trace-store.d.ts.map +1 -0
  391. package/dist/core/monitor/trace-store.js +130 -0
  392. package/dist/core/monitor/trace-store.js.map +1 -0
  393. package/dist/core/monitor/types.d.ts +63 -0
  394. package/dist/core/monitor/types.d.ts.map +1 -0
  395. package/dist/core/monitor/types.js +26 -0
  396. package/dist/core/monitor/types.js.map +1 -0
  397. package/dist/core/parse/design.d.ts +14 -0
  398. package/dist/core/parse/design.d.ts.map +1 -0
  399. package/dist/core/parse/design.js +17 -0
  400. package/dist/core/parse/design.js.map +1 -0
  401. package/dist/core/parse/fenced-yaml.d.ts +18 -0
  402. package/dist/core/parse/fenced-yaml.d.ts.map +1 -0
  403. package/dist/core/parse/fenced-yaml.js +45 -0
  404. package/dist/core/parse/fenced-yaml.js.map +1 -0
  405. package/dist/core/parse/index.d.ts +7 -0
  406. package/dist/core/parse/index.d.ts.map +1 -0
  407. package/dist/core/parse/index.js +8 -0
  408. package/dist/core/parse/index.js.map +1 -0
  409. package/dist/core/parse/markdown.d.ts +30 -0
  410. package/dist/core/parse/markdown.d.ts.map +1 -0
  411. package/dist/core/parse/markdown.js +66 -0
  412. package/dist/core/parse/markdown.js.map +1 -0
  413. package/dist/core/parse/proposal.d.ts +18 -0
  414. package/dist/core/parse/proposal.d.ts.map +1 -0
  415. package/dist/core/parse/proposal.js +22 -0
  416. package/dist/core/parse/proposal.js.map +1 -0
  417. package/dist/core/parse/specs.d.ts +25 -0
  418. package/dist/core/parse/specs.d.ts.map +1 -0
  419. package/dist/core/parse/specs.js +58 -0
  420. package/dist/core/parse/specs.js.map +1 -0
  421. package/dist/core/parse/tasks.d.ts +33 -0
  422. package/dist/core/parse/tasks.d.ts.map +1 -0
  423. package/dist/core/parse/tasks.js +82 -0
  424. package/dist/core/parse/tasks.js.map +1 -0
  425. package/dist/core/parse/yaml.d.ts +13 -0
  426. package/dist/core/parse/yaml.d.ts.map +1 -0
  427. package/dist/core/parse/yaml.js +39 -0
  428. package/dist/core/parse/yaml.js.map +1 -0
  429. package/dist/core/process-evidence-freeze-warnings.d.ts +24 -0
  430. package/dist/core/process-evidence-freeze-warnings.d.ts.map +1 -0
  431. package/dist/core/process-evidence-freeze-warnings.js +153 -0
  432. package/dist/core/process-evidence-freeze-warnings.js.map +1 -0
  433. package/dist/core/schema/index.d.ts +5 -0
  434. package/dist/core/schema/index.d.ts.map +1 -0
  435. package/dist/core/schema/index.js +6 -0
  436. package/dist/core/schema/index.js.map +1 -0
  437. package/dist/core/schema/model-tiers-config.d.ts +41 -0
  438. package/dist/core/schema/model-tiers-config.d.ts.map +1 -0
  439. package/dist/core/schema/model-tiers-config.js +85 -0
  440. package/dist/core/schema/model-tiers-config.js.map +1 -0
  441. package/dist/core/schema/process-verification-config.d.ts +18 -0
  442. package/dist/core/schema/process-verification-config.d.ts.map +1 -0
  443. package/dist/core/schema/process-verification-config.js +74 -0
  444. package/dist/core/schema/process-verification-config.js.map +1 -0
  445. package/dist/core/schema/stage-extensions-config.d.ts +28 -0
  446. package/dist/core/schema/stage-extensions-config.d.ts.map +1 -0
  447. package/dist/core/schema/stage-extensions-config.js +228 -0
  448. package/dist/core/schema/stage-extensions-config.js.map +1 -0
  449. package/dist/core/schema/types.d.ts +262 -0
  450. package/dist/core/schema/types.d.ts.map +1 -0
  451. package/dist/core/schema/types.js +51 -0
  452. package/dist/core/schema/types.js.map +1 -0
  453. package/dist/core/schema/writing-plans-config.d.ts +11 -0
  454. package/dist/core/schema/writing-plans-config.d.ts.map +1 -0
  455. package/dist/core/schema/writing-plans-config.js +40 -0
  456. package/dist/core/schema/writing-plans-config.js.map +1 -0
  457. package/dist/core/schemas/archive-summary.d.ts +131 -0
  458. package/dist/core/schemas/archive-summary.d.ts.map +1 -0
  459. package/dist/core/schemas/archive-summary.js +31 -0
  460. package/dist/core/schemas/archive-summary.js.map +1 -0
  461. package/dist/core/schemas/process-evidence.d.ts +156 -0
  462. package/dist/core/schemas/process-evidence.d.ts.map +1 -0
  463. package/dist/core/schemas/process-evidence.js +12 -0
  464. package/dist/core/schemas/process-evidence.js.map +1 -0
  465. package/dist/core/schemas/scope-entries.d.ts +68 -0
  466. package/dist/core/schemas/scope-entries.d.ts.map +1 -0
  467. package/dist/core/schemas/scope-entries.js +47 -0
  468. package/dist/core/schemas/scope-entries.js.map +1 -0
  469. package/dist/core/schemas/severity.d.ts +58 -0
  470. package/dist/core/schemas/severity.d.ts.map +1 -0
  471. package/dist/core/schemas/severity.js +26 -0
  472. package/dist/core/schemas/severity.js.map +1 -0
  473. package/dist/core/scope/aggregator.d.ts +49 -0
  474. package/dist/core/scope/aggregator.d.ts.map +1 -0
  475. package/dist/core/scope/aggregator.js +141 -0
  476. package/dist/core/scope/aggregator.js.map +1 -0
  477. package/dist/core/scope/index.d.ts +2 -0
  478. package/dist/core/scope/index.d.ts.map +1 -0
  479. package/dist/core/scope/index.js +2 -0
  480. package/dist/core/scope/index.js.map +1 -0
  481. package/dist/core/specs-sync/apply.d.ts +8 -0
  482. package/dist/core/specs-sync/apply.d.ts.map +1 -0
  483. package/dist/core/specs-sync/apply.js +26 -0
  484. package/dist/core/specs-sync/apply.js.map +1 -0
  485. package/dist/core/specs-sync/deltas.d.ts +15 -0
  486. package/dist/core/specs-sync/deltas.d.ts.map +1 -0
  487. package/dist/core/specs-sync/deltas.js +27 -0
  488. package/dist/core/specs-sync/deltas.js.map +1 -0
  489. package/dist/core/specs-sync/index.d.ts +3 -0
  490. package/dist/core/specs-sync/index.d.ts.map +1 -0
  491. package/dist/core/specs-sync/index.js +4 -0
  492. package/dist/core/specs-sync/index.js.map +1 -0
  493. package/dist/core/stage-extensions/convergence-judge.d.ts +35 -0
  494. package/dist/core/stage-extensions/convergence-judge.d.ts.map +1 -0
  495. package/dist/core/stage-extensions/convergence-judge.js +47 -0
  496. package/dist/core/stage-extensions/convergence-judge.js.map +1 -0
  497. package/dist/core/stage-extensions/index.d.ts +13 -0
  498. package/dist/core/stage-extensions/index.d.ts.map +1 -0
  499. package/dist/core/stage-extensions/index.js +11 -0
  500. package/dist/core/stage-extensions/index.js.map +1 -0
  501. package/dist/core/stage-extensions/output-watcher.d.ts +93 -0
  502. package/dist/core/stage-extensions/output-watcher.d.ts.map +1 -0
  503. package/dist/core/stage-extensions/output-watcher.js +163 -0
  504. package/dist/core/stage-extensions/output-watcher.js.map +1 -0
  505. package/dist/core/stage-extensions/severity-mapper.d.ts +21 -0
  506. package/dist/core/stage-extensions/severity-mapper.d.ts.map +1 -0
  507. package/dist/core/stage-extensions/severity-mapper.js +26 -0
  508. package/dist/core/stage-extensions/severity-mapper.js.map +1 -0
  509. package/dist/core/stage-extensions/state-machine.d.ts +43 -0
  510. package/dist/core/stage-extensions/state-machine.d.ts.map +1 -0
  511. package/dist/core/stage-extensions/state-machine.js +19 -0
  512. package/dist/core/stage-extensions/state-machine.js.map +1 -0
  513. package/dist/core/stage-extensions/thread-map.d.ts +60 -0
  514. package/dist/core/stage-extensions/thread-map.d.ts.map +1 -0
  515. package/dist/core/stage-extensions/thread-map.js +107 -0
  516. package/dist/core/stage-extensions/thread-map.js.map +1 -0
  517. package/dist/core/stage-extensions/trend-analyzer.d.ts +29 -0
  518. package/dist/core/stage-extensions/trend-analyzer.d.ts.map +1 -0
  519. package/dist/core/stage-extensions/trend-analyzer.js +60 -0
  520. package/dist/core/stage-extensions/trend-analyzer.js.map +1 -0
  521. package/dist/core/stage-extensions/types.d.ts +39 -0
  522. package/dist/core/stage-extensions/types.d.ts.map +1 -0
  523. package/dist/core/stage-extensions/types.js +5 -0
  524. package/dist/core/stage-extensions/types.js.map +1 -0
  525. package/dist/core/staging-lock.d.ts +36 -0
  526. package/dist/core/staging-lock.d.ts.map +1 -0
  527. package/dist/core/staging-lock.js +122 -0
  528. package/dist/core/staging-lock.js.map +1 -0
  529. package/dist/core/templates/commands/ack-confirm.md +32 -0
  530. package/dist/core/templates/commands/apply.md +220 -0
  531. package/dist/core/templates/commands/archive.md +178 -0
  532. package/dist/core/templates/commands/brainstorm.md +58 -0
  533. package/dist/core/templates/commands/codex-adversarial.md +95 -0
  534. package/dist/core/templates/commands/explore.md +29 -0
  535. package/dist/core/templates/commands/index.d.ts +12 -0
  536. package/dist/core/templates/commands/index.d.ts.map +1 -0
  537. package/dist/core/templates/commands/index.js +26 -0
  538. package/dist/core/templates/commands/index.js.map +1 -0
  539. package/dist/core/templates/commands/propose.md +90 -0
  540. package/dist/core/templates/commands/review.md +105 -0
  541. package/dist/core/templates/commands/upgrade.md +58 -0
  542. package/dist/core/templates/commands/verify.md +186 -0
  543. package/dist/core/templates/index.d.ts +3 -0
  544. package/dist/core/templates/index.d.ts.map +1 -0
  545. package/dist/core/templates/index.js +5 -0
  546. package/dist/core/templates/index.js.map +1 -0
  547. package/dist/core/templates/skills/_shared/scope-category-guidance.md +40 -0
  548. package/dist/core/templates/skills/brainstorming.md +161 -0
  549. package/dist/core/templates/skills/dispatching-parallel-agents.md +209 -0
  550. package/dist/core/templates/skills/exploring.md +476 -0
  551. package/dist/core/templates/skills/finishing-a-development-branch.md +251 -0
  552. package/dist/core/templates/skills/index.d.ts +17 -0
  553. package/dist/core/templates/skills/index.d.ts.map +1 -0
  554. package/dist/core/templates/skills/index.js +53 -0
  555. package/dist/core/templates/skills/index.js.map +1 -0
  556. package/dist/core/templates/skills/process-evidence.md +146 -0
  557. package/dist/core/templates/skills/receiving-code-review.md +294 -0
  558. package/dist/core/templates/skills/requesting-code-review.md +108 -0
  559. package/dist/core/templates/skills/subagent-driven-development.md +405 -0
  560. package/dist/core/templates/skills/subagent-driven-discipline/references/codex-tools.md +72 -0
  561. package/dist/core/templates/skills/subagent-driven-discipline/references/opencode-tools.md +104 -0
  562. package/dist/core/templates/skills/subagent-driven-discipline.md +725 -0
  563. package/dist/core/templates/skills/systematic-debugging.md +297 -0
  564. package/dist/core/templates/skills/test-driven-development.md +402 -0
  565. package/dist/core/templates/skills/using-forge.md +163 -0
  566. package/dist/core/templates/skills/using-git-worktrees.md +229 -0
  567. package/dist/core/templates/skills/verification-before-completion.md +175 -0
  568. package/dist/core/templates/skills/verifying-three-dimensions.md +245 -0
  569. package/dist/core/templates/skills/writing-plans.md +259 -0
  570. package/dist/core/templates/skills/writing-skills.md +214 -0
  571. package/dist/core/test-reporters/index.d.ts +41 -0
  572. package/dist/core/test-reporters/index.d.ts.map +1 -0
  573. package/dist/core/test-reporters/index.js +39 -0
  574. package/dist/core/test-reporters/index.js.map +1 -0
  575. package/dist/core/test-reporters/junit.d.ts +8 -0
  576. package/dist/core/test-reporters/junit.d.ts.map +1 -0
  577. package/dist/core/test-reporters/junit.js +94 -0
  578. package/dist/core/test-reporters/junit.js.map +1 -0
  579. package/dist/core/test-reporters/tap.d.ts +18 -0
  580. package/dist/core/test-reporters/tap.d.ts.map +1 -0
  581. package/dist/core/test-reporters/tap.js +73 -0
  582. package/dist/core/test-reporters/tap.js.map +1 -0
  583. package/dist/core/test-reporters/vitest-json.d.ts +8 -0
  584. package/dist/core/test-reporters/vitest-json.d.ts.map +1 -0
  585. package/dist/core/test-reporters/vitest-json.js +56 -0
  586. package/dist/core/test-reporters/vitest-json.js.map +1 -0
  587. package/dist/core/upgrade/resign-markers.d.ts +14 -0
  588. package/dist/core/upgrade/resign-markers.d.ts.map +1 -0
  589. package/dist/core/upgrade/resign-markers.js +245 -0
  590. package/dist/core/upgrade/resign-markers.js.map +1 -0
  591. package/dist/core/validate/archive-summary-schema.d.ts +8 -0
  592. package/dist/core/validate/archive-summary-schema.d.ts.map +1 -0
  593. package/dist/core/validate/archive-summary-schema.js +186 -0
  594. package/dist/core/validate/archive-summary-schema.js.map +1 -0
  595. package/dist/core/validate/auto-findings.d.ts +36 -0
  596. package/dist/core/validate/auto-findings.d.ts.map +1 -0
  597. package/dist/core/validate/auto-findings.js +38 -0
  598. package/dist/core/validate/auto-findings.js.map +1 -0
  599. package/dist/core/validate/candidate-validators.d.ts +22 -0
  600. package/dist/core/validate/candidate-validators.d.ts.map +1 -0
  601. package/dist/core/validate/candidate-validators.js +46 -0
  602. package/dist/core/validate/candidate-validators.js.map +1 -0
  603. package/dist/core/validate/change.d.ts +3 -0
  604. package/dist/core/validate/change.d.ts.map +1 -0
  605. package/dist/core/validate/change.js +205 -0
  606. package/dist/core/validate/change.js.map +1 -0
  607. package/dist/core/validate/coverage-gap.d.ts +37 -0
  608. package/dist/core/validate/coverage-gap.d.ts.map +1 -0
  609. package/dist/core/validate/coverage-gap.js +181 -0
  610. package/dist/core/validate/coverage-gap.js.map +1 -0
  611. package/dist/core/validate/finding-hash.d.ts +14 -0
  612. package/dist/core/validate/finding-hash.d.ts.map +1 -0
  613. package/dist/core/validate/finding-hash.js +29 -0
  614. package/dist/core/validate/finding-hash.js.map +1 -0
  615. package/dist/core/validate/index.d.ts +15 -0
  616. package/dist/core/validate/index.d.ts.map +1 -0
  617. package/dist/core/validate/index.js +19 -0
  618. package/dist/core/validate/index.js.map +1 -0
  619. package/dist/core/validate/marker-integrity.d.ts +28 -0
  620. package/dist/core/validate/marker-integrity.d.ts.map +1 -0
  621. package/dist/core/validate/marker-integrity.js +170 -0
  622. package/dist/core/validate/marker-integrity.js.map +1 -0
  623. package/dist/core/validate/marker-schema.d.ts +10 -0
  624. package/dist/core/validate/marker-schema.d.ts.map +1 -0
  625. package/dist/core/validate/marker-schema.js +661 -0
  626. package/dist/core/validate/marker-schema.js.map +1 -0
  627. package/dist/core/validate/orphan-tmp.d.ts +13 -0
  628. package/dist/core/validate/orphan-tmp.d.ts.map +1 -0
  629. package/dist/core/validate/orphan-tmp.js +49 -0
  630. package/dist/core/validate/orphan-tmp.js.map +1 -0
  631. package/dist/core/validate/proposal.d.ts +4 -0
  632. package/dist/core/validate/proposal.d.ts.map +1 -0
  633. package/dist/core/validate/proposal.js +40 -0
  634. package/dist/core/validate/proposal.js.map +1 -0
  635. package/dist/core/validate/scope-entries.d.ts +23 -0
  636. package/dist/core/validate/scope-entries.d.ts.map +1 -0
  637. package/dist/core/validate/scope-entries.js +108 -0
  638. package/dist/core/validate/scope-entries.js.map +1 -0
  639. package/dist/core/validate/specs.d.ts +4 -0
  640. package/dist/core/validate/specs.d.ts.map +1 -0
  641. package/dist/core/validate/specs.js +74 -0
  642. package/dist/core/validate/specs.js.map +1 -0
  643. package/dist/core/validate/tasks.d.ts +4 -0
  644. package/dist/core/validate/tasks.d.ts.map +1 -0
  645. package/dist/core/validate/tasks.js +48 -0
  646. package/dist/core/validate/tasks.js.map +1 -0
  647. package/dist/core/validate/test-failure-stub.d.ts +23 -0
  648. package/dist/core/validate/test-failure-stub.d.ts.map +1 -0
  649. package/dist/core/validate/test-failure-stub.js +21 -0
  650. package/dist/core/validate/test-failure-stub.js.map +1 -0
  651. package/dist/core/validate/types.d.ts +33 -0
  652. package/dist/core/validate/types.d.ts.map +1 -0
  653. package/dist/core/validate/types.js +20 -0
  654. package/dist/core/validate/types.js.map +1 -0
  655. package/dist/core/worktree.d.ts +52 -0
  656. package/dist/core/worktree.d.ts.map +1 -0
  657. package/dist/core/worktree.js +145 -0
  658. package/dist/core/worktree.js.map +1 -0
  659. package/dist/index.d.ts +12 -0
  660. package/dist/index.d.ts.map +1 -0
  661. package/dist/index.js +14 -0
  662. package/dist/index.js.map +1 -0
  663. package/package.json +82 -0
@@ -0,0 +1,476 @@
1
+ ---
2
+ name: forge:exploring
3
+ description: Use when 用户在任何阶段需要非线性思考空间(brainstorm 前 / apply 中 / 选项对比 / vague idea)— 不强制 reach conclusion 但必须显式收尾 + capture offer 含具体 forge 路径;不允许 explore 阶段直接写 artifacts(沿 design §2.5)
4
+ ---
5
+
6
+ # forge exploring
7
+
8
+ ## Overview
9
+
10
+ forge:exploring 是 forge 协议的**非线性思考空间** — 任何阶段主动触发,非产物驱动,鼓励 ASCII diagram / 选项对比 / 反思 assumption。
11
+
12
+ 与 OpenSpec 上游 `/opsx:explore` 关键差异:OpenSpec 允许"不 reach a conclusion / continue exploring later"(`explore.ts:136-143`),在 AI 手里会被滥用作偷懒理由(无限发散 / 不收尾 / 最后没 capture)。**forge 反向加固**(沿 design §2.5.6 三条):
13
+
14
+ 1. **必须显式收尾**(Exploration Summary 段)
15
+ 2. **Capture offer 必须可执行**(具体 `file:section`)
16
+ 3. **不能在 explore 阶段直接写 artifacts**(必须 capture offer + 用户确认两步)
17
+
18
+ ## Methodology(reference 上游协议)
19
+
20
+ **REQUIRED BACKGROUND**:必须先懂 forge:test-driven-development(skill 的 forge-eval RED-GREEN 验证基础)。
21
+
22
+ 核心论点(沿上游协议 + forge 加固):
23
+
24
+ - **OpenSpec 上游 `/opsx:explore` 不变量**:"thinking, not implementing"(`explore.ts:15`)+ "The user decides — Offer and move on"(`explore.ts:132`)+ "Don't auto-capture"(`explore.ts:132`)
25
+ - **forge-eval RED-GREEN 验证不变量**(沿 forge:writing-skills):"If you didn't watch an agent fail without the skill, you don't know if the skill teaches the right thing" — 本 skill 通过 `forge-eval/scenarios/exploring.yaml` 3 scenarios(vague-idea / mid-implementation-stuck / option-compare)验证 baseline AI 没 skill 时必然失分
26
+ - **forge-specific 反向加固**:OpenSpec "What You Don't Have To Do"(`explore.ts:136-143`)在 AI 手里被滥用 → forge 加三条反向加固(详 §"forge-specific 反向加固")
27
+
28
+ ## When to Use
29
+
30
+ - 任何阶段用户主动触发 `/forge:explore` 或表达需要"想想"(vague idea / specific problem / option compare 等)
31
+ - mid-implementation 实施途中需要回头思考,但**非阻塞 issue**(若是阻塞 issue 走 §"与 Fluid Pause 边界"判定 → Fluid Pause)
32
+ - 用户在 `/forge:brainstorm` 起 draft 之前不确定 idea 方向 — explore 开放思考后再决定起 brainstorm
33
+ - 用户在 `/forge:propose` 后想再回头探索某个 design 决策 — `explore --change <id>` 读 4 件套作上下文
34
+
35
+ ## When NOT to Use
36
+
37
+ - 用户明确给具体 task 实施请求 → 走 `/forge:apply` / 主代理直接实施,不进 explore
38
+ - 阻塞型 mid-implementation issue → 走 §2.1 Fluid Pause,**不**走 explore(见 §"与 Fluid Pause 边界")
39
+ - 写 forge 自身的协议文档 → 用 forge:writing-skills + forge:writing-plans
40
+ - 修 typo / 加一行示例的小改动(non-behavior change) → 直接做,跳协议
41
+
42
+ ## 协议步骤(沿 design §2.5.4)
43
+
44
+ 1. **读上下文**(若 `--change <id>`):`forge/changes/<id>/{proposal,design,tasks,specs/*}.md`。
45
+ - 主代理在 `/forge:apply` subagent 实施中、检测到唯一未归档 change 时,允许省略 `--change`(沿 v0.4 推断模式)。
46
+ 2. **进入 exploration mode**:本 skill 引导。
47
+ 3. **探索阶段**:
48
+ - 鼓励 ASCII diagram(system diagrams / state machines / data flows / comparison tables)
49
+ - 鼓励选项对比(`Options: 1/2/3` + tradeoff 行)
50
+ - 鼓励反思 assumption(包括用户的和你自己的)
51
+ - 不限定输出格式,不强制 reach a conclusion
52
+ - 用户随时叫停 / 转向
53
+ 4. **Capture offer 阶段**:见下方 capture decisions 表 + §2.6.6 区分指引表。
54
+ 5. **Capture 是 offer 不是命令**:AI 给 offer 后用户可拒绝 / 修改 / 推迟。
55
+
56
+ ## Stance(沿 OpenSpec 上游 + forge 化)
57
+
58
+ - **Curious, not prescriptive** — 提自然涌现的问题,不照剧本走
59
+ - **Open threads, not interrogations** — 抛多个有趣方向让用户选,不漏斗
60
+ - **Visual** — 自由使用 ASCII diagram 帮助思考
61
+ - **Adaptive** — 跟着有趣线索走,新信息出现时转向
62
+ - **Patient** — 不急于下结论,让问题形状自然浮现
63
+ - **Grounded** — 探索真实 codebase,不光理论化
64
+
65
+ ## What You Might Do
66
+
67
+ 根据用户带来的不同输入:
68
+
69
+ **探索问题空间**
70
+
71
+ - 提自然涌现的澄清问题
72
+ - 挑战 assumption
73
+ - 重新框定问题
74
+ - 找类比
75
+
76
+ **调查 codebase**
77
+
78
+ - 画相关现有架构
79
+ - 找集成点
80
+ - 识别已用模式
81
+ - 暴露隐藏复杂度
82
+
83
+ **对比选项**
84
+
85
+ - brainstorm 多种方案
86
+ - 建对比表
87
+ - 勾画 tradeoff
88
+ - 给对比表 + tradeoff sketch + capture offer;**默认不替用户选**,沿 OpenSpec `explore.ts:132` "用户自己决定";**仅在用户明确委托决策时**(具体触发词:"你帮我定" / "你帮我决定" / "我让你选" / "你做主"等清晰委托)才给推荐 — "告诉我哪个更合理" / "你怎么看" / "你倾向哪个"等**不算**明确委托,仍走 capture offer 模式
89
+
90
+ **可视化**
91
+
92
+ ```
93
+ ┌─────────────────────────────────────────┐
94
+ │ 自由使用 ASCII diagram │
95
+ ├─────────────────────────────────────────┤
96
+ │ │
97
+ │ ┌────────┐ ┌────────┐ │
98
+ │ │ State │────────▶│ State │ │
99
+ │ │ A │ │ B │ │
100
+ │ └────────┘ └────────┘ │
101
+ │ │
102
+ │ system diagrams, state machines, │
103
+ │ data flows, architecture sketches, │
104
+ │ dependency graphs, comparison tables │
105
+ │ │
106
+ └─────────────────────────────────────────┘
107
+ ```
108
+
109
+ **暴露 risks 和 unknowns**
110
+
111
+ - 识别可能出错的地方
112
+ - 找理解 gap
113
+ - 建议 spike 或 investigation
114
+
115
+ ## forge-specific 反向加固(沿 design §2.5.6 三条)
116
+
117
+ forge skill 与 OpenSpec 上游的关键差异:OpenSpec "What You Don't Have To Do"(`explore.ts:136-143`)在 AI 手里被滥用作偷懒理由(无限发散 / 不收尾 / 不 capture)。**forge 加三条强制约束**:
118
+
119
+ ### 1. 必须有显式收尾(Exploration Summary)
120
+
121
+ OpenSpec 允许"不 reach conclusion / continue exploring later",forge **不允许"探索完成无结论"**。
122
+
123
+ skill 末尾**强制 AI 输出**:
124
+
125
+ ```markdown
126
+ ## Exploration Summary
127
+
128
+ **Tentative decisions**(本次探索得出的临时结论,**不是定论**):
129
+
130
+ - <decision 1>
131
+ - <decision 2>
132
+
133
+ **Open questions**(仍未澄清的):
134
+
135
+ - <question 1>
136
+
137
+ **Capture offer**(给用户决定):
138
+
139
+ - 若选 <option A>,可 capture 到 `forge/changes/<id>/design.md ## <section>`
140
+ - 若选 <option B>,可 capture 到 ...
141
+ ```
142
+
143
+ 允许 zero tentative decisions(纯 question 状态),**但不允许 zero offer** — 必须给至少一个 capture offer,即使是"是否 capture 这次讨论的摘要"。
144
+
145
+ ### 2. Capture offer 必须可执行
146
+
147
+ 不允许 vague:
148
+
149
+ - ❌ "也许更新一下 design"
150
+ - ❌ "把这个想法记一下"
151
+ - ❌ "可以考虑改一下 proposal"
152
+
153
+ 必须给具体 `file:section`:
154
+
155
+ - ✅ "capture 到 `forge/changes/oauth/design.md ## Token Refresh Strategy` 段"
156
+ - ✅ "capture 到 `forge/drafts/audit-logging.md`(新建 draft)"
157
+ - ✅ "capture 到 `forge/changes/oauth/proposal.md ## Out of Scope` YAML 块(沿 §2.6 schema)"
158
+
159
+ ### 3. AI 不能在 explore 阶段直接写 artifacts
160
+
161
+ 写入必须经过两步:
162
+
163
+ 1. AI 给 capture offer(具体 `file:section`)
164
+ 2. 用户**明确**确认("好,capture 吧" / "可以,改" 等明确指令)
165
+
166
+ **禁止 AI 在 explore turn 内调用 Write / Edit 工具修改 `forge/changes/*` artifacts**(沿 OpenSpec `explore.ts:132` "Don't auto-capture")。
167
+
168
+ - 读 artifacts(Read 工具)→ **允许**
169
+ - 写 artifacts(Write / Edit / Bash 修改文件)→ **禁止**
170
+
171
+ 即使用户随口说"那就改 design 吧",也必须先反确认:"我把 `design.md ## Token Refresh` 段加上 Y,可以吗?",得到明确"yes"再改。
172
+
173
+ ## 与 §2.1 Fluid Pause 边界(沿 design §2.5.5)
174
+
175
+ mid-implementation 触发时,**根据触发原因区分**:
176
+
177
+ | 触发原因 | 走 | 理由 |
178
+ | ------------------------------------ | ---------------------------------------------------------------------------------- | ------------------------------------ |
179
+ | 实施途中发现 issue **阻塞**当前 task | `/forge:apply` 的 Fluid Pause(§2.1) | 被动触发,语义匹配 pause-with-Options |
180
+ | 实施途中**开放思考**(非阻塞) | `/forge:explore --change <id>` | 主动触发,语义匹配 explore |
181
+ | 实施途中发现 scope 问题 | 先 explore 判定 → 若决定扩 scope 走 explore capture;若决定不做走 §2.6 out-of-scope | 决定由 explore 引导 |
182
+
183
+ **explore 不能绕过 archive 不变量**:archived change 是冻结的,explore 触发对 archived change artifacts 的修改 → 拒绝(沿 v0.4 archive 不变量)。
184
+
185
+ 如果用户在 explore 中决定修改 archived change,**必须先反向加固提示**:"`<change-id>` 已 archived,artifacts 冻结;需起新 change supersede。capture offer 改为新 change `proposal.md` 起草"。
186
+
187
+ ## Handling Different Entry Points(沿 OpenSpec + forge 化)
188
+
189
+ ### Entry 1 — User brings a vague idea(无 `--change`)
190
+
191
+ ```
192
+ User: 我在想加个"用户活动审计日志"功能,但不确定怎么入手 — 数据库还是文件?保留多久?
193
+
194
+ You: 审计日志是个有空间的话题。先看 dimension:
195
+
196
+ AUDIT LOG SPECTRUM
197
+ ════════════════════════════════════════════
198
+
199
+ Granularity Retention Query Pattern
200
+ │ │ │
201
+ ▼ ▼ ▼
202
+ ┌────────┐ ┌────────┐ ┌────────┐
203
+ │ event │ │ 30 天 │ │ 即时 │
204
+ │ /req/ │ │ vs │ │ 查询 │
205
+ │ field │ │ 1 年 │ │ vs │
206
+ └────────┘ │ vs 永久│ │ 离线 │
207
+ └────────┘ └────────┘
208
+
209
+ 关键 assumption:你这个项目是否有 compliance 要求(如 GDPR / SOX)?
210
+ 合规要求会决定保留时长是 30 天还是 7 年,差异巨大。
211
+
212
+ 你的项目背景?
213
+
214
+ ## Exploration Summary
215
+
216
+ **Tentative decisions**:
217
+ - (暂无,等用户回应 compliance 问题后再定)
218
+
219
+ **Open questions**:
220
+ - 合规要求?
221
+ - 数据敏感度?
222
+ - 用户量(决定存储压力)
223
+
224
+ **Capture offer**:
225
+ - 若决定起 audit-logging change:capture 到 `forge/drafts/audit-logging.md`(新建 draft)
226
+ - 若决定推迟 / 不做:capture 到当前任何 active change 的 `proposal.md ## Out of Scope` YAML 块(沿 §2.6 schema)
227
+ ```
228
+
229
+ ### Entry 2 — User brings a specific problem(无 `--change`)
230
+
231
+ ```
232
+ User: 我们的 auth 系统乱七八糟,想重新设计。
233
+
234
+ You: [读 codebase] 看到三个集成点纠缠:
235
+
236
+ ┌─────────────────────────────────────────────┐
237
+ │ CURRENT AUTH FLOW │
238
+ └─────────────────────────────────────────────┘
239
+
240
+ ┌─────────────┼─────────────┐
241
+ ▼ ▼ ▼
242
+ ┌─────────┐ ┌─────────┐ ┌─────────┐
243
+ │ Google │ │ GitHub │ │ Email │
244
+ │ OAuth │ │ OAuth │ │ Magic │
245
+ └────┬────┘ └────┬────┘ └────┬────┘
246
+ │ │ │
247
+ └─────────────┼─────────────┘
248
+
249
+ ┌───────────┐
250
+ │ Session │
251
+ └─────┬─────┘
252
+
253
+
254
+ ┌───────────┐
255
+ │ Perms │
256
+ └───────────┘
257
+
258
+ 三个 tangle:
259
+ 1. Session 状态散在 OAuth 三家(各家有自己 session lifetime)
260
+ 2. Permission check 散在 routes(没统一 middleware)
261
+ 3. Magic email 与 OAuth 走不同 path(有重复)
262
+
263
+ 最痛的是哪个?
264
+
265
+ ## Exploration Summary
266
+
267
+ **Tentative decisions**(等用户回应后修订):
268
+ - 三 tangle 中最痛的可能是 (1) session 不统一
269
+
270
+ **Open questions**:
271
+ - 哪个 tangle 实际造成 bug 最多?
272
+ - 是否有外部约束(GDPR session 限制 / 合规审计)?
273
+
274
+ **Capture offer**:
275
+ - 若决定起 auth-refactor change:capture 到 `forge/drafts/auth-refactor.md`(新 draft 含三 tangle 分析)
276
+ - 若仅想记录现状不立 change:capture 到当前 change 的 `design.md ## Background`
277
+ ```
278
+
279
+ ### Entry 3 — User is stuck mid-implementation(`--change <id>`)
280
+
281
+ ```
282
+ User: /forge:explore --change add-oauth-integration
283
+ OAuth refresh token 在过期边界处理比想象复杂,我需要重新想想。
284
+
285
+ You: [读 forge/changes/add-oauth-integration/{proposal,design,tasks,specs/oauth/spec.md}]
286
+
287
+ 你在 tasks.md 的 task 4("Implement OAuth flow")卡住,design.md 没提
288
+ refresh token grace period。让我画一下:
289
+
290
+ ┌─────────────────────────────────────────────┐
291
+ │ REFRESH TOKEN GRACE │
292
+ └─────────────────────────────────────────────┘
293
+
294
+ 现状(design.md 写的简化模型):
295
+ access_token expires → request fails → refresh → retry
296
+
297
+ 实际(你发现的复杂度):
298
+ ┌─────────┐
299
+ │ Client │ 时钟漂移 ±5min
300
+ │ Clock │ ─────────────┐
301
+ └─────────┘ │
302
+ │ ▼
303
+ ▼ ┌────────────┐
304
+ ┌─────────┐ │ Server 时钟│
305
+ │access_ │ ◀──────── │ 3rd-party │
306
+ │token │ 时差 │ IdP 时钟 │
307
+ │exp time │ └────────────┘
308
+ └─────────┘
309
+
310
+ 三时钟域(client / server / IdP),refresh window 该按哪个为准?
311
+
312
+ Options:
313
+ 1. Server 时钟唯一权威(忽略 IdP exp),需要主动 sync
314
+ 2. IdP `exp` 字段权威,加 grace period(如 30s)
315
+ 3. 双 token(access + refresh),refresh 自带长 lifetime
316
+
317
+ 这是**开放思考**(非阻塞 issue) → 走 explore 不走 §2.1 Fluid Pause:
318
+ 你还没尝试实施失败,是发现 design 不完整需要回头想。
319
+
320
+ ## Exploration Summary
321
+
322
+ **Tentative decisions**:
323
+ - design.md 当前 token model 过于简化,需要补 refresh 子模型
324
+ - 三 option 都可选;option 2(IdP `exp` + grace period)是行业默认
325
+
326
+ **Open questions**:
327
+ - IdP 是否承诺时钟精度?
328
+ - grace period 应硬编码还是配置化?
329
+
330
+ **Capture offer**:
331
+ - 若选 option 2:capture 到 `forge/changes/add-oauth-integration/design.md ## Token Refresh Strategy`(新增段);**注意**:design.md 改后 marker `content_hash` 失效,需要重 verify
332
+ - 若决定扩 scope(加 IdP 时钟同步):capture 到 `proposal.md ## What Changes`(扩本 change)
333
+ - 若决定不做(留 v1.1):capture 到 `proposal.md ## Out of Scope` YAML 块(沿 §2.6 schema)
334
+ ```
335
+
336
+ ### Entry 4 — User wants to compare options
337
+
338
+ ```
339
+ User: 我在评估架构决策:
340
+ - A:主库 audit_log 表(强一致,放大写)
341
+ - B:独立 ClickHouse(高吞吐,跨库 transaction 难)
342
+ 告诉我哪个更合理。
343
+
344
+ You: forge:exploring 下的对比请求 — 沿 OpenSpec `explore.ts:132` "用户自己决定"原则,
345
+ 我不直接选,但给完整 tradeoff 帮你决定。
346
+
347
+ ┌─────────────────────────────────────────────────┐
348
+ │ AUDIT LOG: 主库 vs 独立 ClickHouse │
349
+ └─────────────────────────────────────────────────┘
350
+
351
+ A (主库) B (ClickHouse)
352
+ 写性能 (TPS) 50K 500K
353
+ 一致性 ACID eventual
354
+ 运维复杂度 +0 +1 (独立服务)
355
+ 查询延迟 (P99) 5ms 50ms
356
+ 合规审计完整性 强 需要事务日志验证
357
+ 演化成本 低 (改 schema) 高 (跨库 schema 协调)
358
+ 冷数据归档 需要分区策略 ClickHouse 内置 TTL
359
+
360
+ **关键 dimension**:audit log 写量是否会超过主库 5% 容量?
361
+ - 若否(< 5%):A 更合理(运维简单 / 一致性强)
362
+ - 若是(> 5%):B 不可避免(主库写放大风险)
363
+
364
+ ## Exploration Summary
365
+
366
+ **Tentative decisions**(用户决定):
367
+ - 选择依赖 audit 写量占比(< 5% 选 A,否则 B)
368
+
369
+ **Open questions**:
370
+ - 你预估的 audit 写量?
371
+
372
+ **Capture offer**:
373
+ - 若选 A:capture 到 `forge/changes/<id>/design.md ## Architecture Decision`(段加 "A: 主库 audit_log,理由:写量 < 5% 主库容量")
374
+ - 若选 B:capture 到 `design.md ## Architecture Decision`(段加 "B: 独立 ClickHouse,理由:写量 > 5% 主库容量")
375
+ - 若推迟决定:capture 到 `proposal.md ## Open Questions`(沿 design §2.6 schema)
376
+ ```
377
+
378
+ ### Entry 5(forge 专属)— User triggers out-of-scope insight
379
+
380
+ ```
381
+ User: /forge:explore --change add-oauth-integration
382
+ 我们应不应该顺便加 SAML 支持?
383
+
384
+ You: [读 add-oauth-integration 现状] proposal.md `## What Changes` 只列了 OAuth
385
+ (Google + GitHub),没提 SAML。
386
+
387
+ SAML vs OAuth 是企业级 vs 消费者级路线分支:
388
+
389
+ SAML 主要用于:
390
+ - 企业 SSO
391
+ - 集中 IdP(Okta / Azure AD)
392
+ - SP-initiated / IdP-initiated flow
393
+
394
+ OAuth 主要用于:
395
+ - 个人账户登录
396
+ - 第三方授权(API access)
397
+
398
+ **加 SAML 进本 change 会**:
399
+ 1. 扩三倍实施范围(SAML 协议 + IdP 集成 + cert handling)
400
+ 2. design.md 当前 token model 不适用(SAML 是 XML assertion 不是 JWT)
401
+ 3. 推迟本 change 完成 ~4-6 周
402
+
403
+ **判定**:这**不是本 change 的 in-scope work**(沿 design §2.6.6 区分指引)。
404
+ SAML 应:
405
+ - 若未来确认要做 → §2.6 `## Future Work`(design.md)
406
+ - 若决定永不做(消费者产品)→ §2.6 `## Non-Goals`(proposal.md)
407
+ - 若中性观望 → §2.6 `## Out of Scope`(proposal.md)
408
+
409
+ ## Exploration Summary
410
+
411
+ **Tentative decisions**:
412
+ - SAML 不在本 change scope,应转 §2.6 follow-up entry
413
+
414
+ **Open questions**:
415
+ - 你这个项目是消费者还是企业产品?(决定 SAML 转 Future Work 还是 Non-Goals)
416
+
417
+ **Capture offer**:
418
+ - 若选"未来可能做":capture 到 `forge/changes/add-oauth-integration/design.md ## Future Work` YAML 块,`category: future-work`(沿 §2.6.3 schema)
419
+ - 若选"原则反对做":capture 到 `proposal.md ## Non-Goals` YAML 块,`category: non-goal`
420
+ - 若中性:capture 到 `proposal.md ## Out of Scope` YAML 块,`category: out-of-scope`
421
+ ```
422
+
423
+ ## §2.6.6 区分指引表(out-of-scope vs SUGGESTION)
424
+
425
+ AI 倾向把所有"不做"的项都塞 SUGGESTION 持挂,而不写到 out-of-scope。本 skill 引导区分:
426
+
427
+ | 状态 | 写到 | 语义 | AI 判定指引 |
428
+ | ------------------------------ | --------------------------------------------------- | --------------------------- | -------------------------------------------------- |
429
+ | **应在本 change 做但低优先级** | `verify_findings` / `review_outcomes` 中 SUGGESTION | 本 change 内的 nice-to-have | "可定位 + 可修复 + 不做也不影响本 change 核心目标" |
430
+ | **本 change 不做,未来可能做** | `design.md` `## Future Work` YAML 块 | 跨 change 长期 backlog | "实施会扩 scope,但目标方向一致" |
431
+ | **本 change 不做,原则反对做** | `proposal.md` `## Non-Goals` YAML 块 | 反目标 | "实施会偏离项目方向 / 违反核心约束" |
432
+ | **本 change 不做,无强烈意见** | `proposal.md` `## Out of Scope` YAML 块 | 中性 out-of-scope | "明显不属于本 change 但未来可能做也可能不做" |
433
+
434
+ ## Capture decisions 表(沿 design §2.5.4)
435
+
436
+ | 探索结论类型 | 落地位置 | 后续动作 |
437
+ | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
438
+ | New requirement / Requirement changed | `forge/changes/<id>/specs/<capability>/spec.md` | marker 失效(`content_hash` 变),提示用户重 verify |
439
+ | Design decision made | `forge/changes/<id>/design.md` | marker 失效,提示重 verify |
440
+ | Scope changed(扩本 change) | `forge/changes/<id>/proposal.md ## What Changes` | marker 失效,提示重 propose review |
441
+ | **Out-of-scope 识别(转 follow-up)** | `forge/changes/<id>/proposal.md ## Out of Scope` / `## Non-Goals` 或 `design.md ## Future Work` YAML 块(沿 §2.6) | 不影响 marker(out-of-scope 不是 change 内容) |
442
+ | New work identified(本 change 必做) | `forge/changes/<id>/tasks.md` | marker 失效,需重 apply |
443
+ | Assumption invalidated | 相关 artifact | 看具体 |
444
+
445
+ ## 红旗清单 — STOP and Start Over
446
+
447
+ 这些念头说明你正在 rationalize,STOP:
448
+
449
+ | 想法 | 现实 |
450
+ | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
451
+ | "用户没说要 capture,我不给 capture offer 直接结束" | Capture offer **必须**给(沿 §2.5.6 第二条)— 即使是"capture 这次讨论的摘要到 `design.md ## Background`" |
452
+ | "我直接 Write/Edit 改 `design.md`,反正用户应该会同意" | 禁止 — 写 artifacts 必须经 capture offer + 用户**明确**确认两步(沿 §2.5.6 第三条) |
453
+ | "用户在 mid-impl,我建议他在 apply 阶段直接做,不走 explore 协议" | 错。mid-impl **阻塞** issue 走 Fluid Pause(§2.1);**开放思考**走 explore — 都不是"在 apply 中直接做" |
454
+ | "时间紧,跳 Exploration Summary 收尾直接答" | 时间紧时跳协议正是 baseline AI 的失败模式。即使时间压力下也给 Summary(可短,但**必须**有) |
455
+ | "用户问'选 A 还是 B'/'告诉我哪个更合理'/'你怎么看',我直接选 A 给他" | 错。沿 OpenSpec `explore.ts:132` "用户自己决定" — 默认走 capture offer 模式不替用户选;**仅在用户明确委托决策**(具体触发词:"你帮我定" / "你帮我决定" / "我让你选" / "你做主"等清晰委托语)才给推荐 |
456
+ | "用户说'随便改一下 design',我直接改" | 错。仍需 capture offer 明确"我把 X 改成 Y,可以吗?",得到明确"yes"再改 |
457
+ | "archived change 已冻结但用户说改,我改" | 错。archived 不变量优先,引导用户起新 change supersede |
458
+ | "explore 是 thinking time,我可以无限发散" | 错。forge 加了显式收尾约束 — 即使发散也要回到 Exploration Summary |
459
+ | "capture offer 写 vague '更新一下 design' 就行" | 错。必须 `file:section` 具体(沿 §2.5.6 第二条) |
460
+ | "vague idea 没有上下文,不需要 capture offer" | 错。零上下文也给 offer — 至少"capture 到 `forge/drafts/<topic>.md` 新建 draft" |
461
+ | "用户给的是技术问题(如 OAuth refresh token),我直接答技术不走 explore 协议" | 错(沿 plan-9f scenario 2 RED 抓的失败模式)。即使是技术问题,若用户表达探索意图(如"想想"/"重新想"),仍走 explore 协议 + 给 capture offer |
462
+ | "对比选项时已经画了表,够了不用 capture offer" | 错。对比表是"探索结果"中间产物;capture offer 是"用户决定哪个" + "落到哪个 forge artifact"(沿 §2.5.4 capture decisions 表) |
463
+
464
+ **全部触发表示**:回到协议步骤,从"显式收尾 + 可执行 capture offer + 不写 artifacts"三条反向加固 reinforce 整个响应。
465
+
466
+ ## Bottom Line
467
+
468
+ forge:exploring 在 OpenSpec 上游 `/opsx:explore` 基础上加三条反向加固(沿 design §2.5.6):
469
+
470
+ 1. **必须显式收尾**(Exploration Summary 段)
471
+ 2. **Capture offer 必须可执行**(具体 `file:section`)
472
+ 3. **不能在 explore 阶段直接写 artifacts**(必须 capture offer + 用户明确确认两步)
473
+
474
+ 这三条是 forge 把 OpenSpec "stance, not workflow" 转成"可观测的协议响应"的关键 — 没有这三条,explore 会退化成普通对话,无 capture 落地,违反 §2.4 archive_summary `handoff_to_backlog` 设计意图(沿 §2.6.7 第 3 桥接)。
475
+
476
+ **Thinking IS valuable, but only when it crystallizes into actionable capture offers.** Don't trade structure for"自由发散" — forge 协议要求**自由 + 收尾**两者并存。