@intentius/chant 0.101.0 → 0.102.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 (427) 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/discover.d.ts.map +1 -1
  4. package/dist/audit/nginx.d.ts.map +1 -1
  5. package/dist/audit/prior-art.d.ts +48 -0
  6. package/dist/audit/prior-art.d.ts.map +1 -1
  7. package/dist/behaviour-kinds.d.ts.map +1 -1
  8. package/dist/builder.d.ts.map +1 -1
  9. package/dist/cli/commands/carve-emit.d.ts.map +1 -1
  10. package/dist/cli/commands/check-lexicon.d.ts +16 -0
  11. package/dist/cli/commands/check-lexicon.d.ts.map +1 -1
  12. package/dist/cli/commands/import.d.ts +8 -0
  13. package/dist/cli/commands/import.d.ts.map +1 -1
  14. package/dist/cli/commands/init-lexicon.d.ts.map +1 -1
  15. package/dist/cli/commands/init.d.ts +19 -0
  16. package/dist/cli/commands/init.d.ts.map +1 -1
  17. package/dist/cli/commands/onboard.d.ts +9 -0
  18. package/dist/cli/commands/onboard.d.ts.map +1 -1
  19. package/dist/cli/commands/pinned-upgrade.d.ts +19 -5
  20. package/dist/cli/commands/pinned-upgrade.d.ts.map +1 -1
  21. package/dist/cli/handlers/dev.d.ts.map +1 -1
  22. package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
  23. package/dist/cli/handlers/misc.d.ts.map +1 -1
  24. package/dist/cli/handlers/operator.d.ts +9 -0
  25. package/dist/cli/handlers/operator.d.ts.map +1 -1
  26. package/dist/cli/handlers/run.d.ts.map +1 -1
  27. package/dist/cli/lsp/server.d.ts.map +1 -1
  28. package/dist/cli/main.d.ts.map +1 -1
  29. package/dist/cli/mcp/server.d.ts.map +1 -1
  30. package/dist/cli/mcp/tools/build.d.ts.map +1 -1
  31. package/dist/cli/mcp/tools/composites.d.ts.map +1 -1
  32. package/dist/cli/mcp/tools/explain.d.ts.map +1 -1
  33. package/dist/cli/mcp/tools/import.d.ts.map +1 -1
  34. package/dist/cli/mcp/tools/lint.d.ts.map +1 -1
  35. package/dist/cli/mcp/tools/scaffold.d.ts.map +1 -1
  36. package/dist/cli/mcp/tools/search.d.ts.map +1 -1
  37. package/dist/cli/mcp/workspace-tools.d.ts +1 -1
  38. package/dist/cli/mcp/workspace-tools.d.ts.map +1 -1
  39. package/dist/cli/registry.d.ts +11 -2
  40. package/dist/cli/registry.d.ts.map +1 -1
  41. package/dist/codegen/fetch.d.ts.map +1 -1
  42. package/dist/codegen/naming.d.ts.map +1 -1
  43. package/dist/codegen/pinned-upgrade.d.ts +67 -3
  44. package/dist/codegen/pinned-upgrade.d.ts.map +1 -1
  45. package/dist/codegen/registry.d.ts.map +1 -1
  46. package/dist/components/capability-plugin-loader.d.ts.map +1 -1
  47. package/dist/components/capability.d.ts.map +1 -1
  48. package/dist/components/driver.d.ts.map +1 -1
  49. package/dist/components/fan-out.d.ts.map +1 -1
  50. package/dist/components/starter-plugin.d.ts.map +1 -1
  51. package/dist/components/verbs/process-runner.d.ts.map +1 -1
  52. package/dist/components/verbs/r2-sync.d.ts.map +1 -1
  53. package/dist/components/verbs/run-agent.d.ts.map +1 -1
  54. package/dist/components/verbs/sbom-generator.d.ts.map +1 -1
  55. package/dist/components/verbs/sign.d.ts.map +1 -1
  56. package/dist/components/verbs/verify.d.ts.map +1 -1
  57. package/dist/components/verbs/vuln-gate.d.ts.map +1 -1
  58. package/dist/components/verbs/vuln-scan.d.ts.map +1 -1
  59. package/dist/components/verbs/wrangler.d.ts.map +1 -1
  60. package/dist/composite.d.ts.map +1 -1
  61. package/dist/config.d.ts +19 -7
  62. package/dist/config.d.ts.map +1 -1
  63. package/dist/declarable.d.ts +16 -0
  64. package/dist/declarable.d.ts.map +1 -1
  65. package/dist/discovery/cache.d.ts.map +1 -1
  66. package/dist/discovery/fold-import.d.ts +15 -5
  67. package/dist/discovery/fold-import.d.ts.map +1 -1
  68. package/dist/discovery/param-deps.d.ts +16 -0
  69. package/dist/discovery/param-deps.d.ts.map +1 -1
  70. package/dist/discovery/sandbox/policy-wire.d.ts.map +1 -1
  71. package/dist/discovery/specifier-resolve.d.ts +37 -0
  72. package/dist/discovery/specifier-resolve.d.ts.map +1 -0
  73. package/dist/errors.d.ts.map +1 -1
  74. package/dist/fold/fold.d.ts +3 -1
  75. package/dist/fold/fold.d.ts.map +1 -1
  76. package/dist/graph-detail.d.ts.map +1 -1
  77. package/dist/graph-ir.d.ts.map +1 -1
  78. package/dist/graph-layout.d.ts.map +1 -1
  79. package/dist/import/base-parser.d.ts.map +1 -1
  80. package/dist/import/embedded.d.ts +7 -0
  81. package/dist/import/embedded.d.ts.map +1 -1
  82. package/dist/import/parser-options.d.ts +14 -0
  83. package/dist/import/parser-options.d.ts.map +1 -0
  84. package/dist/import/parser.d.ts +17 -0
  85. package/dist/import/parser.d.ts.map +1 -1
  86. package/dist/kubectl-context.d.ts.map +1 -1
  87. package/dist/lexicon-output.d.ts.map +1 -1
  88. package/dist/lexicon-schema.d.ts +3 -3
  89. package/dist/lexicon.d.ts +55 -3
  90. package/dist/lexicon.d.ts.map +1 -1
  91. package/dist/lifecycle/assert-live.d.ts.map +1 -1
  92. package/dist/lifecycle/gate-ledger.d.ts +15 -0
  93. package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
  94. package/dist/lifecycle/git.d.ts.map +1 -1
  95. package/dist/lifecycle/member-ledger.d.ts.map +1 -1
  96. package/dist/lifecycle/observe.d.ts.map +1 -1
  97. package/dist/lifecycle/plan-ledger.d.ts.map +1 -1
  98. package/dist/lifecycle/release-ledger.d.ts.map +1 -1
  99. package/dist/lifecycle/scenario.d.ts.map +1 -1
  100. package/dist/lifecycle/status.d.ts.map +1 -1
  101. package/dist/lifecycle/work-lease.d.ts +61 -2
  102. package/dist/lifecycle/work-lease.d.ts.map +1 -1
  103. package/dist/lint/config.d.ts +8 -8
  104. package/dist/lint/engine.d.ts +6 -0
  105. package/dist/lint/engine.d.ts.map +1 -1
  106. package/dist/lsp/lexicon-providers.d.ts.map +1 -1
  107. package/dist/op/activities/activity-contracts.d.ts +11 -11
  108. package/dist/op/activities/apply.d.ts +79 -9
  109. package/dist/op/activities/apply.d.ts.map +1 -1
  110. package/dist/op/activities/decide.d.ts.map +1 -1
  111. package/dist/op/activities/index.d.ts +1 -1
  112. package/dist/op/activities/index.d.ts.map +1 -1
  113. package/dist/op/activities/lexicon-upgrade.d.ts +44 -12
  114. package/dist/op/activities/lexicon-upgrade.d.ts.map +1 -1
  115. package/dist/op/activity-contract.d.ts +1 -1
  116. package/dist/op/activity-failure.d.ts.map +1 -1
  117. package/dist/op/activity-profiles.d.ts.map +1 -1
  118. package/dist/op/builders.d.ts.map +1 -1
  119. package/dist/op/composites/apply-op.d.ts +12 -5
  120. package/dist/op/composites/apply-op.d.ts.map +1 -1
  121. package/dist/op/composites/lexicon-upgrade-op.d.ts +22 -6
  122. package/dist/op/composites/lexicon-upgrade-op.d.ts.map +1 -1
  123. package/dist/op/decide-backend.d.ts.map +1 -1
  124. package/dist/op/decide-read-inputs.d.ts.map +1 -1
  125. package/dist/op/emulator-lifecycle.d.ts +21 -2
  126. package/dist/op/emulator-lifecycle.d.ts.map +1 -1
  127. package/dist/op/gate-approval.d.ts +5 -1
  128. package/dist/op/gate-approval.d.ts.map +1 -1
  129. package/dist/op/gate-wait.d.ts.map +1 -1
  130. package/dist/op/gate.d.ts +19 -3
  131. package/dist/op/gate.d.ts.map +1 -1
  132. package/dist/op/index.d.ts +2 -0
  133. package/dist/op/index.d.ts.map +1 -1
  134. package/dist/op/local-executor.d.ts +6 -0
  135. package/dist/op/local-executor.d.ts.map +1 -1
  136. package/dist/op/operator.d.ts.map +1 -1
  137. package/dist/op/run-context.d.ts +39 -0
  138. package/dist/op/run-context.d.ts.map +1 -0
  139. package/dist/op/run-live.d.ts.map +1 -1
  140. package/dist/op/runtimes/local.d.ts.map +1 -1
  141. package/dist/op/source-archive.d.ts.map +1 -1
  142. package/dist/op/steward-beside.d.ts.map +1 -1
  143. package/dist/op/steward-points.d.ts.map +1 -1
  144. package/dist/op/steward.d.ts.map +1 -1
  145. package/dist/op/types.d.ts +8 -3
  146. package/dist/op/types.d.ts.map +1 -1
  147. package/dist/op/work-lease-run.d.ts +24 -4
  148. package/dist/op/work-lease-run.d.ts.map +1 -1
  149. package/dist/project-root.d.ts.map +1 -1
  150. package/dist/provenance.d.ts +21 -0
  151. package/dist/provenance.d.ts.map +1 -1
  152. package/dist/pseudo-parameter.d.ts.map +1 -1
  153. package/dist/reconcile.d.ts.map +1 -1
  154. package/dist/secret-materialization.d.ts.map +1 -1
  155. package/dist/terraform/emit-source.d.ts.map +1 -1
  156. package/dist/terraform/parse.d.ts.map +1 -1
  157. package/dist/testing.d.ts.map +1 -1
  158. package/dist/workspace/__fixtures__/contract-repo.d.ts.map +1 -1
  159. package/dist/workspace/__fixtures__/decide-workspace.d.ts +1 -1
  160. package/dist/workspace/__fixtures__/decide-workspace.d.ts.map +1 -1
  161. package/dist/workspace/agent-cli.d.ts +5 -0
  162. package/dist/workspace/agent-cli.d.ts.map +1 -1
  163. package/dist/workspace/box-factory.d.ts +73 -0
  164. package/dist/workspace/box-factory.d.ts.map +1 -0
  165. package/dist/workspace/changes.d.ts.map +1 -1
  166. package/dist/workspace/chant-migrations/chud-lexicon-exit.d.ts.map +1 -1
  167. package/dist/workspace/checks/boxes.d.ts.map +1 -1
  168. package/dist/workspace/checks.d.ts +5 -0
  169. package/dist/workspace/checks.d.ts.map +1 -1
  170. package/dist/workspace/compose-graph.d.ts +10 -0
  171. package/dist/workspace/compose-graph.d.ts.map +1 -1
  172. package/dist/workspace/conformance/index.d.ts +67 -6
  173. package/dist/workspace/conformance/index.d.ts.map +1 -1
  174. package/dist/workspace/conformance/vitest.d.ts +12 -3
  175. package/dist/workspace/conformance/vitest.d.ts.map +1 -1
  176. package/dist/workspace/conformance/writer.d.ts +368 -0
  177. package/dist/workspace/conformance/writer.d.ts.map +1 -0
  178. package/dist/workspace/decide.d.ts +1 -1
  179. package/dist/workspace/decide.d.ts.map +1 -1
  180. package/dist/workspace/declaration.d.ts +91 -4
  181. package/dist/workspace/declaration.d.ts.map +1 -1
  182. package/dist/workspace/declaration.schema.json +234 -5
  183. package/dist/workspace/generated-files.d.ts.map +1 -1
  184. package/dist/workspace/graph-cache.d.ts.map +1 -1
  185. package/dist/workspace/graph-cli.d.ts +2 -0
  186. package/dist/workspace/graph-cli.d.ts.map +1 -1
  187. package/dist/workspace/identity.d.ts +111 -0
  188. package/dist/workspace/identity.d.ts.map +1 -0
  189. package/dist/workspace/intent-cli.d.ts +7 -4
  190. package/dist/workspace/intent-cli.d.ts.map +1 -1
  191. package/dist/workspace/intent-record.d.ts +8 -1
  192. package/dist/workspace/intent-record.d.ts.map +1 -1
  193. package/dist/workspace/intent.d.ts +149 -5
  194. package/dist/workspace/intent.d.ts.map +1 -1
  195. package/dist/workspace/kinds.d.ts +18 -4
  196. package/dist/workspace/kinds.d.ts.map +1 -1
  197. package/dist/workspace/lineage-hash-index.d.ts.map +1 -1
  198. package/dist/workspace/lineage-lock.d.ts +2 -2
  199. package/dist/workspace/lineage-lock.d.ts.map +1 -1
  200. package/dist/workspace/links.d.ts.map +1 -1
  201. package/dist/workspace/points.d.ts.map +1 -1
  202. package/dist/workspace/principal-classes.d.ts +114 -0
  203. package/dist/workspace/principal-classes.d.ts.map +1 -0
  204. package/dist/workspace/reason-codes.d.ts +21 -1
  205. package/dist/workspace/reason-codes.d.ts.map +1 -1
  206. package/dist/workspace/record-assets.d.ts.map +1 -1
  207. package/dist/workspace/records-checkout.d.ts +54 -0
  208. package/dist/workspace/records-checkout.d.ts.map +1 -0
  209. package/dist/workspace/records-cli.d.ts +27 -1
  210. package/dist/workspace/records-cli.d.ts.map +1 -1
  211. package/dist/workspace/records-close.d.ts +1 -1
  212. package/dist/workspace/records-close.d.ts.map +1 -1
  213. package/dist/workspace/records-since.d.ts.map +1 -1
  214. package/dist/workspace/records-write.d.ts +5 -4
  215. package/dist/workspace/records-write.d.ts.map +1 -1
  216. package/dist/workspace/records.d.ts +15 -0
  217. package/dist/workspace/records.d.ts.map +1 -1
  218. package/dist/workspace/runs-cli.d.ts +164 -0
  219. package/dist/workspace/runs-cli.d.ts.map +1 -0
  220. package/dist/workspace/runs.d.ts +423 -0
  221. package/dist/workspace/runs.d.ts.map +1 -0
  222. package/dist/workspace/source-block.d.ts +1 -1
  223. package/dist/workspace/source-block.d.ts.map +1 -1
  224. package/dist/workspace/status-gates.d.ts +15 -3
  225. package/dist/workspace/status-gates.d.ts.map +1 -1
  226. package/dist/workspace/status.d.ts +10 -0
  227. package/dist/workspace/status.d.ts.map +1 -1
  228. package/dist/workspace/symbols.d.ts +52 -0
  229. package/dist/workspace/symbols.d.ts.map +1 -0
  230. package/dist/workspace/trailer-joins.d.ts +46 -0
  231. package/dist/workspace/trailer-joins.d.ts.map +1 -0
  232. package/dist/workspace/trailers.d.ts +89 -0
  233. package/dist/workspace/trailers.d.ts.map +1 -0
  234. package/dist/workspace/trust/attestor.d.ts.map +1 -1
  235. package/dist/workspace/trust/rotation.d.ts.map +1 -1
  236. package/dist/workspace/trust/seal.d.ts +33 -0
  237. package/dist/workspace/trust/seal.d.ts.map +1 -1
  238. package/dist/workspace/trust/test-repo.d.ts.map +1 -1
  239. package/dist/workspace/work-cli.d.ts +39 -3
  240. package/dist/workspace/work-cli.d.ts.map +1 -1
  241. package/dist/workspace/work-evidence.d.ts +1 -1
  242. package/dist/workspace/work-evidence.d.ts.map +1 -1
  243. package/dist/workspace/work.d.ts +26 -1
  244. package/dist/workspace/work.d.ts.map +1 -1
  245. package/dist/workspace/workspace-principals.schema.json +60 -0
  246. package/dist/workspace/write-scope.d.ts +79 -19
  247. package/dist/workspace/write-scope.d.ts.map +1 -1
  248. package/dist/yaml.d.ts +21 -39
  249. package/dist/yaml.d.ts.map +1 -1
  250. package/package.json +2 -2
  251. package/src/audit/prior-art.ts +15 -0
  252. package/src/cli/commands/__fixtures__/init-lexicon-output/package.json +1 -1
  253. package/src/cli/commands/carve-emit-state.test.ts +4 -0
  254. package/src/cli/commands/carve-emit.ts +5 -19
  255. package/src/cli/commands/check-lexicon.test.ts +62 -1
  256. package/src/cli/commands/check-lexicon.ts +36 -6
  257. package/src/cli/commands/import-live.test.ts +18 -0
  258. package/src/cli/commands/import-parser-options.test.ts +133 -0
  259. package/src/cli/commands/import.ts +21 -3
  260. package/src/cli/commands/init-lexicon/templates/project.ts +1 -1
  261. package/src/cli/commands/init.test.ts +8 -1
  262. package/src/cli/commands/init.ts +23 -8
  263. package/src/cli/commands/lint.test.ts +37 -0
  264. package/src/cli/commands/onboard.test.ts +53 -3
  265. package/src/cli/commands/onboard.ts +52 -4
  266. package/src/cli/commands/pinned-upgrade.ts +73 -33
  267. package/src/cli/handlers/__snapshots__/build-member.test.ts.snap +2 -2
  268. package/src/cli/handlers/components.ts +2 -2
  269. package/src/cli/handlers/dev.ts +8 -6
  270. package/src/cli/handlers/lifecycle.test.ts +67 -0
  271. package/src/cli/handlers/lifecycle.ts +6 -5
  272. package/src/cli/handlers/misc.ts +2 -0
  273. package/src/cli/handlers/operator.ts +87 -3
  274. package/src/cli/handlers/run.test.ts +111 -0
  275. package/src/cli/handlers/run.ts +85 -24
  276. package/src/cli/handlers/scenario.ts +2 -2
  277. package/src/cli/main.test.ts +1 -0
  278. package/src/cli/main.ts +65 -11
  279. package/src/cli/mcp/workspace-tools.test.ts +5 -2
  280. package/src/cli/mcp/workspace-tools.ts +29 -2
  281. package/src/cli/registry.ts +11 -2
  282. package/src/codegen/pinned-upgrade-multi.test.ts +157 -0
  283. package/src/codegen/pinned-upgrade-tags.test.ts +112 -0
  284. package/src/codegen/pinned-upgrade.test.ts +104 -0
  285. package/src/codegen/pinned-upgrade.ts +250 -56
  286. package/src/codegen/testdata/postgres-tags.json +242 -0
  287. package/src/config.test.ts +21 -0
  288. package/src/config.ts +15 -0
  289. package/src/declarable.test.ts +21 -0
  290. package/src/declarable.ts +19 -0
  291. package/src/discovery/fold-composite.test.ts +41 -5
  292. package/src/discovery/fold-import.test.ts +129 -0
  293. package/src/discovery/fold-import.ts +643 -131
  294. package/src/discovery/fold-package-composite.test.ts +264 -0
  295. package/src/discovery/fold-specifiers.test.ts +191 -0
  296. package/src/discovery/param-deps.test.ts +66 -1
  297. package/src/discovery/param-deps.ts +45 -0
  298. package/src/discovery/specifier-resolve.ts +344 -0
  299. package/src/fold/fold.test.ts +39 -1
  300. package/src/fold/fold.ts +83 -9
  301. package/src/fold-provenance.test.ts +140 -0
  302. package/src/graph-ir.test.ts +83 -0
  303. package/src/graph-ir.ts +29 -0
  304. package/src/import/embedded.test.ts +20 -0
  305. package/src/import/embedded.ts +13 -0
  306. package/src/import/parser-options.ts +46 -0
  307. package/src/import/parser.ts +20 -0
  308. package/src/lexicon.ts +55 -3
  309. package/src/lifecycle/gate-ledger.ts +16 -0
  310. package/src/lifecycle/observe.test.ts +18 -0
  311. package/src/lifecycle/observe.ts +6 -4
  312. package/src/lifecycle/snapshot.ts +2 -2
  313. package/src/lifecycle/work-lease.test.ts +1 -1
  314. package/src/lifecycle/work-lease.ts +93 -2
  315. package/src/lint/engine.test.ts +55 -0
  316. package/src/lint/engine.ts +30 -4
  317. package/src/lint/output-docs.test.ts +59 -56
  318. package/src/op/activities/apply.test.ts +189 -5
  319. package/src/op/activities/apply.ts +230 -8
  320. package/src/op/activities/index.ts +3 -0
  321. package/src/op/activities/lexicon-upgrade.test.ts +160 -6
  322. package/src/op/activities/lexicon-upgrade.ts +154 -51
  323. package/src/op/composites/apply-op.ts +12 -5
  324. package/src/op/composites/composites.test.ts +30 -3
  325. package/src/op/composites/lexicon-upgrade-op.test.ts +7 -2
  326. package/src/op/composites/lexicon-upgrade-op.ts +29 -8
  327. package/src/op/emulator-lifecycle.test.ts +23 -0
  328. package/src/op/emulator-lifecycle.ts +52 -14
  329. package/src/op/gate-approval.test.ts +74 -0
  330. package/src/op/gate-approval.ts +5 -1
  331. package/src/op/gate.ts +31 -5
  332. package/src/op/index.ts +2 -0
  333. package/src/op/local-executor.test.ts +15 -0
  334. package/src/op/local-executor.ts +40 -12
  335. package/src/op/local-output.ts +1 -1
  336. package/src/op/operator.ts +4 -0
  337. package/src/op/run-context.test.ts +141 -0
  338. package/src/op/run-context.ts +51 -0
  339. package/src/op/runtimes/local.test.ts +14 -0
  340. package/src/op/runtimes/local.ts +2 -0
  341. package/src/op/steward-beside.ts +2 -0
  342. package/src/op/types.ts +8 -3
  343. package/src/op/work-lease-run.test.ts +47 -0
  344. package/src/op/work-lease-run.ts +73 -11
  345. package/src/provenance.ts +35 -0
  346. package/src/workspace/__fixtures__/studio-template-84c8b21.json +1 -1
  347. package/src/workspace/agent-cli.ts +7 -3
  348. package/src/workspace/agent.schema.json +22 -0
  349. package/src/workspace/box-factory.test.ts +320 -0
  350. package/src/workspace/box-factory.ts +103 -0
  351. package/src/workspace/changes.schema.json +12 -20
  352. package/src/workspace/changes.ts +4 -1
  353. package/src/workspace/checks/boxes.test.ts +2 -0
  354. package/src/workspace/checks.ts +29 -5
  355. package/src/workspace/compose-graph.ts +7 -0
  356. package/src/workspace/conformance/__writer_fixture__/answers/answer.kind.mjs +27 -0
  357. package/src/workspace/conformance/__writer_fixture__/answers/answer.schema.json +95 -0
  358. package/src/workspace/conformance/__writer_fixture__/decisions/points.json +132 -0
  359. package/src/workspace/conformance/__writer_fixture__/sessions/session.kind.mjs +48 -0
  360. package/src/workspace/conformance/__writer_fixture__/sessions/session.schema.json +108 -0
  361. package/src/workspace/conformance/__writer_fixture__/work/W-001-the-writer-suite-works-this-item.md +25 -0
  362. package/src/workspace/conformance/__writer_fixture__/work/work.kind.mjs +60 -0
  363. package/src/workspace/conformance/__writer_fixture__/work/work.schema.json +578 -0
  364. package/src/workspace/conformance/conformance.e2e.test.ts +35 -3
  365. package/src/workspace/conformance/index.mjs +30 -3
  366. package/src/workspace/conformance/index.ts +103 -15
  367. package/src/workspace/conformance/vitest.ts +44 -2
  368. package/src/workspace/conformance/writer-conformance.e2e.test.ts +131 -0
  369. package/src/workspace/conformance/writer.test.ts +156 -0
  370. package/src/workspace/conformance/writer.ts +880 -0
  371. package/src/workspace/decide.ts +7 -1
  372. package/src/workspace/declaration.schema.json +234 -5
  373. package/src/workspace/declaration.ts +174 -10
  374. package/src/workspace/graph-cli.ts +5 -2
  375. package/src/workspace/graph.schema.json +247 -0
  376. package/src/workspace/identity.test.ts +196 -0
  377. package/src/workspace/identity.ts +186 -0
  378. package/src/workspace/intent-cli.ts +64 -10
  379. package/src/workspace/intent-record.schema.json +208 -0
  380. package/src/workspace/intent-record.ts +35 -1
  381. package/src/workspace/intent-why.test.ts +274 -0
  382. package/src/workspace/intent.schema.json +718 -7
  383. package/src/workspace/intent.test.ts +11 -2
  384. package/src/workspace/intent.ts +495 -32
  385. package/src/workspace/kinds.ts +44 -37
  386. package/src/workspace/points-write.schema.json +1 -0
  387. package/src/workspace/principal-classes.test.ts +175 -0
  388. package/src/workspace/principal-classes.ts +307 -0
  389. package/src/workspace/reason-codes.test.ts +11 -3
  390. package/src/workspace/reason-codes.ts +24 -1
  391. package/src/workspace/records-amend.schema.json +2 -0
  392. package/src/workspace/records-checkout.ts +106 -0
  393. package/src/workspace/records-cli.ts +103 -11
  394. package/src/workspace/records-close.schema.json +1 -0
  395. package/src/workspace/records-new.schema.json +2 -0
  396. package/src/workspace/records-review.schema.json +2 -0
  397. package/src/workspace/records-uncommitted.test.ts +171 -0
  398. package/src/workspace/records-write.ts +28 -6
  399. package/src/workspace/records.schema.json +72 -1
  400. package/src/workspace/records.ts +27 -0
  401. package/src/workspace/runs-cli.ts +381 -0
  402. package/src/workspace/runs-write.schema.json +583 -0
  403. package/src/workspace/runs.schema.json +810 -0
  404. package/src/workspace/runs.test.ts +242 -0
  405. package/src/workspace/runs.ts +709 -0
  406. package/src/workspace/status-contract.test.ts +5 -0
  407. package/src/workspace/status-gates.ts +22 -8
  408. package/src/workspace/status.schema.json +127 -2
  409. package/src/workspace/status.ts +21 -1
  410. package/src/workspace/symbols.ts +180 -0
  411. package/src/workspace/trailer-joins.test.ts +171 -0
  412. package/src/workspace/trailer-joins.ts +82 -0
  413. package/src/workspace/trailers.ts +148 -0
  414. package/src/workspace/trust/seal.ts +52 -1
  415. package/src/workspace/work-cli.e2e.test.ts +28 -1
  416. package/src/workspace/work-cli.ts +133 -8
  417. package/src/workspace/work-evidence.schema.json +2 -0
  418. package/src/workspace/work-history.schema.json +73 -1
  419. package/src/workspace/work-history.test.ts +48 -5
  420. package/src/workspace/work-kind-fields.test.ts +154 -0
  421. package/src/workspace/work-lease.schema.json +14 -1
  422. package/src/workspace/work.ts +82 -0
  423. package/src/workspace/workspace-principals.schema.json +60 -0
  424. package/src/workspace/write-scope.test.ts +128 -2
  425. package/src/workspace/write-scope.ts +170 -45
  426. package/src/yaml.test.ts +111 -1
  427. package/src/yaml.ts +141 -549
