@intentius/chant 0.101.0 → 0.104.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 (739) hide show
  1. package/dist/agents/checks.d.ts.map +1 -1
  2. package/dist/attrref.d.ts.map +1 -1
  3. package/dist/audit/core.d.ts +2 -0
  4. package/dist/audit/core.d.ts.map +1 -1
  5. package/dist/audit/discover.d.ts.map +1 -1
  6. package/dist/audit/nginx.d.ts.map +1 -1
  7. package/dist/audit/prior-art.d.ts +48 -0
  8. package/dist/audit/prior-art.d.ts.map +1 -1
  9. package/dist/behaviour-kinds.d.ts.map +1 -1
  10. package/dist/builder.d.ts.map +1 -1
  11. package/dist/change-set.d.ts +232 -0
  12. package/dist/change-set.d.ts.map +1 -0
  13. package/dist/cli/commands/audit.d.ts +7 -0
  14. package/dist/cli/commands/audit.d.ts.map +1 -1
  15. package/dist/cli/commands/build.d.ts.map +1 -1
  16. package/dist/cli/commands/carve-emit.d.ts.map +1 -1
  17. package/dist/cli/commands/check-lexicon.d.ts +16 -0
  18. package/dist/cli/commands/check-lexicon.d.ts.map +1 -1
  19. package/dist/cli/commands/import.d.ts +8 -0
  20. package/dist/cli/commands/import.d.ts.map +1 -1
  21. package/dist/cli/commands/init-lexicon.d.ts.map +1 -1
  22. package/dist/cli/commands/init.d.ts +19 -0
  23. package/dist/cli/commands/init.d.ts.map +1 -1
  24. package/dist/cli/commands/onboard.d.ts +9 -0
  25. package/dist/cli/commands/onboard.d.ts.map +1 -1
  26. package/dist/cli/commands/pinned-upgrade.d.ts +19 -5
  27. package/dist/cli/commands/pinned-upgrade.d.ts.map +1 -1
  28. package/dist/cli/handlers/build.d.ts.map +1 -1
  29. package/dist/cli/handlers/change-set.d.ts +11 -0
  30. package/dist/cli/handlers/change-set.d.ts.map +1 -0
  31. package/dist/cli/handlers/dev.d.ts.map +1 -1
  32. package/dist/cli/handlers/fan-out.d.ts +33 -0
  33. package/dist/cli/handlers/fan-out.d.ts.map +1 -1
  34. package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
  35. package/dist/cli/handlers/misc.d.ts.map +1 -1
  36. package/dist/cli/handlers/operator.d.ts +16 -0
  37. package/dist/cli/handlers/operator.d.ts.map +1 -1
  38. package/dist/cli/handlers/pr.d.ts +31 -0
  39. package/dist/cli/handlers/pr.d.ts.map +1 -0
  40. package/dist/cli/handlers/run.d.ts.map +1 -1
  41. package/dist/cli/lsp/server.d.ts.map +1 -1
  42. package/dist/cli/main.d.ts.map +1 -1
  43. package/dist/cli/mcp/op-tools.d.ts.map +1 -1
  44. package/dist/cli/mcp/server.d.ts.map +1 -1
  45. package/dist/cli/mcp/tools/build.d.ts.map +1 -1
  46. package/dist/cli/mcp/tools/composites.d.ts.map +1 -1
  47. package/dist/cli/mcp/tools/explain.d.ts.map +1 -1
  48. package/dist/cli/mcp/tools/import.d.ts.map +1 -1
  49. package/dist/cli/mcp/tools/lint.d.ts.map +1 -1
  50. package/dist/cli/mcp/tools/scaffold.d.ts.map +1 -1
  51. package/dist/cli/mcp/tools/search.d.ts.map +1 -1
  52. package/dist/cli/mcp/workspace-tools.d.ts +4 -3
  53. package/dist/cli/mcp/workspace-tools.d.ts.map +1 -1
  54. package/dist/cli/registry.d.ts +74 -3
  55. package/dist/cli/registry.d.ts.map +1 -1
  56. package/dist/codegen/fetch.d.ts.map +1 -1
  57. package/dist/codegen/naming.d.ts.map +1 -1
  58. package/dist/codegen/pinned-upgrade.d.ts +67 -3
  59. package/dist/codegen/pinned-upgrade.d.ts.map +1 -1
  60. package/dist/codegen/registry.d.ts.map +1 -1
  61. package/dist/components/auto-release.d.ts +16 -0
  62. package/dist/components/auto-release.d.ts.map +1 -1
  63. package/dist/components/capability-plugin-loader.d.ts.map +1 -1
  64. package/dist/components/capability.d.ts +53 -0
  65. package/dist/components/capability.d.ts.map +1 -1
  66. package/dist/components/changed-files.d.ts +31 -0
  67. package/dist/components/changed-files.d.ts.map +1 -0
  68. package/dist/components/cli-support.d.ts +9 -1
  69. package/dist/components/cli-support.d.ts.map +1 -1
  70. package/dist/components/component.d.ts +24 -0
  71. package/dist/components/component.d.ts.map +1 -1
  72. package/dist/components/deploy-units.d.ts.map +1 -1
  73. package/dist/components/driver.d.ts +13 -0
  74. package/dist/components/driver.d.ts.map +1 -1
  75. package/dist/components/fan-out-output.d.ts +6 -0
  76. package/dist/components/fan-out-output.d.ts.map +1 -1
  77. package/dist/components/fan-out-record.d.ts +41 -0
  78. package/dist/components/fan-out-record.d.ts.map +1 -0
  79. package/dist/components/fan-out-run.d.ts +65 -0
  80. package/dist/components/fan-out-run.d.ts.map +1 -1
  81. package/dist/components/fan-out-support.d.ts +2 -0
  82. package/dist/components/fan-out-support.d.ts.map +1 -1
  83. package/dist/components/fan-out.d.ts +6 -0
  84. package/dist/components/fan-out.d.ts.map +1 -1
  85. package/dist/components/gated-wave-pipeline.d.ts +50 -0
  86. package/dist/components/gated-wave-pipeline.d.ts.map +1 -0
  87. package/dist/components/index.d.ts +1 -1
  88. package/dist/components/index.d.ts.map +1 -1
  89. package/dist/components/layers.d.ts +25 -0
  90. package/dist/components/layers.d.ts.map +1 -0
  91. package/dist/components/pr-pipeline.d.ts +61 -0
  92. package/dist/components/pr-pipeline.d.ts.map +1 -0
  93. package/dist/components/pr-run.d.ts +119 -0
  94. package/dist/components/pr-run.d.ts.map +1 -0
  95. package/dist/components/promote.d.ts.map +1 -1
  96. package/dist/components/starter-plugin.d.ts.map +1 -1
  97. package/dist/components/verbs/process-runner.d.ts.map +1 -1
  98. package/dist/components/verbs/r2-sync.d.ts.map +1 -1
  99. package/dist/components/verbs/run-agent.d.ts.map +1 -1
  100. package/dist/components/verbs/sbom-generator.d.ts.map +1 -1
  101. package/dist/components/verbs/shell.d.ts.map +1 -1
  102. package/dist/components/verbs/sign.d.ts.map +1 -1
  103. package/dist/components/verbs/verify.d.ts.map +1 -1
  104. package/dist/components/verbs/vuln-gate.d.ts.map +1 -1
  105. package/dist/components/verbs/vuln-scan.d.ts.map +1 -1
  106. package/dist/components/verbs/wrangler.d.ts.map +1 -1
  107. package/dist/components/wave-plan.d.ts +49 -0
  108. package/dist/components/wave-plan.d.ts.map +1 -0
  109. package/dist/composite.d.ts.map +1 -1
  110. package/dist/config.d.ts +19 -7
  111. package/dist/config.d.ts.map +1 -1
  112. package/dist/declarable.d.ts +16 -0
  113. package/dist/declarable.d.ts.map +1 -1
  114. package/dist/discovery/cache.d.ts.map +1 -1
  115. package/dist/discovery/fold-import.d.ts +15 -5
  116. package/dist/discovery/fold-import.d.ts.map +1 -1
  117. package/dist/discovery/param-deps.d.ts +16 -0
  118. package/dist/discovery/param-deps.d.ts.map +1 -1
  119. package/dist/discovery/sandbox/policy-wire.d.ts.map +1 -1
  120. package/dist/discovery/specifier-resolve.d.ts +37 -0
  121. package/dist/discovery/specifier-resolve.d.ts.map +1 -0
  122. package/dist/errors.d.ts.map +1 -1
  123. package/dist/fold/fold.d.ts +3 -1
  124. package/dist/fold/fold.d.ts.map +1 -1
  125. package/dist/gated-waves.d.ts +147 -0
  126. package/dist/gated-waves.d.ts.map +1 -0
  127. package/dist/graph-detail.d.ts.map +1 -1
  128. package/dist/graph-ir.d.ts.map +1 -1
  129. package/dist/graph-layout.d.ts.map +1 -1
  130. package/dist/import/base-parser.d.ts.map +1 -1
  131. package/dist/import/embedded.d.ts +7 -0
  132. package/dist/import/embedded.d.ts.map +1 -1
  133. package/dist/import/parser-options.d.ts +14 -0
  134. package/dist/import/parser-options.d.ts.map +1 -0
  135. package/dist/import/parser.d.ts +17 -0
  136. package/dist/import/parser.d.ts.map +1 -1
  137. package/dist/index.d.ts +1 -0
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/kubectl-context.d.ts.map +1 -1
  140. package/dist/lexicon-output.d.ts.map +1 -1
  141. package/dist/lexicon-schema.d.ts +3 -3
  142. package/dist/lexicon.d.ts +103 -3
  143. package/dist/lexicon.d.ts.map +1 -1
  144. package/dist/lifecycle/assert-live.d.ts.map +1 -1
  145. package/dist/lifecycle/gate-ledger.d.ts +22 -0
  146. package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
  147. package/dist/lifecycle/git.d.ts +46 -1
  148. package/dist/lifecycle/git.d.ts.map +1 -1
  149. package/dist/lifecycle/member-ledger.d.ts.map +1 -1
  150. package/dist/lifecycle/observe.d.ts.map +1 -1
  151. package/dist/lifecycle/plan-ledger.d.ts.map +1 -1
  152. package/dist/lifecycle/release-ledger.d.ts.map +1 -1
  153. package/dist/lifecycle/scenario.d.ts.map +1 -1
  154. package/dist/lifecycle/status.d.ts.map +1 -1
  155. package/dist/lifecycle/work-lease.d.ts +61 -2
  156. package/dist/lifecycle/work-lease.d.ts.map +1 -1
  157. package/dist/lint/config.d.ts +8 -8
  158. package/dist/lint/engine.d.ts +6 -0
  159. package/dist/lint/engine.d.ts.map +1 -1
  160. package/dist/lint/post-synth.d.ts +18 -0
  161. package/dist/lint/post-synth.d.ts.map +1 -1
  162. package/dist/lsp/lexicon-providers.d.ts.map +1 -1
  163. package/dist/op/activities/activity-contracts.d.ts +137 -11
  164. package/dist/op/activities/activity-contracts.d.ts.map +1 -1
  165. package/dist/op/activities/apply.d.ts +79 -9
  166. package/dist/op/activities/apply.d.ts.map +1 -1
  167. package/dist/op/activities/change-set.d.ts +62 -0
  168. package/dist/op/activities/change-set.d.ts.map +1 -0
  169. package/dist/op/activities/decide.d.ts +2 -0
  170. package/dist/op/activities/decide.d.ts.map +1 -1
  171. package/dist/op/activities/factory.d.ts +137 -0
  172. package/dist/op/activities/factory.d.ts.map +1 -0
  173. package/dist/op/activities/index.d.ts +5 -1
  174. package/dist/op/activities/index.d.ts.map +1 -1
  175. package/dist/op/activities/lexicon-upgrade.d.ts +44 -12
  176. package/dist/op/activities/lexicon-upgrade.d.ts.map +1 -1
  177. package/dist/op/activity-contract.d.ts +1 -1
  178. package/dist/op/activity-contract.d.ts.map +1 -1
  179. package/dist/op/activity-failure.d.ts.map +1 -1
  180. package/dist/op/activity-profiles.d.ts.map +1 -1
  181. package/dist/op/builders.d.ts +11 -0
  182. package/dist/op/builders.d.ts.map +1 -1
  183. package/dist/op/composites/apply-op.d.ts +12 -5
  184. package/dist/op/composites/apply-op.d.ts.map +1 -1
  185. package/dist/op/composites/lexicon-upgrade-op.d.ts +22 -6
  186. package/dist/op/composites/lexicon-upgrade-op.d.ts.map +1 -1
  187. package/dist/op/decide-backend.d.ts +5 -1
  188. package/dist/op/decide-backend.d.ts.map +1 -1
  189. package/dist/op/decide-read-inputs.d.ts +4 -2
  190. package/dist/op/decide-read-inputs.d.ts.map +1 -1
  191. package/dist/op/emulator-lifecycle.d.ts +21 -2
  192. package/dist/op/emulator-lifecycle.d.ts.map +1 -1
  193. package/dist/op/factory.d.ts +83 -0
  194. package/dist/op/factory.d.ts.map +1 -0
  195. package/dist/op/gate-approval.d.ts +5 -1
  196. package/dist/op/gate-approval.d.ts.map +1 -1
  197. package/dist/op/gate-wait.d.ts.map +1 -1
  198. package/dist/op/gate.d.ts +19 -3
  199. package/dist/op/gate.d.ts.map +1 -1
  200. package/dist/op/index.d.ts +6 -1
  201. package/dist/op/index.d.ts.map +1 -1
  202. package/dist/op/local-executor.d.ts +6 -0
  203. package/dist/op/local-executor.d.ts.map +1 -1
  204. package/dist/op/op-ir.d.ts +2 -0
  205. package/dist/op/op-ir.d.ts.map +1 -1
  206. package/dist/op/op-verb-class.d.ts.map +1 -1
  207. package/dist/op/operator.d.ts.map +1 -1
  208. package/dist/op/run-context.d.ts +39 -0
  209. package/dist/op/run-context.d.ts.map +1 -0
  210. package/dist/op/run-live.d.ts.map +1 -1
  211. package/dist/op/runtimes/local.d.ts.map +1 -1
  212. package/dist/op/source-archive.d.ts.map +1 -1
  213. package/dist/op/steward-beside.d.ts.map +1 -1
  214. package/dist/op/steward-points.d.ts.map +1 -1
  215. package/dist/op/steward.d.ts.map +1 -1
  216. package/dist/op/types.d.ts +16 -3
  217. package/dist/op/types.d.ts.map +1 -1
  218. package/dist/op/work-lease-run.d.ts +24 -4
  219. package/dist/op/work-lease-run.d.ts.map +1 -1
  220. package/dist/plan-summary.d.ts +207 -0
  221. package/dist/plan-summary.d.ts.map +1 -0
  222. package/dist/pr-forge.d.ts +105 -0
  223. package/dist/pr-forge.d.ts.map +1 -0
  224. package/dist/pr-loop.d.ts +178 -0
  225. package/dist/pr-loop.d.ts.map +1 -0
  226. package/dist/project-root.d.ts.map +1 -1
  227. package/dist/provenance.d.ts +21 -0
  228. package/dist/provenance.d.ts.map +1 -1
  229. package/dist/pseudo-parameter.d.ts.map +1 -1
  230. package/dist/reconcile.d.ts.map +1 -1
  231. package/dist/secret-materialization.d.ts.map +1 -1
  232. package/dist/telemetry-attribution.d.ts +31 -0
  233. package/dist/telemetry-attribution.d.ts.map +1 -1
  234. package/dist/terraform/emit-source.d.ts.map +1 -1
  235. package/dist/terraform/hcl2json.d.ts +45 -0
  236. package/dist/terraform/hcl2json.d.ts.map +1 -0
  237. package/dist/terraform/parse.d.ts +4 -40
  238. package/dist/terraform/parse.d.ts.map +1 -1
  239. package/dist/testing.d.ts.map +1 -1
  240. package/dist/workspace/__fixtures__/contract-repo.d.ts.map +1 -1
  241. package/dist/workspace/__fixtures__/decide-workspace.d.ts +1 -1
  242. package/dist/workspace/__fixtures__/decide-workspace.d.ts.map +1 -1
  243. package/dist/workspace/agent-cli.d.ts +5 -0
  244. package/dist/workspace/agent-cli.d.ts.map +1 -1
  245. package/dist/workspace/box-cli.d.ts +12 -0
  246. package/dist/workspace/box-cli.d.ts.map +1 -0
  247. package/dist/workspace/box-factory.d.ts +97 -0
  248. package/dist/workspace/box-factory.d.ts.map +1 -0
  249. package/dist/workspace/box-listing.d.ts +85 -0
  250. package/dist/workspace/box-listing.d.ts.map +1 -0
  251. package/dist/workspace/box-publish.d.ts +147 -0
  252. package/dist/workspace/box-publish.d.ts.map +1 -0
  253. package/dist/workspace/broker-protocol.d.ts +190 -0
  254. package/dist/workspace/broker-protocol.d.ts.map +1 -0
  255. package/dist/workspace/changes.d.ts.map +1 -1
  256. package/dist/workspace/chant-migrations/chud-lexicon-exit.d.ts.map +1 -1
  257. package/dist/workspace/checks/boxes.d.ts.map +1 -1
  258. package/dist/workspace/checks.d.ts +5 -0
  259. package/dist/workspace/checks.d.ts.map +1 -1
  260. package/dist/workspace/compose-graph.d.ts +10 -0
  261. package/dist/workspace/compose-graph.d.ts.map +1 -1
  262. package/dist/workspace/composites.d.ts +2 -2
  263. package/dist/workspace/composites.d.ts.map +1 -1
  264. package/dist/workspace/conformance/__fixtures__/reference-broker.d.ts +17 -0
  265. package/dist/workspace/conformance/__fixtures__/reference-broker.d.ts.map +1 -0
  266. package/dist/workspace/conformance/broker.d.ts +202 -0
  267. package/dist/workspace/conformance/broker.d.ts.map +1 -0
  268. package/dist/workspace/conformance/index.d.ts +68 -6
  269. package/dist/workspace/conformance/index.d.ts.map +1 -1
  270. package/dist/workspace/conformance/vitest.d.ts +19 -3
  271. package/dist/workspace/conformance/vitest.d.ts.map +1 -1
  272. package/dist/workspace/conformance/writer.d.ts +462 -0
  273. package/dist/workspace/conformance/writer.d.ts.map +1 -0
  274. package/dist/workspace/decide.d.ts +126 -12
  275. package/dist/workspace/decide.d.ts.map +1 -1
  276. package/dist/workspace/decision-points.schema.json +11 -4
  277. package/dist/workspace/declaration.d.ts +156 -4
  278. package/dist/workspace/declaration.d.ts.map +1 -1
  279. package/dist/workspace/declaration.schema.json +383 -5
  280. package/dist/workspace/environments.d.ts +36 -10
  281. package/dist/workspace/environments.d.ts.map +1 -1
  282. package/dist/workspace/factory-rules.d.ts +180 -0
  283. package/dist/workspace/factory-rules.d.ts.map +1 -0
  284. package/dist/workspace/generated-files.d.ts.map +1 -1
  285. package/dist/workspace/graph-cache.d.ts.map +1 -1
  286. package/dist/workspace/graph-cli.d.ts +2 -0
  287. package/dist/workspace/graph-cli.d.ts.map +1 -1
  288. package/dist/workspace/identity.d.ts +111 -0
  289. package/dist/workspace/identity.d.ts.map +1 -0
  290. package/dist/workspace/init.d.ts +21 -0
  291. package/dist/workspace/init.d.ts.map +1 -1
  292. package/dist/workspace/intent-cli.d.ts +7 -4
  293. package/dist/workspace/intent-cli.d.ts.map +1 -1
  294. package/dist/workspace/intent-record.d.ts +36 -2
  295. package/dist/workspace/intent-record.d.ts.map +1 -1
  296. package/dist/workspace/intent.d.ts +249 -8
  297. package/dist/workspace/intent.d.ts.map +1 -1
  298. package/dist/workspace/json-edit.d.ts +24 -0
  299. package/dist/workspace/json-edit.d.ts.map +1 -0
  300. package/dist/workspace/jsonc.d.ts +11 -0
  301. package/dist/workspace/jsonc.d.ts.map +1 -1
  302. package/dist/workspace/kinds.d.ts +66 -4
  303. package/dist/workspace/kinds.d.ts.map +1 -1
  304. package/dist/workspace/lexicon-symbols.d.ts +29 -0
  305. package/dist/workspace/lexicon-symbols.d.ts.map +1 -0
  306. package/dist/workspace/lineage-hash-index.d.ts.map +1 -1
  307. package/dist/workspace/lineage-lock.d.ts +2 -2
  308. package/dist/workspace/lineage-lock.d.ts.map +1 -1
  309. package/dist/workspace/lineage-upgrade.d.ts +31 -2
  310. package/dist/workspace/lineage-upgrade.d.ts.map +1 -1
  311. package/dist/workspace/links.d.ts.map +1 -1
  312. package/dist/workspace/point-answer.schema.json +42 -2
  313. package/dist/workspace/points-cli.d.ts +10 -3
  314. package/dist/workspace/points-cli.d.ts.map +1 -1
  315. package/dist/workspace/points.d.ts +66 -5
  316. package/dist/workspace/points.d.ts.map +1 -1
  317. package/dist/workspace/principal-classes.d.ts +114 -0
  318. package/dist/workspace/principal-classes.d.ts.map +1 -0
  319. package/dist/workspace/reason-codes.d.ts +53 -4
  320. package/dist/workspace/reason-codes.d.ts.map +1 -1
  321. package/dist/workspace/record-assets.d.ts.map +1 -1
  322. package/dist/workspace/record-sessions.d.ts +5 -7
  323. package/dist/workspace/record-sessions.d.ts.map +1 -1
  324. package/dist/workspace/records-checkout.d.ts +54 -0
  325. package/dist/workspace/records-checkout.d.ts.map +1 -0
  326. package/dist/workspace/records-cli.d.ts +34 -1
  327. package/dist/workspace/records-cli.d.ts.map +1 -1
  328. package/dist/workspace/records-close.d.ts +7 -3
  329. package/dist/workspace/records-close.d.ts.map +1 -1
  330. package/dist/workspace/records-since.d.ts.map +1 -1
  331. package/dist/workspace/records-write.d.ts +68 -7
  332. package/dist/workspace/records-write.d.ts.map +1 -1
  333. package/dist/workspace/records.d.ts +43 -9
  334. package/dist/workspace/records.d.ts.map +1 -1
  335. package/dist/workspace/runs-cli.d.ts +296 -0
  336. package/dist/workspace/runs-cli.d.ts.map +1 -0
  337. package/dist/workspace/runs.d.ts +544 -0
  338. package/dist/workspace/runs.d.ts.map +1 -0
  339. package/dist/workspace/session-kinds.d.ts +1 -1
  340. package/dist/workspace/session-kinds.d.ts.map +1 -1
  341. package/dist/workspace/source-block.d.ts +1 -1
  342. package/dist/workspace/source-block.d.ts.map +1 -1
  343. package/dist/workspace/squash.d.ts +80 -0
  344. package/dist/workspace/squash.d.ts.map +1 -0
  345. package/dist/workspace/status-gates.d.ts +17 -3
  346. package/dist/workspace/status-gates.d.ts.map +1 -1
  347. package/dist/workspace/status.d.ts +64 -0
  348. package/dist/workspace/status.d.ts.map +1 -1
  349. package/dist/workspace/symbols.d.ts +63 -0
  350. package/dist/workspace/symbols.d.ts.map +1 -0
  351. package/dist/workspace/trailer-joins.d.ts +46 -0
  352. package/dist/workspace/trailer-joins.d.ts.map +1 -0
  353. package/dist/workspace/trailers.d.ts +89 -0
  354. package/dist/workspace/trailers.d.ts.map +1 -0
  355. package/dist/workspace/trust/attestor.d.ts.map +1 -1
  356. package/dist/workspace/trust/rotation.d.ts.map +1 -1
  357. package/dist/workspace/trust/run-commits.d.ts +46 -0
  358. package/dist/workspace/trust/run-commits.d.ts.map +1 -0
  359. package/dist/workspace/trust/run-statement.d.ts +128 -0
  360. package/dist/workspace/trust/run-statement.d.ts.map +1 -0
  361. package/dist/workspace/trust/seal.d.ts +38 -0
  362. package/dist/workspace/trust/seal.d.ts.map +1 -1
  363. package/dist/workspace/trust/test-repo.d.ts.map +1 -1
  364. package/dist/workspace/trust/verify-cli.d.ts +1 -1
  365. package/dist/workspace/trust/verify.d.ts +16 -2
  366. package/dist/workspace/trust/verify.d.ts.map +1 -1
  367. package/dist/workspace/wip-cli.d.ts +21 -0
  368. package/dist/workspace/wip-cli.d.ts.map +1 -0
  369. package/dist/workspace/wip.d.ts +268 -0
  370. package/dist/workspace/wip.d.ts.map +1 -0
  371. package/dist/workspace/work-cli.d.ts +39 -3
  372. package/dist/workspace/work-cli.d.ts.map +1 -1
  373. package/dist/workspace/work-evidence.d.ts +1 -1
  374. package/dist/workspace/work-evidence.d.ts.map +1 -1
  375. package/dist/workspace/work-size.d.ts +55 -0
  376. package/dist/workspace/work-size.d.ts.map +1 -0
  377. package/dist/workspace/work.d.ts +26 -1
  378. package/dist/workspace/work.d.ts.map +1 -1
  379. package/dist/workspace/workspace-kinds.schema.json +122 -0
  380. package/dist/workspace/workspace-principals.schema.json +60 -0
  381. package/dist/workspace/write-lock-cli.d.ts +60 -0
  382. package/dist/workspace/write-lock-cli.d.ts.map +1 -0
  383. package/dist/workspace/write-lock.d.ts +152 -0
  384. package/dist/workspace/write-lock.d.ts.map +1 -0
  385. package/dist/workspace/write-scope.d.ts +83 -19
  386. package/dist/workspace/write-scope.d.ts.map +1 -1
  387. package/dist/yaml.d.ts +21 -39
  388. package/dist/yaml.d.ts.map +1 -1
  389. package/package.json +7 -2
  390. package/src/__fixtures__/change-set/lifecycle-plan.floci.json +59 -0
  391. package/src/__fixtures__/change-set/lifecycle-v1.ts.txt +4 -0
  392. package/src/__fixtures__/change-set/lifecycle-v2.ts.txt +4 -0
  393. package/src/__fixtures__/change-set/lifecycle.change-set.golden.json +95 -0
  394. package/src/__fixtures__/change-set/warden.change-set.golden.json +106 -0
  395. package/src/__fixtures__/change-set/warden.plan.json +44 -0
  396. package/src/__fixtures__/plan-summary/normalization-vectors.json +1593 -0
  397. package/src/__fixtures__/pr-loop/pr-apply-applied.note.golden.md +31 -0
  398. package/src/__fixtures__/pr-loop/pr-apply-refused.note.golden.md +31 -0
  399. package/src/__fixtures__/pr-loop/pr-plan.golden.json +127 -0
  400. package/src/__fixtures__/pr-loop/pr-plan.note.golden.md +37 -0
  401. package/src/audit/core.test.ts +15 -0
  402. package/src/audit/core.ts +8 -2
  403. package/src/audit/discover.test.ts +11 -0
  404. package/src/audit/discover.ts +7 -2
  405. package/src/audit/prior-art.ts +15 -0
  406. package/src/change-set-bundle.test.ts +57 -0
  407. package/src/change-set.test.ts +215 -0
  408. package/src/change-set.ts +445 -0
  409. package/src/cli/commands/__fixtures__/init-lexicon-output/package.json +1 -1
  410. package/src/cli/commands/audit-opt-in.test.ts +54 -0
  411. package/src/cli/commands/audit.ts +29 -2
  412. package/src/cli/commands/build.test.ts +19 -0
  413. package/src/cli/commands/build.ts +3 -2
  414. package/src/cli/commands/carve-emit-state.test.ts +4 -0
  415. package/src/cli/commands/carve-emit.ts +5 -19
  416. package/src/cli/commands/check-lexicon.test.ts +62 -1
  417. package/src/cli/commands/check-lexicon.ts +36 -6
  418. package/src/cli/commands/import-live.test.ts +18 -0
  419. package/src/cli/commands/import-parser-options.test.ts +133 -0
  420. package/src/cli/commands/import.ts +21 -3
  421. package/src/cli/commands/init-lexicon/templates/project.ts +1 -1
  422. package/src/cli/commands/init.test.ts +8 -1
  423. package/src/cli/commands/init.ts +23 -8
  424. package/src/cli/commands/lint.test.ts +37 -0
  425. package/src/cli/commands/onboard.test.ts +53 -3
  426. package/src/cli/commands/onboard.ts +52 -4
  427. package/src/cli/commands/pinned-upgrade.ts +73 -33
  428. package/src/cli/handlers/__snapshots__/build-member.test.ts.snap +2 -2
  429. package/src/cli/handlers/build.ts +13 -1
  430. package/src/cli/handlers/change-set.test.ts +56 -0
  431. package/src/cli/handlers/change-set.ts +44 -0
  432. package/src/cli/handlers/components.ts +2 -2
  433. package/src/cli/handlers/dev.ts +8 -6
  434. package/src/cli/handlers/fan-out.test.ts +221 -2
  435. package/src/cli/handlers/fan-out.ts +165 -75
  436. package/src/cli/handlers/graph.ts +3 -0
  437. package/src/cli/handlers/lifecycle.test.ts +67 -0
  438. package/src/cli/handlers/lifecycle.ts +6 -5
  439. package/src/cli/handlers/misc.ts +2 -0
  440. package/src/cli/handlers/operator.test.ts +21 -0
  441. package/src/cli/handlers/operator.ts +121 -6
  442. package/src/cli/handlers/pr.ts +373 -0
  443. package/src/cli/handlers/run.test.ts +111 -0
  444. package/src/cli/handlers/run.ts +86 -24
  445. package/src/cli/handlers/scenario.ts +2 -2
  446. package/src/cli/main.test.ts +21 -0
  447. package/src/cli/main.ts +246 -30
  448. package/src/cli/mcp/never-over-mcp.test.ts +101 -0
  449. package/src/cli/mcp/op-tools.ts +24 -2
  450. package/src/cli/mcp/workspace-tools.test.ts +5 -2
  451. package/src/cli/mcp/workspace-tools.ts +62 -7
  452. package/src/cli/registry.ts +74 -3
  453. package/src/codegen/pinned-upgrade-multi.test.ts +157 -0
  454. package/src/codegen/pinned-upgrade-tags.test.ts +112 -0
  455. package/src/codegen/pinned-upgrade.test.ts +104 -0
  456. package/src/codegen/pinned-upgrade.ts +250 -56
  457. package/src/codegen/testdata/postgres-tags.json +242 -0
  458. package/src/components/auto-release.ts +1 -1
  459. package/src/components/capability.ts +55 -0
  460. package/src/components/changed-files.ts +66 -0
  461. package/src/components/cli-support.ts +28 -5
  462. package/src/components/component.schema.json +17 -0
  463. package/src/components/component.ts +25 -0
  464. package/src/components/deploy-units.ts +3 -0
  465. package/src/components/driver.test.ts +52 -0
  466. package/src/components/driver.ts +31 -13
  467. package/src/components/fan-out-output.ts +42 -1
  468. package/src/components/fan-out-record.ts +69 -0
  469. package/src/components/fan-out-run.test.ts +17 -0
  470. package/src/components/fan-out-run.ts +304 -1
  471. package/src/components/fan-out-support.ts +3 -0
  472. package/src/components/fan-out-waves.test.ts +375 -0
  473. package/src/components/fan-out.ts +18 -17
  474. package/src/components/gated-wave-pipeline.ts +82 -0
  475. package/src/components/index.ts +1 -0
  476. package/src/components/layers.ts +30 -0
  477. package/src/components/pr-pipeline.ts +91 -0
  478. package/src/components/pr-run.test.ts +205 -0
  479. package/src/components/pr-run.ts +280 -0
  480. package/src/components/promote.ts +5 -0
  481. package/src/components/verbs/shell.test.ts +11 -0
  482. package/src/components/verbs/shell.ts +7 -3
  483. package/src/components/wave-plan.ts +124 -0
  484. package/src/config.test.ts +21 -0
  485. package/src/config.ts +15 -0
  486. package/src/declarable.test.ts +21 -0
  487. package/src/declarable.ts +19 -0
  488. package/src/discovery/fold-composite.test.ts +41 -5
  489. package/src/discovery/fold-import.test.ts +129 -0
  490. package/src/discovery/fold-import.ts +643 -131
  491. package/src/discovery/fold-package-composite.test.ts +264 -0
  492. package/src/discovery/fold-specifiers.test.ts +191 -0
  493. package/src/discovery/param-deps.test.ts +66 -1
  494. package/src/discovery/param-deps.ts +45 -0
  495. package/src/discovery/sandbox/bundle.ts +1 -1
  496. package/src/discovery/specifier-resolve.ts +344 -0
  497. package/src/fold/fold.test.ts +39 -1
  498. package/src/fold/fold.ts +83 -9
  499. package/src/fold-provenance.test.ts +140 -0
  500. package/src/gated-waves-bundle.test.ts +62 -0
  501. package/src/gated-waves.test.ts +118 -0
  502. package/src/gated-waves.ts +240 -0
  503. package/src/graph-ir.test.ts +83 -0
  504. package/src/graph-ir.ts +29 -0
  505. package/src/import/embedded.test.ts +20 -0
  506. package/src/import/embedded.ts +13 -0
  507. package/src/import/parser-options.ts +46 -0
  508. package/src/import/parser.ts +20 -0
  509. package/src/index.ts +1 -0
  510. package/src/lexicon.ts +106 -3
  511. package/src/lifecycle/gate-ledger.ts +23 -0
  512. package/src/lifecycle/git.ts +102 -16
  513. package/src/lifecycle/observe.test.ts +18 -0
  514. package/src/lifecycle/observe.ts +6 -4
  515. package/src/lifecycle/snapshot.ts +2 -2
  516. package/src/lifecycle/work-lease.test.ts +1 -1
  517. package/src/lifecycle/work-lease.ts +93 -2
  518. package/src/lint/engine.test.ts +55 -0
  519. package/src/lint/engine.ts +30 -4
  520. package/src/lint/output-docs.test.ts +59 -56
  521. package/src/lint/post-synth.test.ts +19 -0
  522. package/src/lint/post-synth.ts +19 -1
  523. package/src/meta/declared-imports.test.ts +1 -1
  524. package/src/op/activities/activity-contracts.ts +84 -0
  525. package/src/op/activities/apply.test.ts +189 -5
  526. package/src/op/activities/apply.ts +230 -8
  527. package/src/op/activities/change-set.ts +114 -0
  528. package/src/op/activities/decide.ts +3 -0
  529. package/src/op/activities/factory.ts +675 -0
  530. package/src/op/activities/index.ts +9 -0
  531. package/src/op/activities/lexicon-upgrade.test.ts +160 -6
  532. package/src/op/activities/lexicon-upgrade.ts +154 -51
  533. package/src/op/activity-contract.test.ts +21 -1
  534. package/src/op/activity-contract.ts +19 -9
  535. package/src/op/builders.ts +23 -0
  536. package/src/op/composites/apply-op.ts +12 -5
  537. package/src/op/composites/composites.test.ts +30 -3
  538. package/src/op/composites/lexicon-upgrade-op.test.ts +7 -2
  539. package/src/op/composites/lexicon-upgrade-op.ts +29 -8
  540. package/src/op/decide-backend.ts +5 -1
  541. package/src/op/decide-read-inputs.ts +33 -5
  542. package/src/op/emulator-lifecycle.test.ts +23 -0
  543. package/src/op/emulator-lifecycle.ts +52 -14
  544. package/src/op/factory.e2e.test.ts +232 -0
  545. package/src/op/factory.ts +118 -0
  546. package/src/op/gate-approval.test.ts +74 -0
  547. package/src/op/gate-approval.ts +5 -1
  548. package/src/op/gate.ts +31 -5
  549. package/src/op/index.ts +11 -1
  550. package/src/op/local-executor.test.ts +15 -0
  551. package/src/op/local-executor.ts +40 -12
  552. package/src/op/local-output.ts +1 -1
  553. package/src/op/op-ir.test.ts +9 -0
  554. package/src/op/op-ir.ts +4 -0
  555. package/src/op/op-verb-class.ts +3 -0
  556. package/src/op/operator.ts +4 -0
  557. package/src/op/run-context.test.ts +141 -0
  558. package/src/op/run-context.ts +51 -0
  559. package/src/op/runtimes/local.test.ts +14 -0
  560. package/src/op/runtimes/local.ts +2 -0
  561. package/src/op/steward-beside.ts +2 -0
  562. package/src/op/types.ts +16 -3
  563. package/src/op/work-lease-run.test.ts +47 -0
  564. package/src/op/work-lease-run.ts +76 -11
  565. package/src/plan-summary.test.ts +263 -0
  566. package/src/plan-summary.ts +845 -0
  567. package/src/pr-forge.test.ts +237 -0
  568. package/src/pr-forge.ts +332 -0
  569. package/src/pr-loop-bundle.test.ts +46 -0
  570. package/src/pr-loop.test.ts +171 -0
  571. package/src/pr-loop.ts +324 -0
  572. package/src/provenance.ts +35 -0
  573. package/src/telemetry-attribution.test.ts +23 -1
  574. package/src/telemetry-attribution.ts +51 -0
  575. package/src/terraform/hcl2json.test.ts +21 -0
  576. package/src/terraform/hcl2json.ts +81 -0
  577. package/src/terraform/parse.ts +11 -74
  578. package/src/workspace/agent-cli.ts +7 -3
  579. package/src/workspace/agent.schema.json +22 -0
  580. package/src/workspace/app-kind.test.ts +196 -0
  581. package/src/workspace/box-cli.ts +113 -0
  582. package/src/workspace/box-factory.test.ts +323 -0
  583. package/src/workspace/box-factory.ts +136 -0
  584. package/src/workspace/box-listing-write.schema.json +204 -0
  585. package/src/workspace/box-listing.test.ts +234 -0
  586. package/src/workspace/box-listing.ts +324 -0
  587. package/src/workspace/box-publish.schema.json +498 -0
  588. package/src/workspace/box-publish.test.ts +204 -0
  589. package/src/workspace/box-publish.ts +420 -0
  590. package/src/workspace/box-ship.test.ts +96 -0
  591. package/src/workspace/broker-protocol.schema.json +186 -0
  592. package/src/workspace/broker-protocol.test.ts +122 -0
  593. package/src/workspace/broker-protocol.ts +317 -0
  594. package/src/workspace/builder-tiers.test.ts +146 -0
  595. package/src/workspace/change-set.schema.json +460 -0
  596. package/src/workspace/changes.schema.json +12 -20
  597. package/src/workspace/changes.ts +4 -1
  598. package/src/workspace/chant-migrations.e2e.test.ts +17 -5
  599. package/src/workspace/checks/boxes.test.ts +5 -0
  600. package/src/workspace/checks.ts +39 -8
  601. package/src/workspace/component-environments.test.ts +105 -0
  602. package/src/workspace/compose-graph.ts +7 -0
  603. package/src/workspace/composites.schema.json +23 -4
  604. package/src/workspace/composites.test.ts +8 -8
  605. package/src/workspace/composites.ts +13 -2
  606. package/src/workspace/conformance/__fixture__/decisions/decision.schema.json +2 -2
  607. package/src/workspace/conformance/__fixtures__/reference-broker.ts +207 -0
  608. package/src/workspace/conformance/__writer_fixture__/answers/answer.kind.mjs +32 -0
  609. package/src/workspace/conformance/__writer_fixture__/answers/answer.schema.json +135 -0
  610. package/src/workspace/conformance/__writer_fixture__/contracts/contract.kind.mjs +37 -0
  611. package/src/workspace/conformance/__writer_fixture__/contracts/contract.schema.json +213 -0
  612. package/src/workspace/conformance/__writer_fixture__/decisions/points.json +228 -0
  613. package/src/workspace/conformance/__writer_fixture__/drivers/driver.kind.mjs +15 -0
  614. package/src/workspace/conformance/__writer_fixture__/drivers/driver.schema.json +38 -0
  615. package/src/workspace/conformance/__writer_fixture__/sessions/session.kind.mjs +54 -0
  616. package/src/workspace/conformance/__writer_fixture__/sessions/session.schema.json +289 -0
  617. package/src/workspace/conformance/__writer_fixture__/work/W-001-the-writer-suite-works-this-item.md +25 -0
  618. package/src/workspace/conformance/__writer_fixture__/work/work.kind.mjs +60 -0
  619. package/src/workspace/conformance/__writer_fixture__/work/work.schema.json +603 -0
  620. package/src/workspace/conformance/broker.test.ts +122 -0
  621. package/src/workspace/conformance/broker.ts +792 -0
  622. package/src/workspace/conformance/conformance.e2e.test.ts +36 -3
  623. package/src/workspace/conformance/index.mjs +51 -3
  624. package/src/workspace/conformance/index.ts +107 -15
  625. package/src/workspace/conformance/vitest.ts +76 -2
  626. package/src/workspace/conformance/writer-conformance.e2e.test.ts +177 -0
  627. package/src/workspace/conformance/writer.test.ts +186 -0
  628. package/src/workspace/conformance/writer.ts +1191 -0
  629. package/src/workspace/decide.test.ts +208 -4
  630. package/src/workspace/decide.ts +433 -73
  631. package/src/workspace/decision-points.schema.json +11 -4
  632. package/src/workspace/declaration.schema.json +383 -5
  633. package/src/workspace/declaration.ts +315 -10
  634. package/src/workspace/environments.ts +66 -14
  635. package/src/workspace/factory-rules.test.ts +62 -0
  636. package/src/workspace/factory-rules.ts +218 -0
  637. package/src/workspace/graph-cli.ts +6 -3
  638. package/src/workspace/graph.schema.json +314 -0
  639. package/src/workspace/identity.test.ts +219 -0
  640. package/src/workspace/identity.ts +186 -0
  641. package/src/workspace/init.ts +82 -2
  642. package/src/workspace/intent-cli.ts +84 -13
  643. package/src/workspace/intent-patch-id.test.ts +162 -0
  644. package/src/workspace/intent-record.schema.json +336 -1
  645. package/src/workspace/intent-record.ts +96 -16
  646. package/src/workspace/intent-reviews.test.ts +76 -0
  647. package/src/workspace/intent-squash.test.ts +213 -0
  648. package/src/workspace/intent-why.test.ts +274 -0
  649. package/src/workspace/intent.schema.json +950 -9
  650. package/src/workspace/intent.test.ts +11 -2
  651. package/src/workspace/intent.ts +722 -65
  652. package/src/workspace/json-edit.test.ts +121 -0
  653. package/src/workspace/json-edit.ts +142 -0
  654. package/src/workspace/jsonc.ts +20 -0
  655. package/src/workspace/kinds.ts +201 -39
  656. package/src/workspace/lexicon-symbols.test.ts +148 -0
  657. package/src/workspace/lexicon-symbols.ts +125 -0
  658. package/src/workspace/lineage-upgrade.test.ts +63 -0
  659. package/src/workspace/lineage-upgrade.ts +146 -5
  660. package/src/workspace/plan-summary.schema.json +155 -0
  661. package/src/workspace/point-answer.schema.json +42 -2
  662. package/src/workspace/points-cli.ts +42 -16
  663. package/src/workspace/points-write.schema.json +163 -4
  664. package/src/workspace/points.schema.json +157 -2
  665. package/src/workspace/points.test.ts +13 -1
  666. package/src/workspace/points.ts +118 -12
  667. package/src/workspace/pr-report.schema.json +95 -0
  668. package/src/workspace/principal-classes.test.ts +175 -0
  669. package/src/workspace/principal-classes.ts +307 -0
  670. package/src/workspace/profiles.test.ts +159 -0
  671. package/src/workspace/read-contract.test.ts +2 -2
  672. package/src/workspace/reason-codes.test.ts +23 -3
  673. package/src/workspace/reason-codes.ts +61 -4
  674. package/src/workspace/record-sessions.ts +9 -8
  675. package/src/workspace/records-amend.schema.json +80 -0
  676. package/src/workspace/records-checkout.ts +106 -0
  677. package/src/workspace/records-cli.ts +123 -17
  678. package/src/workspace/records-close.schema.json +79 -0
  679. package/src/workspace/records-close.ts +31 -7
  680. package/src/workspace/records-concurrent.e2e.test.ts +135 -0
  681. package/src/workspace/records-concurrent.test.ts +145 -0
  682. package/src/workspace/records-formats.test.ts +46 -10
  683. package/src/workspace/records-new.schema.json +9 -0
  684. package/src/workspace/records-review.schema.json +80 -0
  685. package/src/workspace/records-sessions-write.test.ts +69 -0
  686. package/src/workspace/records-sessions.test.ts +22 -0
  687. package/src/workspace/records-uncommitted.test.ts +171 -0
  688. package/src/workspace/records-write.ts +219 -30
  689. package/src/workspace/records.schema.json +88 -1
  690. package/src/workspace/records.ts +76 -8
  691. package/src/workspace/reference-kinds/app/package.json +10 -0
  692. package/src/workspace/reference-kinds/app/workspace-kinds.json +45 -0
  693. package/src/workspace/run-statement.schema.json +622 -0
  694. package/src/workspace/runs-cli.ts +710 -0
  695. package/src/workspace/runs-statement.test.ts +239 -0
  696. package/src/workspace/runs-write.schema.json +994 -0
  697. package/src/workspace/runs.schema.json +1257 -0
  698. package/src/workspace/runs.test.ts +281 -0
  699. package/src/workspace/runs.ts +970 -0
  700. package/src/workspace/session-kinds.ts +3 -3
  701. package/src/workspace/squash.ts +198 -0
  702. package/src/workspace/status-contract.test.ts +10 -2
  703. package/src/workspace/status-gates.ts +25 -9
  704. package/src/workspace/status.schema.json +252 -4
  705. package/src/workspace/status.ts +110 -1
  706. package/src/workspace/symbols.ts +191 -0
  707. package/src/workspace/trailer-joins.test.ts +171 -0
  708. package/src/workspace/trailer-joins.ts +82 -0
  709. package/src/workspace/trailers.ts +148 -0
  710. package/src/workspace/trust/run-commits.ts +115 -0
  711. package/src/workspace/trust/run-statement.ts +226 -0
  712. package/src/workspace/trust/seal.ts +58 -1
  713. package/src/workspace/trust/verify-cli.ts +6 -5
  714. package/src/workspace/trust/verify.ts +39 -6
  715. package/src/workspace/wip-cli.ts +97 -0
  716. package/src/workspace/wip-write.schema.json +504 -0
  717. package/src/workspace/wip.schema.json +334 -0
  718. package/src/workspace/wip.test.ts +294 -0
  719. package/src/workspace/wip.ts +753 -0
  720. package/src/workspace/work-cli.e2e.test.ts +28 -1
  721. package/src/workspace/work-cli.ts +136 -8
  722. package/src/workspace/work-evidence.schema.json +5 -0
  723. package/src/workspace/work-history.schema.json +73 -1
  724. package/src/workspace/work-history.test.ts +48 -5
  725. package/src/workspace/work-kind-fields.test.ts +154 -0
  726. package/src/workspace/work-lease.schema.json +14 -1
  727. package/src/workspace/work-size.test.ts +77 -0
  728. package/src/workspace/work-size.ts +93 -0
  729. package/src/workspace/work.ts +82 -0
  730. package/src/workspace/workspace-kinds.schema.json +122 -0
  731. package/src/workspace/workspace-principals.schema.json +60 -0
  732. package/src/workspace/write-lock-cli.ts +131 -0
  733. package/src/workspace/write-lock.schema.json +172 -0
  734. package/src/workspace/write-lock.test.ts +189 -0
  735. package/src/workspace/write-lock.ts +474 -0
  736. package/src/workspace/write-scope.test.ts +144 -3
  737. package/src/workspace/write-scope.ts +192 -45
  738. package/src/yaml.test.ts +111 -1
  739. package/src/yaml.ts +141 -549
