@matteeh/osq 0.2.0 → 0.2.2

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 (630) hide show
  1. package/README.md +234 -15
  2. package/dist/cli/approve.d.ts +7 -0
  3. package/dist/cli/approve.d.ts.map +1 -1
  4. package/dist/cli/approve.js +34 -0
  5. package/dist/cli/approve.js.map +1 -1
  6. package/dist/cli/bin.js +2 -3
  7. package/dist/cli/bin.js.map +1 -1
  8. package/dist/cli/check.d.ts +15 -0
  9. package/dist/cli/check.d.ts.map +1 -0
  10. package/dist/cli/check.js +65 -0
  11. package/dist/cli/check.js.map +1 -0
  12. package/dist/cli/index.d.ts.map +1 -1
  13. package/dist/cli/index.js +10 -10
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/cli/init.d.ts.map +1 -1
  16. package/dist/cli/init.js +6 -1
  17. package/dist/cli/init.js.map +1 -1
  18. package/dist/cli/lint.d.ts +3 -0
  19. package/dist/cli/lint.d.ts.map +1 -1
  20. package/dist/cli/lint.js +33 -14
  21. package/dist/cli/lint.js.map +1 -1
  22. package/dist/cli/plan-queue.d.ts +10 -4
  23. package/dist/cli/plan-queue.d.ts.map +1 -1
  24. package/dist/cli/plan-queue.js +20 -19
  25. package/dist/cli/plan-queue.js.map +1 -1
  26. package/dist/cli/plan-sections.d.ts +15 -0
  27. package/dist/cli/plan-sections.d.ts.map +1 -0
  28. package/dist/cli/plan-sections.js +47 -0
  29. package/dist/cli/plan-sections.js.map +1 -0
  30. package/dist/cli/plan.d.ts +1 -0
  31. package/dist/cli/plan.d.ts.map +1 -1
  32. package/dist/cli/plan.js +14 -4
  33. package/dist/cli/plan.js.map +1 -1
  34. package/dist/cli/report.d.ts.map +1 -1
  35. package/dist/cli/report.js +73 -1
  36. package/dist/cli/report.js.map +1 -1
  37. package/dist/cli/run.d.ts +7 -0
  38. package/dist/cli/run.d.ts.map +1 -0
  39. package/dist/cli/run.js +22 -0
  40. package/dist/cli/run.js.map +1 -0
  41. package/dist/cli/verified.d.ts +15 -0
  42. package/dist/cli/verified.d.ts.map +1 -0
  43. package/dist/cli/verified.js +34 -0
  44. package/dist/cli/verified.js.map +1 -0
  45. package/dist/core/foundation/config-agents.d.ts +16 -0
  46. package/dist/core/foundation/config-agents.d.ts.map +1 -0
  47. package/dist/core/foundation/config-agents.js +2 -0
  48. package/dist/core/foundation/config-agents.js.map +1 -0
  49. package/dist/core/foundation/config-claude.d.ts +48 -0
  50. package/dist/core/foundation/config-claude.d.ts.map +1 -0
  51. package/dist/core/foundation/config-claude.js +106 -0
  52. package/dist/core/foundation/config-claude.js.map +1 -0
  53. package/dist/core/foundation/config-codex-resolve.d.ts +10 -0
  54. package/dist/core/foundation/config-codex-resolve.d.ts.map +1 -0
  55. package/dist/core/foundation/config-codex-resolve.js +24 -0
  56. package/dist/core/foundation/config-codex-resolve.js.map +1 -0
  57. package/dist/core/foundation/config-file.d.ts +18 -0
  58. package/dist/core/foundation/config-file.d.ts.map +1 -0
  59. package/dist/core/foundation/config-file.js +46 -0
  60. package/dist/core/foundation/config-file.js.map +1 -0
  61. package/dist/core/foundation/config-gates.d.ts +2 -0
  62. package/dist/core/foundation/config-gates.d.ts.map +1 -1
  63. package/dist/core/foundation/config-gates.js +8 -0
  64. package/dist/core/foundation/config-gates.js.map +1 -1
  65. package/dist/core/foundation/config-opencode.d.ts +25 -0
  66. package/dist/core/foundation/config-opencode.d.ts.map +1 -0
  67. package/dist/core/foundation/config-opencode.js +55 -0
  68. package/dist/core/foundation/config-opencode.js.map +1 -0
  69. package/dist/core/foundation/config-pi.d.ts +10 -0
  70. package/dist/core/foundation/config-pi.d.ts.map +1 -1
  71. package/dist/core/foundation/config-pi.js +13 -0
  72. package/dist/core/foundation/config-pi.js.map +1 -1
  73. package/dist/core/foundation/config-planning.d.ts +12 -1
  74. package/dist/core/foundation/config-planning.d.ts.map +1 -1
  75. package/dist/core/foundation/config-planning.js +29 -1
  76. package/dist/core/foundation/config-planning.js.map +1 -1
  77. package/dist/core/foundation/config-traceability.d.ts +28 -0
  78. package/dist/core/foundation/config-traceability.d.ts.map +1 -0
  79. package/dist/core/foundation/config-traceability.js +63 -0
  80. package/dist/core/foundation/config-traceability.js.map +1 -0
  81. package/dist/core/foundation/config-user.d.ts +32 -0
  82. package/dist/core/foundation/config-user.d.ts.map +1 -0
  83. package/dist/core/foundation/config-user.js +2 -0
  84. package/dist/core/foundation/config-user.js.map +1 -0
  85. package/dist/core/foundation/config-vcs.d.ts +29 -0
  86. package/dist/core/foundation/config-vcs.d.ts.map +1 -0
  87. package/dist/core/foundation/config-vcs.js +57 -0
  88. package/dist/core/foundation/config-vcs.js.map +1 -0
  89. package/dist/core/foundation/config.d.ts +23 -24
  90. package/dist/core/foundation/config.d.ts.map +1 -1
  91. package/dist/core/foundation/config.js +29 -36
  92. package/dist/core/foundation/config.js.map +1 -1
  93. package/dist/core/foundation/decisions-validate.d.ts +16 -0
  94. package/dist/core/foundation/decisions-validate.d.ts.map +1 -0
  95. package/dist/core/foundation/decisions-validate.js +74 -0
  96. package/dist/core/foundation/decisions-validate.js.map +1 -0
  97. package/dist/core/foundation/decisions.d.ts +34 -0
  98. package/dist/core/foundation/decisions.d.ts.map +1 -0
  99. package/dist/core/foundation/decisions.js +152 -0
  100. package/dist/core/foundation/decisions.js.map +1 -0
  101. package/dist/core/foundation/doctor-decisions.d.ts +9 -0
  102. package/dist/core/foundation/doctor-decisions.d.ts.map +1 -0
  103. package/dist/core/foundation/doctor-decisions.js +49 -0
  104. package/dist/core/foundation/doctor-decisions.js.map +1 -0
  105. package/dist/core/foundation/doctor-managed.d.ts.map +1 -1
  106. package/dist/core/foundation/doctor-managed.js +3 -0
  107. package/dist/core/foundation/doctor-managed.js.map +1 -1
  108. package/dist/core/foundation/doctor-prices.d.ts +8 -0
  109. package/dist/core/foundation/doctor-prices.d.ts.map +1 -0
  110. package/dist/core/foundation/doctor-prices.js +25 -0
  111. package/dist/core/foundation/doctor-prices.js.map +1 -0
  112. package/dist/core/foundation/doctor.d.ts.map +1 -1
  113. package/dist/core/foundation/doctor.js +20 -30
  114. package/dist/core/foundation/doctor.js.map +1 -1
  115. package/dist/core/foundation/harness-catalog.d.ts +7 -8
  116. package/dist/core/foundation/harness-catalog.d.ts.map +1 -1
  117. package/dist/core/foundation/harness-catalog.js +26 -41
  118. package/dist/core/foundation/harness-catalog.js.map +1 -1
  119. package/dist/core/foundation/init-blocks.d.ts +1 -1
  120. package/dist/core/foundation/init-blocks.d.ts.map +1 -1
  121. package/dist/core/foundation/init-blocks.js +51 -14
  122. package/dist/core/foundation/init-blocks.js.map +1 -1
  123. package/dist/core/foundation/init.d.ts +4 -0
  124. package/dist/core/foundation/init.d.ts.map +1 -1
  125. package/dist/core/foundation/init.js +7 -0
  126. package/dist/core/foundation/init.js.map +1 -1
  127. package/dist/core/foundation/new.d.ts +4 -1
  128. package/dist/core/foundation/new.d.ts.map +1 -1
  129. package/dist/core/foundation/new.js +18 -8
  130. package/dist/core/foundation/new.js.map +1 -1
  131. package/dist/core/foundation/package-root.d.ts +6 -0
  132. package/dist/core/foundation/package-root.d.ts.map +1 -1
  133. package/dist/core/foundation/package-root.js +6 -0
  134. package/dist/core/foundation/package-root.js.map +1 -1
  135. package/dist/core/foundation/rules-block.d.ts +11 -0
  136. package/dist/core/foundation/rules-block.d.ts.map +1 -0
  137. package/dist/core/foundation/rules-block.js +90 -0
  138. package/dist/core/foundation/rules-block.js.map +1 -0
  139. package/dist/core/foundation/traceability-block.d.ts +13 -0
  140. package/dist/core/foundation/traceability-block.d.ts.map +1 -0
  141. package/dist/core/foundation/traceability-block.js +124 -0
  142. package/dist/core/foundation/traceability-block.js.map +1 -0
  143. package/dist/core/lifecycle/done.d.ts.map +1 -1
  144. package/dist/core/lifecycle/done.js +2 -4
  145. package/dist/core/lifecycle/done.js.map +1 -1
  146. package/dist/core/lifecycle/recertify.d.ts +9 -0
  147. package/dist/core/lifecycle/recertify.d.ts.map +1 -0
  148. package/dist/core/lifecycle/recertify.js +27 -0
  149. package/dist/core/lifecycle/recertify.js.map +1 -0
  150. package/dist/core/lifecycle/reject.d.ts.map +1 -1
  151. package/dist/core/lifecycle/reject.js +3 -4
  152. package/dist/core/lifecycle/reject.js.map +1 -1
  153. package/dist/core/lifecycle/retry.d.ts.map +1 -1
  154. package/dist/core/lifecycle/retry.js +6 -20
  155. package/dist/core/lifecycle/retry.js.map +1 -1
  156. package/dist/core/lifecycle/verification-record.d.ts +42 -0
  157. package/dist/core/lifecycle/verification-record.d.ts.map +1 -0
  158. package/dist/core/lifecycle/verification-record.js +76 -0
  159. package/dist/core/lifecycle/verification-record.js.map +1 -0
  160. package/dist/core/report/approval-flags.d.ts +16 -3
  161. package/dist/core/report/approval-flags.d.ts.map +1 -1
  162. package/dist/core/report/approval-flags.js +59 -22
  163. package/dist/core/report/approval-flags.js.map +1 -1
  164. package/dist/core/report/brief-to-approval.d.ts +7 -0
  165. package/dist/core/report/brief-to-approval.d.ts.map +1 -0
  166. package/dist/core/report/brief-to-approval.js +43 -0
  167. package/dist/core/report/brief-to-approval.js.map +1 -0
  168. package/dist/core/report/planning-price-gaps.d.ts +10 -0
  169. package/dist/core/report/planning-price-gaps.d.ts.map +1 -0
  170. package/dist/core/report/planning-price-gaps.js +37 -0
  171. package/dist/core/report/planning-price-gaps.js.map +1 -0
  172. package/dist/core/report/planning-slice-lookup.d.ts.map +1 -1
  173. package/dist/core/report/planning-slice-lookup.js +3 -9
  174. package/dist/core/report/planning-slice-lookup.js.map +1 -1
  175. package/dist/core/report/recent-disclosures.d.ts +18 -0
  176. package/dist/core/report/recent-disclosures.d.ts.map +1 -0
  177. package/dist/core/report/recent-disclosures.js +105 -0
  178. package/dist/core/report/recent-disclosures.js.map +1 -0
  179. package/dist/core/report/record-disclosures.d.ts +14 -0
  180. package/dist/core/report/record-disclosures.d.ts.map +1 -0
  181. package/dist/core/report/record-disclosures.js +30 -0
  182. package/dist/core/report/record-disclosures.js.map +1 -0
  183. package/dist/core/report/record-estimates.d.ts +25 -0
  184. package/dist/core/report/record-estimates.d.ts.map +1 -0
  185. package/dist/core/report/record-estimates.js +83 -0
  186. package/dist/core/report/record-estimates.js.map +1 -0
  187. package/dist/core/report/record-rework.d.ts +19 -0
  188. package/dist/core/report/record-rework.d.ts.map +1 -0
  189. package/dist/core/report/record-rework.js +50 -0
  190. package/dist/core/report/record-rework.js.map +1 -0
  191. package/dist/core/report/record-verification.d.ts +16 -0
  192. package/dist/core/report/record-verification.d.ts.map +1 -0
  193. package/dist/core/report/record-verification.js +33 -0
  194. package/dist/core/report/record-verification.js.map +1 -0
  195. package/dist/core/report/report-dependencies.d.ts +29 -0
  196. package/dist/core/report/report-dependencies.d.ts.map +1 -0
  197. package/dist/core/report/report-dependencies.js +92 -0
  198. package/dist/core/report/report-dependencies.js.map +1 -0
  199. package/dist/core/report/report-events.d.ts +1 -0
  200. package/dist/core/report/report-events.d.ts.map +1 -1
  201. package/dist/core/report/report-events.js +8 -26
  202. package/dist/core/report/report-events.js.map +1 -1
  203. package/dist/core/report/report-mutation.d.ts +34 -0
  204. package/dist/core/report/report-mutation.d.ts.map +1 -0
  205. package/dist/core/report/report-mutation.js +191 -0
  206. package/dist/core/report/report-mutation.js.map +1 -0
  207. package/dist/core/report/report-scope.d.ts +21 -0
  208. package/dist/core/report/report-scope.d.ts.map +1 -0
  209. package/dist/core/report/report-scope.js +61 -0
  210. package/dist/core/report/report-scope.js.map +1 -0
  211. package/dist/core/report/report-traceability.d.ts +29 -0
  212. package/dist/core/report/report-traceability.d.ts.map +1 -0
  213. package/dist/core/report/report-traceability.js +94 -0
  214. package/dist/core/report/report-traceability.js.map +1 -0
  215. package/dist/core/report/report.d.ts +35 -1
  216. package/dist/core/report/report.d.ts.map +1 -1
  217. package/dist/core/report/report.js +130 -111
  218. package/dist/core/report/report.js.map +1 -1
  219. package/dist/core/report/result-sections.d.ts +30 -0
  220. package/dist/core/report/result-sections.d.ts.map +1 -0
  221. package/dist/core/report/result-sections.js +125 -0
  222. package/dist/core/report/result-sections.js.map +1 -0
  223. package/dist/core/report/scope-size.d.ts +7 -0
  224. package/dist/core/report/scope-size.d.ts.map +1 -0
  225. package/dist/core/report/scope-size.js +22 -0
  226. package/dist/core/report/scope-size.js.map +1 -0
  227. package/dist/core/run/commit-message.d.ts +24 -0
  228. package/dist/core/run/commit-message.d.ts.map +1 -0
  229. package/dist/core/run/commit-message.js +76 -0
  230. package/dist/core/run/commit-message.js.map +1 -0
  231. package/dist/core/run/dead-commit.d.ts +10 -0
  232. package/dist/core/run/dead-commit.d.ts.map +1 -0
  233. package/dist/core/run/dead-commit.js +70 -0
  234. package/dist/core/run/dead-commit.js.map +1 -0
  235. package/dist/core/run/focused-tests.d.ts +43 -0
  236. package/dist/core/run/focused-tests.d.ts.map +1 -0
  237. package/dist/core/run/focused-tests.js +116 -0
  238. package/dist/core/run/focused-tests.js.map +1 -0
  239. package/dist/core/run/manifest-approval.d.ts +7 -0
  240. package/dist/core/run/manifest-approval.d.ts.map +1 -0
  241. package/dist/core/run/manifest-approval.js +30 -0
  242. package/dist/core/run/manifest-approval.js.map +1 -0
  243. package/dist/core/run/manifest.d.ts +11 -1
  244. package/dist/core/run/manifest.d.ts.map +1 -1
  245. package/dist/core/run/manifest.js +52 -11
  246. package/dist/core/run/manifest.js.map +1 -1
  247. package/dist/core/run/mutation-report.d.ts +29 -0
  248. package/dist/core/run/mutation-report.d.ts.map +1 -0
  249. package/dist/core/run/mutation-report.js +107 -0
  250. package/dist/core/run/mutation-report.js.map +1 -0
  251. package/dist/core/run/mutation-run.d.ts +32 -0
  252. package/dist/core/run/mutation-run.d.ts.map +1 -0
  253. package/dist/core/run/mutation-run.js +80 -0
  254. package/dist/core/run/mutation-run.js.map +1 -0
  255. package/dist/core/run/verification.d.ts +12 -1
  256. package/dist/core/run/verification.d.ts.map +1 -1
  257. package/dist/core/run/verification.js +24 -2
  258. package/dist/core/run/verification.js.map +1 -1
  259. package/dist/core/spec/approve-worktree-shared.d.ts +33 -0
  260. package/dist/core/spec/approve-worktree-shared.d.ts.map +1 -0
  261. package/dist/core/spec/approve-worktree-shared.js +59 -0
  262. package/dist/core/spec/approve-worktree-shared.js.map +1 -0
  263. package/dist/core/spec/approve-worktree.d.ts +21 -0
  264. package/dist/core/spec/approve-worktree.d.ts.map +1 -0
  265. package/dist/core/spec/approve-worktree.js +153 -0
  266. package/dist/core/spec/approve-worktree.js.map +1 -0
  267. package/dist/core/spec/approve.d.ts +20 -10
  268. package/dist/core/spec/approve.d.ts.map +1 -1
  269. package/dist/core/spec/approve.js +57 -54
  270. package/dist/core/spec/approve.js.map +1 -1
  271. package/dist/core/spec/capability-impact.d.ts +43 -0
  272. package/dist/core/spec/capability-impact.d.ts.map +1 -0
  273. package/dist/core/spec/capability-impact.js +85 -0
  274. package/dist/core/spec/capability-impact.js.map +1 -0
  275. package/dist/core/spec/decisions-lint.d.ts +18 -0
  276. package/dist/core/spec/decisions-lint.d.ts.map +1 -0
  277. package/dist/core/spec/decisions-lint.js +127 -0
  278. package/dist/core/spec/decisions-lint.js.map +1 -0
  279. package/dist/core/spec/delta.d.ts +6 -0
  280. package/dist/core/spec/delta.d.ts.map +1 -1
  281. package/dist/core/spec/delta.js +73 -5
  282. package/dist/core/spec/delta.js.map +1 -1
  283. package/dist/core/spec/digest-capability.d.ts +17 -0
  284. package/dist/core/spec/digest-capability.d.ts.map +1 -0
  285. package/dist/core/spec/digest-capability.js +89 -0
  286. package/dist/core/spec/digest-capability.js.map +1 -0
  287. package/dist/core/spec/digest-decisions.d.ts +27 -0
  288. package/dist/core/spec/digest-decisions.d.ts.map +1 -0
  289. package/dist/core/spec/digest-decisions.js +86 -0
  290. package/dist/core/spec/digest-decisions.js.map +1 -0
  291. package/dist/core/spec/digest-flags.d.ts +1 -0
  292. package/dist/core/spec/digest-flags.d.ts.map +1 -1
  293. package/dist/core/spec/digest-flags.js +16 -16
  294. package/dist/core/spec/digest-flags.js.map +1 -1
  295. package/dist/core/spec/digest-format.d.ts +4 -0
  296. package/dist/core/spec/digest-format.d.ts.map +1 -0
  297. package/dist/core/spec/digest-format.js +44 -0
  298. package/dist/core/spec/digest-format.js.map +1 -0
  299. package/dist/core/spec/digest.d.ts +6 -3
  300. package/dist/core/spec/digest.d.ts.map +1 -1
  301. package/dist/core/spec/digest.js +18 -32
  302. package/dist/core/spec/digest.js.map +1 -1
  303. package/dist/core/spec/human-steps.d.ts +20 -0
  304. package/dist/core/spec/human-steps.d.ts.map +1 -0
  305. package/dist/core/spec/human-steps.js +52 -0
  306. package/dist/core/spec/human-steps.js.map +1 -0
  307. package/dist/core/spec/impact-lint.d.ts +24 -0
  308. package/dist/core/spec/impact-lint.d.ts.map +1 -0
  309. package/dist/core/spec/impact-lint.js +39 -0
  310. package/dist/core/spec/impact-lint.js.map +1 -0
  311. package/dist/core/spec/import-graph.d.ts +35 -0
  312. package/dist/core/spec/import-graph.d.ts.map +1 -0
  313. package/dist/core/spec/import-graph.js +155 -0
  314. package/dist/core/spec/import-graph.js.map +1 -0
  315. package/dist/core/spec/lint-findings.d.ts +44 -0
  316. package/dist/core/spec/lint-findings.d.ts.map +1 -0
  317. package/dist/core/spec/lint-findings.js +56 -0
  318. package/dist/core/spec/lint-findings.js.map +1 -0
  319. package/dist/core/spec/lint-output.d.ts +53 -0
  320. package/dist/core/spec/lint-output.d.ts.map +1 -0
  321. package/dist/core/spec/lint-output.js +87 -0
  322. package/dist/core/spec/lint-output.js.map +1 -0
  323. package/dist/core/spec/linter.d.ts +14 -4
  324. package/dist/core/spec/linter.d.ts.map +1 -1
  325. package/dist/core/spec/linter.js +271 -111
  326. package/dist/core/spec/linter.js.map +1 -1
  327. package/dist/core/spec/merged-spec-check.d.ts +24 -0
  328. package/dist/core/spec/merged-spec-check.d.ts.map +1 -0
  329. package/dist/core/spec/merged-spec-check.js +95 -0
  330. package/dist/core/spec/merged-spec-check.js.map +1 -0
  331. package/dist/core/spec/openspec-issues.d.ts +58 -0
  332. package/dist/core/spec/openspec-issues.d.ts.map +1 -0
  333. package/dist/core/spec/openspec-issues.js +166 -0
  334. package/dist/core/spec/openspec-issues.js.map +1 -0
  335. package/dist/core/spec/parser.d.ts +1 -0
  336. package/dist/core/spec/parser.d.ts.map +1 -1
  337. package/dist/core/spec/parser.js +16 -6
  338. package/dist/core/spec/parser.js.map +1 -1
  339. package/dist/core/spec/scenario-impact.d.ts +47 -0
  340. package/dist/core/spec/scenario-impact.d.ts.map +1 -0
  341. package/dist/core/spec/scenario-impact.js +130 -0
  342. package/dist/core/spec/scenario-impact.js.map +1 -0
  343. package/dist/core/spec/test-impact.d.ts +28 -0
  344. package/dist/core/spec/test-impact.d.ts.map +1 -0
  345. package/dist/core/spec/test-impact.js +119 -0
  346. package/dist/core/spec/test-impact.js.map +1 -0
  347. package/dist/core/spec/traceability-links.d.ts +50 -0
  348. package/dist/core/spec/traceability-links.d.ts.map +1 -0
  349. package/dist/core/spec/traceability-links.js +120 -0
  350. package/dist/core/spec/traceability-links.js.map +1 -0
  351. package/dist/core/spec/traceability-lint.d.ts +29 -0
  352. package/dist/core/spec/traceability-lint.d.ts.map +1 -0
  353. package/dist/core/spec/traceability-lint.js +143 -0
  354. package/dist/core/spec/traceability-lint.js.map +1 -0
  355. package/dist/core/status/blocked-item.d.ts +8 -0
  356. package/dist/core/status/blocked-item.d.ts.map +1 -0
  357. package/dist/core/status/blocked-item.js +45 -0
  358. package/dist/core/status/blocked-item.js.map +1 -0
  359. package/dist/core/status/change-locations.d.ts +44 -0
  360. package/dist/core/status/change-locations.d.ts.map +1 -0
  361. package/dist/core/status/change-locations.js +138 -0
  362. package/dist/core/status/change-locations.js.map +1 -0
  363. package/dist/core/status/dependency-readiness.d.ts +11 -0
  364. package/dist/core/status/dependency-readiness.d.ts.map +1 -0
  365. package/dist/core/status/dependency-readiness.js +39 -0
  366. package/dist/core/status/dependency-readiness.js.map +1 -0
  367. package/dist/core/status/inbox-projection.d.ts.map +1 -1
  368. package/dist/core/status/inbox-projection.js +23 -4
  369. package/dist/core/status/inbox-projection.js.map +1 -1
  370. package/dist/core/status/inbox-text.d.ts.map +1 -1
  371. package/dist/core/status/inbox-text.js +34 -3
  372. package/dist/core/status/inbox-text.js.map +1 -1
  373. package/dist/core/status/inbox.d.ts +10 -1
  374. package/dist/core/status/inbox.d.ts.map +1 -1
  375. package/dist/core/status/inbox.js +19 -1
  376. package/dist/core/status/inbox.js.map +1 -1
  377. package/dist/core/status/layout.d.ts +6 -0
  378. package/dist/core/status/layout.d.ts.map +1 -1
  379. package/dist/core/status/layout.js +8 -0
  380. package/dist/core/status/layout.js.map +1 -1
  381. package/dist/core/status/next-step.d.ts +17 -0
  382. package/dist/core/status/next-step.d.ts.map +1 -0
  383. package/dist/core/status/next-step.js +85 -0
  384. package/dist/core/status/next-step.js.map +1 -0
  385. package/dist/core/status/pre-spawn-words.d.ts +13 -0
  386. package/dist/core/status/pre-spawn-words.d.ts.map +1 -0
  387. package/dist/core/status/pre-spawn-words.js +26 -0
  388. package/dist/core/status/pre-spawn-words.js.map +1 -0
  389. package/dist/core/status/queue-parser.d.ts +1 -0
  390. package/dist/core/status/queue-parser.d.ts.map +1 -1
  391. package/dist/core/status/queue-parser.js +41 -2
  392. package/dist/core/status/queue-parser.js.map +1 -1
  393. package/dist/core/status/queue-planning.d.ts +1 -0
  394. package/dist/core/status/queue-planning.d.ts.map +1 -1
  395. package/dist/core/status/queue-planning.js +24 -12
  396. package/dist/core/status/queue-planning.js.map +1 -1
  397. package/dist/core/status/queue-report-detail.d.ts.map +1 -1
  398. package/dist/core/status/queue-report-detail.js +5 -3
  399. package/dist/core/status/queue-report-detail.js.map +1 -1
  400. package/dist/core/status/queue-state.d.ts +1 -1
  401. package/dist/core/status/queue-state.d.ts.map +1 -1
  402. package/dist/core/status/queue-state.js +27 -41
  403. package/dist/core/status/queue-state.js.map +1 -1
  404. package/dist/core/status/show.d.ts +25 -0
  405. package/dist/core/status/show.d.ts.map +1 -1
  406. package/dist/core/status/show.js +354 -91
  407. package/dist/core/status/show.js.map +1 -1
  408. package/dist/core/status/state.d.ts.map +1 -1
  409. package/dist/core/status/state.js +1 -23
  410. package/dist/core/status/state.js.map +1 -1
  411. package/dist/core/status/status.d.ts +18 -0
  412. package/dist/core/status/status.d.ts.map +1 -1
  413. package/dist/core/status/status.js +59 -80
  414. package/dist/core/status/status.js.map +1 -1
  415. package/dist/core/status/verification.d.ts +27 -0
  416. package/dist/core/status/verification.d.ts.map +1 -0
  417. package/dist/core/status/verification.js +111 -0
  418. package/dist/core/status/verification.js.map +1 -0
  419. package/dist/core/trace/function-ranges.d.ts +30 -0
  420. package/dist/core/trace/function-ranges.d.ts.map +1 -0
  421. package/dist/core/trace/function-ranges.js +250 -0
  422. package/dist/core/trace/function-ranges.js.map +1 -0
  423. package/dist/core/trace/mutation-pick.d.ts +55 -0
  424. package/dist/core/trace/mutation-pick.d.ts.map +1 -0
  425. package/dist/core/trace/mutation-pick.js +96 -0
  426. package/dist/core/trace/mutation-pick.js.map +1 -0
  427. package/dist/core/trace/scenario-index.d.ts +27 -0
  428. package/dist/core/trace/scenario-index.d.ts.map +1 -0
  429. package/dist/core/trace/scenario-index.js +76 -0
  430. package/dist/core/trace/scenario-index.js.map +1 -0
  431. package/dist/core/trace/scenario-lookup.d.ts +14 -0
  432. package/dist/core/trace/scenario-lookup.d.ts.map +1 -0
  433. package/dist/core/trace/scenario-lookup.js +179 -0
  434. package/dist/core/trace/scenario-lookup.js.map +1 -0
  435. package/dist/core/trace/tag-scan.d.ts +44 -0
  436. package/dist/core/trace/tag-scan.d.ts.map +1 -0
  437. package/dist/core/trace/tag-scan.js +200 -0
  438. package/dist/core/trace/tag-scan.js.map +1 -0
  439. package/dist/core/vcs/doctor-git.d.ts +13 -0
  440. package/dist/core/vcs/doctor-git.d.ts.map +1 -0
  441. package/dist/core/vcs/doctor-git.js +114 -0
  442. package/dist/core/vcs/doctor-git.js.map +1 -0
  443. package/dist/core/vcs/git-vcs-write.d.ts +47 -0
  444. package/dist/core/vcs/git-vcs-write.d.ts.map +1 -0
  445. package/dist/core/vcs/git-vcs-write.js +210 -0
  446. package/dist/core/vcs/git-vcs-write.js.map +1 -0
  447. package/dist/core/vcs/git-vcs.d.ts +40 -0
  448. package/dist/core/vcs/git-vcs.d.ts.map +1 -0
  449. package/dist/core/vcs/git-vcs.js +170 -0
  450. package/dist/core/vcs/git-vcs.js.map +1 -0
  451. package/dist/core/vcs/no-vcs.d.ts +26 -0
  452. package/dist/core/vcs/no-vcs.d.ts.map +1 -0
  453. package/dist/core/vcs/no-vcs.js +62 -0
  454. package/dist/core/vcs/no-vcs.js.map +1 -0
  455. package/dist/core/vcs/select.d.ts +11 -0
  456. package/dist/core/vcs/select.d.ts.map +1 -0
  457. package/dist/core/vcs/select.js +33 -0
  458. package/dist/core/vcs/select.js.map +1 -0
  459. package/dist/core/vcs/snapshot.d.ts +34 -0
  460. package/dist/core/vcs/snapshot.d.ts.map +1 -0
  461. package/dist/core/vcs/snapshot.js +71 -0
  462. package/dist/core/vcs/snapshot.js.map +1 -0
  463. package/dist/core/vcs/vcs.d.ts +55 -0
  464. package/dist/core/vcs/vcs.d.ts.map +1 -0
  465. package/dist/core/vcs/vcs.js +2 -0
  466. package/dist/core/vcs/vcs.js.map +1 -0
  467. package/dist/core/vcs/worktree.d.ts +10 -0
  468. package/dist/core/vcs/worktree.d.ts.map +1 -0
  469. package/dist/core/vcs/worktree.js +25 -0
  470. package/dist/core/vcs/worktree.js.map +1 -0
  471. package/dist/core/web/web-data-folders.d.ts.map +1 -1
  472. package/dist/core/web/web-data-folders.js +18 -33
  473. package/dist/core/web/web-data-folders.js.map +1 -1
  474. package/dist/core/web/web-data-lifecycle.d.ts.map +1 -1
  475. package/dist/core/web/web-data-lifecycle.js +2 -1
  476. package/dist/core/web/web-data-lifecycle.js.map +1 -1
  477. package/dist/core/web/web-events.d.ts +8 -6
  478. package/dist/core/web/web-events.d.ts.map +1 -1
  479. package/dist/core/web/web-events.js +7 -31
  480. package/dist/core/web/web-events.js.map +1 -1
  481. package/dist/core/web/web-server.d.ts.map +1 -1
  482. package/dist/core/web/web-server.js +3 -0
  483. package/dist/core/web/web-server.js.map +1 -1
  484. package/dist/core/web/web-trees.d.ts +27 -0
  485. package/dist/core/web/web-trees.d.ts.map +1 -0
  486. package/dist/core/web/web-trees.js +82 -0
  487. package/dist/core/web/web-trees.js.map +1 -0
  488. package/dist/harness/claude/claude-exec-args.d.ts +13 -0
  489. package/dist/harness/claude/claude-exec-args.d.ts.map +1 -0
  490. package/dist/harness/claude/claude-exec-args.js +61 -0
  491. package/dist/harness/claude/claude-exec-args.js.map +1 -0
  492. package/dist/harness/claude/claude-exec.d.ts +12 -0
  493. package/dist/harness/claude/claude-exec.d.ts.map +1 -0
  494. package/dist/harness/claude/claude-exec.js +79 -0
  495. package/dist/harness/claude/claude-exec.js.map +1 -0
  496. package/dist/harness/claude/claude-stream.d.ts +31 -0
  497. package/dist/harness/claude/claude-stream.d.ts.map +1 -0
  498. package/dist/harness/claude/claude-stream.js +150 -0
  499. package/dist/harness/claude/claude-stream.js.map +1 -0
  500. package/dist/harness/claude/claude-tools.d.ts +5 -0
  501. package/dist/harness/claude/claude-tools.d.ts.map +1 -0
  502. package/dist/harness/claude/claude-tools.js +30 -0
  503. package/dist/harness/claude/claude-tools.js.map +1 -0
  504. package/dist/harness/index.d.ts +1 -0
  505. package/dist/harness/index.d.ts.map +1 -1
  506. package/dist/harness/index.js +3 -0
  507. package/dist/harness/index.js.map +1 -1
  508. package/dist/harness/opencode/opencode-session.d.ts +42 -0
  509. package/dist/harness/opencode/opencode-session.d.ts.map +1 -0
  510. package/dist/harness/opencode/opencode-session.js +123 -0
  511. package/dist/harness/opencode/opencode-session.js.map +1 -0
  512. package/dist/harness/opencode/opencode.d.ts +2 -1
  513. package/dist/harness/opencode/opencode.d.ts.map +1 -1
  514. package/dist/harness/opencode/opencode.js +52 -28
  515. package/dist/harness/opencode/opencode.js.map +1 -1
  516. package/dist/harness/prompt.js +1 -1
  517. package/dist/harness/prompt.js.map +1 -1
  518. package/dist/harness/types.d.ts +114 -1
  519. package/dist/harness/types.d.ts.map +1 -1
  520. package/dist/harness/types.js.map +1 -1
  521. package/dist/index.d.ts +3 -1
  522. package/dist/index.d.ts.map +1 -1
  523. package/dist/index.js +1 -0
  524. package/dist/index.js.map +1 -1
  525. package/dist/testing/index.d.ts +3 -0
  526. package/dist/testing/index.d.ts.map +1 -0
  527. package/dist/testing/index.js +2 -0
  528. package/dist/testing/index.js.map +1 -0
  529. package/dist/testing/scenario.d.ts +29 -0
  530. package/dist/testing/scenario.d.ts.map +1 -0
  531. package/dist/testing/scenario.js +157 -0
  532. package/dist/testing/scenario.js.map +1 -0
  533. package/dist/watcher/archiver.d.ts +2 -1
  534. package/dist/watcher/archiver.d.ts.map +1 -1
  535. package/dist/watcher/archiver.js +27 -2
  536. package/dist/watcher/archiver.js.map +1 -1
  537. package/dist/watcher/auto-recertify.d.ts +27 -0
  538. package/dist/watcher/auto-recertify.d.ts.map +1 -0
  539. package/dist/watcher/auto-recertify.js +113 -0
  540. package/dist/watcher/auto-recertify.js.map +1 -0
  541. package/dist/watcher/auto-retry.d.ts +1 -1
  542. package/dist/watcher/auto-retry.d.ts.map +1 -1
  543. package/dist/watcher/auto-retry.js +3 -11
  544. package/dist/watcher/auto-retry.js.map +1 -1
  545. package/dist/watcher/baseline-key.d.ts +17 -0
  546. package/dist/watcher/baseline-key.d.ts.map +1 -0
  547. package/dist/watcher/baseline-key.js +31 -0
  548. package/dist/watcher/baseline-key.js.map +1 -0
  549. package/dist/watcher/baseline.d.ts +32 -0
  550. package/dist/watcher/baseline.d.ts.map +1 -0
  551. package/dist/watcher/baseline.js +166 -0
  552. package/dist/watcher/baseline.js.map +1 -0
  553. package/dist/watcher/blocked.d.ts +12 -0
  554. package/dist/watcher/blocked.d.ts.map +1 -0
  555. package/dist/watcher/blocked.js +24 -0
  556. package/dist/watcher/blocked.js.map +1 -0
  557. package/dist/watcher/build-project.d.ts +11 -0
  558. package/dist/watcher/build-project.d.ts.map +1 -0
  559. package/dist/watcher/build-project.js +36 -0
  560. package/dist/watcher/build-project.js.map +1 -0
  561. package/dist/watcher/build.d.ts +8 -5
  562. package/dist/watcher/build.d.ts.map +1 -1
  563. package/dist/watcher/build.js +35 -39
  564. package/dist/watcher/build.js.map +1 -1
  565. package/dist/watcher/dependencies.d.ts +28 -0
  566. package/dist/watcher/dependencies.d.ts.map +1 -0
  567. package/dist/watcher/dependencies.js +152 -0
  568. package/dist/watcher/dependencies.js.map +1 -0
  569. package/dist/watcher/done-metadata.d.ts +4 -0
  570. package/dist/watcher/done-metadata.d.ts.map +1 -0
  571. package/dist/watcher/done-metadata.js +20 -0
  572. package/dist/watcher/done-metadata.js.map +1 -0
  573. package/dist/watcher/failure-reason.d.ts +1 -1
  574. package/dist/watcher/failure-reason.d.ts.map +1 -1
  575. package/dist/watcher/fingerprint.d.ts +2 -2
  576. package/dist/watcher/fingerprint.d.ts.map +1 -1
  577. package/dist/watcher/fingerprint.js +31 -2
  578. package/dist/watcher/fingerprint.js.map +1 -1
  579. package/dist/watcher/focused-verify.d.ts +17 -0
  580. package/dist/watcher/focused-verify.d.ts.map +1 -0
  581. package/dist/watcher/focused-verify.js +54 -0
  582. package/dist/watcher/focused-verify.js.map +1 -0
  583. package/dist/watcher/git-guard.d.ts +24 -0
  584. package/dist/watcher/git-guard.d.ts.map +1 -0
  585. package/dist/watcher/git-guard.js +95 -0
  586. package/dist/watcher/git-guard.js.map +1 -0
  587. package/dist/watcher/instructions-drift.d.ts +21 -0
  588. package/dist/watcher/instructions-drift.d.ts.map +1 -0
  589. package/dist/watcher/instructions-drift.js +115 -0
  590. package/dist/watcher/instructions-drift.js.map +1 -0
  591. package/dist/watcher/loop.d.ts.map +1 -1
  592. package/dist/watcher/loop.js +37 -51
  593. package/dist/watcher/loop.js.map +1 -1
  594. package/dist/watcher/measures.d.ts.map +1 -1
  595. package/dist/watcher/measures.js +22 -39
  596. package/dist/watcher/measures.js.map +1 -1
  597. package/dist/watcher/mutation-check.d.ts +42 -0
  598. package/dist/watcher/mutation-check.d.ts.map +1 -0
  599. package/dist/watcher/mutation-check.js +147 -0
  600. package/dist/watcher/mutation-check.js.map +1 -0
  601. package/dist/watcher/outcome.d.ts +2 -0
  602. package/dist/watcher/outcome.d.ts.map +1 -1
  603. package/dist/watcher/outcome.js +5 -1
  604. package/dist/watcher/outcome.js.map +1 -1
  605. package/dist/watcher/regression.d.ts +10 -5
  606. package/dist/watcher/regression.d.ts.map +1 -1
  607. package/dist/watcher/regression.js +29 -19
  608. package/dist/watcher/regression.js.map +1 -1
  609. package/dist/watcher/runner.d.ts.map +1 -1
  610. package/dist/watcher/runner.js +12 -14
  611. package/dist/watcher/runner.js.map +1 -1
  612. package/dist/watcher/spawn.d.ts.map +1 -1
  613. package/dist/watcher/spawn.js +11 -1
  614. package/dist/watcher/spawn.js.map +1 -1
  615. package/dist/watcher/task-verify.d.ts +7 -2
  616. package/dist/watcher/task-verify.d.ts.map +1 -1
  617. package/dist/watcher/task-verify.js +33 -8
  618. package/dist/watcher/task-verify.js.map +1 -1
  619. package/dist/watcher/verify.d.ts +1 -5
  620. package/dist/watcher/verify.d.ts.map +1 -1
  621. package/dist/watcher/verify.js +2 -6
  622. package/dist/watcher/verify.js.map +1 -1
  623. package/package.json +5 -1
  624. package/templates/PLANNER.md +35 -9
  625. package/templates/openspec/config.yaml +1 -1
  626. package/templates/openspec/schemas/osq/schema.yaml +4 -2
  627. package/templates/openspec/schemas/osq/templates/proposal.md +9 -2
  628. package/templates/proposal.md +9 -2
  629. package/ui/dist/assets/{index-CZYeQ8la.js → index-D39uYbbL.js} +1 -1
  630. package/ui/dist/index.html +1 -1