@@ -66,7 +66,7 @@
66
66
  },
67
67
  "region": {
68
68
  "type": "string",
69
- "description": "The id of the region node."
69
+ "description": "The id of the region node: region:<path>, with :<start>-<end> for a line range or #<symbol> for a symbol."
70
70
  },
71
71
  "history": {
72
72
  "type": "object",
@@ -90,7 +90,7 @@
90
90
  "file",
91
91
  "directory"
92
92
  ],
93
- "description": "line-range: git log -L over the region's lines. file: git log --follow over the file. directory: git log over the directory."
93
+ "description": "line-range: git log -L over the region's lines, a symbol's current lines included. file: git log --follow over the file. directory: git log over the directory."
94
94
  },
95
95
  "shallow": {
96
96
  "type": "boolean",
@@ -182,6 +182,9 @@
182
182
  "minimum": 0
183
183
  }
184
184
  }
185
+ },
186
+ "why": {
187
+ "$ref": "#/$defs/why"
185
188
  }
186
189
  }
187
190
  },
@@ -216,6 +219,9 @@
216
219
  },
217
220
  {
218
221
  "$ref": "#/$defs/finding"
222
+ },
223
+ {
224
+ "$ref": "#/$defs/run"
219
225
  }
220
226
  ]
221
227
  },