@@ -15,7 +15,7 @@ import { collectEffectReceipts, isEffectReceipt, type EffectReceiptDeclaration }
15
15
  import { evaluateScenario, type ScenarioBehaviourFixture, type ScenarioVerdict } from "../../lifecycle/scenario-eval";
16
16
  import { validateBehaviourResult } from "../../behaviour-delta";
17
17
  import { collectScenarios, type ScenarioDeclaration, type ScenarioGiven } from "../../lifecycle/scenario";
18
- import { isResourceDeclarable } from "../../declarable";
18
+ import { isObservableDeclarable } from "../../declarable";
19
19
  import { loadChantConfig } from "../../config";
20
20
  import { unknownEnvError } from "../../env";
21
21
  import { collectBuildRootContributors } from "../plugins";
@@ -281,7 +281,7 @@ async function evaluateOneScenario(
281
281
  // and observed like any resource (#1832) — it joins the declared axis so
282
282
  // its lexicon's fixture data can confirm presence, absence, or a hole,
283
283
  // the same as `runLifecyclePlan` (lifecycle.ts:1184).
284
- if (!isResourceDeclarable(entity) && !isEffectReceipt(entity)) continue;
284
+ if (!isObservableDeclarable(entity) && !isEffectReceipt(entity)) continue;
285
285
  if (!declaredByLexicon.has(entity.lexicon)) declaredByLexicon.set(entity.lexicon, new Set());
286
286
  declaredByLexicon.get(entity.lexicon)!.add(name);
287
287
  }