@@ -3,6 +3,7 @@ import path from 'node:path';
3
3
  import { DEFAULT_CONFIG } from './config.js';
4
4
  import { CLAUDE_PLAN_COMMAND_PATH, MANAGED_AGENTS_MD_BODY, MANAGED_CLAUDE_PLAN_COMMAND, MANAGED_PLANNER_BLOCK, } from './init-blocks.js';
5
5
  import { inspectManagedBlock } from './init-managed.js';
6
+ import { checkTraceabilityBlocks } from './traceability-block.js';
6
7
  /**
7
8
  * Every planning entry point osq manages. Codex reads `AGENTS.md`, the human
8
9
  * planner model reads `PLANNER.md`, and Claude Code expands the command below.
@@ -65,9 +66,11 @@ export async function checkManagedBlocks(projectRoot, config) {
65
66
  setupFailures.push(`${relPath} is missing`);
66
67
  }
67
68
  }
69
+ const traceabilityFailures = await checkTraceabilityBlocks(projectRoot, config);
68
70
  const groups = [
69
71
  failures.length > 0 ? `${failures.join('; ')} (run osq init)` : '',
70
72
  setupFailures.length > 0 ? `${setupFailures.join('; ')} (run osq setup)` : '',
73
+ traceabilityFailures.length > 0 ? traceabilityFailures.join('; ') : '',
71
74
  ].filter((group) => group !== '');
72
75
  if (groups.length === 0) {
73
76
  return { ok: true, message: 'managed blocks valid' };
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-managed.js","sourceRoot":"","sources":["../../../src/core/foundation/doctor-managed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAA4B,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAYlF;;;GAGG;AACH,MAAM,aAAa,GAA2B;IAC5C,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,sBAAsB,EAAE;IAC3D,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,qBAAqB,EAAE;IAC3D,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,2BAA2B,EAAE;CAC9E,CAAC;AAEF,MAAM,YAAY,GAAwC;IACxD,eAAe,EAAE,8BAA8B;IAC/C,OAAO,EAAE,6BAA6B;IACtC,QAAQ,EAAE,8BAA8B;IACxC,UAAU,EAAE,8BAA8B;IAC1C,KAAK,EAAE,2BAA2B;CACnC,CAAC;AAEF,gFAAgF;AAChF,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAE3D,sEAAsE;AACtE,SAAS,kBAAkB,CAAC,MAAiB;IAC3C,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,CAAC;AACjF,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAiB;IAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;IAC1C,MAAM,KAAK,GAAG,UAAU,IAAI,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC;IACjE,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,MAAiB;IAEjB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,aAAa,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,aAAa,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;YAC3E,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;YACrE,IAAI,OAAO;gBAAE,aAAa,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,aAAa,CAAC,IAAI,CAAC,GAAG,OAAO,aAAa,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG;QACb,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;QAClE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;KAC9E,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IAElC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"doctor-managed.js","sourceRoot":"","sources":["../../../src/core/foundation/doctor-managed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { OsqConfig } from './config.js';
2
+ import type { DoctorCheckResult } from './doctor.js';
3
+ /**
4
+ * The `planning-prices` warning when some recorded-token planning model has no
5
+ * price entry, otherwise null so the check list stays unchanged.
6
+ */
7
+ export declare function checkPlanningPrices(projectRoot: string, config: OsqConfig): Promise<DoctorCheckResult | null>;
8
+ //# sourceMappingURL=doctor-prices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-prices.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/doctor-prices.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQrD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAWnC"}
@@ -0,0 +1,25 @@
1
+ import { findUnpricedPlanningModels, formatPriceKey } from '../report/planning-price-gaps.js';
2
+ import { listChanges } from '../status/change-locations.js';
3
+ /** Every active and archived change folder under the canonical layout. */
4
+ async function changeFolders(projectRoot, config) {
5
+ const changes = await listChanges(projectRoot, config, ['active', 'archived']);
6
+ return changes.map((change) => change.folderPath);
7
+ }
8
+ /**
9
+ * The `planning-prices` warning when some recorded-token planning model has no
10
+ * price entry, otherwise null so the check list stays unchanged.
11
+ */
12
+ export async function checkPlanningPrices(projectRoot, config) {
13
+ const folders = await changeFolders(projectRoot, config);
14
+ const models = await findUnpricedPlanningModels(folders, config.planning?.prices);
15
+ if (models.length === 0)
16
+ return null;
17
+ const keys = models.map((model) => formatPriceKey(model)).join(', ');
18
+ return {
19
+ name: 'planning-prices',
20
+ ok: true,
21
+ warning: true,
22
+ message: `planning cost stays unreported for ${models.join(', ')}; add ${keys}`,
23
+ };
24
+ }
25
+ //# sourceMappingURL=doctor-prices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-prices.js","sourceRoot":"","sources":["../../../src/core/foundation/doctor-prices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAI5D,0EAA0E;AAC1E,KAAK,UAAU,aAAa,CAAC,WAAmB,EAAE,MAAiB;IACjE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/E,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,MAAiB;IAEjB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,sCAAsC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE;KAChF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/doctor.ts"],"names":[],"mappings":"AAYA,OAAO,EAAkB,KAAK,SAAS,EAAc,MAAM,aAAa,CAAC;AAIzE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAED,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACzD,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3D;AAwLD,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,YAAY,CAAC,CAoBvB"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/doctor.ts"],"names":[],"mappings":"AAYA,OAAO,EAAkB,KAAK,SAAS,EAAc,MAAM,aAAa,CAAC;AAMzE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAED,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACzD,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3D;AAuKD,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,YAAY,CAAC,CAyBvB"}
@@ -3,10 +3,13 @@ import path from 'node:path';
3
3
  import { isPidRunning } from '../run/lock.js';