@@ -237,7 +243,7 @@
237
243
  }
238
244
  },
239
245
  "region": {
240
- "description": "The region the walk starts from. Its id is region:<path> with :<start>-<end> for a line range.",
246
+ "description": "The region the walk starts from. Its id is region:<path>, with :<start>-<end> for a line range, or #<symbol> for a symbol (#3034).",
241
247
  "type": "object",
242
248
  "required": [
243
249
  "id",
@@ -271,7 +277,7 @@
271
277
  "$ref": "#/$defs/lineRange"
272
278
  }
273
279
  ],
274
- "description": "The line range asked for, in the file as read, or null for the whole path."
280
+ "description": "The line range asked for, in the file as read, or the current lines of the symbol asked for; null for the whole path."
275
281
  },
276
282
  "member": {
277
283
  "type": [
@@ -306,6 +312,36 @@
306
312
  "null"
307
313
  ],
308
314
  "description": "The graph node id the region was given as, whose sourceLoc it is, or null."
315
+ },
316
+ "symbol": {
317
+ "oneOf": [
318
+ {
319
+ "type": "null"
320
+ },
321
+ {
322
+ "type": "object",
323
+ "required": [
324
+ "name",
325
+ "qualified",
326
+ "kind"
327
+ ],
328
+ "properties": {
329
+ "name": {
330
+ "type": "string",
331
+ "description": "The symbol as given after #."
332
+ },
333
+ "qualified": {
334
+ "type": "string",
335
+ "description": "The declaration it resolved to, as a dotted path from the file's top level, such as Server.listen."
336
+ },
337
+ "kind": {
338
+ "type": "string",
339
+ "description": "What declares it: function, class, method, property, interface, type, enum, namespace, variable or member."
340
+ }
341
+ }
342
+ }
343
+ ],
344
+ "description": "For a region given as path#symbol (#3034): the symbol and the declaration it resolved to in the tree read; its current lines are in lines and are followed through history as a line range. Null otherwise. Added within version 1, so an older document may lack it."
309
345
  }