@@ -255,6 +255,23 @@ describe("parseArgs", () => {
255
255
  expect(result.extraPositional2).toBe(undefined);
256
256
  });
257
257
 
258
+ test("positionals keeps every positional after the command, for workspace box listing set <member> (#3308)", () => {
259
+ const result = parseArgs(["workspace", "box", "listing", "set", "app", "--from", "-", "--cover", "c.png", "--cover-path", "app/c.png"]);
260
+ expect(result.positionals).toEqual(["box", "listing", "set", "app"]);
261
+ expect(result).toMatchObject({ path: "box", extraPositional: "listing", migrateFrom: "-", cover: "c.png", coverPath: "app/c.png" });
262
+ expect(() => parseArgs(["workspace", "box", "listing", "set", "app", "--cover"])).toThrow(/--cover needs/);
263
+ });
264
+
265
+ test("workspace wip takes --label and --branch, with its verb and snapshot as positionals (#3172)", () => {
266
+ const save = parseArgs(["workspace", "wip", "save", "--label", "turn:3", "--by", "github:alex", "--json"]);
267
+ expect(save).toMatchObject({ positionals: ["wip", "save"], label: "turn:3", by: "github:alex", json: true });
268
+ expect(resolveCommand(save, commandRegistry)?.def.name).toBe("workspace wip");
269
+ expect(parseArgs(["workspace", "wip", "restore", "abc123"]).positionals).toEqual(["wip", "restore", "abc123"]);
270
+ expect(parseArgs(["workspace", "wip", "--branch", "chant/work/W-1", "--json"])).toMatchObject({ branch: "chant/work/W-1", json: true });
271
+ expect(() => parseArgs(["workspace", "wip", "save", "--label"])).toThrow(/--label needs/);
272
+ expect(() => parseArgs(["workspace", "wip", "--branch"])).toThrow(/--branch needs/);
273
+ });
274
+
258
275
  // ── components release/status flags (#568) ──────────────────────────────