4
4
  import { OPENSPEC_EXPECTED_VERSION, assessOpenSpecVersion, formatInRangeWarning, } from '../spec/openspec-version.js';
5
5
  import { parseFrontmatter } from '../spec/parser.js';
6
- import { getArchiveDir, getChangesDir } from '../status/layout.js';
6
+ import { listChanges } from '../status/change-locations.js';
7
+ import { checkGit } from '../vcs/doctor-git.js';
7
8
  import { harnessBinary, probeVersion } from './config-doctor.js';
8
9
  import { DEFAULT_CONFIG, loadConfig } from './config.js';
10
+ import { checkDecisions } from './doctor-decisions.js';
9
11
  import { checkManagedBlocks } from './doctor-managed.js';
12
+ import { checkPlanningPrices } from './doctor-prices.js';
10
13
  import { findHarness } from './harness-catalog.js';
11
14
  function make(name, ok, message) {
12
15
  return { name, ok, message };
@@ -89,25 +92,11 @@ async function checkManaged(projectRoot, config) {
89
92
  const result = await checkManagedBlocks(projectRoot, config);
90
93
  return make('managed-blocks', result.ok, result.message);
91
94
  }
92
- async function listDirs(root) {
93
- let entries = [];
94
- try {
95
- entries = await fs.readdir(root, { withFileTypes: true });
96
- }
97
- catch {
98
- return [];
99
- }
100
- return entries.filter((entry) => entry.isDirectory()).map((entry) => path.join(root, entry.name));
101
- }
102
95
  async function checkLocks(projectRoot, config) {
103
- const changesDir = getChangesDir(config.paths.openspecRoot, projectRoot);
104
96
  const orphaned = [];
105
- for (const changeDir of await listDirs(changesDir)) {
106
- const name = path.basename(changeDir);
107
- if (name === 'archive' || name.startsWith('_') || name.startsWith('.'))
108
- continue;
97
+ for (const change of await listChanges(projectRoot, config, ['active'])) {
109
98
  for (const lockDirName of ['running', 'locks']) {
110
- const lockDir = path.join(changeDir, '.run', lockDirName);
99
+ const lockDir = path.join(change.folderPath, '.run', lockDirName);
111
100
  for (const file of await fs.readdir(lockDir).catch(() => [])) {
112
101
  if (!file.endsWith('.pid'))
113
102
  continue;
@@ -127,15 +116,14 @@ async function checkLocks(projectRoot, config) {
127
116
  : make('locks', true, 'no orphaned locks');
128
117
  }
129
118
  async function checkArchives(projectRoot, config) {
130
- const root = getArchiveDir(config.paths.openspecRoot, projectRoot);
131
119
  const corrupt = [];
132
- for (const archiveDir of await listDirs(root)) {
133
- const hasProposal = (await exists(path.join(archiveDir, 'proposal.md'))) ||
134
- (await exists(path.join(archiveDir, 'spec.md')));
135
- const hasTasks = (await exists(path.join(archiveDir, 'tasks'))) ||
136
- (await exists(path.join(archiveDir, 'tasks.md')));
120
+ for (const change of await listChanges(projectRoot, config, ['archived'])) {
121
+ const hasProposal = (await exists(path.join(change.folderPath, 'proposal.md'))) ||
122
+ (await exists(path.join(change.folderPath, 'spec.md')));
123
+ const hasTasks = (await exists(path.join(change.folderPath, 'tasks'))) ||
124
+ (await exists(path.join(change.folderPath, 'tasks.md')));
137
125
  if (!hasProposal || !hasTasks)
138
- corrupt.push(path.relative(projectRoot, archiveDir));
126
+ corrupt.push(path.relative(projectRoot, change.folderPath));
139
127
  }
140
128
  return corrupt.length > 0
141
129
  ? make('archives', false, `invalid archive(s): ${corrupt.join(', ')}`)
@@ -143,13 +131,9 @@ async function checkArchives(projectRoot, config) {
143
131
  }
144
132
  /** Active change done markers must be automated (`scope_hash`) or manual. */
145
133
  async function checkDoneMarkers(projectRoot, config) {
146
- const changesDir = getChangesDir(config.paths.openspecRoot, projectRoot);
147
134
  const invalid = [];
148
- for (const changeDir of await listDirs(changesDir)) {
149
- const name = path.basename(changeDir);
150
- if (name === 'archive' || name.startsWith('_') || name.startsWith('.'))
151
- continue;
152
- const doneDir = path.join(changeDir, '.run', 'done');
135
+ for (const change of await listChanges(projectRoot, config, ['active'])) {
136
+ const doneDir = path.join(change.folderPath, '.run', 'done');
153
137
  for (const marker of await fs.readdir(doneDir).catch(() => [])) {
154
138
  const markerPath = path.join(doneDir, marker);
155
139
  const { data } = parseFrontmatter(await fs.readFile(markerPath, 'utf8').catch(() => ''));
@@ -169,6 +153,7 @@ export async function runDoctorChecks(projectRoot, deps = {}) {
169
153
  // A catalog entry may add checks for its own executable after a passing probe.
170
154
  const diagnose = harness.check.ok ? findHarness(config.harness)?.diagnose : undefined;
171
155
  const extra = diagnose ? await diagnose({ config, projectRoot, version: harness.version }) : [];
156
+ const decisionsCheck = await checkDecisions(projectRoot, config);
172
157
  const checks = [
173
158
  configCheck,
174
159
  harness.check,
@@ -177,11 +162,16 @@ export async function runDoctorChecks(projectRoot, deps = {}) {
177
162
  ...(diagnosis.warning ? { warning: true } : {}),
178
163
  })),
179
164
  await checkManaged(projectRoot, config),
165
+ ...(decisionsCheck ? [decisionsCheck] : []),
180
166
  await checkLocks(projectRoot, config),
181
167
  await checkArchives(projectRoot, config),
182
168
  await checkDoneMarkers(projectRoot, config),
183
169
  await checkValidator(projectRoot, deps),
170
+ ...(await checkGit(projectRoot, config)),
184
171
  ];
172
+ const priceCheck = await checkPlanningPrices(projectRoot, config);
173
+ if (priceCheck)
174
+ checks.push(priceCheck);
185
175
  return { ok: checks.every((check) => check.ok), checks };
186
176
  }
187
177
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/core/foundation/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/core/foundation/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
- import type { HarnessDiagnoseContext, HarnessDiagnosis } from './config-pi.js';
1
+ import * as piConfig from './config-pi.js';
2
2
  import type { OsqConfig } from './config.js';
3
3
  /**
4
4
  * Canonical, immutable catalog of first-party harness capabilities. Every
5
5
  * shared consumer derives its harness knowledge from here, so adding a harness
6
6
  * never means editing a generic workflow branch.
7
7
  */
8
- export declare const HARNESS_NAMES: readonly ["agy", "opencode", "mock", "codex", "pi"];
8
+ export declare const HARNESS_NAMES: readonly ["agy", "opencode", "mock", "codex", "pi", "claude"];
9
9
  export type HarnessName = (typeof HARNESS_NAMES)[number];
10
10
  /** Where in {@link OsqConfig} a harness keeps its harness-specific settings. */
11
- export type HarnessConfigKey = 'agy' | 'opencode' | 'codex' | 'pi';
11
+ export type HarnessConfigKey = 'agy' | 'opencode' | 'codex' | 'pi' | 'claude';
12
12
  export interface PlannerCapability {
13
13
  /** Whether `planner.agent` is a meaningful setting for this harness. */
14
14
  readonly agent: boolean;
@@ -30,8 +30,10 @@ export interface HarnessCatalogEntry {
30
30
  /** Applicable reasoning effort, or `null` when the harness has no such knob. */
31
31
  readonly effort: (config: OsqConfig) => string | null;
32
32
  readonly planner: PlannerCapability;
33
+ /** What the harness confines for this configuration, when the entry declares it. */
34
+ readonly containment?: (config: OsqConfig) => string;
33
35
  /** Optional extra doctor checks run after a passing `harness` probe. */
34
- readonly diagnose?: (context: HarnessDiagnoseContext) => Promise<readonly HarnessDiagnosis[]>;
36
+ readonly diagnose?: (context: piConfig.HarnessDiagnoseContext) => Promise<readonly piConfig.HarnessDiagnosis[]>;
35
37
  }
36
38
  /** Normalize arbitrary casing and surrounding whitespace to a lower-case name. */
37
39
  export declare function normalizeHarnessName(name: string): string;
@@ -88,9 +90,6 @@ export declare function resolveCodexBinary(config?: Pick<OsqConfig, 'codex'>): s
88
90
  export declare function resolveCodexModel(config?: Pick<OsqConfig, 'harness' | 'codex'>): string | undefined;
89
91
  /** Resolve the Codex reasoning effort override, or `undefined` for native defaults. */
90
92
  export declare function resolveCodexEffort(config?: Pick<OsqConfig, 'codex'>): string | undefined;
91
- /**
92
- * Resolve the Pi execution model: explicit `pi.model`, then `OSQ_MODEL` only
93
- * when Pi is the executor, otherwise `undefined` (Pi's native default).
94
- */
93
+ /** Resolve the Pi execution model with the selected-executor env fallback. */
95
94
  export declare function resolvePiModel(config?: Pick<OsqConfig, 'harness' | 'pi'>): string | undefined;
96
95
  //# sourceMappingURL=harness-catalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"harness-catalog.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/harness-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-catalog.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/harness-catalog.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
- import { diagnosePi, resolvePiBinary, resolvePiEffort } from './config-pi.js';
1
+ import { claudeContainment, diagnoseClaude, resolveClaudeBinary, resolveClaudeModel, } from './config-claude.js';
2
+ import { codexExecutable, codexModel } from './config-codex-resolve.js';
3
+ import { diagnoseOpencode } from './config-opencode.js';
4
+ import * as piConfig from './config-pi.js';
2
5
  /**
3
6
  * Canonical, immutable catalog of first-party harness capabilities. Every
4
7
  * shared consumer derives its harness knowledge from here, so adding a harness
5
8
  * never means editing a generic workflow branch.
6
9
  */
7
- export const HARNESS_NAMES = ['agy', 'opencode', 'mock', 'codex', 'pi'];
10
+ export const HARNESS_NAMES = ['agy', 'opencode', 'mock', 'codex', 'pi', 'claude'];
8
11
  const DEFINITIONS = {
9
12
  agy: {
10
13
  configKey: 'agy',
@@ -23,6 +26,7 @@ const DEFINITIONS = {
23
26
  model: (config) => config.opencode?.model?.trim() || undefined,
24
27
  effort: () => null,
25
28
  planner: { agent: true, defaultAgent: 'osq-planner', briefModelWhenNative: '' },
29
+ diagnose: diagnoseOpencode,
26
30
  },
27
31
  mock: {
28
32
  envModelWhenUnselected: false,
@@ -34,37 +38,29 @@ const DEFINITIONS = {
34
38
  codex: {
35
39
  configKey: 'codex',
36
40
  envModelWhenUnselected: false,
37
- executable: (config) => {
38
- const explicit = config.codex?.bin?.trim();
39
- if (explicit)
40
- return explicit;
41
- const fromEnv = process.env.CODEX_PATH?.trim();
42
- if (fromEnv)
43
- return fromEnv;
44
- return 'codex';
45
- },
46
- model: (config) => {
47
- const explicit = config.codex?.model?.trim();
48
- if (explicit)
49
- return explicit;
50
- if (normalizeHarnessName(config.harness) === 'codex') {
51
- const fromEnv = process.env.OSQ_MODEL?.trim();
52
- if (fromEnv)
53
- return fromEnv;
54
- }
55
- return undefined;
56
- },
41
+ executable: codexExecutable,
42
+ model: (config) => codexModel(config, normalizeHarnessName(config.harness) === 'codex'),
57
43
  effort: (config) => config.codex?.effort?.trim() || null,
58
44
  planner: { agent: false, briefModelWhenNative: 'default' },
59
45
  },
60
46
  pi: {
61
47
  configKey: 'pi',
62
48
  envModelWhenUnselected: false,
63
- executable: resolvePiBinary,
49
+ executable: piConfig.resolvePiBinary,
64
50
  model: resolvePiModel,
65
- effort: resolvePiEffort,
51
+ effort: piConfig.resolvePiEffort,
66
52
  planner: { agent: false, briefModelWhenNative: 'default' },
67
- diagnose: diagnosePi,
53
+ diagnose: piConfig.diagnosePi,
54
+ },
55
+ claude: {
56
+ configKey: 'claude',
57
+ envModelWhenUnselected: false,
58
+ executable: resolveClaudeBinary,
59
+ model: (config) => resolveClaudeModel(config, normalizeHarnessName(config.harness) === 'claude'),
60
+ effort: () => null,
61
+ planner: { agent: false, briefModelWhenNative: 'default' },
62
+ containment: claudeContainment,
63
+ diagnose: diagnoseClaude,
68
64
  },
69
65
  };
70
66
  /** Normalize arbitrary casing and surrounding whitespace to a lower-case name. */
@@ -151,32 +147,21 @@ export function resolveAdapterModel(_adapterName, config) {
151
147
  }
152
148
  /** Resolve the Codex executable: explicit config, then `CODEX_PATH`, then `codex`. */
153
149
  export function resolveCodexBinary(config) {
154
- return lookupHarness('codex').executable((config ?? {})) ?? 'codex';
150
+ return codexExecutable(config);
155
151
  }
156
152
  /**
157
153
  * Resolve the Codex execution model: explicit `codex.model`, then `OSQ_MODEL`
158
154
  * only when Codex is the executor, otherwise `undefined` (native default).
159
155
  */
160
156
  export function resolveCodexModel(config) {
161
- return lookupHarness('codex').model((config ?? {}));
157
+ return codexModel(config, normalizeHarnessName(config?.harness ?? '') === 'codex');
162
158
  }
163
159
  /** Resolve the Codex reasoning effort override, or `undefined` for native defaults. */
164
160
  export function resolveCodexEffort(config) {
165
- return lookupHarness('codex').effort((config ?? {})) ?? undefined;
161
+ return config?.codex?.effort?.trim() || undefined;
166
162
  }
167
- /**
168
- * Resolve the Pi execution model: explicit `pi.model`, then `OSQ_MODEL` only
169
- * when Pi is the executor, otherwise `undefined` (Pi's native default).
170
- */
163
+ /** Resolve the Pi execution model with the selected-executor env fallback. */
171
164
  export function resolvePiModel(config) {
172
- const explicit = config?.pi?.model?.trim();
173
- if (explicit)
174
- return explicit;
175
- if (normalizeHarnessName(config?.harness ?? '') === 'pi') {
176
- const fromEnv = process.env.OSQ_MODEL?.trim();
177
- if (fromEnv)
178
- return fromEnv;
179
- }
180
- return undefined;
165
+ return piConfig.resolvePiModel(config, normalizeHarnessName(config?.harness ?? '') === 'pi');
181
166
  }
182
167
  //# sourceMappingURL=harness-catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"harness-catalog.js","sourceRoot":"","sources":["../../../src/core/foundation/harness-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-catalog.js","sourceRoot":"","sources":["../../../src/core/foundation/harness-catalog.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ export declare const EXECUTOR_EXIT_LINES: readonly string[];
21
21
  export declare const MANAGED_AGENTS_MD_BODY: string;
22
22
  /** @deprecated use {@link MANAGED_AGENTS_MD_BODY}; alias kept for existing importers. */
23
23
  export declare const MANAGED_AGENTS_BLOCK: string;
24
- export declare const MANAGED_PLANNER_BLOCK = "<!-- OSQ:START -->\n## Planning a change\n\nYou write the change folder; a cheaper executor runs it one task at a time,\nsees only what you wrote, and reads it literally.\n\n### Interactive planning\n\nWhen a human is in the session:\n\n1. Read `AGENTS.md`, the capability specs this change touches, and one recent\n archived change end to end.\n2. Reply with the parent spec, the task list (titles only), the capability specs\n this change will write, and any `## Human steps`. Stop there.\n3. Write the change folder only after the human approves the list.\n\n### Working from the handoff\n\nWhen `osq plan` started you, `plan-prompt.md` in the selected change folder is\nyour complete prompt; read it and follow it exactly.\n\n### Either way\n\n- Write only inside that change folder.\n- Run `osq lint <slug>` and fix every finding before you finish.\n- Never run `osq approve`; a human owns that gate.\n- Grep for what already exists; verify every version, flag, or API before use.\n- Write files with the file tool, never through a shell echo.\n\n### Tasks\n\n- One task per coherent unit. Title is \"When X, Y\".\n- Every task names its `scope` and `verify` (no TTY, no network). A task that changes a preexisting\n test sets `tests.modify: true` and lists that test in `scope`; every other preexisting test is\n frozen. `osq lint` enforces the configured limits on scope patterns and acceptance lines.\n- `osq init` and `osq new` seed `verify: node -e \"process.exit(0)\"` as a\n planning sentinel, not trusted coverage. `osq lint` rejects it; replace it\n before approval with a command that verifies the completed change's final tree.\n- Every task's `verify` exercises its slice through the real entry point, wiring included. If closing\n the loop requires a file outside the task's `scope`, the scope is wrong; widen it or merge the task.\n An executor result that says the work is outside its scope is a planning failure.\n- Every task's `verify` must stay re-runnable against the final tree of the\n completed change, because the watcher and archive recertification run it there after\n later tasks land. A command that passes only mid-change is a planning failure.\n- By default the watcher also runs the change-level `verify` after each task, and\n a red result kills that task. Every task must leave it green; tasks that pass\n only together are one task.\n- The watcher runs each task's `verify` once before the first attempt and expects\n it to fail. A task whose `verify` should already pass before any change, such as\n a refactor, declares `verify_starts: green`. A task whose `verify` names a test\n the task creates declares `verify_starts: red`; a new test file may share that\n verify with existing tests. `any` is only for a task that can honestly start\n either way.\n- A file belongs to one task. Before each later task, the watcher re-hashes the\n resolved `scope` of every done task; any change halts the change until a human\n runs `osq retry`. Globs resolve again at every audit, so a broad glob also\n captures files that later tasks create. When a later task must extend a file,\n order that later task after the owner, name the shared file in the proposal,\n and list the expected `osq retry` under `## Human steps`.\n- Task bodies carry acceptance lines and the names of existing code to reuse,\n without signature blocks, numbered implementation steps, or line numbers. Write\n full signatures only for ports.\n- Refer to functions and files by name, never by line number.\n\n### Parent spec\n\n- `## Goal`, then the change-level `verify` every proposal declares as the first\n thing written after the goal, then `## Non-goals` and the contract as\n requirements with scenarios.\n- `## Surface` follows `## Non-goals` and lists the user-facing names the change\n adds, changes, or removes: commands, flags, config keys, frontmatter fields,\n document sections, dead reasons, and event types. Write `None` when there are\n none; `osq lint` rejects a proposal without the section.\n- The delta is the exact text the capability spec will contain after the change,\n never an instruction to update something.\n- Anything a task must not do itself goes under `## Human steps`.\n<!-- OSQ:END -->";
24
+ export declare const MANAGED_PLANNER_BLOCK = "<!-- OSQ:START -->\n## Planning a change\n\nYou write the change folder; a cheaper executor runs it one task at a time,\nsees only what you wrote, and reads it literally.\n\n### Interactive planning\n\nWhen a human is in the session:\n\n1. Read `AGENTS.md`, the capability specs this change touches, and one recent\n archived change end to end.\n2. Write the change folder. Stop after the task list only when the human asks to\n review it first; then reply with the parent spec, the task list (titles only),\n the capability specs this change will write, and any `## Human steps`, and say\n the change folder is not written yet.\n\n### Working from the handoff\n\nWhen `osq plan` started you, `plan-prompt.md` in the selected change folder is\nyour complete prompt; read it and follow it exactly.\n\n### Either way\n\n- Write only inside that change folder.\n- Run `osq lint <slug>` and fix every finding before you finish.\n- Never run `osq approve`; a human owns that gate.\n- Finish by telling the human, in chat, the task titles, that the change folder\n is written and `osq lint` passes, and the exact `osq approve <id>` to run. The\n human should not approve before that message.\n- Grep for what already exists; verify every version, flag, or API before use.\n- Write files with the file tool, never through a shell echo.\n\n### Tasks\n\n- One task per coherent unit. Title is \"When X, Y\".\n- Every task names its `scope` and `verify` (no TTY, no network). A task that changes a preexisting\n test sets `tests.modify: true` and lists that test in `scope`; every other preexisting test is\n frozen. `osq lint` enforces the configured limits on scope patterns and acceptance lines.\n- `osq init` and `osq new` seed `verify: node -e \"process.exit(0)\"` as a\n planning sentinel, not trusted coverage. `osq lint` rejects it; replace it\n before approval with a command that verifies the completed change's final tree.\n- Every task's `verify` exercises its slice through the real entry point, wiring included. If closing\n the loop requires a file outside the task's `scope`, the scope is wrong; widen it or merge the task.\n An executor result that says the work is outside its scope is a planning failure.\n- Every task's `verify` must stay re-runnable against the final tree of the\n completed change, because the watcher and archive recertification run it there after\n later tasks land. A command that passes only mid-change is a planning failure.\n- By default the watcher also runs the change-level `verify` after each task, and\n a red result kills that task. Every task must leave it green; tasks that pass\n only together are one task.\n- The watcher runs each task's `verify` once before the first attempt and expects\n it to fail. A task whose `verify` should already pass before any change, such as\n a refactor, declares `verify_starts: green`. A task whose `verify` names a test\n the task creates declares `verify_starts: red`; a new test file may share that\n verify with existing tests. `any` is only for a task that can honestly start\n either way.\n- A file belongs to one task. Before each later task, the watcher re-hashes the\n resolved `scope` of every done task. When a later task must extend a file,\n order that later task after the owner, put the file in its `scope` too, and\n name the shared file in the proposal; the watcher then recertifies the owner\n by itself when the owner's `verify` still passes. Any other change to a done\n task's files halts the change until a human runs `osq retry`. Globs resolve again\n at every audit, so a broad glob also captures files that later tasks create.\n- Task bodies carry acceptance lines and the names of existing code to reuse,\n without signature blocks, numbered implementation steps, or line numbers. Write\n full signatures only for ports.\n- Refer to functions and files by name, never by line number.\n\n### Parent spec\n\n- `## Goal`, then the change-level `verify` every proposal declares as the first\n thing written after the goal, then `## Non-goals` and the contract as\n requirements with scenarios.\n- `## Surface` follows `## Non-goals` and lists the user-facing names the change\n adds, changes, or removes: commands, flags, config keys, frontmatter fields,\n document sections, dead reasons, and event types. Write `None` when there are\n none; `osq lint` rejects a proposal without the section.\n- `## Decisions` follows `## Surface`. Give one line per accepted ADR that\n governs a capability the change writes, saying what it means for this\n change, such as `ADR 009: the adapter is the only module that imports\n dockerode.` Name a system-wide ADR only to depart from it; AGENTS.md already\n carries its rule. A departure line starts `Departs from ADR <n>:` and gives\n the reason; a needed departure is a reason for a new ADR. Write `None` when\n no ADR governs the change. Repeat a rule in a task only when that task\n touches the area.\n- The delta is the exact text the capability spec will contain after the change,\n never an instruction to update something.\n- Anything a task must not do itself goes under `## Human steps`, which never\n includes `osq approve`.\n- Split `## Human steps` into `### Before approval` and `### After landing`, and\n write `None` under one with no steps. A step during the run, such as an\n expected `osq retry`, goes under Before approval. After-landing steps, or\n `check: <command>` in the proposal frontmatter, keep the change verification\n pending after it lands, and its dependents wait, until a human runs\n `osq verified <id> --passed` or `--failed`.\n- Guidance a task needs about another capability's code, such as how to test\n against it, goes into that capability's spec through a delta, not only into the\n task.\n- Replacing a requirement's behavior is a REMOVED requirement plus an ADDED one.\n A MODIFIED requirement must keep every scenario it already has; `osq lint` and\n archive refuse one that drops any.\n<!-- OSQ:END -->";
25
25
  /**
26
26
  * Canonical `.claude/commands/osq-plan.md` body. Claude expands `$ARGUMENTS`
27
27
  * with the slug the author passes, so the command resolves the change folder
@@ -1 +1 @@
1
- {"version":3,"file":"init-blocks.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/init-blocks.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,cAAc,qBAAqB,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAQ3C,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAQ/E,CAAC;AAEF,4FAA4F;AAC5F,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAQhD,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAyBjB,CAAC;AAEnB,yFAAyF;AACzF,eAAO,MAAM,oBAAoB,QAAyB,CAAC;AAE3D,eAAO,MAAM,qBAAqB,uqIA4EhB,CAAC;AAEnB;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,qWAStB,CAAC;AAEnB,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,QAAkD,CAAC"}
1
+ {"version":3,"file":"init-blocks.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/init-blocks.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AACrD,eAAO,MAAM,cAAc,qBAAqB,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAQ3C,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmB/E,CAAC;AAEF,4FAA4F;AAC5F,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAQhD,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAyBjB,CAAC;AAEnB,yFAAyF;AACzF,eAAO,MAAM,oBAAoB,QAAyB,CAAC;AAE3D,eAAO,MAAM,qBAAqB,+5LAsGhB,CAAC;AAEnB;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,qWAStB,CAAC;AAEnB,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,QAAkD,CAAC"}
@@ -7,8 +7,8 @@ export const OSQ_END_MARKER = '<!-- OSQ:END -->';
7
7
  */
8
8
  export const EXECUTOR_STEPS = [
9
9
  '1. Read your task file, its parent `proposal.md`, then only the delta specs and capability specs it names. Nothing else.',
10
- '2. Too big for one pass? Write why in `.run/results/<n>.md`, exit without code.',
11
- "3. Read a previous result file for this task if present. Run the task's `verify`. Start from what fails.",
10
+ "2. Can't finish within your task's `scope`, or too big for one pass? Write what you need under `## Blocked` in `.run/results/<n>.md`, and exit without code.",
11
+ "3. Read a previous result file for this task if present. Run the task's `verify`. Start from what fails. A `verify` that names a file your task creates fails until that file exists, so starting red is expected.",
12
12
  '4. Tests for each acceptance line before implementing.',
13
13
  "5. Minimal code to pass. Write only `.run/results/<n>.md` and files inside the task's `scope`; the task's `scope` wins over any other ownership rule you were given.",
14
14
  '6. New test files are always allowed. Change a preexisting test only when the task sets `tests.modify: true` and the file is inside `scope`; any other test change kills the task.',
@@ -17,10 +17,21 @@ export const EXECUTOR_STEPS = [
17
17
  /** The result-file headings and their purposes, in the order they must appear. */
18
18
  export const RESULT_HEADINGS = [
19
19
  { heading: '## Changed', purpose: 'what you changed.' },
20
- { heading: '## Deviated', purpose: 'where you departed from the task, and why.' },
20
+ {
21
+ heading: '## Deviated',
22
+ purpose: 'for the reviewer: what you did differently from the task, and why.',
23
+ },
21
24
  {
22
25
  heading: '## Missing context',
23
- purpose: 'what you needed that the task files did not give you.',
26
+ purpose: 'for the planner: what the task lacked that you needed.',
27
+ },
28
+ {
29
+ heading: '## Outside scope',
30
+ purpose: 'for the human: what you found broken outside your scope and left alone.',
31
+ },
32
+ {
33
+ heading: '## Blocked',
34
+ purpose: 'for the human: what you need before this task can be finished within its scope.',
24
35
  },
25
36
  { heading: '## Next', purpose: 'for unfinished work, the acceptance line to pick up next.' },
26
37
  ];
@@ -55,7 +66,7 @@ ${EXECUTOR_EXIT_LINES.join('\n')}
55
66
 
56
67
  - Living capability specs live under \`openspec/specs/\` as \`<capability>/spec.md\`. Never edit them; the watcher applies approved deltas at archive.
57
68
  - In-flight changes live under \`openspec/changes/<id>-<slug>/\`: \`proposal.md\`, delta specs as \`specs/<capability>/spec.md\`, and one \`tasks/<n>.md\` per task.
58
- - \`tasks.md\` and every file under \`.run/\` except your result file belong to the watcher and the human. Never edit them.
69
+ - Executors never edit \`tasks.md\` or any file under \`.run/\` except their result file; those belong to the watcher and the human. Planners write \`tasks.md\` and the task files.
59
70
  - Approval gate: only \`osq approve\`, run by a human, writes \`.run/approved\`. Verification gate: only the watcher's own \`verify\` run marks a task done.
60
71
 
61
72
  ## Planning a change
@@ -80,9 +91,10 @@ When a human is in the session:
80
91
 
81
92
  1. Read \`AGENTS.md\`, the capability specs this change touches, and one recent
82
93
  archived change end to end.
83
- 2. Reply with the parent spec, the task list (titles only), the capability specs
84
- this change will write, and any \`## Human steps\`. Stop there.
85
- 3. Write the change folder only after the human approves the list.
94
+ 2. Write the change folder. Stop after the task list only when the human asks to
95
+ review it first; then reply with the parent spec, the task list (titles only),
96
+ the capability specs this change will write, and any \`## Human steps\`, and say
97
+ the change folder is not written yet.
86
98
 
87
99
  ### Working from the handoff
88
100
 
@@ -94,6 +106,9 @@ your complete prompt; read it and follow it exactly.
94
106
  - Write only inside that change folder.
95
107
  - Run \`osq lint <slug>\` and fix every finding before you finish.
96
108
  - Never run \`osq approve\`; a human owns that gate.
109
+ - Finish by telling the human, in chat, the task titles, that the change folder
110
+ is written and \`osq lint\` passes, and the exact \`osq approve <id>\` to run. The
111
+ human should not approve before that message.
97
112
  - Grep for what already exists; verify every version, flag, or API before use.
98
113
  - Write files with the file tool, never through a shell echo.
99
114
 
@@ -122,11 +137,12 @@ your complete prompt; read it and follow it exactly.
122
137
  verify with existing tests. \`any\` is only for a task that can honestly start
123
138
  either way.
124
139
  - A file belongs to one task. Before each later task, the watcher re-hashes the
125
- resolved \`scope\` of every done task; any change halts the change until a human
126
- runs \`osq retry\`. Globs resolve again at every audit, so a broad glob also
127
- captures files that later tasks create. When a later task must extend a file,
128
- order that later task after the owner, name the shared file in the proposal,
129
- and list the expected \`osq retry\` under \`## Human steps\`.
140
+ resolved \`scope\` of every done task. When a later task must extend a file,
141
+ order that later task after the owner, put the file in its \`scope\` too, and
142
+ name the shared file in the proposal; the watcher then recertifies the owner
143
+ by itself when the owner's \`verify\` still passes. Any other change to a done
144
+ task's files halts the change until a human runs \`osq retry\`. Globs resolve again
145
+ at every audit, so a broad glob also captures files that later tasks create.
130
146
  - Task bodies carry acceptance lines and the names of existing code to reuse,
131
147
  without signature blocks, numbered implementation steps, or line numbers. Write
132
148
  full signatures only for ports.
@@ -141,9 +157,30 @@ your complete prompt; read it and follow it exactly.
141
157
  adds, changes, or removes: commands, flags, config keys, frontmatter fields,
142
158
  document sections, dead reasons, and event types. Write \`None\` when there are
143
159
  none; \`osq lint\` rejects a proposal without the section.
160
+ - \`## Decisions\` follows \`## Surface\`. Give one line per accepted ADR that
161
+ governs a capability the change writes, saying what it means for this
162
+ change, such as \`ADR 009: the adapter is the only module that imports
163
+ dockerode.\` Name a system-wide ADR only to depart from it; AGENTS.md already
164
+ carries its rule. A departure line starts \`Departs from ADR <n>:\` and gives
165
+ the reason; a needed departure is a reason for a new ADR. Write \`None\` when
166
+ no ADR governs the change. Repeat a rule in a task only when that task
167
+ touches the area.
144
168
  - The delta is the exact text the capability spec will contain after the change,
145
169
  never an instruction to update something.
146
- - Anything a task must not do itself goes under \`## Human steps\`.
170
+ - Anything a task must not do itself goes under \`## Human steps\`, which never
171
+ includes \`osq approve\`.
172
+ - Split \`## Human steps\` into \`### Before approval\` and \`### After landing\`, and
173
+ write \`None\` under one with no steps. A step during the run, such as an
174
+ expected \`osq retry\`, goes under Before approval. After-landing steps, or
175
+ \`check: <command>\` in the proposal frontmatter, keep the change verification
176
+ pending after it lands, and its dependents wait, until a human runs
177
+ \`osq verified <id> --passed\` or \`--failed\`.
178
+ - Guidance a task needs about another capability's code, such as how to test
179
+ against it, goes into that capability's spec through a delta, not only into the
180
+ task.
181
+ - Replacing a requirement's behavior is a REMOVED requirement plus an ADDED one.
182
+ A MODIFIED requirement must keep every scenario it already has; \`osq lint\` and
183
+ archive refuse one that drops any.
147
184
  ${OSQ_END_MARKER}`;
148
185
  /**
149
186
  * Canonical `.claude/commands/osq-plan.md` body. Claude expands `$ARGUMENTS`