310
346
  }
311
347
  },
@@ -483,6 +519,9 @@
483
519
  null
484
520
  ],
485
521
  "description": "How the decisions constraining the region by path relate to the commit (#2656). decided: it falls inside a decision's window and that decision's own unit made it. decided-by-window: it falls inside a window, and it is not the decision's own work, so the person judges it. undecided: outside every window, with the finding intent-commit-undecided. null: no record kind was read. Added within version 1, so an older document may lack it."
522
+ },
523
+ "joins": {
524
+ "$ref": "#/$defs/trailerJoins"
486
525
  }
487
526
  }
488
527
  },
@@ -952,6 +991,9 @@
952
991
  "work-done-gap-open",
953
992
  "work-acceptance-unmet",
954
993
  "work-acceptance-self-verified",
994
+ "work-contract-unknown",
995
+ "work-contract-undecided",
996
+ "work-tier-unknown",
955
997
  "answer-points-unreadable",
956
998
  "answer-point-unknown",
957
999
  "answer-point-changed"
@@ -1179,7 +1221,7 @@
1179
1221
  }
1180
1222
  },
1181
1223
  "edge": {
1182
- "description": "constrains: decision or work item to region, file or contract. pins: decision to artifact. touched-by: region to commit. produced-by: commit to unit. serves: unit to contract. supersedes: the newer decision to the one it replaces. cites-evidence: unit, contract or decision to evidence. links: consumer member to producer member. within: commit to a decision whose path window it falls in, or to a work item whose window it falls in. implements: work item to the decision it carries out. needs: work item to a work item it waits on. addressed-by: finding to a work item that addresses it.",
1224
+ "description": "constrains: decision or work item to region, file or contract. pins: decision to artifact. touched-by: region to commit. produced-by: commit to unit. serves: unit to contract. supersedes: the newer decision to the one it replaces. cites-evidence: unit, contract or decision to evidence. links: consumer member to producer member. within: commit to a decision whose path window it falls in, or to a work item whose window it falls in. implements: work item to the decision it carries out. needs: work item to a work item it waits on. addressed-by: finding to a work item that addresses it. carries: commit to a decision or work item its Chant-Record trailer names, or to the work item its Chant-Lease was taken on (#3149). made-by: commit to the agent run that made it, joined by its Chant-Run trailer or the run's own list of commits (#3033). worked-on: agent run to the work item it worked on and to each record it names, when a kind read has them; the commits it made carry them as they carry a Chant-Lease's item and a Chant-Record (#3034).",
1183
1225
  "oneOf": [
1184
1226
  {
1185
1227
  "$ref": "#/$defs/constrainsEdge"
@@ -1195,6 +1237,9 @@
1195
1237
  },
1196
1238
  {
1197
1239
  "$ref": "#/$defs/plainEdge"
1240
+ },
1241
+ {
1242
+ "$ref": "#/$defs/madeByEdge"
1198
1243
  }
1199
1244
  ]
1200
1245
  },