259
276
 
260
277
  test("parses --component, --digest, --git-sha, --run-id, --actor for components release", () => {
@@ -751,6 +768,7 @@ describe("workspace init and ls (#2534)", () => {
751
768
  "workspace adopt-lineage",
752
769
  "workspace agent",
753
770
  "workspace audit",
771
+ "workspace box",
754
772
  "workspace build",
755
773
  "workspace check",
756
774
  "workspace evidence",
@@ -761,17 +779,20 @@ describe("workspace init and ls (#2534)", () => {
761
779
  "workspace init",
762
780
  "workspace lineage",
763
781
  "workspace lint",
782
+ "workspace lock",
764
783
  "workspace ls",
765
784
  "workspace member-run",
766
785
  "workspace patch",
767
786
  "workspace pin",
768
787
  "workspace points",
769
788
  "workspace records",
789
+ "workspace runs",
770
790
  "workspace signers",
771
791
  "workspace status",
772
792
  "workspace upgrade",
773
793
  "workspace verify",
774
794
  "workspace versions",
795
+ "workspace wip",
775
796
  "workspace work",
776
797
  ]);
777
798
  });
package/src/cli/main.ts CHANGED
@@ -102,6 +102,7 @@ const BOOLEAN_FLAGS = new Set([
102
102
  "--durable-requests",
103
103
  "--skip-mcp",
104
104
  "--current",
105
+ "--uncommitted",
105
106
  "--allow-code",
106
107
  "--root-only",
107
108
  "--generated",
@@ -227,6 +228,12 @@ export function parseArgs(args: string[]): ParsedArgs {
227
228
  // `chant import --kustomize <dir>` (#1548): render the overlay, import
228
229
  // the output through the k8s template parser.
229
230
  result.kustomize = args[++i];
231
+ } else if (arg === "--parser-option") {
232
+ // `chant import --parser-option key[=value]` (#2994), repeatable: checked
233
+ // against the lexicon's parserOptions() by the import command.
234
+ const v = args[++i];
235
+ if (!v || v.startsWith("-")) throw new Error("--parser-option needs key or key=value: --parser-option acceptLossyV1");
236
+ (result.parserOption ??= []).push(v);
230
237
  } else if (arg === "--type") {
231
238
  result.selectType = args[++i];
232
239
  } else if (arg === "--name") {
@@ -340,6 +347,30 @@ export function parseArgs(args: string[]): ParsedArgs {
340
347
  result.fromAffected = args[++i];
341
348
  } else if (arg === "--gate") {
342
349
  result.gate = args[++i];
350
+ } else if (arg === "--wave-gate") {
351
+ result.waveGate = args[++i];
352
+ if (!result.waveGate || result.waveGate.startsWith("-")) throw new Error("--wave-gate needs a gate name: --wave-gate <name>");
353
+ } else if (arg === "--wave") {
354
+ const raw = args[++i];
355
+ const wave = Number(raw);
356
+ if (!Number.isInteger(wave) || wave < 1) throw new Error(`--wave needs a wave number from 1: got "${raw ?? ""}"`);
357
+ result.wave = wave;
358
+ } else if (arg === "--canary") {
359
+ const raw = args[++i];
360
+ if (!raw || raw.startsWith("-")) throw new Error("--canary needs a component name: --canary <name>[,<name>...]");
361
+ (result.canary ??= []).push(...raw.split(",").map((n) => n.trim()).filter(Boolean));
362
+ } else if (arg === "--pr") {
363
+ const raw = args[++i];
364
+ const pr = Number(raw);
365
+ if (!Number.isInteger(pr) || pr < 1) throw new Error(`--pr needs a pull or merge request number: got "${raw ?? ""}"`);
366
+ result.pr = pr;
367
+ } else if (arg === "--forge") {
368
+ result.forge = args[++i];
369
+ if (!result.forge || result.forge.startsWith("-")) throw new Error("--forge needs a forge: --forge github|gitlab|forgejo");
370
+ } else if (arg === "--require-review") {
371
+ result.requireReview = true;
372
+ } else if (arg === "--pr-loop") {
373
+ result.prLoop = true;
343
374
  } else if (arg === "--resume") {
344
375
  result.resume = args[++i];
345
376
  } else if (arg === "--local") {
@@ -377,11 +408,14 @@ export function parseArgs(args: string[]): ParsedArgs {
377
408
  // `chant workspace graph --composites` (#2662)
378
409
  result.composites = true;
379
410
  } else if (arg === "--intent") {
380
- // `chant workspace graph --intent <path[:start-end]>` (#2651), or `--intent --record <id>` with no region.
411
+ // `chant workspace graph --intent <path[:start-end]|path#symbol>` (#2651), or `--intent --record <id>` with no region.
381
412
  const value = args[i + 1];
382
413
  if (value !== undefined && !value.startsWith("-")) result.intent = args[++i];
383
414
  else if (args.includes("--record")) result.intent = "";
384
- else throw new Error("--intent needs a region: --intent <path[:start-end]>, or --intent --record <id>");
415
+ else throw new Error("--intent needs a region: --intent <path[:start-end]|path#symbol>, or --intent --record <id>");
416
+ } else if (arg === "--follow-squash") {
417
+ // `chant workspace graph --intent ... --follow-squash` and `chant workspace runs --follow-squash` (#3035)
418
+ result.followSquash = true;
385
419
  } else if (arg === "--record") {
386
420
  // `chant workspace graph --intent --record <id>`
387
421
  result.record = args[++i];
@@ -409,10 +443,36 @@ export function parseArgs(args: string[]): ParsedArgs {
409
443
  if (!result.severity || result.severity.startsWith("-")) throw new Error("--severity needs off, warn or fail");
410
444
  } else if (arg === "--current") {
411
445
  result.current = true;
446
+ } else if (arg === "--uncommitted") {
447
+ // `chant workspace records --uncommitted` (#3160)
448
+ result.uncommitted = true;
412
449
  } else if (arg === "--set") {
413
450
  // `chant workspace records amend <id> --set <file|->` (#2670)
414
451
  result.set = args[++i];
415
452
  if (!result.set || (result.set.startsWith("-") && result.set !== "-")) throw new Error("--set needs a JSON file, or - for standard input: --set <file|->");
453
+ } else if (arg === "--cover") {
454
+ // `chant workspace box listing set <member> --cover <image>` (#3308)
455
+ result.cover = args[++i];
456
+ if (!result.cover || result.cover.startsWith("-")) throw new Error("--cover needs a PNG, JPEG or WebP file: --cover <image>");
457
+ } else if (arg === "--cover-path") {
458
+ // `chant workspace box listing set <member> --cover <image> --cover-path <path>` (#3308)
459
+ result.coverPath = args[++i];
460
+ if (!result.coverPath || result.coverPath.startsWith("-")) throw new Error("--cover-path needs a path from the workspace root: --cover-path <path>");
461
+ } else if (arg === "--records") {
462
+ // `chant workspace box publish <member> --records` (#3165): the records kept uncommitted, not a work item.
463
+ result.records = true;
464
+ } else if (arg === "--expect") {
465
+ // `chant workspace records amend|review|close <id> --expect <digest>` (#3173): the record's digest the caller last read.
466
+ result.expect = args[++i];
467
+ if (!result.expect || result.expect.startsWith("-")) throw new Error("--expect needs the record's digest, as records --json prints it: --expect <digest>");
468
+ } else if (arg === "--label") {
469
+ // `chant workspace wip save --label <text>` (#3172)
470
+ result.label = args[++i];
471
+ if (!result.label || result.label.startsWith("-")) throw new Error("--label needs the snapshot's name, such as a turn id: --label <text>");
472
+ } else if (arg === "--branch") {
473
+ // `chant workspace wip --branch <branch>` (#3172)
474
+ result.branch = args[++i];
475
+ if (!result.branch || result.branch.startsWith("-")) throw new Error("--branch needs a branch name: --branch <branch>");
416
476
  } else if (arg === "--verdict") {
417
477
  // `chant workspace records review <id> --verdict agree|dissent|abstain` (#2670)
418
478
  result.verdict = args[++i];
@@ -427,9 +487,13 @@ export function parseArgs(args: string[]): ParsedArgs {
427
487
  // `chant workspace points --open` (#2739): only the questions still open.
428
488
  result.open = true;
429
489
  } else if (arg === "--inputs") {
430
- // `chant workspace points ask <point> --inputs <file|->` (#2739)
490
+ // `chant workspace points ask <point> --inputs <file|-|json>` (#2739; JSON itself, #3403)
431
491
  result.inputs = args[++i];
432
- if (!result.inputs || (result.inputs.startsWith("-") && result.inputs !== "-")) throw new Error("--inputs needs a JSON file, or - for standard input: --inputs <file|->");
492
+ if (!result.inputs || (result.inputs.startsWith("-") && result.inputs !== "-")) throw new Error("--inputs needs a JSON file, - for standard input, or the JSON itself: --inputs <file|-|json>");
493
+ } else if (arg === "--candidates") {
494
+ // `chant workspace points ask <point> --candidates <file|-|json>` (#3403): an ad-hoc point's question and candidates.
495
+ result.candidates = args[++i];
496
+ if (!result.candidates || (result.candidates.startsWith("-") && result.candidates !== "-")) throw new Error("--candidates needs a JSON file, - for standard input, or the JSON itself: --candidates <file|-|json>");
433
497
  } else if (arg === "--response") {
434
498
  // `chant workspace points ask <point> --response <file>` (#2739): a POST /v1/systemone response the caller got.
435
499
  result.response = args[++i];
@@ -445,6 +509,7 @@ export function parseArgs(args: string[]): ParsedArgs {
445
509
  } else if (arg === "--sign") {
446
510
  // `chant workspace records review <id> --sign [<key file>]` (#2687): seal the verdict.
447
511
  // `records new` and `records amend` take it too, to seal the record's author (#2688).
512
+ // `chant approve <op> <gate> --sign [<key file>]` seals a gate approval (#3163).
448
513
  // With no key file, git's user.signingkey, as `git commit -S` reads it.
449
514
  const next = args[i + 1];
450
515
  result.sign = next !== undefined && !next.startsWith("-") ? args[++i] : true;
@@ -497,6 +562,11 @@ export function parseArgs(args: string[]): ParsedArgs {
497
562
  result.actor = args[++i];
498
563
  } else if (arg === "--approver") {
499
564
  result.approver = args[++i];
565
+ } else if (arg === "--relayed-by") {
566
+ // `chant approve <op> <gate> --relayed-by <principal>` and `workspace points answer <id> --relayed-by <principal>` (#3402):
567
+ // who carried the approval or answer to chant for the person it names.
568
+ result.relayedBy = args[++i];
569
+ if (!result.relayedBy || result.relayedBy.startsWith("-")) throw new Error("--relayed-by needs the principal that relayed it: --relayed-by <principal>");
500
570
  } else if (arg === "--on") {
501
571
  // `chant run ... --on <lexicon>` (#2121) — which runtime hosts the run.
502
572
  result.on = args[++i];
@@ -566,6 +636,16 @@ export function parseArgs(args: string[]): ParsedArgs {
566
636
  const value = args[++i];
567
637
  if (!value || value.startsWith("-")) throw new Error(`${arg} needs a value: ${arg} <${arg.slice(2)}>`);
568
638
  result[arg.slice(2) as "holder" | "ttl" | "token" | "outcome"] = value;
639
+ } else if (arg === "--signer") {
640
+ // `chant workspace runs statement <id> --signer <principal>` (#3192): the runner principal that will sign.
641
+ const value = args[++i];
642
+ if (!value || value.startsWith("-")) throw new Error("--signer needs a principal: --signer <principal>");
643
+ result.signer = value;
644
+ } else if (arg === "--unit" || arg === "--decision") {
645
+ // `chant workspace runs --unit <id> | --decision <id>` (#3033): the runs on one work item, or for one decision.
646
+ const value = args[++i];
647
+ if (!value || value.startsWith("-")) throw new Error(`${arg} needs an id: ${arg} <id>`);
648
+ result[arg.slice(2) as "unit" | "decision"] = value;
569
649
  } else if (arg === "--note") {
570
650
  result.note = args[++i];
571
651
  } else if (arg === "--expire") {
@@ -643,6 +723,7 @@ export function parseArgs(args: string[]): ParsedArgs {
643
723
  // flags" isn't something this loop can name in isolation.
644
724
  throw new Error(`Unknown flag: ${arg}\nRun "chant --help" to see supported flags.`);
645
725
  } else if (!arg.startsWith("-")) {
726
+ if (result.command) (result.positionals ??= []).push(arg);
646
727
  if (!result.command) {
647
728
  result.command = arg;
648
729
  } else if (result.path === ".") {
@@ -761,6 +842,14 @@ Commands:
761
842
  (--json) its target, stage (planned/emitted/bridged/
762
843
  applied) and path. Read-only.
763
844
 
845
+ Change sets:
846
+ change-set summary <file> The grouped plan summary of a change-set
847
+ [--format text|json|markdown] document: members taking
848
+ [--limit <chars>] the same change grouped, every destroy,
849
+ replacement, failure and hole named.
850
+ markdown fits an MR/PR note of --limit
851
+ characters (default 65536). Read-only.
852
+
764
853
  Ops:
765
854
  run <name> Run an Op on the resolved runtime (--on; local by default)
766
855
  [--work <id>] [--holder <name>]: the work item an Op
@@ -818,7 +907,13 @@ Ops:
818
907
  and defaults to the PR/MR of the surrounding CI job.
819
908
  The next "chant run <op>" walks through the gate.
820
909
  --expire clears a pending fact without approving it,
821
- so the gate is re-decided from scratch next run
910
+ so the gate is re-decided from scratch next run.
911
+ --sign [<key file>] seals the approval with an ssh
912
+ key; a gate the workspace's identity.gates names
913
+ counts only an approval sealed by a key the signers
914
+ file at base lists for --actor. --relayed-by
915
+ <principal> records who carried the approval to chant
916
+ for --actor (a follower, a bot); --sign covers it
822
917
 
823
918
  graph Show Op dependency graph (--stacks for cross-stack order,
824
919
  --format ir|mermaid|dot|layout for the lint-gated graph IR,
@@ -858,7 +953,7 @@ Workspace (level 1, #2524):
858
953
  beside it and marks the members whose digests differ.
859
954
  Read only; never fetches. --json prints the
860
955
  read-contract document
861
- workspace records [--kind <kind file>] [--current] [--at <rev>] [--base <rev>] [--require attested] [--json]
956
+ workspace records [--kind <kind file>] [--current] [--uncommitted | --at <rev>] [--base <rev>] [--require attested] [--json]
862
957
  Without --kind, every record kind the declaration
863
958
  names. Read the records a record kind locates, validated
864
959
  against its schema, with reason codes for invalid
@@ -868,7 +963,10 @@ Workspace (level 1, #2524):
868
963
  the signers at --base (default: the target branch);
869
964
  --require attested exits 2 if any record is not
870
965
  attested. A pinned file that changed is a warning,
871
- asset-drift or asset-missing
966
+ asset-drift or asset-missing. In the working tree,
967
+ each record says whether it is committed, modified
968
+ or new against HEAD, with the branch and base;
969
+ --uncommitted lists only the modified and new ones
872
970
  workspace records [--kind <kind file>] --since <rev|session id> [--at <rev>] [--json]
873
971
  What changed in the records between <rev> and --at
874
972
  (default: the working tree): new and removed records,
@@ -886,7 +984,7 @@ Workspace (level 1, #2524):
886
984
  the fields hold none. --sign seals the record's author
887
985
  (decided_by for decisions) with an ssh key. Prints
888
986
  {path, id} as JSON and never commits
889
- workspace records amend <id> [--kind <kind file>] --set <file|-> [--sign [<key file>]] [--dry-run]
987
+ workspace records amend <id> [--kind <kind file>] --set <file|-> [--expect <digest>] [--sign [<key file>]] [--dry-run]
890
988
  Set top-level fields of one record. A closed record
891
989
  never changes, and an approved one changes only its
892
990
  state (upward), pins and reviews; anything else is
@@ -895,22 +993,31 @@ Workspace (level 1, #2524):
895
993
  decisions) is refused with ratify-quorum-not-met
896
994
  until its quorum is met. --sign seals the author
897
995
  again; without it an amendment removes the author
898
- seal and says so. Prints {path, id, changed}
899
- workspace records review <id> [--kind <kind file>] --verdict agree|dissent|abstain --by <principal> [--note <text>] [--session <id>] [--sign [<key file>]] [--dry-run]
996
+ seal and says so. --expect refuses the write with
997
+ record-conflict when the record's digest has moved
998
+ on. Prints {path, id, changed, digest}
999
+ workspace records review <id> [--kind <kind file>] --verdict agree|dissent|abstain --by <principal> [--note <text>] [--session <id>] [--expect <digest>] [--sign [<key file>]] [--dry-run]
900
1000
  Append a review to one record, dated and bound to
901
1001
  the digest of the record text. A dissent needs
902
1002
  --note. --sign seals it with an ssh key (git's
903
1003
  user.signingkey without a file); under a signers
904
1004
  file at base only a sealed verdict counts. With
905
1005
  --session, the session must be open, and the verdict
906
- is appended to its verdicts too. Prints
907
- {path, id, review}
908
- workspace records close <session id> [--kind <session kind file>] [--dry-run]
1006
+ is appended to its verdicts too. --expect refuses a
1007
+ verdict on a record that moved on. Prints
1008
+ {path, id, review, digest}
1009
+ workspace records close <session id> [--kind <session kind file>] [--expect <digest>] [--dry-run]
909
1010
  Close an open review session: its state, close time,
910
1011
  closing commit and seal, in one write. Without
911
1012
  --kind, the one session kind the declaration names.
912
1013
  Prints {path, id, changed, seal, closedRev}
913
- workspace work claim|renew|release <id> --holder <name> [--kind <kind file>] [--ttl <seconds|duration>] [--token <token>] [--outcome <text>] [--note <text>] [--json]
1014
+ Every working-tree write holds the working tree's
1015
+ write lock (CHANT_WRITE_LOCK_WAIT_MS, default 15s)
1016
+ workspace lock [acquire --holder <name> [--ttl <duration>] | release --token <token>] [--json]
1017
+ Who holds the working tree's write lock; take it for
1018
+ a batch of writes across chant calls, each run with
1019
+ CHANT_WRITE_LOCK=<token>, and give it back
1020
+ workspace work claim|renew|release <id> --holder <name> [--kind <kind file>] [--ttl <seconds|duration>] [--token <token>] [--outcome <outcome>] [--note <text>] [--json]
914
1021
  Take, heartbeat or give back the lease on a work item:
915
1022
  refs/chant/lease/work/<id>, a compare-and-set ref with a
916
1023
  fencing token and an expiry, pushed to the remote so
@@ -921,18 +1028,89 @@ Workspace (level 1, #2524):
921
1028
  A work item's lease history: each claim with its token
922
1029
  and holder, and how it ended, released with an outcome
923
1030
  or never released (expired or lost). Read-only
1031
+ workspace work evidence <id> --holder <name> --token <token> --from <file|-> [--kind <kind file>]
1032
+ Attach evidence for one acceptance criterion under the
1033
+ lease you hold: the entry (criterion, result, title,
1034
+ a url or a path pinned by hash) is appended to the
1035
+ item's pins through records amend. Prints the
1036
+ work-evidence document and never commits
1037
+ workspace runs [--unit <id>] [--decision <id>] [--by <principal>] [--since <rev>] [--follow-squash] [--json]
1038
+ The agent runs in the run ledger on chant/lifecycle, each
1039
+ with its model, tokens, cost and the commits it made,
1040
+ and totals per work item, decision and principal; a run
1041
+ that reports no cost is listed as unpriced, never zero.
1042
+ Read-only, never fetches; --follow-squash joins each
1043
+ squash merge to its pull request's runs, fetching a
1044
+ missing refs/pull/<n>/head from origin
1045
+ workspace runs start --from <file|->
1046
+ Record that an agent run started: who it worked for,
1047
+ its harness, model, work item and lease. Prints the run
1048
+ and its Chant-Run trailer. chant never starts a run
1049
+ workspace runs end <run id> [--from <file|->]
1050
+ Record how a started run ended: its outcome, tokens,
1051
+ cost and price source, the transcript pinned by hash,
1052
+ and the commits it made
1053
+ workspace runs record --from <file|->
1054
+ Record a finished run, its start and end in one write
1055
+ workspace runs sign <run id> (--key <runner.pem> | --envelope <file|->) [--base <rev>]
1056
+ Store a DSSE statement over an ended run (its record's
1057
+ hash, work item, harness, model and commits), signed
1058
+ with a runner or steward key .chant/trust.json lists
1059
+ at base, or signed elsewhere and checked here
1060
+ workspace runs statement <run id> --signer <principal>
1061
+ Print the statement for a signer whose key is
1062
+ elsewhere, such as a lobby, with the payload to sign
1063
+ workspace runs verify [<run id>] [--require signed] [--base <rev>] [--json]
1064
+ Judge each run's stored statements against the runner
1065
+ keys at base. Reports only, unless --require signed
1066
+ workspace box listing set <member> [--from <file|->] [--cover <image> [--cover-path <path>]] [--by <principal>] [--dry-run]
1067
+ Change a box's listing (published, title, line, cover)
1068
+ in the declaration, in place, keeping its formatting
1069
+ and comments; --cover copies a PNG, JPEG or WebP into
1070
+ the repository. Judged by the write scope at base.
1071
+ Prints the box-listing-write document; never commits
1072
+ workspace box publish <member> (<item> | --records) [--by <principal>] [--head <owner/name>] [--dry-run]
1073
+ Publish a built work item, or the records kept
1074
+ uncommitted, through the publisher the box block names:
1075
+ run with a JSON request on stdin, its answer checked
1076
+ and its commit held to the apply record (ws-088).
1077
+ Prints the box-publish document; chant itself never
1078
+ commits, pushes or calls a forge
1079
+ workspace wip [--branch <branch>] [--json]
1080
+ List the work-in-progress snapshots under
1081
+ refs/chant/wip/<branch>, newest first, and how far each
1082
+ ref the box's replicate policy names is from its remote.
1083
+ Reads locally; never fetches (#3172)
1084
+ workspace wip save [--label <text>] [--by <principal>]
1085
+ Snapshot the whole working tree, uncommitted records
1086
+ included, onto refs/chant/wip/<branch> without touching
1087
+ the index or the branch; pushes when the policy says so
1088
+ workspace wip restore [<snapshot>] [--by <principal>]
1089
+ Put the working tree back as the snapshot (the branch's
1090
+ latest by default) holds it, after a snapshot of how it
1091
+ is now; HEAD never moves
1092
+ workspace wip push Push the refs the box's replicate policy names to its
1093
+ remote, never forced, for the host's schedule
1094
+ workspace wip fetch On a replacement box, bring back what was replicated:
1095
+ create or fast-forward the local refs, then wip restore
924
1096
  workspace points [--open] [--kind <kind file>] [--at <rev>] [--json]
925
1097
  List the decision points the declared answer kinds'
926
1098
  points files declare, and the questions asked of them;
927
1099
  --open keeps the escalated and proposed ones (ws-058)
928
- workspace points ask <point> --inputs <file|-> [--response <file>] [--subject <id>] [--kind <kind file>] [--dry-run]
1100
+ workspace points ask <point> --inputs <file|-|json> [--candidates <file|-|json>] [--response <file>] [--subject <id>] [--kind <kind file>] [--dry-run]
929
1101
  Ask a point's table, model and quorum deciders and
930
1102
  record the answer: proposed from a model, escalated to
931
1103
  people below its threshold. --response is a POST
932
- /v1/systemone response the caller got; chant calls no model
933
- workspace points answer <id> --answer <value> --by <name>... [--kind <kind file>] [--dry-run]
1104
+ /v1/systemone response the caller got; chant calls no model.
1105
+ --candidates gives an ad-hoc point's question and
1106
+ candidates, { question, criteria }
1107
+ workspace points answer <id> --answer <value> --by <name>... [--note <text>] [--relayed-by <principal>] [--kind <kind file>] [--dry-run]
934
1108
  Record people's answer to an open question, or confirm
935
- a model's proposal, once the point's quorum is met
1109
+ a model's proposal, once the point's quorum is met,
1110
+ with their note and who relayed it
1111
+ workspace points retract <id> --by <name>... [--note <text>] [--kind <kind file>] [--dry-run]
1112
+ Take an answer back: the question is open for people
1113
+ again, and the answer stays in its retractions
936
1114
  workspace pin <path> [--json]
937
1115
  Print the integrity value that pins the plugin at
938
1116
  <path>, to put in a path pin of chant.workspace.json.
@@ -942,13 +1120,14 @@ Workspace (level 1, #2524):
942
1120
  member it is bound to, the record kinds and verbs its
943
1121
  write scope allows, and the spec records --current
944
1122
  prints. Without a name, the session CHANT_AGENT names
945
- workspace verify [--base <rev>] [--head <rev>] [--require attested]
1123
+ workspace verify [--base <rev>] [--head <rev>] [--require attested | attested-runs]
946
1124
  Check the commits in base..head against the signers
947
1125
  and roles read from base. A change to the signers file
948
1126
  or .chant/trust.json needs a signature by a signer
949
1127
  trusted at base, and a new signer set needs a
950
- threshold of the old one. Does nothing without a
951
- signers file
1128
+ threshold of the old one. A commit an agent run made
1129
+ is attested by the run's signed statement; with
1130
+ attested-runs, only those commits must be
952
1131
  workspace signers [--json] [rotate [--threshold <n>] | sign --key <file>]
953
1132
  Show the signer history at base, or propose the next
954
1133
  signer set and sign it with a current signer's key
@@ -1056,12 +1235,14 @@ Workspace (level 1, #2524):
1056
1235
  Each composite instance the members declare, with the
1057
1236
  components whose contract can deploy it; an instance
1058
1237
  with none lists an empty set
1059
- workspace graph --intent <path[:start-end]> [--at <rev>] [--kind <kind file>...] [--json]
1238
+ workspace graph --intent <path[:start-end]|path#symbol> [--at <rev>] [--kind <kind file>...] [--follow-squash] [--json]
1060
1239
  The intent graph over one region: the commits that
1061
1240
  touched it, the decisions whose constrains cover it,
1062
1241
  the artifacts they pin, and findings with closed codes.
1063
- Without --kind, every record kind the declaration names
1064
- workspace graph --intent --record <id> [--at <rev>] [--kind <kind file>...] [--json]
1242
+ Without --kind, every record kind the declaration names.
1243
+ --follow-squash follows a squash merge to its pull
1244
+ request's commits, fetching a missing ref from origin
1245
+ workspace graph --intent --record <id> [--at <rev>] [--kind <kind file>...] [--follow-squash] [--json]
1065
1246
  One decision's intent walk over every path: and member:
1066
1247
  entry it constrains: the commits in its window, each
1067
1248
  own, worked, within-other or unexplained, with counts
@@ -1111,8 +1292,23 @@ Component release ledger + status:
1111
1292
  (--base <ref> [--head <ref>] [--include-dependents],
1112
1293
  or --from-affected <file>; --dry-run prints the
1113
1294
  derivation and dispatches nothing; --gate <name>
1114
- puts one approval over the whole set; --resume
1115
- <file> finishes an attempt that stopped)
1295
+ puts one approval over the whole set;
1296
+ --wave-gate <name> puts one on each wave, planned
1297
+ when the wave is reached, with --canary <name>
1298
+ for wave 1 and --wave <n> for one wave per CI
1299
+ job; --resume <file> finishes an attempt that
1300
+ stopped)
1301
+ components pr-plan Plan the components a pull request reaches and
1302
+ the ones that depend on them, and write the
1303
+ report and note (--base <ref> --pr <n>
1304
+ [--forge github|gitlab|forgejo] posts them);
1305
+ applies nothing
1306
+ components pr-apply On merge: plan the same members again and apply
1307
+ them only if an approval stands for that digest
1308
+ (chant approve pr-<n> pr-apply --plan <digest>);
1309
+ a moved plan refuses with exit 3
1310
+ (--require-review: the approver must have
1311
+ approved the pull request on the forge)
1116
1312
  components release <env> Append one immutable release record
1117
1313
  (--component <name> --digest <sha256:...>
1118
1314
  [--git-sha <sha>] [--run-id <id>] [--actor <name>]);
@@ -1150,8 +1346,13 @@ Lexicon development:
1150
1346
  --check: fail if the committed baseline drifted (never writes);
1151
1347
  --run-examples: also run example build harness;
1152
1348
  --pinned-digest <file>: verify spec digest before regen)
1153
- dev pinned-upgrade <dir> Report if a pinned lexicon (k8s|gcp|docker|gitlab) has a newer
1154
- upstream release; dry-run bump + regen + surface-diff, then revert
1349
+ dev pinned-upgrade <dir> [pin]
1350
+ Report if a lexicon that declares upstreamPin (k8s, k3s, gcp, docker,
1351
+ gitlab, cedar, sql) has a newer upstream release; dry-run bump + regen +
1352
+ surface-diff, then revert. A pin that moves with other constants (sql's
1353
+ image digest) is reported with how to move it, not edited. A lexicon
1354
+ with several pins (sql: clickhouse, postgres-14 .. postgres-18) gets one
1355
+ report per pin; name a pin to check only that one
1155
1356
  (reports only; --force bypasses the spec cache, -f json for JSON)
1156
1357
  dev rolling-upgrade <dir> Report rolling-spec drift (aws, azure, github): regen from
1157
1358
  latest, diff surface vs committed baseline, print delta + PR
@@ -1194,8 +1395,9 @@ Options:
1194
1395
  -h, --help Show this help message
1195
1396
  -V, --version Print the installed chant's version
1196
1397
  --on <lexicon> Which runtime hosts the run: a configured lexicon with
1197
- an opRuntime, or the built-in local runtime when
1198
- omitted (every run subcommand; #2121)
1398
+ an opRuntime, or local. Omitted, run.on in
1399
+ chant.config.ts decides, then the built-in local
1400
+ runtime (every run subcommand; #2121, #2523)
1199
1401
  --local Run an Op with the local in-process executor (default)
1200
1402
  -p, --profile <name> Named connection profile the hosting runtime targets
1201
1403
  (fountain.profiles in chant.config.ts); each runtime's
@@ -1287,6 +1489,7 @@ Examples:
1287
1489
  chant components export prod --component search-service -o ./dist/search-service
1288
1490
  chant import template.json --output ./infra/
1289
1491
  chant import manifest.yaml --lexicon k8s --output ./infra/
1492
+ chant import dash.json --lexicon grafana --parser-option acceptLossyV1
1290
1493
  chant import --from prod --name my-bucket --output src/
1291
1494
  chant lint ./infra/
1292
1495
  chant lint ./infra/ --format sarif
@@ -1512,6 +1715,8 @@ export const commandRegistry: CommandDef[] = [
1512
1715
  // Status read over a tree of carve manifests (#2038): the contract a
1513
1716
  // renderer replaces its own walk-and-guess discovery with. Read-only.
1514
1717
  { name: "carve status", handler: runCarveStatus },
1718
+ // #3188 — the grouped plan summary of a change-set document. Reads one file; imported on first use.
1719
+ { name: "change-set summary", runsNoConfig: true, handler: async (ctx) => (await import("./handlers/change-set")).runChangeSetSummary(ctx) },
1515
1720
  { name: "init", handler: runInit, runsNoConfig: true },
1516
1721
  { name: "init lexicon", handler: runInitLexicon },
1517
1722
  { name: "update", handler: runUpdate },
@@ -1552,6 +1757,8 @@ export const commandRegistry: CommandDef[] = [
1552
1757
  { name: "workspace ls", handler: async (ctx) => (await import("../workspace/ls")).runWorkspaceLs(ctx) },
1553
1758
  // #2732 — the work lease: claim, renew and release a work item.
1554
1759
  { name: "workspace work", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/work-cli")).runWorkspaceWork(ctx) },
1760
+ // #3033 — the agent run record: what each run cost and which commits it made. chant records runs and never starts one.
1761
+ { name: "workspace runs", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/runs-cli")).runWorkspaceRuns(ctx) },
1555
1762
  { name: "workspace status", handler: async (ctx) => (await import("../workspace/status")).runWorkspaceStatus(ctx) },
1556
1763
  { name: "workspace lineage", handler: async (ctx) => (await import("../workspace/lineage-cli")).runWorkspaceLineage(ctx) },
1557
1764
  { name: "workspace upgrade", handler: async (ctx) => (await import("../workspace/lineage-upgrade-cli")).runWorkspaceUpgrade(ctx) },
@@ -1576,6 +1783,12 @@ export const commandRegistry: CommandDef[] = [
1576
1783
  { name: "workspace graph", handler: async (ctx) => (await import("../workspace/member-commands")).runWorkspaceMembers(ctx, "graph") },
1577
1784
  // Each unit decides for itself whether its config is loaded (runCommandInProcess).
1578
1785
  { name: "workspace member-run", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/member-run")).runWorkspaceMemberRun(ctx, runCommandInProcess) },
1786
+ // #3308 — a box's listing, written through chant so a tool never edits the declaration itself (ws-074).
1787
+ { name: "workspace box", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/box-cli")).runWorkspaceBox(ctx) },
1788
+ // #3173 — the working tree's write lock, held across chant calls for a batch of writes (ws-089).
1789
+ { name: "workspace lock", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/write-lock-cli")).runWorkspaceLock(ctx) },
1790
+ // #3172 — work in progress under refs/chant/wip/<branch>, replicated under the box's policy (ws-085).
1791
+ { name: "workspace wip", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/wip-cli")).runWorkspaceWip(ctx) },
1579
1792
  { name: "workspace pin", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/pin-cli")).runWorkspacePin(ctx) },
1580
1793
  // #2548 — an agent session's member, write scope and spec, for a session that resumes.
1581
1794
  { name: "workspace agent", runsNoConfig: true, handler: async (ctx) => (await import("../workspace/agent-cli")).runWorkspaceAgent(ctx) },
@@ -1601,6 +1814,9 @@ export const commandRegistry: CommandDef[] = [
1601
1814
 
1602
1815
  // Component release ledger + status surface (#568, epic #551)
1603
1816
  { name: "components fan-out", requiresPlugins: true, handler: runComponentsFanOut },
1817
+ // #3183 — the pull-request loop the generated CI runs. Imported on first use.
1818
+ { name: "components pr-plan", requiresPlugins: true, handler: async (ctx) => (await import("./handlers/pr")).runComponentsPrPlan(ctx) },
1819
+ { name: "components pr-apply", requiresPlugins: true, handler: async (ctx) => (await import("./handlers/pr")).runComponentsPrApply(ctx) },
1604
1820
  { name: "components status", requiresPlugins: true, handler: runComponentsStatus },
1605
1821
  { name: "components release", handler: runComponentsReleaseRecord },
1606
1822
  { name: "components export", handler: runComponentsExport },