@@ -1260,7 +1305,10 @@
1260
1305
  "schema-invalid",
1261
1306
  "location-missing",
1262
1307
  "intent-region-invalid",
1263
- "intent-record-unknown"
1308
+ "intent-record-unknown",
1309
+ "intent-symbol-unsupported",
1310
+ "intent-symbol-unknown",
1311
+ "intent-symbol-ambiguous"
1264
1312
  ]
1265
1313
  },
1266
1314
  "message": {
@@ -1397,7 +1445,9 @@
1397
1445
  "links",
1398
1446
  "implements",
1399
1447
  "needs",
1400
- "addressed-by"
1448
+ "addressed-by",
1449
+ "carries",
1450
+ "worked-on"
1401
1451
  ]
1402
1452
  }
1403
1453
  }
@@ -1474,6 +1524,667 @@
1474
1524
  "type": "string"
1475
1525
  }
1476
1526
  }
1527
+ },
1528
+ "trailerJoins": {
1529
+ "type": "object",
1530
+ "description": "What chant's own commit trailers join the commit to (#3149, ws-075). Added within version 1, so an older document may lack it.",
1531
+ "required": [
1532
+ "agent",
1533
+ "lease",
1534
+ "run",
1535
+ "records",
1536
+ "applied"
1537
+ ],
1538
+ "properties": {
1539
+ "agent": {
1540
+ "type": [
1541
+ "string",
1542
+ "null"
1543
+ ],
1544
+ "description": "Chant-Agent: the agent session that wrote the commit (ws-067)."
1545
+ },
1546
+ "lease": {
1547
+ "oneOf": [
1548
+ {
1549
+ "type": "null"
1550
+ },
1551
+ {
1552
+ "type": "object",
1553
+ "required": [
1554
+ "token",
1555
+ "item"
1556
+ ],
1557
+ "properties": {
1558
+ "token": {
1559
+ "type": "string",
1560
+ "description": "Chant-Lease: the work lease's fencing token."
1561
+ },
1562
+ "item": {
1563
+ "type": [
1564
+ "string",
1565
+ "null"
1566
+ ],
1567
+ "description": "The work item a lease history on the local chant/lifecycle branch names for the token, or null when none does."
1568
+ }
1569
+ }
1570
+ }
1571
+ ]
1572
+ },
1573
+ "run": {
1574
+ "type": [
1575
+ "string",
1576
+ "null"
1577
+ ],
1578
+ "description": "Chant-Run: the agent run that made the commit (#3033)."
1579
+ },
1580
+ "records": {
1581
+ "type": "array",
1582
+ "description": "Each well-formed Chant-Record value, <kind>:<id>, in order.",
1583
+ "items": {
1584
+ "type": "object",
1585
+ "required": [
1586
+ "kind",
1587
+ "id",
1588
+ "node"
1589
+ ],
1590
+ "properties": {
1591
+ "kind": {
1592
+ "type": "string",
1593
+ "description": "The record kind's name."
1594
+ },
1595
+ "id": {
1596
+ "type": "string"
1597
+ },
1598
+ "node": {
1599
+ "type": [
1600
+ "string",
1601
+ "null"
1602
+ ],
1603
+ "description": "The id of the record's node, record:<kind>/<id>, when a kind read has the record; null otherwise."
1604
+ }
1605
+ }
1606
+ }
1607
+ },
1608
+ "applied": {
1609
+ "oneOf": [
1610
+ {
1611
+ "type": "null"
1612
+ },
1613
+ {
1614
+ "type": "object",
1615
+ "required": [
1616
+ "by",
1617
+ "at",
1618
+ "commit"
1619
+ ],
1620
+ "properties": {
1621
+ "by": {
1622
+ "type": "string",
1623
+ "description": "Chant-Applied-By: who applied the branch."
1624
+ },
1625
+ "at": {
1626
+ "type": [
1627
+ "string",
1628
+ "null"
1629
+ ],
1630
+ "description": "Chant-Applied-At, ISO 8601, or null when it is missing."
1631
+ },
1632
+ "commit": {
1633
+ "type": [
1634
+ "string",
1635
+ "null"
1636
+ ],
1637
+ "description": "Chant-Applied-Commit: the applied branch's tip, or null when it is missing or not a commit id."
1638
+ }
1639
+ }
1640
+ }
1641
+ ]
1642
+ }
1643
+ }
1644
+ },
1645
+ "run": {
1646
+ "type": "object",
1647
+ "description": "An agent run that made a commit in the walk (#3033), from the run ledger on the local chant/lifecycle branch. Linked from each commit it made by a made-by edge. Added within version 1. A recorded run has a worked-on edge to the work item it worked on and to each record it names, when a kind read has them (#3034).",
1648
+ "required": [
1649
+ "id",
1650
+ "kind",
1651
+ "run",
1652
+ "recorded",
1653
+ "state",
1654
+ "harness",
1655
+ "model",
1656
+ "provider",
1657
+ "by",
1658
+ "agent",
1659
+ "unit",
1660
+ "startedAt",
1661
+ "endedAt",
1662
+ "outcome",
1663
+ "usage",
1664
+ "cost",
1665
+ "transcript"
1666
+ ],
1667
+ "properties": {
1668
+ "id": {
1669
+ "type": "string",
1670
+ "pattern": "^run:"
1671
+ },
1672
+ "kind": {
1673
+ "const": "run"
1674
+ },
1675
+ "run": {
1676
+ "type": "string"
1677
+ },
1678
+ "recorded": {
1679
+ "type": "boolean",
1680
+ "description": "Whether the ledger has the run. A Chant-Run trailer can name a run whose record is missing or not fetched; then every other field is null."
1681
+ },
1682
+ "state": {
1683
+ "enum": [
1684
+ "running",
1685
+ "ended",
1686
+ null
1687
+ ]
1688
+ },
1689
+ "harness": {
1690
+ "oneOf": [
1691
+ {
1692
+ "type": "null"
1693
+ },
1694
+ {
1695
+ "type": "object",
1696
+ "required": [
1697
+ "name",
1698
+ "version"
1699
+ ],
1700
+ "properties": {
1701
+ "name": {
1702
+ "type": "string"
1703
+ },
1704
+ "version": {
1705
+ "type": [
1706
+ "string",
1707
+ "null"
1708
+ ]
1709
+ }
1710
+ }
1711
+ }
1712
+ ]
1713
+ },
1714
+ "model": {
1715
+ "type": [
1716
+ "string",
1717
+ "null"
1718
+ ]
1719
+ },
1720
+ "provider": {
1721
+ "type": [
1722
+ "string",
1723
+ "null"
1724
+ ]
1725
+ },
1726
+ "by": {
1727
+ "type": [
1728
+ "string",
1729
+ "null"
1730
+ ]
1731
+ },
1732
+ "agent": {
1733
+ "type": [
1734
+ "string",
1735
+ "null"
1736
+ ]
1737
+ },
1738
+ "unit": {
1739
+ "type": [
1740
+ "string",
1741
+ "null"
1742
+ ]
1743
+ },
1744
+ "startedAt": {
1745
+ "type": [
1746
+ "string",
1747
+ "null"
1748
+ ]
1749
+ },
1750
+ "endedAt": {
1751
+ "type": [
1752
+ "string",
1753
+ "null"
1754
+ ]
1755
+ },
1756
+ "outcome": {
1757
+ "type": [
1758
+ "string",
1759
+ "null"
1760
+ ]
1761
+ },
1762
+ "usage": {
1763
+ "oneOf": [
1764
+ {
1765
+ "type": "null"
1766
+ },
1767
+ {
1768
+ "$ref": "#/$defs/runUsage"
1769
+ }
1770
+ ]
1771
+ },
1772
+ "cost": {
1773
+ "oneOf": [
1774
+ {
1775
+ "type": "null"
1776
+ },
1777
+ {
1778
+ "$ref": "#/$defs/runCost"
1779
+ }
1780
+ ]
1781
+ },
1782
+ "transcript": {
1783
+ "oneOf": [
1784
+ {
1785
+ "type": "null"
1786
+ },
1787
+ {
1788
+ "$ref": "#/$defs/runPin"
1789
+ }
1790
+ ]
1791
+ },
1792
+ "instruction": {
1793
+ "oneOf": [
1794
+ {
1795
+ "type": "null"
1796
+ },
1797
+ {
1798
+ "$ref": "#/$defs/runPin"
1799
+ }
1800
+ ],
1801
+ "description": "The instruction the run was given, pinned by hash, with the writer's excerpt when it gave one (#3034). Added within version 1."
1802
+ },
1803
+ "lease": {
1804
+ "type": [
1805
+ "string",
1806
+ "null"
1807
+ ],
1808
+ "description": "The fencing token of the work lease the run worked under (#3034). Added within version 1."
1809
+ }
1810
+ }
1811
+ },
1812
+ "runUsage": {
1813
+ "type": "object",
1814
+ "required": [
1815
+ "turns",
1816
+ "inputTokens",
1817
+ "outputTokens",
1818
+ "cacheReadTokens",
1819
+ "cacheWriteTokens"
1820
+ ],
1821
+ "properties": {
1822
+ "turns": {
1823
+ "type": [
1824
+ "integer",
1825
+ "null"
1826
+ ],
1827
+ "minimum": 0
1828
+ },
1829
+ "inputTokens": {
1830
+ "type": [
1831
+ "integer",
1832
+ "null"
1833
+ ],
1834
+ "minimum": 0
1835
+ },
1836
+ "outputTokens": {
1837
+ "type": [
1838
+ "integer",
1839
+ "null"
1840
+ ],
1841
+ "minimum": 0
1842
+ },
1843
+ "cacheReadTokens": {
1844
+ "type": [
1845
+ "integer",
1846
+ "null"
1847
+ ],
1848
+ "minimum": 0
1849
+ },
1850
+ "cacheWriteTokens": {
1851
+ "type": [
1852
+ "integer",
1853
+ "null"
1854
+ ],
1855
+ "minimum": 0
1856
+ }
1857
+ }
1858
+ },
1859
+ "runCost": {
1860
+ "type": "object",
1861
+ "required": [
1862
+ "amount",
1863
+ "currency",
1864
+ "source"
1865
+ ],
1866
+ "properties": {
1867
+ "amount": {
1868
+ "type": "number",
1869
+ "minimum": 0
1870
+ },
1871
+ "currency": {
1872
+ "type": "string",
1873
+ "pattern": "^[A-Z]{3}$",
1874
+ "description": "ISO 4217, such as USD."
1875
+ },
1876
+ "source": {
1877
+ "type": "string",
1878
+ "description": "What priced it, as the writer names it: a harness's own report (harness:claude-code), a proxy's price table (lobby:list-2026-09), a provider's bill."
1879
+ }
1880
+ }
1881
+ },
1882
+ "runPin": {
1883
+ "type": "object",
1884
+ "description": "A file pinned by hash and never copied.",
1885
+ "required": [
1886
+ "sha256",
1887
+ "bytes",
1888
+ "ref"
1889
+ ],
1890
+ "properties": {
1891
+ "sha256": {
1892
+ "type": "string",
1893
+ "pattern": "^[0-9a-f]{64}$"
1894
+ },
1895
+ "bytes": {
1896
+ "type": [
1897
+ "integer",
1898
+ "null"
1899
+ ],
1900
+ "minimum": 0,
1901
+ "description": "Its size, when chant hashed the file itself; null when the writer gave the hash."
1902
+ },
1903
+ "ref": {
1904
+ "type": [
1905
+ "string",
1906
+ "null"
1907
+ ],
1908
+ "description": "Where the writer keeps it, as the writer named it. chant never reads it back."
1909
+ },
1910
+ "excerpt": {
1911
+ "type": "string",
1912
+ "maxLength": 500,
1913
+ "description": "On the instruction only, and only when the writer gave one (#3034): a short excerpt to show beside the hash, such as its first line. The hash pins the whole instruction; the excerpt is the writer's and is never checked against it. Added within version 1."
1914
+ }
1915
+ }
1916
+ },
1917
+ "madeByEdge": {
1918
+ "type": "object",
1919
+ "required": [
1920
+ "kind",
1921
+ "from",
1922
+ "to",
1923
+ "joinedBy"
1924
+ ],
1925
+ "properties": {
1926
+ "kind": {
1927
+ "const": "made-by"
1928
+ },
1929
+ "from": {
1930
+ "type": "string"
1931
+ },
1932
+ "to": {
1933
+ "type": "string"
1934
+ },
1935
+ "joinedBy": {
1936
+ "type": "array",
1937
+ "minItems": 1,
1938
+ "items": {
1939
+ "enum": [
1940
+ "trailer",
1941
+ "record"
1942
+ ]
1943
+ },
1944
+ "description": "trailer: the commit carries Chant-Run with the run's id. record: the run's end lists the commit."
1945
+ }
1946
+ }
1947
+ },
1948
+ "why": {
1949
+ "type": "object",
1950
+ "description": "The answer to why the region is like this (#3034, hud#700): who last wrote its current lines, from git blame, the agent run behind each, and the decisions governing the region, most relevant first. explained is false, with intent-why-no-decision in gaps, when no current decision accounts for it. Added within version 1, so an older document may lack it.",
1951
+ "required": [
1952
+ "lines",
1953
+ "blame",
1954
+ "decisions",
1955
+ "runs",
1956
+ "explained",
1957
+ "gaps"
1958
+ ],
1959
+ "properties": {
1960
+ "lines": {
1961
+ "oneOf": [
1962
+ {
1963
+ "type": "null"
1964
+ },
1965
+ {
1966
+ "$ref": "#/$defs/lineRange"
1967
+ }
1968
+ ],
1969
+ "description": "The lines accounted for: the region's range or symbol, the whole file, or null for a directory, which is not blamed."
1970
+ },
1971
+ "blame": {
1972
+ "type": "array",
1973
+ "items": {
1974
+ "$ref": "#/$defs/whySpan"
1975
+ },
1976
+ "description": "The current lines, top to bottom, in spans that one commit and the same runs last wrote. Read with git blame at the revision read, or in the working tree. Empty for a directory."
1977
+ },
1978
+ "decisions": {
1979
+ "type": "array",
1980
+ "items": {
1981
+ "$ref": "#/$defs/whyDecision"
1982
+ },
1983
+ "description": "Every decision node in the graph, most relevant first: current before superseded; then carried, path, contract, issue, member, related; then more of the current lines carried out; closed before open; the narrower path constraint; the later deciding commit."
1984
+ },
1985
+ "runs": {
1986
+ "type": "array",
1987
+ "items": {
1988
+ "$ref": "#/$defs/whyRun"
1989
+ },
1990
+ "description": "For a file, the runs that wrote its current lines, most lines first, then the later start. For a directory, every run in the walk, the latest start first, with lines 0."
1991
+ },
1992
+ "explained": {
1993
+ "type": "boolean",
1994
+ "description": "Whether a current decision governs the region at any granularity, or is carried out by the commits or runs that made its current lines."
1995
+ },
1996
+ "gaps": {
1997
+ "type": "array",
1998
+ "items": {
1999
+ "$ref": "#/$defs/whyGap"
2000
+ },
2001
+ "description": "What the answer can't account for, each with a closed code."
2002
+ }
2003
+ }
2004
+ },
2005
+ "whySpan": {
2006
+ "type": "object",
2007
+ "required": [
2008
+ "start",
2009
+ "end",
2010
+ "commit",
2011
+ "sha",
2012
+ "runs",
2013
+ "narrowedBy"
2014
+ ],
2015
+ "properties": {
2016
+ "start": {
2017
+ "type": "integer",
2018
+ "minimum": 1
2019
+ },
2020
+ "end": {
2021
+ "type": "integer",
2022
+ "minimum": 1
2023
+ },
2024
+ "commit": {
2025
+ "type": [
2026
+ "string",
2027
+ "null"
2028
+ ],
2029
+ "description": "The commit node that last wrote the lines, or null for lines not committed yet."
2030
+ },
2031
+ "sha": {
2032
+ "type": [
2033
+ "string",
2034
+ "null"
2035
+ ],
2036
+ "pattern": "^[0-9a-f]{40,64}$"
2037
+ },
2038
+ "runs": {
2039
+ "type": "array",
2040
+ "items": {
2041
+ "type": "string"
2042
+ },
2043
+ "description": "The run nodes behind the lines: the run the commit's Chant-Run names first, then those whose record lists the commit. More than one is intent-why-run-ambiguous."
2044
+ },
2045
+ "narrowedBy": {
2046
+ "enum": [
2047
+ "hunks",
2048
+ null
2049
+ ],
2050
+ "description": "hunks: runs' recorded hunks chose among the runs that made the commit, and a run whose hunks miss the lines is left out. null: every run that made the commit is listed."
2051
+ }
2052
+ }
2053
+ },
2054
+ "whyDecision": {
2055
+ "type": "object",
2056
+ "required": [
2057
+ "decision",
2058
+ "relevance",
2059
+ "current",
2060
+ "closed",
2061
+ "lines"
2062
+ ],
2063
+ "properties": {
2064
+ "decision": {
2065
+ "type": "string",
2066
+ "description": "The decision node."
2067
+ },
2068
+ "relevance": {
2069
+ "enum": [
2070
+ "carried",
2071
+ "path",
2072
+ "contract",
2073
+ "issue",
2074
+ "member",
2075
+ "related"
2076
+ ],
2077
+ "description": "carried: a commit or run that made current lines carries the decision out, through a unit, a Chant-Record or Chant-Lease trailer, or the run's work item and records (for a directory, any commit in the walk). path, contract, issue, member: it constrains the region that way. related: it is in the graph only through supersession, or through a commit that made no current line."
2078
+ },
2079
+ "current": {
2080
+ "type": "boolean",
2081
+ "description": "Not superseded."
2082
+ },
2083
+ "closed": {
2084
+ "type": "boolean",
2085
+ "description": "Its state is one its kind closes, such as ratified."
2086
+ },
2087
+ "lines": {
2088
+ "type": "integer",
2089
+ "minimum": 0,
2090
+ "description": "How many current lines were made as its own work."
2091
+ }
2092
+ }
2093
+ },
2094
+ "whyRun": {
2095
+ "type": "object",
2096
+ "required": [
2097
+ "run",
2098
+ "lines",
2099
+ "commits",
2100
+ "unit",
2101
+ "decisions"
2102
+ ],
2103
+ "properties": {
2104
+ "run": {
2105
+ "type": "string",
2106
+ "description": "The run node."
2107
+ },
2108
+ "lines": {
2109
+ "type": "integer",
2110
+ "minimum": 0
2111
+ },
2112
+ "commits": {
2113
+ "type": "array",
2114
+ "items": {
2115
+ "type": "string"
2116
+ },
2117
+ "description": "The commit nodes through which it made the lines."
2118
+ },
2119
+ "unit": {
2120
+ "oneOf": [
2121
+ {
2122
+ "type": "null"
2123
+ },
2124
+ {
2125
+ "type": "object",
2126
+ "required": [
2127
+ "id",
2128
+ "kind",
2129
+ "node"
2130
+ ],
2131
+ "properties": {
2132
+ "id": {
2133
+ "type": "string"
2134
+ },
2135
+ "kind": {
2136
+ "type": [
2137
+ "string",
2138
+ "null"
2139
+ ]
2140
+ },
2141
+ "node": {
2142
+ "type": [
2143
+ "string",
2144
+ "null"
2145
+ ],
2146
+ "description": "The work node, when a work kind read has the item."
2147
+ }
2148
+ }
2149
+ }
2150
+ ],
2151
+ "description": "The work item the run record names."
2152
+ },
2153
+ "decisions": {
2154
+ "type": "array",
2155
+ "items": {
2156
+ "type": "string"
2157
+ },
2158
+ "description": "The decision nodes it carried out: the ones its work item implements and the decision records it names."
2159
+ }
2160
+ }
2161
+ },
2162
+ "whyGap": {
2163
+ "type": "object",
2164
+ "required": [
2165
+ "code",
2166
+ "message"
2167
+ ],
2168
+ "properties": {
2169
+ "code": {
2170
+ "enum": [
2171
+ "intent-why-no-decision",
2172
+ "intent-why-no-run",
2173
+ "intent-why-uncommitted",
2174
+ "intent-why-run-ambiguous"
2175
+ ]
2176
+ },
2177
+ "message": {
2178
+ "type": "string"
2179
+ },
2180
+ "lines": {
2181
+ "type": "array",
2182
+ "items": {
2183
+ "$ref": "#/$defs/lineRange"
2184
+ },
2185
+ "description": "The lines the gap is about, for intent-why-uncommitted and intent-why-run-ambiguous."
2186
+ }
2187
+ }
1477
2188
  }
1478
2189
  }
1479
2190
  }