@ybotok/loam 0.1.0-beta.3 → 0.2.0-alpha.13

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 (1256) hide show
  1. package/CHANGELOG.md +5992 -82
  2. package/COMPARISON.md +168 -63
  3. package/CONTRIBUTING.md +121 -0
  4. package/MIGRATING-from-OpenSpec.md +238 -55
  5. package/QUICKSTART.md +302 -0
  6. package/README.md +653 -144
  7. package/ROADMAP.md +1035 -0
  8. package/SCHEMA.md +3916 -263
  9. package/SECURITY.md +21 -3
  10. package/WORKFLOW.md +927 -0
  11. package/dist/cli.js +133 -21
  12. package/dist/cli.js.map +1 -1
  13. package/dist/commands/adopt/adopt.js +204 -0
  14. package/dist/commands/adopt/adopt.js.map +1 -0
  15. package/dist/commands/adopt/render.js +309 -0
  16. package/dist/commands/adopt/render.js.map +1 -0
  17. package/dist/commands/archive/archive.js +74 -0
  18. package/dist/commands/archive/archive.js.map +1 -0
  19. package/dist/commands/archive/closing.js +42 -0
  20. package/dist/commands/archive/closing.js.map +1 -0
  21. package/dist/commands/archive/plan/contracts/asyncapi.js +172 -0
  22. package/dist/commands/archive/plan/contracts/asyncapi.js.map +1 -0
  23. package/dist/commands/archive/plan/contracts/consumers.js +56 -0
  24. package/dist/commands/archive/plan/contracts/consumers.js.map +1 -0
  25. package/dist/commands/archive/plan/contracts/openapi.js +193 -0
  26. package/dist/commands/archive/plan/contracts/openapi.js.map +1 -0
  27. package/dist/commands/archive/plan/contracts/verdict-lines.js +103 -0
  28. package/dist/commands/archive/plan/contracts/verdict-lines.js.map +1 -0
  29. package/dist/commands/archive/plan/document/head.js +151 -0
  30. package/dist/commands/archive/plan/document/head.js.map +1 -0
  31. package/dist/commands/archive/plan/document/links.js +284 -0
  32. package/dist/commands/archive/plan/document/links.js.map +1 -0
  33. package/dist/commands/archive/plan/document/run.js +136 -0
  34. package/dist/commands/archive/plan/document/run.js.map +1 -0
  35. package/dist/commands/archive/plan/gate.js +319 -0
  36. package/dist/commands/archive/plan/gate.js.map +1 -0
  37. package/dist/commands/archive/plan/landscape.js +298 -0
  38. package/dist/commands/archive/plan/landscape.js.map +1 -0
  39. package/dist/commands/archive/plan/model/extending.js +85 -0
  40. package/dist/commands/archive/plan/model/extending.js.map +1 -0
  41. package/dist/commands/archive/plan/refusal.js +106 -0
  42. package/dist/commands/archive/plan/refusal.js.map +1 -0
  43. package/dist/commands/archive/plan/specs.js +318 -0
  44. package/dist/commands/archive/plan/specs.js.map +1 -0
  45. package/dist/commands/archive/plan/state.js +30 -0
  46. package/dist/commands/archive/plan/state.js.map +1 -0
  47. package/dist/commands/archive/run.js +355 -0
  48. package/dist/commands/archive/run.js.map +1 -0
  49. package/dist/commands/archive/shipped.js +49 -0
  50. package/dist/commands/archive/shipped.js.map +1 -0
  51. package/dist/commands/context/context.js +166 -0
  52. package/dist/commands/context/context.js.map +1 -0
  53. package/dist/commands/context/print.js +305 -0
  54. package/dist/commands/context/print.js.map +1 -0
  55. package/dist/commands/delta/delta.js +367 -0
  56. package/dist/commands/delta/delta.js.map +1 -0
  57. package/dist/commands/delta/print.js +221 -0
  58. package/dist/commands/delta/print.js.map +1 -0
  59. package/dist/commands/dependencies.js +6 -8
  60. package/dist/commands/dependencies.js.map +1 -1
  61. package/dist/commands/diff/diff.js +86 -0
  62. package/dist/commands/diff/diff.js.map +1 -0
  63. package/dist/commands/diff/print.js +38 -0
  64. package/dist/commands/diff/print.js.map +1 -0
  65. package/dist/commands/doctor.js +65 -5
  66. package/dist/commands/doctor.js.map +1 -1
  67. package/dist/commands/explain/explain.js +227 -0
  68. package/dist/commands/explain/explain.js.map +1 -0
  69. package/dist/commands/explore.js +39 -28
  70. package/dist/commands/explore.js.map +1 -1
  71. package/dist/commands/gate/gate.js +152 -0
  72. package/dist/commands/gate/gate.js.map +1 -0
  73. package/dist/commands/gate/print.js +66 -0
  74. package/dist/commands/gate/print.js.map +1 -0
  75. package/dist/commands/gherkin/commit.js +105 -0
  76. package/dist/commands/gherkin/commit.js.map +1 -0
  77. package/dist/commands/gherkin/gherkin.js +262 -0
  78. package/dist/commands/gherkin/gherkin.js.map +1 -0
  79. package/dist/commands/gherkin/reconcile.js +146 -0
  80. package/dist/commands/gherkin/reconcile.js.map +1 -0
  81. package/dist/commands/gherkin/render.js +77 -0
  82. package/dist/commands/gherkin/render.js.map +1 -0
  83. package/dist/commands/init/example.js +204 -0
  84. package/dist/commands/init/example.js.map +1 -0
  85. package/dist/commands/init/first-hour.js +72 -0
  86. package/dist/commands/init/first-hour.js.map +1 -0
  87. package/dist/commands/{init.js → init/init.js} +142 -71
  88. package/dist/commands/init/init.js.map +1 -0
  89. package/dist/commands/init/mcp.js +131 -0
  90. package/dist/commands/init/mcp.js.map +1 -0
  91. package/dist/commands/init/options.js +78 -0
  92. package/dist/commands/init/options.js.map +1 -0
  93. package/dist/commands/instructions.js +72 -14
  94. package/dist/commands/instructions.js.map +1 -1
  95. package/dist/commands/list/campaign/campaign.js +63 -0
  96. package/dist/commands/list/campaign/campaign.js.map +1 -0
  97. package/dist/commands/list/campaign/owners.js +65 -0
  98. package/dist/commands/list/campaign/owners.js.map +1 -0
  99. package/dist/commands/list/json.js +155 -0
  100. package/dist/commands/list/json.js.map +1 -0
  101. package/dist/commands/list/list.js +358 -0
  102. package/dist/commands/list/list.js.map +1 -0
  103. package/dist/commands/list/print.js +344 -0
  104. package/dist/commands/list/print.js.map +1 -0
  105. package/dist/commands/list/review.js +120 -0
  106. package/dist/commands/list/review.js.map +1 -0
  107. package/dist/commands/list/suites/suites.js +140 -0
  108. package/dist/commands/list/suites/suites.js.map +1 -0
  109. package/dist/commands/list/views.js +108 -0
  110. package/dist/commands/list/views.js.map +1 -0
  111. package/dist/commands/mcp/dispatch.js +238 -0
  112. package/dist/commands/mcp/dispatch.js.map +1 -0
  113. package/dist/commands/mcp/mcp.js +75 -0
  114. package/dist/commands/mcp/mcp.js.map +1 -0
  115. package/dist/commands/mcp/serve.js +55 -0
  116. package/dist/commands/mcp/serve.js.map +1 -0
  117. package/dist/commands/migrate-openspec/materialize/active.js +175 -0
  118. package/dist/commands/migrate-openspec/materialize/active.js.map +1 -0
  119. package/dist/commands/migrate-openspec/materialize/feature.js +41 -0
  120. package/dist/commands/migrate-openspec/materialize/feature.js.map +1 -0
  121. package/dist/commands/migrate-openspec/materialize/living.js +62 -0
  122. package/dist/commands/migrate-openspec/materialize/living.js.map +1 -0
  123. package/dist/commands/migrate-openspec/materialize/stage.js +143 -0
  124. package/dist/commands/migrate-openspec/materialize/stage.js.map +1 -0
  125. package/dist/commands/migrate-openspec/materialize/target.js +219 -0
  126. package/dist/commands/migrate-openspec/materialize/target.js.map +1 -0
  127. package/dist/commands/migrate-openspec/migrate-openspec.js +142 -0
  128. package/dist/commands/migrate-openspec/migrate-openspec.js.map +1 -0
  129. package/dist/commands/migrate-openspec/openspec/decisions.js +86 -0
  130. package/dist/commands/migrate-openspec/openspec/decisions.js.map +1 -0
  131. package/dist/commands/migrate-openspec/openspec/error.js +18 -0
  132. package/dist/commands/migrate-openspec/openspec/error.js.map +1 -0
  133. package/dist/commands/migrate-openspec/openspec/mapping.js +162 -0
  134. package/dist/commands/migrate-openspec/openspec/mapping.js.map +1 -0
  135. package/dist/commands/migrate-openspec/openspec/paths.js +40 -0
  136. package/dist/commands/migrate-openspec/openspec/paths.js.map +1 -0
  137. package/dist/commands/migrate-openspec/openspec/read.js +49 -0
  138. package/dist/commands/migrate-openspec/openspec/read.js.map +1 -0
  139. package/dist/commands/migrate-openspec/print.js +89 -0
  140. package/dist/commands/migrate-openspec/print.js.map +1 -0
  141. package/dist/commands/new/capability-template.js +118 -0
  142. package/dist/commands/new/capability-template.js.map +1 -0
  143. package/dist/commands/new/commit.js +62 -0
  144. package/dist/commands/new/commit.js.map +1 -0
  145. package/dist/commands/new/modifies.js +206 -0
  146. package/dist/commands/new/modifies.js.map +1 -0
  147. package/dist/commands/new/new.js +328 -0
  148. package/dist/commands/new/new.js.map +1 -0
  149. package/dist/commands/new/templates.js +279 -0
  150. package/dist/commands/new/templates.js.map +1 -0
  151. package/dist/commands/open.js +199 -0
  152. package/dist/commands/open.js.map +1 -0
  153. package/dist/commands/policy/format.js +152 -0
  154. package/dist/commands/policy/format.js.map +1 -0
  155. package/dist/commands/{docs-repo-gate.js → policy/gate.js} +38 -11
  156. package/dist/commands/policy/gate.js.map +1 -0
  157. package/dist/commands/rebase/edit.js +106 -0
  158. package/dist/commands/rebase/edit.js.map +1 -0
  159. package/dist/commands/rebase/living.js +185 -0
  160. package/dist/commands/rebase/living.js.map +1 -0
  161. package/dist/commands/rebase/plan.js +245 -0
  162. package/dist/commands/rebase/plan.js.map +1 -0
  163. package/dist/commands/rebase/rebase.js +300 -0
  164. package/dist/commands/rebase/rebase.js.map +1 -0
  165. package/dist/commands/seed/commit.js +221 -0
  166. package/dist/commands/seed/commit.js.map +1 -0
  167. package/dist/commands/seed/plan.js +278 -0
  168. package/dist/commands/seed/plan.js.map +1 -0
  169. package/dist/commands/seed/seed.js +174 -0
  170. package/dist/commands/seed/seed.js.map +1 -0
  171. package/dist/commands/show/feature.js +182 -0
  172. package/dist/commands/show/feature.js.map +1 -0
  173. package/dist/commands/show/introduced.js +157 -0
  174. package/dist/commands/show/introduced.js.map +1 -0
  175. package/dist/commands/show/marks.js +53 -0
  176. package/dist/commands/show/marks.js.map +1 -0
  177. package/dist/commands/show/service.js +239 -0
  178. package/dist/commands/show/service.js.map +1 -0
  179. package/dist/commands/show/show.js +87 -0
  180. package/dist/commands/show/show.js.map +1 -0
  181. package/dist/commands/status/fleet-next.js +90 -0
  182. package/dist/commands/status/fleet-next.js.map +1 -0
  183. package/dist/commands/status/json.js +47 -0
  184. package/dist/commands/status/json.js.map +1 -0
  185. package/dist/commands/status/print.js +209 -0
  186. package/dist/commands/status/print.js.map +1 -0
  187. package/dist/commands/status/status.js +115 -0
  188. package/dist/commands/status/status.js.map +1 -0
  189. package/dist/commands/steps/steps.js +269 -0
  190. package/dist/commands/steps/steps.js.map +1 -0
  191. package/dist/commands/subsystem/edit.js +192 -0
  192. package/dist/commands/subsystem/edit.js.map +1 -0
  193. package/dist/commands/subsystem/move.js +325 -0
  194. package/dist/commands/subsystem/move.js.map +1 -0
  195. package/dist/commands/subsystem/query.js +113 -0
  196. package/dist/commands/subsystem/query.js.map +1 -0
  197. package/dist/commands/subsystem/subsystem.js +98 -0
  198. package/dist/commands/subsystem/subsystem.js.map +1 -0
  199. package/dist/commands/subsystem/sync.js +318 -0
  200. package/dist/commands/subsystem/sync.js.map +1 -0
  201. package/dist/commands/subsystem/txn/exclude.js +132 -0
  202. package/dist/commands/subsystem/txn/exclude.js.map +1 -0
  203. package/dist/commands/subsystem/txn/links.js +128 -0
  204. package/dist/commands/subsystem/txn/links.js.map +1 -0
  205. package/dist/commands/subsystem/txn/report.js +174 -0
  206. package/dist/commands/subsystem/txn/report.js.map +1 -0
  207. package/dist/commands/subsystem/txn/txn.js +196 -0
  208. package/dist/commands/subsystem/txn/txn.js.map +1 -0
  209. package/dist/commands/subsystem/txn/views.js +249 -0
  210. package/dist/commands/subsystem/txn/views.js.map +1 -0
  211. package/dist/commands/tasks/actions.js +107 -0
  212. package/dist/commands/tasks/actions.js.map +1 -0
  213. package/dist/commands/tasks/render.js +253 -0
  214. package/dist/commands/tasks/render.js.map +1 -0
  215. package/dist/commands/tasks/tasks.js +119 -0
  216. package/dist/commands/tasks/tasks.js.map +1 -0
  217. package/dist/commands/unarchive/manifest.js +176 -0
  218. package/dist/commands/unarchive/manifest.js.map +1 -0
  219. package/dist/commands/unarchive/restore.js +254 -0
  220. package/dist/commands/unarchive/restore.js.map +1 -0
  221. package/dist/commands/unarchive/unarchive.js +59 -0
  222. package/dist/commands/unarchive/unarchive.js.map +1 -0
  223. package/dist/commands/validate/arch-coverage.js +245 -0
  224. package/dist/commands/validate/arch-coverage.js.map +1 -0
  225. package/dist/commands/validate/checks/fleet-shape.js +204 -0
  226. package/dist/commands/validate/checks/fleet-shape.js.map +1 -0
  227. package/dist/commands/validate/checks/health-deps.js +58 -0
  228. package/dist/commands/validate/checks/health-deps.js.map +1 -0
  229. package/dist/commands/validate/checks/introduced.js +102 -0
  230. package/dist/commands/validate/checks/introduced.js.map +1 -0
  231. package/dist/commands/validate/checks/requirements.js +264 -0
  232. package/dist/commands/validate/checks/requirements.js.map +1 -0
  233. package/dist/commands/validate/checks/sources.js +85 -0
  234. package/dist/commands/validate/checks/sources.js.map +1 -0
  235. package/dist/commands/validate/coverage/covers-after.js +105 -0
  236. package/dist/commands/validate/coverage/covers-after.js.map +1 -0
  237. package/dist/commands/validate/feature.js +222 -0
  238. package/dist/commands/validate/feature.js.map +1 -0
  239. package/dist/commands/validate/fleet/census.js +93 -0
  240. package/dist/commands/validate/fleet/census.js.map +1 -0
  241. package/dist/commands/validate/fleet/kind-tags.js +39 -0
  242. package/dist/commands/validate/fleet/kind-tags.js.map +1 -0
  243. package/dist/commands/validate/fleet/landscape.js +371 -0
  244. package/dist/commands/validate/fleet/landscape.js.map +1 -0
  245. package/dist/commands/validate/fleet/load.js +118 -0
  246. package/dist/commands/validate/fleet/load.js.map +1 -0
  247. package/dist/commands/validate/fleet/map/attest.js +98 -0
  248. package/dist/commands/validate/fleet/map/attest.js.map +1 -0
  249. package/dist/commands/validate/fleet/map/bindings.js +107 -0
  250. package/dist/commands/validate/fleet/map/bindings.js.map +1 -0
  251. package/dist/commands/validate/fleet/map/consumers.js +244 -0
  252. package/dist/commands/validate/fleet/map/consumers.js.map +1 -0
  253. package/dist/commands/validate/fleet/map/isolation.js +116 -0
  254. package/dist/commands/validate/fleet/map/isolation.js.map +1 -0
  255. package/dist/commands/validate/fleet/map/usecases.js +54 -0
  256. package/dist/commands/validate/fleet/map/usecases.js.map +1 -0
  257. package/dist/commands/validate/fleet/obligations.js +266 -0
  258. package/dist/commands/validate/fleet/obligations.js.map +1 -0
  259. package/dist/commands/validate/fleet/scorecard/adoption.js +102 -0
  260. package/dist/commands/validate/fleet/scorecard/adoption.js.map +1 -0
  261. package/dist/commands/validate/fleet/scorecard/contracts.js +98 -0
  262. package/dist/commands/validate/fleet/scorecard/contracts.js.map +1 -0
  263. package/dist/commands/validate/fleet/scorecard/print.js +71 -0
  264. package/dist/commands/validate/fleet/scorecard/print.js.map +1 -0
  265. package/dist/commands/validate/fleet/scorecard/scorecard.js +162 -0
  266. package/dist/commands/validate/fleet/scorecard/scorecard.js.map +1 -0
  267. package/dist/commands/validate/fleet/usecases/place.js +13 -0
  268. package/dist/commands/validate/fleet/usecases/place.js.map +1 -0
  269. package/dist/commands/validate/fleet/views/fleet-project.js +217 -0
  270. package/dist/commands/validate/fleet/views/fleet-project.js.map +1 -0
  271. package/dist/commands/validate/fleet/views/ids.js +75 -0
  272. package/dist/commands/validate/fleet/views/ids.js.map +1 -0
  273. package/dist/commands/validate/fleet/views/projects.js +278 -0
  274. package/dist/commands/validate/fleet/views/projects.js.map +1 -0
  275. package/dist/commands/validate/fleet/views/root-documents.js +83 -0
  276. package/dist/commands/validate/fleet/views/root-documents.js.map +1 -0
  277. package/dist/commands/validate/fleet/views/stale.js +52 -0
  278. package/dist/commands/validate/fleet/views/stale.js.map +1 -0
  279. package/dist/commands/validate/links/corpus.js +89 -0
  280. package/dist/commands/validate/links/corpus.js.map +1 -0
  281. package/dist/commands/validate/links/glossary.js +75 -0
  282. package/dist/commands/validate/links/glossary.js.map +1 -0
  283. package/dist/commands/validate/render/repeats.js +63 -0
  284. package/dist/commands/validate/render/repeats.js.map +1 -0
  285. package/dist/commands/validate/render/rollups.js +115 -0
  286. package/dist/commands/validate/render/rollups.js.map +1 -0
  287. package/dist/commands/validate/render/text.js +199 -0
  288. package/dist/commands/validate/render/text.js.map +1 -0
  289. package/dist/commands/validate/report.js +145 -0
  290. package/dist/commands/validate/report.js.map +1 -0
  291. package/dist/commands/validate/scope.js +113 -0
  292. package/dist/commands/validate/scope.js.map +1 -0
  293. package/dist/commands/validate/service/api.js +252 -0
  294. package/dist/commands/validate/service/api.js.map +1 -0
  295. package/dist/commands/validate/service/contracts/generated.js +134 -0
  296. package/dist/commands/validate/service/contracts/generated.js.map +1 -0
  297. package/dist/commands/validate/service/events/events.js +241 -0
  298. package/dist/commands/validate/service/events/events.js.map +1 -0
  299. package/dist/commands/validate/service/events/message-producers.js +77 -0
  300. package/dist/commands/validate/service/events/message-producers.js.map +1 -0
  301. package/dist/commands/validate/service/evidence-pins.js +177 -0
  302. package/dist/commands/validate/service/evidence-pins.js.map +1 -0
  303. package/dist/commands/validate/service/model/diverged.js +226 -0
  304. package/dist/commands/validate/service/model/diverged.js.map +1 -0
  305. package/dist/commands/validate/service/model/grade.js +163 -0
  306. package/dist/commands/validate/service/model/grade.js.map +1 -0
  307. package/dist/commands/validate/service/service.js +310 -0
  308. package/dist/commands/validate/service/service.js.map +1 -0
  309. package/dist/commands/validate/service/specs.js +279 -0
  310. package/dist/commands/validate/service/specs.js.map +1 -0
  311. package/dist/commands/validate/service/spine.js +148 -0
  312. package/dist/commands/validate/service/spine.js.map +1 -0
  313. package/dist/commands/validate/service/usecases/tags.js +113 -0
  314. package/dist/commands/validate/service/usecases/tags.js.map +1 -0
  315. package/dist/commands/validate/service/usecases/usecases.js +209 -0
  316. package/dist/commands/validate/service/usecases/usecases.js.map +1 -0
  317. package/dist/commands/validate/validate.js +363 -0
  318. package/dist/commands/validate/validate.js.map +1 -0
  319. package/dist/commands/verify/cross/diff.js +178 -0
  320. package/dist/commands/verify/cross/diff.js.map +1 -0
  321. package/dist/commands/verify/evidence/contract.js +32 -0
  322. package/dist/commands/verify/evidence/contract.js.map +1 -0
  323. package/dist/commands/verify/evidence/pins.js +52 -0
  324. package/dist/commands/verify/evidence/pins.js.map +1 -0
  325. package/dist/commands/verify/evidence/read.js +81 -0
  326. package/dist/commands/verify/evidence/read.js.map +1 -0
  327. package/dist/commands/verify/frozen.js +263 -0
  328. package/dist/commands/verify/frozen.js.map +1 -0
  329. package/dist/commands/verify/record.js +278 -0
  330. package/dist/commands/verify/record.js.map +1 -0
  331. package/dist/commands/verify/report.js +206 -0
  332. package/dist/commands/verify/report.js.map +1 -0
  333. package/dist/commands/verify/results.js +328 -0
  334. package/dist/commands/verify/results.js.map +1 -0
  335. package/dist/commands/verify/verify.js +220 -0
  336. package/dist/commands/verify/verify.js.map +1 -0
  337. package/dist/commands/vouch/contract.js +11 -0
  338. package/dist/commands/vouch/contract.js.map +1 -0
  339. package/dist/commands/vouch/pack/contract.js +2 -0
  340. package/dist/commands/vouch/pack/contract.js.map +1 -0
  341. package/dist/commands/vouch/pack/pack.js +266 -0
  342. package/dist/commands/vouch/pack/pack.js.map +1 -0
  343. package/dist/commands/vouch/pack/print.js +266 -0
  344. package/dist/commands/vouch/pack/print.js.map +1 -0
  345. package/dist/commands/vouch/pack/sections.js +141 -0
  346. package/dist/commands/vouch/pack/sections.js.map +1 -0
  347. package/dist/commands/vouch/prompt/confirm.js +46 -0
  348. package/dist/commands/vouch/prompt/confirm.js.map +1 -0
  349. package/dist/commands/vouch/report.js +101 -0
  350. package/dist/commands/vouch/report.js.map +1 -0
  351. package/dist/commands/vouch/run.js +230 -0
  352. package/dist/commands/vouch/run.js.map +1 -0
  353. package/dist/commands/vouch/sample/plan.js +111 -0
  354. package/dist/commands/vouch/sample/plan.js.map +1 -0
  355. package/dist/commands/vouch/sample/print.js +109 -0
  356. package/dist/commands/vouch/sample/print.js.map +1 -0
  357. package/dist/commands/vouch/vet/verify.js +155 -0
  358. package/dist/commands/vouch/vet/verify.js.map +1 -0
  359. package/dist/commands/vouch/vouch.js +169 -0
  360. package/dist/commands/vouch/vouch.js.map +1 -0
  361. package/dist/core/agent/agents-md/command-map.js +299 -0
  362. package/dist/core/agent/agents-md/command-map.js.map +1 -0
  363. package/dist/core/agent/agents-md/map/explain.js +46 -0
  364. package/dist/core/agent/agents-md/map/explain.js.map +1 -0
  365. package/dist/core/agent/agents-md/map/lenses/context.js +50 -0
  366. package/dist/core/agent/agents-md/map/lenses/context.js.map +1 -0
  367. package/dist/core/agent/agents-md/map/lenses/diff.js +59 -0
  368. package/dist/core/agent/agents-md/map/lenses/diff.js.map +1 -0
  369. package/dist/core/agent/agents-md/map/lenses/gate.js +65 -0
  370. package/dist/core/agent/agents-md/map/lenses/gate.js.map +1 -0
  371. package/dist/core/agent/agents-md/map/mcp.js +44 -0
  372. package/dist/core/agent/agents-md/map/mcp.js.map +1 -0
  373. package/dist/core/agent/agents-md/map/status.js +78 -0
  374. package/dist/core/agent/agents-md/map/status.js.map +1 -0
  375. package/dist/core/agent/agents-md/map/subsystem.js +104 -0
  376. package/dist/core/agent/agents-md/map/subsystem.js.map +1 -0
  377. package/dist/core/agent/agents-md/map/usecases.js +138 -0
  378. package/dist/core/agent/agents-md/map/usecases.js.map +1 -0
  379. package/dist/core/agent/agents-md/refusals.js +273 -0
  380. package/dist/core/agent/agents-md/refusals.js.map +1 -0
  381. package/dist/core/agent/agents-md.js +203 -0
  382. package/dist/core/agent/agents-md.js.map +1 -0
  383. package/dist/core/{agents-stamp.js → agent/agents-stamp.js} +60 -0
  384. package/dist/core/agent/agents-stamp.js.map +1 -0
  385. package/dist/core/agent/contract.js +2 -0
  386. package/dist/core/agent/contract.js.map +1 -0
  387. package/dist/core/agent/protocol.js +193 -0
  388. package/dist/core/agent/protocol.js.map +1 -0
  389. package/dist/core/agent/scaffold.js +254 -0
  390. package/dist/core/agent/scaffold.js.map +1 -0
  391. package/dist/core/agent/support/report.js +144 -0
  392. package/dist/core/agent/support/report.js.map +1 -0
  393. package/dist/core/agent/tools/dialects.js +151 -0
  394. package/dist/core/agent/tools/dialects.js.map +1 -0
  395. package/dist/core/agent/tools/registry.js +193 -0
  396. package/dist/core/agent/tools/registry.js.map +1 -0
  397. package/dist/core/agent/workflows/adopt.js +280 -0
  398. package/dist/core/agent/workflows/adopt.js.map +1 -0
  399. package/dist/core/agent/workflows/check.js +373 -0
  400. package/dist/core/agent/workflows/check.js.map +1 -0
  401. package/dist/core/agent/workflows/closing.js +323 -0
  402. package/dist/core/agent/workflows/closing.js.map +1 -0
  403. package/dist/core/agent/workflows/feature.js +220 -0
  404. package/dist/core/agent/workflows/feature.js.map +1 -0
  405. package/dist/core/agent/workflows/implement.js +188 -0
  406. package/dist/core/agent/workflows/implement.js.map +1 -0
  407. package/dist/core/agent/workflows/reference/authoring.js +311 -0
  408. package/dist/core/agent/workflows/reference/authoring.js.map +1 -0
  409. package/dist/core/agent/workflows/reference/codes.js +67 -0
  410. package/dist/core/agent/workflows/reference/codes.js.map +1 -0
  411. package/dist/core/agent/workflows/reference/done-check.js +210 -0
  412. package/dist/core/agent/workflows/reference/done-check.js.map +1 -0
  413. package/dist/core/agent/workflows/reference/drawing/drawing.js +253 -0
  414. package/dist/core/agent/workflows/reference/drawing/drawing.js.map +1 -0
  415. package/dist/core/agent/workflows/reference/reference.js +19 -0
  416. package/dist/core/agent/workflows/reference/reference.js.map +1 -0
  417. package/dist/core/agent/workflows/reference/spine.js +338 -0
  418. package/dist/core/agent/workflows/reference/spine.js.map +1 -0
  419. package/dist/core/asyncapi/baseline/plan.js +43 -0
  420. package/dist/core/asyncapi/baseline/plan.js.map +1 -0
  421. package/dist/core/asyncapi/baseline/surfaces.js +54 -0
  422. package/dist/core/asyncapi/baseline/surfaces.js.map +1 -0
  423. package/dist/core/asyncapi/depth.js +164 -0
  424. package/dist/core/asyncapi/depth.js.map +1 -0
  425. package/dist/core/asyncapi/digest.js +146 -0
  426. package/dist/core/asyncapi/digest.js.map +1 -0
  427. package/dist/core/asyncapi/merge/components.js +92 -0
  428. package/dist/core/asyncapi/merge/components.js.map +1 -0
  429. package/dist/core/asyncapi/merge/error.js +38 -0
  430. package/dist/core/asyncapi/merge/error.js.map +1 -0
  431. package/dist/core/asyncapi/merge/markers.js +290 -0
  432. package/dist/core/asyncapi/merge/markers.js.map +1 -0
  433. package/dist/core/asyncapi/merge/merge.js +195 -0
  434. package/dist/core/asyncapi/merge/merge.js.map +1 -0
  435. package/dist/core/asyncapi/merge/pin.js +83 -0
  436. package/dist/core/asyncapi/merge/pin.js.map +1 -0
  437. package/dist/core/asyncapi/model.js +11 -0
  438. package/dist/core/asyncapi/model.js.map +1 -0
  439. package/dist/core/asyncapi/producers.js +50 -0
  440. package/dist/core/asyncapi/producers.js.map +1 -0
  441. package/dist/core/asyncapi/read.js +263 -0
  442. package/dist/core/asyncapi/read.js.map +1 -0
  443. package/dist/core/brief/brief.js +285 -0
  444. package/dist/core/brief/brief.js.map +1 -0
  445. package/dist/core/brief/checks.js +385 -0
  446. package/dist/core/brief/checks.js.map +1 -0
  447. package/dist/core/brief/landscape.js +273 -0
  448. package/dist/core/brief/landscape.js.map +1 -0
  449. package/dist/core/brief/map/extend.js +84 -0
  450. package/dist/core/brief/map/extend.js.map +1 -0
  451. package/dist/core/brief/map/owed.js +266 -0
  452. package/dist/core/brief/map/owed.js.map +1 -0
  453. package/dist/core/brief/targets.js +304 -0
  454. package/dist/core/brief/targets.js.map +1 -0
  455. package/dist/core/brief/unchecked.js +58 -0
  456. package/dist/core/brief/unchecked.js.map +1 -0
  457. package/dist/core/c4/arch.js +190 -0
  458. package/dist/core/c4/arch.js.map +1 -0
  459. package/dist/core/c4/direction/direction.js +114 -0
  460. package/dist/core/c4/direction/direction.js.map +1 -0
  461. package/dist/core/c4/likec4.js +243 -0
  462. package/dist/core/c4/likec4.js.map +1 -0
  463. package/dist/core/c4/locate/unlocated.js +150 -0
  464. package/dist/core/c4/locate/unlocated.js.map +1 -0
  465. package/dist/core/c4/parsed/deployment.js +160 -0
  466. package/dist/core/c4/parsed/deployment.js.map +1 -0
  467. package/dist/core/c4/parsed/dynamic-views.js +132 -0
  468. package/dist/core/c4/parsed/dynamic-views.js.map +1 -0
  469. package/dist/core/c4/parsed/specification.js +78 -0
  470. package/dist/core/c4/parsed/specification.js.map +1 -0
  471. package/dist/core/c4/parsed/values.js +110 -0
  472. package/dist/core/c4/parsed/values.js.map +1 -0
  473. package/dist/core/c4/parsed/view-ids.js +113 -0
  474. package/dist/core/c4/parsed/view-ids.js.map +1 -0
  475. package/dist/core/c4/prefetch/fleet.js +134 -0
  476. package/dist/core/c4/prefetch/fleet.js.map +1 -0
  477. package/dist/core/c4/project/architecture.js +161 -0
  478. package/dist/core/c4/project/architecture.js.map +1 -0
  479. package/dist/core/c4/project/batch.js +140 -0
  480. package/dist/core/c4/project/batch.js.map +1 -0
  481. package/dist/core/c4/project/documents.js +89 -0
  482. package/dist/core/c4/project/documents.js.map +1 -0
  483. package/dist/core/c4/project/load.js +219 -0
  484. package/dist/core/c4/project/load.js.map +1 -0
  485. package/dist/core/c4/project/staged.js +277 -0
  486. package/dist/core/c4/project/staged.js.map +1 -0
  487. package/dist/core/c4/resolve/attested.js +0 -0
  488. package/dist/core/c4/resolve/attested.js.map +1 -0
  489. package/dist/core/c4/resolve/external.js +51 -0
  490. package/dist/core/c4/resolve/external.js.map +1 -0
  491. package/dist/core/c4/resolve/service.js +174 -0
  492. package/dist/core/c4/resolve/service.js.map +1 -0
  493. package/dist/core/c4/resolve/steps.js +290 -0
  494. package/dist/core/c4/resolve/steps.js.map +1 -0
  495. package/dist/core/c4/resolve/systems.js +154 -0
  496. package/dist/core/c4/resolve/systems.js.map +1 -0
  497. package/dist/core/c4/root-project/exclude.js +352 -0
  498. package/dist/core/c4/root-project/exclude.js.map +1 -0
  499. package/dist/core/c4/seed/fleet-file.js +201 -0
  500. package/dist/core/c4/seed/fleet-file.js.map +1 -0
  501. package/dist/core/c4/seed/items.js +91 -0
  502. package/dist/core/c4/seed/items.js.map +1 -0
  503. package/dist/core/c4/seed/stamp.js +48 -0
  504. package/dist/core/c4/seed/stamp.js.map +1 -0
  505. package/dist/core/c4/seed/template.js +173 -0
  506. package/dist/core/c4/seed/template.js.map +1 -0
  507. package/dist/core/c4/service-model/created/models.js +96 -0
  508. package/dist/core/c4/service-model/created/models.js.map +1 -0
  509. package/dist/core/c4/service-model/documents.js +47 -0
  510. package/dist/core/c4/service-model/documents.js.map +1 -0
  511. package/dist/core/c4/service-model/fleet/extending.js +82 -0
  512. package/dist/core/c4/service-model/fleet/extending.js.map +1 -0
  513. package/dist/core/c4/service-model/load.js +165 -0
  514. package/dist/core/c4/service-model/load.js.map +1 -0
  515. package/dist/core/c4/service-model/renderer.js +128 -0
  516. package/dist/core/c4/service-model/renderer.js.map +1 -0
  517. package/dist/core/c4/service-model/shape.js +106 -0
  518. package/dist/core/c4/service-model/shape.js.map +1 -0
  519. package/dist/core/c4/service-model/slice.js +188 -0
  520. package/dist/core/c4/service-model/slice.js.map +1 -0
  521. package/dist/core/c4/source-mask.js +369 -0
  522. package/dist/core/c4/source-mask.js.map +1 -0
  523. package/dist/core/c4/source-scan.js +308 -0
  524. package/dist/core/c4/source-scan.js.map +1 -0
  525. package/dist/core/c4/splice/authored-source.js +167 -0
  526. package/dist/core/c4/splice/authored-source.js.map +1 -0
  527. package/dist/core/c4/splice/contract.js +30 -0
  528. package/dist/core/c4/splice/contract.js.map +1 -0
  529. package/dist/core/c4/splice/delta-blocks.js +126 -0
  530. package/dist/core/c4/splice/delta-blocks.js.map +1 -0
  531. package/dist/core/c4/splice/identity/declared.js +87 -0
  532. package/dist/core/c4/splice/identity/declared.js.map +1 -0
  533. package/dist/core/c4/splice/identity/edges.js +73 -0
  534. package/dist/core/c4/splice/identity/edges.js.map +1 -0
  535. package/dist/core/c4/splice/identity/existing.js +80 -0
  536. package/dist/core/c4/splice/identity/existing.js.map +1 -0
  537. package/dist/core/c4/splice/identity/interior.js +80 -0
  538. package/dist/core/c4/splice/identity/interior.js.map +1 -0
  539. package/dist/core/c4/splice/identity/owner.js +50 -0
  540. package/dist/core/c4/splice/identity/owner.js.map +1 -0
  541. package/dist/core/c4/splice/landscape-merge.js +337 -0
  542. package/dist/core/c4/splice/landscape-merge.js.map +1 -0
  543. package/dist/core/c4/splice/model/merge.js +151 -0
  544. package/dist/core/c4/splice/model/merge.js.map +1 -0
  545. package/dist/core/c4/splice/placement.js +298 -0
  546. package/dist/core/c4/splice/placement.js.map +1 -0
  547. package/dist/core/c4/splice/text/spot.js +131 -0
  548. package/dist/core/c4/splice/text/spot.js.map +1 -0
  549. package/dist/core/c4/workspace.js +166 -0
  550. package/dist/core/c4/workspace.js.map +1 -0
  551. package/dist/core/capabilities/authoring/notes.js +141 -0
  552. package/dist/core/capabilities/authoring/notes.js.map +1 -0
  553. package/dist/core/capabilities/capabilities.js +124 -0
  554. package/dist/core/capabilities/capabilities.js.map +1 -0
  555. package/dist/core/capabilities/delta/doc.js +47 -0
  556. package/dist/core/capabilities/delta/doc.js.map +1 -0
  557. package/dist/core/capabilities/delta/overlay.js +129 -0
  558. package/dist/core/capabilities/delta/overlay.js.map +1 -0
  559. package/dist/core/capabilities/delta/summary.js +57 -0
  560. package/dist/core/capabilities/delta/summary.js.map +1 -0
  561. package/dist/core/capabilities/delta/tree.js +43 -0
  562. package/dist/core/capabilities/delta/tree.js.map +1 -0
  563. package/dist/core/capabilities/delta/uncovered.js +222 -0
  564. package/dist/core/capabilities/delta/uncovered.js.map +1 -0
  565. package/dist/core/capabilities/findings.js +338 -0
  566. package/dist/core/capabilities/findings.js.map +1 -0
  567. package/dist/core/capabilities/realizes/findings.js +174 -0
  568. package/dist/core/capabilities/realizes/findings.js.map +1 -0
  569. package/dist/core/capabilities/realizes/join.js +123 -0
  570. package/dist/core/capabilities/realizes/join.js.map +1 -0
  571. package/dist/core/capabilities/rollup.js +205 -0
  572. package/dist/core/capabilities/rollup.js.map +1 -0
  573. package/dist/core/capabilities/tree.js +104 -0
  574. package/dist/core/capabilities/tree.js.map +1 -0
  575. package/dist/core/capabilities/usecase-join.js +267 -0
  576. package/dist/core/capabilities/usecase-join.js.map +1 -0
  577. package/dist/core/coherence/authoring/scaffold.js +185 -0
  578. package/dist/core/coherence/authoring/scaffold.js.map +1 -0
  579. package/dist/core/coherence/authoring/sentinels.js +75 -0
  580. package/dist/core/coherence/authoring/sentinels.js.map +1 -0
  581. package/dist/core/coherence/calls/called.js +52 -0
  582. package/dist/core/coherence/calls/called.js.map +1 -0
  583. package/dist/core/coherence/coherence.js +332 -0
  584. package/dist/core/coherence/coherence.js.map +1 -0
  585. package/dist/core/coherence/consumed/operations.js +70 -0
  586. package/dist/core/coherence/consumed/operations.js.map +1 -0
  587. package/dist/core/coherence/consumed/refusal.js +38 -0
  588. package/dist/core/coherence/consumed/refusal.js.map +1 -0
  589. package/dist/core/coherence/covers/health.js +85 -0
  590. package/dist/core/coherence/covers/health.js.map +1 -0
  591. package/dist/core/coherence/declared.js +295 -0
  592. package/dist/core/coherence/declared.js.map +1 -0
  593. package/dist/core/coherence/events/declared.js +191 -0
  594. package/dist/core/coherence/events/declared.js.map +1 -0
  595. package/dist/core/coherence/events/events.js +335 -0
  596. package/dist/core/coherence/events/events.js.map +1 -0
  597. package/dist/core/coherence/events/grades.js +189 -0
  598. package/dist/core/coherence/events/grades.js.map +1 -0
  599. package/dist/core/coherence/events/lookups.js +63 -0
  600. package/dist/core/coherence/events/lookups.js.map +1 -0
  601. package/dist/core/coherence/events/produced.js +100 -0
  602. package/dist/core/coherence/events/produced.js.map +1 -0
  603. package/dist/core/coherence/living.js +198 -0
  604. package/dist/core/coherence/living.js.map +1 -0
  605. package/dist/core/coherence/lookups.js +95 -0
  606. package/dist/core/coherence/lookups.js.map +1 -0
  607. package/dist/core/coherence/pending.js +39 -0
  608. package/dist/core/coherence/pending.js.map +1 -0
  609. package/dist/core/coherence/retired/archived.js +285 -0
  610. package/dist/core/coherence/retired/archived.js.map +1 -0
  611. package/dist/core/coherence/retired/event-pair.js +62 -0
  612. package/dist/core/coherence/retired/event-pair.js.map +1 -0
  613. package/dist/core/coherence/retired/merged.js +79 -0
  614. package/dist/core/coherence/retired/merged.js.map +1 -0
  615. package/dist/core/coherence/retired/retirement.js +49 -0
  616. package/dist/core/coherence/retired/retirement.js.map +1 -0
  617. package/dist/core/coherence/retired/revival/arrivals.js +131 -0
  618. package/dist/core/coherence/retired/revival/arrivals.js.map +1 -0
  619. package/dist/core/coherence/retired/revival/revived.js +297 -0
  620. package/dist/core/coherence/retired/revival/revived.js.map +1 -0
  621. package/dist/core/conflict-markers.js +60 -0
  622. package/dist/core/conflict-markers.js.map +1 -0
  623. package/dist/core/consumers/after.js +113 -0
  624. package/dist/core/consumers/after.js.map +1 -0
  625. package/dist/core/consumers/consumers.js +296 -0
  626. package/dist/core/consumers/consumers.js.map +1 -0
  627. package/dist/core/consumers/current.js +211 -0
  628. package/dist/core/consumers/current.js.map +1 -0
  629. package/dist/core/consumers/scan.js +46 -0
  630. package/dist/core/consumers/scan.js.map +1 -0
  631. package/dist/core/consumers/state.js +27 -0
  632. package/dist/core/consumers/state.js.map +1 -0
  633. package/dist/core/delta/claims.js +73 -0
  634. package/dist/core/delta/claims.js.map +1 -0
  635. package/dist/core/delta/delta.js +341 -0
  636. package/dist/core/delta/delta.js.map +1 -0
  637. package/dist/core/delta/document.js +177 -0
  638. package/dist/core/delta/document.js.map +1 -0
  639. package/dist/core/delta/scope.js +48 -0
  640. package/dist/core/delta/scope.js.map +1 -0
  641. package/dist/core/delta/select.js +237 -0
  642. package/dist/core/delta/select.js.map +1 -0
  643. package/dist/core/dependencies/dependencies.js +141 -0
  644. package/dist/core/dependencies/dependencies.js.map +1 -0
  645. package/dist/core/dependencies/facts.js +165 -0
  646. package/dist/core/dependencies/facts.js.map +1 -0
  647. package/dist/core/dependencies/fanin.js +88 -0
  648. package/dist/core/dependencies/fanin.js.map +1 -0
  649. package/dist/core/dependencies/graph.js +106 -0
  650. package/dist/core/dependencies/graph.js.map +1 -0
  651. package/dist/core/deployment/delta.js +191 -0
  652. package/dist/core/deployment/delta.js.map +1 -0
  653. package/dist/core/deployment/objects.js +145 -0
  654. package/dist/core/deployment/objects.js.map +1 -0
  655. package/dist/core/diff/base-git.js +230 -0
  656. package/dist/core/diff/base-git.js.map +1 -0
  657. package/dist/core/diff/base-state.js +237 -0
  658. package/dist/core/diff/base-state.js.map +1 -0
  659. package/dist/core/diff/joins.js +136 -0
  660. package/dist/core/diff/joins.js.map +1 -0
  661. package/dist/core/diff/scope/changed-paths.js +204 -0
  662. package/dist/core/diff/scope/changed-paths.js.map +1 -0
  663. package/dist/core/diff/scope/edges.js +82 -0
  664. package/dist/core/diff/scope/edges.js.map +1 -0
  665. package/dist/core/diff/semantic.js +312 -0
  666. package/dist/core/diff/semantic.js.map +1 -0
  667. package/dist/core/docs.js +37 -85
  668. package/dist/core/docs.js.map +1 -1
  669. package/dist/core/doctor/agents.js +238 -0
  670. package/dist/core/doctor/agents.js.map +1 -0
  671. package/dist/core/doctor/config.js +139 -0
  672. package/dist/core/doctor/config.js.map +1 -0
  673. package/dist/core/doctor/doctor.js +355 -0
  674. package/dist/core/doctor/doctor.js.map +1 -0
  675. package/dist/core/doctor/report.js +13 -0
  676. package/dist/core/doctor/report.js.map +1 -0
  677. package/dist/core/doctor/reports/scan.js +242 -0
  678. package/dist/core/doctor/reports/scan.js.map +1 -0
  679. package/dist/core/doctor/residue.js +110 -0
  680. package/dist/core/doctor/residue.js.map +1 -0
  681. package/dist/core/document/apply.js +224 -0
  682. package/dist/core/document/apply.js.map +1 -0
  683. package/dist/core/{frontmatter.js → document/frontmatter.js} +103 -2
  684. package/dist/core/document/frontmatter.js.map +1 -0
  685. package/dist/core/document/grammar/directives.js +143 -0
  686. package/dist/core/document/grammar/directives.js.map +1 -0
  687. package/dist/core/document/parse.js +286 -0
  688. package/dist/core/document/parse.js.map +1 -0
  689. package/dist/core/document/scenarios.js +238 -0
  690. package/dist/core/document/scenarios.js.map +1 -0
  691. package/dist/core/document/spec.js +234 -0
  692. package/dist/core/document/spec.js.map +1 -0
  693. package/dist/core/{config.js → envelope/config.js} +89 -18
  694. package/dist/core/envelope/config.js.map +1 -0
  695. package/dist/core/envelope/json.js +209 -0
  696. package/dist/core/envelope/json.js.map +1 -0
  697. package/dist/core/{version.js → envelope/version.js} +3 -3
  698. package/dist/core/envelope/version.js.map +1 -0
  699. package/dist/core/explain/families.js +180 -0
  700. package/dist/core/explain/families.js.map +1 -0
  701. package/dist/core/explain/fix-tables.js +178 -0
  702. package/dist/core/explain/fix-tables.js.map +1 -0
  703. package/dist/core/explain/lookup.js +194 -0
  704. package/dist/core/explain/lookup.js.map +1 -0
  705. package/dist/core/explain/refusals.js +49 -0
  706. package/dist/core/explain/refusals.js.map +1 -0
  707. package/dist/core/explain/terms/documents.js +227 -0
  708. package/dist/core/explain/terms/documents.js.map +1 -0
  709. package/dist/core/explain/terms/done-check.js +144 -0
  710. package/dist/core/explain/terms/done-check.js.map +1 -0
  711. package/dist/core/explain/terms/entry.js +14 -0
  712. package/dist/core/explain/terms/entry.js.map +1 -0
  713. package/dist/core/explain/terms/stages.js +71 -0
  714. package/dist/core/explain/terms/stages.js.map +1 -0
  715. package/dist/core/explain/terms/tasks.js +97 -0
  716. package/dist/core/explain/terms/tasks.js.map +1 -0
  717. package/dist/core/explain/terms.js +103 -0
  718. package/dist/core/explain/terms.js.map +1 -0
  719. package/dist/core/explore/describe.js +105 -0
  720. package/dist/core/explore/describe.js.map +1 -0
  721. package/dist/core/explore/explore.js +204 -0
  722. package/dist/core/explore/explore.js.map +1 -0
  723. package/dist/core/fleet-context.js +174 -146
  724. package/dist/core/fleet-context.js.map +1 -1
  725. package/dist/core/gate/checks.js +208 -0
  726. package/dist/core/gate/checks.js.map +1 -0
  727. package/dist/core/gate/partners.js +246 -0
  728. package/dist/core/gate/partners.js.map +1 -0
  729. package/dist/core/gate/report.js +47 -0
  730. package/dist/core/gate/report.js.map +1 -0
  731. package/dist/core/gate/verification.js +176 -0
  732. package/dist/core/gate/verification.js.map +1 -0
  733. package/dist/core/gherkin/digest.js +60 -0
  734. package/dist/core/gherkin/digest.js.map +1 -0
  735. package/dist/core/gherkin/emit.js +177 -0
  736. package/dist/core/gherkin/emit.js.map +1 -0
  737. package/dist/core/gherkin/read.js +76 -0
  738. package/dist/core/gherkin/read.js.map +1 -0
  739. package/dist/core/gherkin/stale.js +210 -0
  740. package/dist/core/gherkin/stale.js.map +1 -0
  741. package/dist/core/gherkin/stamp.js +77 -0
  742. package/dist/core/gherkin/stamp.js.map +1 -0
  743. package/dist/core/gherkin/steps/catalogue.js +154 -0
  744. package/dist/core/gherkin/steps/catalogue.js.map +1 -0
  745. package/dist/core/gherkin/steps/inventory.js +98 -0
  746. package/dist/core/gherkin/steps/inventory.js.map +1 -0
  747. package/dist/core/gherkin/steps/phrase.js +72 -0
  748. package/dist/core/gherkin/steps/phrase.js.map +1 -0
  749. package/dist/core/glossary/delta.js +109 -0
  750. package/dist/core/glossary/delta.js.map +1 -0
  751. package/dist/core/glossary/tree.js +73 -0
  752. package/dist/core/glossary/tree.js.map +1 -0
  753. package/dist/core/{concurrency.js → kernel/concurrency.js} +19 -0
  754. package/dist/core/kernel/concurrency.js.map +1 -0
  755. package/dist/core/{document-bytes.js → kernel/document-bytes.js} +1 -1
  756. package/dist/core/kernel/document-bytes.js.map +1 -0
  757. package/dist/core/kernel/fences.js +42 -0
  758. package/dist/core/kernel/fences.js.map +1 -0
  759. package/dist/core/kernel/ids/capability.js +72 -0
  760. package/dist/core/kernel/ids/capability.js.map +1 -0
  761. package/dist/core/kernel/ids/dirs.js +33 -0
  762. package/dist/core/kernel/ids/dirs.js.map +1 -0
  763. package/dist/core/kernel/ids/feature.js +75 -0
  764. package/dist/core/kernel/ids/feature.js.map +1 -0
  765. package/dist/core/kernel/ids/fqn/ancestors.js +65 -0
  766. package/dist/core/kernel/ids/fqn/ancestors.js.map +1 -0
  767. package/dist/core/kernel/ids/service.js +156 -0
  768. package/dist/core/kernel/ids/service.js.map +1 -0
  769. package/dist/core/kernel/ids/subsystem.js +63 -0
  770. package/dist/core/kernel/ids/subsystem.js.map +1 -0
  771. package/dist/core/{path-safety.js → kernel/path-safety.js} +56 -4
  772. package/dist/core/kernel/path-safety.js.map +1 -0
  773. package/dist/core/{records.js → kernel/records.js} +11 -0
  774. package/dist/core/kernel/records.js.map +1 -0
  775. package/dist/core/links/backlinks.js +66 -0
  776. package/dist/core/links/backlinks.js.map +1 -0
  777. package/dist/core/links/case.js +74 -0
  778. package/dist/core/links/case.js.map +1 -0
  779. package/dist/core/links/corpus.js +118 -0
  780. package/dist/core/links/corpus.js.map +1 -0
  781. package/dist/core/links/findings.js +110 -0
  782. package/dist/core/links/findings.js.map +1 -0
  783. package/dist/core/links/parse.js +265 -0
  784. package/dist/core/links/parse.js.map +1 -0
  785. package/dist/core/mcp/argv.js +212 -0
  786. package/dist/core/mcp/argv.js.map +1 -0
  787. package/dist/core/mcp/author-tools.js +73 -0
  788. package/dist/core/mcp/author-tools.js.map +1 -0
  789. package/dist/core/mcp/framing.js +46 -0
  790. package/dist/core/mcp/framing.js.map +1 -0
  791. package/dist/core/mcp/protocol.js +280 -0
  792. package/dist/core/mcp/protocol.js.map +1 -0
  793. package/dist/core/mcp/tools.js +324 -0
  794. package/dist/core/mcp/tools.js.map +1 -0
  795. package/dist/core/obligations/obligations.js +106 -0
  796. package/dist/core/obligations/obligations.js.map +1 -0
  797. package/dist/core/openapi/baseline/gate.js +207 -0
  798. package/dist/core/openapi/baseline/gate.js.map +1 -0
  799. package/dist/core/openapi/baseline/plan.js +142 -0
  800. package/dist/core/openapi/baseline/plan.js.map +1 -0
  801. package/dist/core/openapi/baseline/record.js +174 -0
  802. package/dist/core/openapi/baseline/record.js.map +1 -0
  803. package/dist/core/openapi/contract-text.js +33 -0
  804. package/dist/core/openapi/contract-text.js.map +1 -0
  805. package/dist/core/openapi/contract-tree.js +301 -0
  806. package/dist/core/openapi/contract-tree.js.map +1 -0
  807. package/dist/core/openapi/depth.js +136 -0
  808. package/dist/core/openapi/depth.js.map +1 -0
  809. package/dist/core/openapi/digest.js +239 -0
  810. package/dist/core/openapi/digest.js.map +1 -0
  811. package/dist/core/{openapi.js → openapi/doc.js} +54 -108
  812. package/dist/core/openapi/doc.js.map +1 -0
  813. package/dist/core/openapi/merge/components.js +199 -0
  814. package/dist/core/openapi/merge/components.js.map +1 -0
  815. package/dist/core/openapi/merge/error.js +16 -0
  816. package/dist/core/openapi/merge/error.js.map +1 -0
  817. package/dist/core/openapi/merge/markers.js +204 -0
  818. package/dist/core/openapi/merge/markers.js.map +1 -0
  819. package/dist/core/openapi/merge/merge.js +232 -0
  820. package/dist/core/openapi/merge/merge.js.map +1 -0
  821. package/dist/core/openapi/merge/pin.js +110 -0
  822. package/dist/core/openapi/merge/pin.js.map +1 -0
  823. package/dist/core/openspec/decide/capabilities.js +244 -0
  824. package/dist/core/openspec/decide/capabilities.js.map +1 -0
  825. package/dist/core/openspec/decide/dispositions.js +63 -0
  826. package/dist/core/openspec/decide/dispositions.js.map +1 -0
  827. package/dist/core/openspec/decide/renames.js +179 -0
  828. package/dist/core/openspec/decide/renames.js.map +1 -0
  829. package/dist/core/openspec/decide/verdict.js +84 -0
  830. package/dist/core/openspec/decide/verdict.js.map +1 -0
  831. package/dist/core/openspec/inventory.js +220 -0
  832. package/dist/core/openspec/inventory.js.map +1 -0
  833. package/dist/core/openspec/model/mapping.js +78 -0
  834. package/dist/core/openspec/model/mapping.js.map +1 -0
  835. package/dist/core/openspec/model/model.js +70 -0
  836. package/dist/core/openspec/model/model.js.map +1 -0
  837. package/dist/core/openspec/scan/changes.js +241 -0
  838. package/dist/core/openspec/scan/changes.js.map +1 -0
  839. package/dist/core/openspec/scan/config.js +191 -0
  840. package/dist/core/openspec/scan/config.js.map +1 -0
  841. package/dist/core/openspec/scan/shape.js +304 -0
  842. package/dist/core/openspec/scan/shape.js.map +1 -0
  843. package/dist/core/openspec/scan/walk.js +116 -0
  844. package/dist/core/openspec/scan/walk.js.map +1 -0
  845. package/dist/core/openspec/scan/workspace.js +71 -0
  846. package/dist/core/openspec/scan/workspace.js.map +1 -0
  847. package/dist/core/owners/codeowners.js +141 -0
  848. package/dist/core/owners/codeowners.js.map +1 -0
  849. package/dist/core/pack/features.js +120 -0
  850. package/dist/core/pack/features.js.map +1 -0
  851. package/dist/core/pack/joins.js +112 -0
  852. package/dist/core/pack/joins.js.map +1 -0
  853. package/dist/core/pack/living.js +157 -0
  854. package/dist/core/pack/living.js.map +1 -0
  855. package/dist/core/pack/pack.js +120 -0
  856. package/dist/core/pack/pack.js.map +1 -0
  857. package/dist/core/permissions/permissions.js +87 -0
  858. package/dist/core/permissions/permissions.js.map +1 -0
  859. package/dist/core/projection/api.js +84 -0
  860. package/dist/core/projection/api.js.map +1 -0
  861. package/dist/core/projection/arch-slice.js +63 -0
  862. package/dist/core/projection/arch-slice.js.map +1 -0
  863. package/dist/core/projection/events.js +34 -0
  864. package/dist/core/projection/events.js.map +1 -0
  865. package/dist/core/projection/introduced.js +14 -0
  866. package/dist/core/projection/introduced.js.map +1 -0
  867. package/dist/core/provenance/findings.js +244 -0
  868. package/dist/core/provenance/findings.js.map +1 -0
  869. package/dist/core/provenance/git.js +201 -0
  870. package/dist/core/provenance/git.js.map +1 -0
  871. package/dist/core/provenance/gitq/moves.js +139 -0
  872. package/dist/core/provenance/gitq/moves.js.map +1 -0
  873. package/dist/core/provenance/gitq/vouched-ancestor.js +179 -0
  874. package/dist/core/provenance/gitq/vouched-ancestor.js.map +1 -0
  875. package/dist/core/provenance/sample/scope.js +238 -0
  876. package/dist/core/provenance/sample/scope.js.map +1 -0
  877. package/dist/core/provenance/sample/sections.js +61 -0
  878. package/dist/core/provenance/sample/sections.js.map +1 -0
  879. package/dist/core/provenance/sources.js +280 -0
  880. package/dist/core/provenance/sources.js.map +1 -0
  881. package/dist/core/provenance/stamp.js +220 -0
  882. package/dist/core/provenance/stamp.js.map +1 -0
  883. package/dist/core/provenance/walk.js +157 -0
  884. package/dist/core/provenance/walk.js.map +1 -0
  885. package/dist/core/repo/authored/paths.js +210 -0
  886. package/dist/core/repo/authored/paths.js.map +1 -0
  887. package/dist/core/repo/entries.js +126 -0
  888. package/dist/core/repo/entries.js.map +1 -0
  889. package/dist/core/repo/paths.js +322 -0
  890. package/dist/core/repo/paths.js.map +1 -0
  891. package/dist/core/repo/repo.js +308 -0
  892. package/dist/core/repo/repo.js.map +1 -0
  893. package/dist/core/repo/service-target.js +153 -0
  894. package/dist/core/repo/service-target.js.map +1 -0
  895. package/dist/core/repo/state.js +58 -0
  896. package/dist/core/repo/state.js.map +1 -0
  897. package/dist/core/repo/tree/find.js +61 -0
  898. package/dist/core/repo/tree/find.js.map +1 -0
  899. package/dist/core/repo/tree/fs.js +90 -0
  900. package/dist/core/repo/tree/fs.js.map +1 -0
  901. package/dist/core/repo/tree/marker.js +61 -0
  902. package/dist/core/repo/tree/marker.js.map +1 -0
  903. package/dist/core/repo/tree/render/body.js +258 -0
  904. package/dist/core/repo/tree/render/body.js.map +1 -0
  905. package/dist/core/repo/tree/render/projects.js +182 -0
  906. package/dist/core/repo/tree/render/projects.js.map +1 -0
  907. package/dist/core/repo/tree/render/service/header.js +125 -0
  908. package/dist/core/repo/tree/render/service/header.js.map +1 -0
  909. package/dist/core/repo/tree/render/service/peers.js +28 -0
  910. package/dist/core/repo/tree/render/service/peers.js.map +1 -0
  911. package/dist/core/repo/tree/render/service/view-id.js +67 -0
  912. package/dist/core/repo/tree/render/service/view-id.js.map +1 -0
  913. package/dist/core/repo/tree/render/service/views.js +78 -0
  914. package/dist/core/repo/tree/render/service/views.js.map +1 -0
  915. package/dist/core/repo/tree/render/stale.js +42 -0
  916. package/dist/core/repo/tree/render/stale.js.map +1 -0
  917. package/dist/core/repo/tree/render/text.js +84 -0
  918. package/dist/core/repo/tree/render/text.js.map +1 -0
  919. package/dist/core/repo/tree/render/views.js +293 -0
  920. package/dist/core/repo/tree/render/views.js.map +1 -0
  921. package/dist/core/repo/tree/walk.js +255 -0
  922. package/dist/core/repo/tree/walk.js.map +1 -0
  923. package/dist/core/results.js +146 -14
  924. package/dist/core/results.js.map +1 -1
  925. package/dist/core/scaffold/landscape.js +239 -0
  926. package/dist/core/scaffold/landscape.js.map +1 -0
  927. package/dist/core/scaffold/legacy.js +271 -0
  928. package/dist/core/scaffold/legacy.js.map +1 -0
  929. package/dist/core/scaffold/readme.js +84 -0
  930. package/dist/core/scaffold/readme.js.map +1 -0
  931. package/dist/core/staging/commit.js +252 -0
  932. package/dist/core/staging/commit.js.map +1 -0
  933. package/dist/core/staging/interrupted.js +96 -0
  934. package/dist/core/staging/interrupted.js.map +1 -0
  935. package/dist/core/staging/lock.js +268 -0
  936. package/dist/core/staging/lock.js.map +1 -0
  937. package/dist/core/staging/recovery/finding.js +35 -0
  938. package/dist/core/staging/recovery/finding.js.map +1 -0
  939. package/dist/core/staging/recovery/intent.js +95 -0
  940. package/dist/core/staging/recovery/intent.js.map +1 -0
  941. package/dist/core/staging/recovery/recover.js +204 -0
  942. package/dist/core/staging/recovery/recover.js.map +1 -0
  943. package/dist/core/staging/recovery/residue.js +62 -0
  944. package/dist/core/staging/recovery/residue.js.map +1 -0
  945. package/dist/core/staging/snapshot/manifest.js +188 -0
  946. package/dist/core/staging/snapshot/manifest.js.map +1 -0
  947. package/dist/core/staging/snapshot/snapshot.js +196 -0
  948. package/dist/core/staging/snapshot/snapshot.js.map +1 -0
  949. package/dist/core/staging/txn/forward.js +181 -0
  950. package/dist/core/staging/txn/forward.js.map +1 -0
  951. package/dist/core/staging/txn/journal.js +139 -0
  952. package/dist/core/staging/txn/journal.js.map +1 -0
  953. package/dist/core/staging/txn/transaction.js +75 -0
  954. package/dist/core/staging/txn/transaction.js.map +1 -0
  955. package/dist/core/staging/writes.js +113 -0
  956. package/dist/core/staging/writes.js.map +1 -0
  957. package/dist/core/status/actions/execution.js +60 -0
  958. package/dist/core/status/actions/execution.js.map +1 -0
  959. package/dist/core/status/contracts.js +126 -0
  960. package/dist/core/status/contracts.js.map +1 -0
  961. package/dist/core/status/feature/artifacts.js +196 -0
  962. package/dist/core/status/feature/artifacts.js.map +1 -0
  963. package/dist/core/status/feature/feature.js +214 -0
  964. package/dist/core/status/feature/feature.js.map +1 -0
  965. package/dist/core/status/feature/next.js +163 -0
  966. package/dist/core/status/feature/next.js.map +1 -0
  967. package/dist/core/status/feature/state.js +21 -0
  968. package/dist/core/status/feature/state.js.map +1 -0
  969. package/dist/core/status/feature/words.js +96 -0
  970. package/dist/core/status/feature/words.js.map +1 -0
  971. package/dist/core/status/fleet/fleet.js +216 -0
  972. package/dist/core/status/fleet/fleet.js.map +1 -0
  973. package/dist/core/status/fleet/next.js +302 -0
  974. package/dist/core/status/fleet/next.js.map +1 -0
  975. package/dist/core/status/interrupted.js +97 -0
  976. package/dist/core/status/interrupted.js.map +1 -0
  977. package/dist/core/status/report.js +31 -0
  978. package/dist/core/status/report.js.map +1 -0
  979. package/dist/core/status/scan.js +41 -0
  980. package/dist/core/status/scan.js.map +1 -0
  981. package/dist/core/status/verification.js +216 -0
  982. package/dist/core/status/verification.js.map +1 -0
  983. package/dist/core/tasks/packet.js +199 -0
  984. package/dist/core/tasks/packet.js.map +1 -0
  985. package/dist/core/tasks/record.js +43 -0
  986. package/dist/core/tasks/record.js.map +1 -0
  987. package/dist/core/tasks/sources.js +181 -0
  988. package/dist/core/tasks/sources.js.map +1 -0
  989. package/dist/core/tasks/stamps.js +76 -0
  990. package/dist/core/tasks/stamps.js.map +1 -0
  991. package/dist/core/tasks/unit.js +0 -0
  992. package/dist/core/tasks/unit.js.map +1 -0
  993. package/dist/core/usecases/capability.js +166 -0
  994. package/dist/core/usecases/capability.js.map +1 -0
  995. package/dist/core/usecases/delta/claims.js +140 -0
  996. package/dist/core/usecases/delta/claims.js.map +1 -0
  997. package/dist/core/usecases/delta/flows.js +101 -0
  998. package/dist/core/usecases/delta/flows.js.map +1 -0
  999. package/dist/core/usecases/delta/modified.js +315 -0
  1000. package/dist/core/usecases/delta/modified.js.map +1 -0
  1001. package/dist/core/usecases/delta/overlay.js +76 -0
  1002. package/dist/core/usecases/delta/overlay.js.map +1 -0
  1003. package/dist/core/usecases/fleet.js +296 -0
  1004. package/dist/core/usecases/fleet.js.map +1 -0
  1005. package/dist/core/usecases/grade/capability-tag.js +93 -0
  1006. package/dist/core/usecases/grade/capability-tag.js.map +1 -0
  1007. package/dist/core/usecases/grade/feature.js +88 -0
  1008. package/dist/core/usecases/grade/feature.js.map +1 -0
  1009. package/dist/core/usecases/grade/requirement-tag.js +94 -0
  1010. package/dist/core/usecases/grade/requirement-tag.js.map +1 -0
  1011. package/dist/core/usecases/grade/steps.js +266 -0
  1012. package/dist/core/usecases/grade/steps.js.map +1 -0
  1013. package/dist/core/usecases/grade/usecases.js +112 -0
  1014. package/dist/core/usecases/grade/usecases.js.map +1 -0
  1015. package/dist/core/usecases/operations.js +123 -0
  1016. package/dist/core/usecases/operations.js.map +1 -0
  1017. package/dist/core/usecases/place.js +44 -0
  1018. package/dist/core/usecases/place.js.map +1 -0
  1019. package/dist/core/usecases/service/exclude.js +119 -0
  1020. package/dist/core/usecases/service/exclude.js.map +1 -0
  1021. package/dist/core/usecases/service/flows.js +164 -0
  1022. package/dist/core/usecases/service/flows.js.map +1 -0
  1023. package/dist/core/usecases/suites/participants.js +83 -0
  1024. package/dist/core/usecases/suites/participants.js.map +1 -0
  1025. package/dist/core/usecases/suites/suites.js +45 -0
  1026. package/dist/core/usecases/suites/suites.js.map +1 -0
  1027. package/dist/core/usecases/touch.js +101 -0
  1028. package/dist/core/usecases/touch.js.map +1 -0
  1029. package/dist/core/verify/answers.js +180 -0
  1030. package/dist/core/verify/answers.js.map +1 -0
  1031. package/dist/core/verify/build.js +170 -0
  1032. package/dist/core/verify/build.js.map +1 -0
  1033. package/dist/core/verify/checklist.js +259 -0
  1034. package/dist/core/verify/checklist.js.map +1 -0
  1035. package/dist/core/verify/claims/identity.js +61 -0
  1036. package/dist/core/verify/claims/identity.js.map +1 -0
  1037. package/dist/core/verify/cross/diff.js +97 -0
  1038. package/dist/core/verify/cross/diff.js.map +1 -0
  1039. package/dist/core/verify/evidence/contract.js +169 -0
  1040. package/dist/core/verify/evidence/contract.js.map +1 -0
  1041. package/dist/core/verify/location.js +67 -0
  1042. package/dist/core/verify/location.js.map +1 -0
  1043. package/dist/core/verify/pins/lint.js +158 -0
  1044. package/dist/core/verify/pins/lint.js.map +1 -0
  1045. package/dist/core/verify/pins/pin.js +95 -0
  1046. package/dist/core/verify/pins/pin.js.map +1 -0
  1047. package/dist/core/verify/read/file.js +224 -0
  1048. package/dist/core/verify/read/file.js.map +1 -0
  1049. package/dist/core/verify/read/shape.js +169 -0
  1050. package/dist/core/verify/read/shape.js.map +1 -0
  1051. package/dist/core/verify/read/union.js +105 -0
  1052. package/dist/core/verify/read/union.js.map +1 -0
  1053. package/dist/core/verify/record.js +165 -0
  1054. package/dist/core/verify/record.js.map +1 -0
  1055. package/dist/core/verify/store/commit.js +99 -0
  1056. package/dist/core/verify/store/commit.js.map +1 -0
  1057. package/dist/core/verify/store/render.js +61 -0
  1058. package/dist/core/verify/store/render.js.map +1 -0
  1059. package/dist/core/vocabulary/health.js +91 -0
  1060. package/dist/core/vocabulary/health.js.map +1 -0
  1061. package/dist/core/vocabulary/issue.js +59 -0
  1062. package/dist/core/vocabulary/issue.js.map +1 -0
  1063. package/dist/core/vocabulary/maturity.js +216 -0
  1064. package/dist/core/vocabulary/maturity.js.map +1 -0
  1065. package/dist/core/vocabulary/report.js +90 -0
  1066. package/dist/core/vocabulary/report.js.map +1 -0
  1067. package/dist/core/vocabulary/steps.js +266 -0
  1068. package/dist/core/vocabulary/steps.js.map +1 -0
  1069. package/dist/core/workspace/discover.js +239 -0
  1070. package/dist/core/workspace/discover.js.map +1 -0
  1071. package/dist/core/workspace/render.js +52 -0
  1072. package/dist/core/workspace/render.js.map +1 -0
  1073. package/examples/README.md +232 -0
  1074. package/examples/docs/architecture/adrs/0001-transactional-outbox.md +33 -0
  1075. package/examples/docs/architecture/capabilities.yaml +31 -0
  1076. package/examples/docs/architecture/landscape.likec4 +336 -0
  1077. package/examples/docs/architecture/obligations.yaml +23 -0
  1078. package/examples/docs/architecture/permissions.yaml +50 -0
  1079. package/examples/docs/architecture/services.likec4 +70 -0
  1080. package/examples/docs/architecture/subsystems.likec4 +18 -0
  1081. package/examples/docs/architecture/usecases/order-notification.likec4 +74 -0
  1082. package/examples/docs/capabilities/checkout/spec.md +55 -0
  1083. package/examples/docs/capabilities/identity/tokens/spec.md +42 -0
  1084. package/examples/docs/capabilities/order-notifications/spec.md +43 -0
  1085. package/examples/docs/features/FEAT-101-payment-splitting/adrs/0001-dedicated-split-service.md +18 -0
  1086. package/examples/docs/features/FEAT-101-payment-splitting/delta.likec4 +94 -0
  1087. package/examples/docs/features/FEAT-101-payment-splitting/intent.md +44 -0
  1088. package/examples/docs/features/FEAT-101-payment-splitting/specs/checkout-web/spec.md +21 -0
  1089. package/examples/docs/features/FEAT-101-payment-splitting/specs/payment-service/asyncapi.yaml +132 -0
  1090. package/examples/docs/features/FEAT-101-payment-splitting/specs/payment-service/spec.md +36 -0
  1091. package/examples/docs/features/FEAT-101-payment-splitting/specs/payment-split-service/arch.spec.md +40 -0
  1092. package/examples/docs/features/FEAT-101-payment-splitting/specs/payment-split-service/openapi.yaml +116 -0
  1093. package/examples/docs/features/FEAT-101-payment-splitting/specs/payment-split-service/spec.md +55 -0
  1094. package/examples/docs/features/FEAT-112-retire-order-v1/intent.md +35 -0
  1095. package/examples/docs/features/FEAT-112-retire-order-v1/specs/order-service/openapi.yaml +31 -0
  1096. package/examples/docs/features/FEAT-112-retire-order-v1/specs/order-service/spec.md +17 -0
  1097. package/examples/docs/features/archive/FEAT-088-refunds/.loam-before/files/architecture/landscape.likec4 +253 -0
  1098. package/examples/docs/features/archive/FEAT-088-refunds/.loam-before/files/services/order-service/spec.md +121 -0
  1099. package/examples/docs/features/archive/FEAT-088-refunds/.loam-before/files/services/payment-service/openapi.yaml +111 -0
  1100. package/examples/docs/features/archive/FEAT-088-refunds/.loam-before/files/services/payment-service/spec.md +58 -0
  1101. package/examples/docs/features/archive/FEAT-088-refunds/.loam-before/manifest.json +32 -0
  1102. package/examples/docs/features/archive/FEAT-088-refunds/adrs/0001-refunds-stay-in-payment-service.md +26 -0
  1103. package/examples/docs/features/archive/FEAT-088-refunds/delta.likec4 +28 -0
  1104. package/examples/docs/features/archive/FEAT-088-refunds/intent.md +26 -0
  1105. package/examples/docs/features/archive/FEAT-088-refunds/specs/order-service/spec.md +37 -0
  1106. package/examples/docs/features/archive/FEAT-088-refunds/specs/payment-service/openapi.yaml +73 -0
  1107. package/examples/docs/features/archive/FEAT-088-refunds/specs/payment-service/spec.md +23 -0
  1108. package/examples/docs/features/archive/FEAT-088-refunds/verification.yaml +76 -0
  1109. package/examples/docs/features/archive/FEAT-120-refund-notification/.loam-before/files/architecture/landscape.likec4 +275 -0
  1110. package/examples/docs/features/archive/FEAT-120-refund-notification/.loam-before/files/services/payment-service/asyncapi.yaml +96 -0
  1111. package/examples/docs/features/archive/FEAT-120-refund-notification/.loam-before/files/services/payment-service/spec.md +82 -0
  1112. package/examples/docs/features/archive/FEAT-120-refund-notification/.loam-before/files/services/platform/notification-service/asyncapi.yaml +164 -0
  1113. package/examples/docs/features/archive/FEAT-120-refund-notification/.loam-before/files/services/platform/notification-service/spec.md +91 -0
  1114. package/examples/docs/features/archive/FEAT-120-refund-notification/.loam-before/manifest.json +46 -0
  1115. package/examples/docs/features/archive/FEAT-120-refund-notification/delta.likec4 +36 -0
  1116. package/examples/docs/features/archive/FEAT-120-refund-notification/intent.md +22 -0
  1117. package/examples/docs/features/archive/FEAT-120-refund-notification/scenario-report.json +10 -0
  1118. package/examples/docs/features/archive/FEAT-120-refund-notification/specs/notification-service/asyncapi.yaml +208 -0
  1119. package/examples/docs/features/archive/FEAT-120-refund-notification/specs/notification-service/spec.md +24 -0
  1120. package/examples/docs/features/archive/FEAT-120-refund-notification/specs/payment-service/asyncapi.yaml +137 -0
  1121. package/examples/docs/features/archive/FEAT-120-refund-notification/specs/payment-service/spec.md +31 -0
  1122. package/examples/docs/features/archive/FEAT-120-refund-notification/verification.yaml +84 -0
  1123. package/examples/docs/glossary/order.md +15 -0
  1124. package/examples/docs/glossary/payments/authorization.md +14 -0
  1125. package/examples/docs/likec4.config.json +8 -0
  1126. package/examples/docs/loam.json +3 -0
  1127. package/examples/docs/services/checkout-web/model.likec4 +92 -0
  1128. package/examples/docs/services/checkout-web/spec.md +91 -0
  1129. package/examples/docs/services/checkout-web/ui/pages/checkout.page.yaml +40 -0
  1130. package/examples/docs/services/checkout-web/ui/pages/order-status.page.yaml +24 -0
  1131. package/examples/docs/services/checkout-web/ui/pages/split-payment.page.yaml +26 -0
  1132. package/examples/docs/services/order-service/adrs/0001-orchestrated-order-lifecycle.md +52 -0
  1133. package/examples/docs/services/order-service/arch.spec.md +134 -0
  1134. package/examples/docs/services/order-service/asyncapi.yaml +109 -0
  1135. package/examples/docs/services/order-service/health.yaml +57 -0
  1136. package/examples/docs/services/order-service/model.likec4 +126 -0
  1137. package/examples/docs/services/order-service/openapi.yaml +257 -0
  1138. package/examples/docs/services/order-service/runbook.md +62 -0
  1139. package/examples/docs/services/order-service/spec.md +134 -0
  1140. package/examples/docs/services/payment-service/adrs/0001-payments-outbox.md +18 -0
  1141. package/examples/docs/services/payment-service/adrs/0002-idempotency-keys-on-authorization.md +27 -0
  1142. package/examples/docs/services/payment-service/arch.spec.md +76 -0
  1143. package/examples/docs/services/payment-service/asyncapi.yaml +130 -0
  1144. package/examples/docs/services/payment-service/health.yaml +39 -0
  1145. package/examples/docs/services/payment-service/model.likec4 +68 -0
  1146. package/examples/docs/services/payment-service/openapi.yaml +151 -0
  1147. package/examples/docs/services/payment-service/runbook.md +37 -0
  1148. package/examples/docs/services/payment-service/spec.md +88 -0
  1149. package/examples/docs/services/platform/identity-service/adrs/0001-token-introspection-over-local-validation.md +60 -0
  1150. package/examples/docs/services/platform/identity-service/arch.spec.md +120 -0
  1151. package/examples/docs/services/platform/identity-service/health.yaml +70 -0
  1152. package/examples/docs/services/platform/identity-service/model.likec4 +81 -0
  1153. package/examples/docs/services/platform/identity-service/openapi.yaml +197 -0
  1154. package/examples/docs/services/platform/identity-service/runbook.md +95 -0
  1155. package/examples/docs/services/platform/identity-service/spec.md +119 -0
  1156. package/examples/docs/services/platform/notification-service/asyncapi.yaml +200 -0
  1157. package/examples/docs/services/platform/notification-service/health.yaml +40 -0
  1158. package/examples/docs/services/platform/notification-service/model.likec4 +97 -0
  1159. package/examples/docs/services/platform/notification-service/runbook.md +48 -0
  1160. package/examples/docs/services/platform/notification-service/spec.md +112 -0
  1161. package/examples/docs/services/platform/subsystem.yaml +2 -0
  1162. package/examples/fleet.yaml +57 -0
  1163. package/package.json +19 -6
  1164. package/dist/commands/adopt.js +0 -240
  1165. package/dist/commands/adopt.js.map +0 -1
  1166. package/dist/commands/archive.js +0 -1313
  1167. package/dist/commands/archive.js.map +0 -1
  1168. package/dist/commands/delta.js +0 -388
  1169. package/dist/commands/delta.js.map +0 -1
  1170. package/dist/commands/docs-repo-gate.js.map +0 -1
  1171. package/dist/commands/format.js +0 -17
  1172. package/dist/commands/format.js.map +0 -1
  1173. package/dist/commands/gherkin.js +0 -309
  1174. package/dist/commands/gherkin.js.map +0 -1
  1175. package/dist/commands/init.js.map +0 -1
  1176. package/dist/commands/list.js +0 -295
  1177. package/dist/commands/list.js.map +0 -1
  1178. package/dist/commands/migrate-openspec.js +0 -950
  1179. package/dist/commands/migrate-openspec.js.map +0 -1
  1180. package/dist/commands/new.js +0 -413
  1181. package/dist/commands/new.js.map +0 -1
  1182. package/dist/commands/rebase.js +0 -356
  1183. package/dist/commands/rebase.js.map +0 -1
  1184. package/dist/commands/show.js +0 -320
  1185. package/dist/commands/show.js.map +0 -1
  1186. package/dist/commands/status.js +0 -262
  1187. package/dist/commands/status.js.map +0 -1
  1188. package/dist/commands/unarchive.js +0 -317
  1189. package/dist/commands/unarchive.js.map +0 -1
  1190. package/dist/commands/validate.js +0 -1773
  1191. package/dist/commands/validate.js.map +0 -1
  1192. package/dist/commands/verify.js +0 -775
  1193. package/dist/commands/verify.js.map +0 -1
  1194. package/dist/commands/vouch.js +0 -421
  1195. package/dist/commands/vouch.js.map +0 -1
  1196. package/dist/core/agent.js +0 -2173
  1197. package/dist/core/agent.js.map +0 -1
  1198. package/dist/core/agents-stamp.js.map +0 -1
  1199. package/dist/core/arch.js +0 -130
  1200. package/dist/core/arch.js.map +0 -1
  1201. package/dist/core/asyncapi.js +0 -253
  1202. package/dist/core/asyncapi.js.map +0 -1
  1203. package/dist/core/brief.js +0 -755
  1204. package/dist/core/brief.js.map +0 -1
  1205. package/dist/core/coherence.js +0 -577
  1206. package/dist/core/coherence.js.map +0 -1
  1207. package/dist/core/concurrency.js.map +0 -1
  1208. package/dist/core/config.js.map +0 -1
  1209. package/dist/core/delta.js +0 -476
  1210. package/dist/core/delta.js.map +0 -1
  1211. package/dist/core/dependencies.js +0 -356
  1212. package/dist/core/dependencies.js.map +0 -1
  1213. package/dist/core/doctor.js +0 -596
  1214. package/dist/core/doctor.js.map +0 -1
  1215. package/dist/core/document-bytes.js.map +0 -1
  1216. package/dist/core/explore.js +0 -225
  1217. package/dist/core/explore.js.map +0 -1
  1218. package/dist/core/frontmatter.js.map +0 -1
  1219. package/dist/core/gherkin.js +0 -463
  1220. package/dist/core/gherkin.js.map +0 -1
  1221. package/dist/core/health.js +0 -67
  1222. package/dist/core/health.js.map +0 -1
  1223. package/dist/core/ids.js +0 -122
  1224. package/dist/core/ids.js.map +0 -1
  1225. package/dist/core/issue.js +0 -9
  1226. package/dist/core/issue.js.map +0 -1
  1227. package/dist/core/json.js +0 -74
  1228. package/dist/core/json.js.map +0 -1
  1229. package/dist/core/likec4.js +0 -489
  1230. package/dist/core/likec4.js.map +0 -1
  1231. package/dist/core/maturity.js +0 -66
  1232. package/dist/core/maturity.js.map +0 -1
  1233. package/dist/core/openapi-merge.js +0 -552
  1234. package/dist/core/openapi-merge.js.map +0 -1
  1235. package/dist/core/openapi.js.map +0 -1
  1236. package/dist/core/openspec-inventory.js +0 -1440
  1237. package/dist/core/openspec-inventory.js.map +0 -1
  1238. package/dist/core/path-safety.js.map +0 -1
  1239. package/dist/core/provenance.js +0 -787
  1240. package/dist/core/provenance.js.map +0 -1
  1241. package/dist/core/records.js.map +0 -1
  1242. package/dist/core/repo.js +0 -438
  1243. package/dist/core/repo.js.map +0 -1
  1244. package/dist/core/report.js +0 -47
  1245. package/dist/core/report.js.map +0 -1
  1246. package/dist/core/spec.js +0 -505
  1247. package/dist/core/spec.js.map +0 -1
  1248. package/dist/core/staging.js +0 -890
  1249. package/dist/core/staging.js.map +0 -1
  1250. package/dist/core/status.js +0 -1132
  1251. package/dist/core/status.js.map +0 -1
  1252. package/dist/core/steps.js +0 -72
  1253. package/dist/core/steps.js.map +0 -1
  1254. package/dist/core/verify.js +0 -807
  1255. package/dist/core/verify.js.map +0 -1
  1256. package/dist/core/version.js.map +0 -1
@@ -0,0 +1,71 @@
1
+ export const STAGE_TERMS = {
2
+ heading: "feature stages — what `loam status` reports",
3
+ terms: [
4
+ {
5
+ term: "stage",
6
+ aliases: ["stages", "missing", "blocked", "draft"],
7
+ paragraph: "A stage is where a feature, or one artifact it owes, stands — one of five closed values `loam status` reports. " +
8
+ "In `--json` a feature carries it as `stage` and each artifact as `status`. " +
9
+ "`missing` (owed, nothing in the way — write it now). " +
10
+ "`blocked` (not written and not writable yet; the entry names what comes first — an artifact it derives from, " +
11
+ "or another feature that has to archive first). " +
12
+ "`draft` (on disk, and the shared checks report an error against it, or a warning that gates archive — what " +
13
+ "exists is wrong, and the fix is in the documents). " +
14
+ "`ready` and `done` have entries of their own, because they are the two that mislead. " +
15
+ "The pairs are the point: `missing` says write it now where `blocked` says you cannot yet, and `draft` says the " +
16
+ "document is wrong where `ready` says it is right and the world has not caught up. " +
17
+ "A feature's stage is the worst thing it owes, graded on the union of what `loam validate --feature` and " +
18
+ "`loam archive` refuse, so it may be more pessimistic than either and can never be greener than both; the " +
19
+ "fleet form never says `draft`, because grading is a per-feature cost it does not pay. " +
20
+ "Not to be confused with `status: draft` in a document's frontmatter, which says no person has vouched for it " +
21
+ "yet (`loam explain vouch`).",
22
+ pins: [
23
+ { source: "CODES_PAGE", phrase: "`missing` (owed, nothing in" },
24
+ { source: "CODES_PAGE", phrase: "`blocked` (not written and not writable yet; the entry" },
25
+ { source: "CODES_PAGE", phrase: "`draft` (on disk, and the shared checks report an error" },
26
+ { source: "CODES_PAGE", phrase: "so it may be more pessimistic than either and can never be greener than both" },
27
+ ],
28
+ },
29
+ {
30
+ term: "ready",
31
+ aliases: [],
32
+ paragraph: "Ready means the documents are written and pass the shared checks — it does not mean anything is built or verified. " +
33
+ "On a feature, `ready` is every artifact on disk and clean while the done-check is not yet discharged: the " +
34
+ "code may not exist yet, and the claims `loam verify` asks are not all answered by evidence. " +
35
+ "As an artifact's `status`, `ready` (on disk and clean, but something outside the documents — code, a test " +
36
+ "run, a recording — still has to answer it) is a verification record whose claims are still open. " +
37
+ "A record that is complete but rests on an agent's word for a scenario claim — **attested** — is still " +
38
+ "`ready`, because only a `verified` verdict makes a feature `done`. " +
39
+ "So the next move from `ready` is never another edit to a document that is already right: it is " +
40
+ "`loam tasks <FEAT>` for the work still open, and `loam verify <FEAT>` for what the checklist still asks. " +
41
+ "The stage that means the document itself is wrong is `draft`.",
42
+ pins: [
43
+ { source: "CODES_PAGE", phrase: "`ready` (on disk and clean, but something" },
44
+ { source: "CODES_PAGE", phrase: "outside the documents — code, a test run, a recording — still has to answer it" },
45
+ ],
46
+ },
47
+ {
48
+ term: "done",
49
+ aliases: [],
50
+ paragraph: "Done means nothing more is owed — and on an archived feature it says only that the feature was archived, not that " +
51
+ "anybody verified it. " +
52
+ "A feature in flight earns `done`: every artifact is clean and the done-check's verdict is `verified` (every " +
53
+ "claim recorded confirmed, the scenario claims by a test run), so its next step is `next.archive` — a dry run " +
54
+ "of `loam archive <FEAT>`, then the merge. " +
55
+ "An ARCHIVED feature is `done` whatever its record says, because it is archived and for no other reason. " +
56
+ "Archiving merges documents; it checks no code and no evidence, and it does not wait for the done-check. " +
57
+ "**Nothing gates on it.** `loam archive` will ship an unverified feature. " +
58
+ "The verification verdict beside the stage (`verified`, `attested`, `unverified`, or no record at all) is what " +
59
+ "says whether it was ever verified, and the `next.archived` step `loam status` gives it says the same. " +
60
+ "On an artifact row, `done` on a file that is not there means the feature owes no such file. " +
61
+ "In `loam tasks`, `done` counts units that have left the packet: the unit no longer appears, and it stops " +
62
+ "appearing only once its claim is recorded confirmed in a verification record that is not stale.",
63
+ pins: [
64
+ { source: "CODES_PAGE", phrase: "is `done` whatever its record says" },
65
+ { source: "DONE_CHECK", phrase: "**Nothing gates on it.** `loam archive` will ship an unverified feature." },
66
+ { source: "IMPLEMENT", phrase: "the unit no longer appears, and it stops appearing only once its claim is" },
67
+ ],
68
+ },
69
+ ],
70
+ };
71
+ //# sourceMappingURL=stages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stages.js","sourceRoot":"","sources":["../../../../src/core/explain/terms/stages.ts"],"names":[],"mappings":"AAoBA,MAAM,CAAC,MAAM,WAAW,GAAc;IACpC,OAAO,EAAE,6CAA6C;IACtD,KAAK,EAAE;QACL;YACE,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;YAClD,SAAS,EACP,iHAAiH;gBACjH,6EAA6E;gBAC7E,uDAAuD;gBACvD,+GAA+G;gBAC/G,iDAAiD;gBACjD,6GAA6G;gBAC7G,qDAAqD;gBACrD,uFAAuF;gBACvF,iHAAiH;gBACjH,oFAAoF;gBACpF,0GAA0G;gBAC1G,2GAA2G;gBAC3G,wFAAwF;gBACxF,+GAA+G;gBAC/G,6BAA6B;YAC/B,IAAI,EAAE;gBACJ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,6BAA6B,EAAE;gBAC/D,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,wDAAwD,EAAE;gBAC1F,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,yDAAyD,EAAE;gBAC3F,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,8EAA8E,EAAE;aACjH;SACF;QACD;YACE,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,EAAE;YACX,SAAS,EACP,qHAAqH;gBACrH,4GAA4G;gBAC5G,8FAA8F;gBAC9F,4GAA4G;gBAC5G,mGAAmG;gBACnG,wGAAwG;gBACxG,qEAAqE;gBACrE,iGAAiG;gBACjG,2GAA2G;gBAC3G,+DAA+D;YACjE,IAAI,EAAE;gBACJ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,2CAA2C,EAAE;gBAC7E,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,gFAAgF,EAAE;aACnH;SACF;QACD;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;YACX,SAAS,EACP,oHAAoH;gBACpH,uBAAuB;gBACvB,8GAA8G;gBAC9G,+GAA+G;gBAC/G,4CAA4C;gBAC5C,0GAA0G;gBAC1G,0GAA0G;gBAC1G,2EAA2E;gBAC3E,gHAAgH;gBAChH,wGAAwG;gBACxG,8FAA8F;gBAC9F,2GAA2G;gBAC3G,iGAAiG;YACnG,IAAI,EAAE;gBACJ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,oCAAoC,EAAE;gBACtE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,0EAA0E,EAAE;gBAC5G,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,2EAA2E,EAAE;aAC7G;SACF;KACF;CACF,CAAC","sourcesContent":["/**\n * The stage terms: the five closed values `loam status` reports for a feature\n * and for every artifact it owes (core/status/report.ts, \"The status\n * vocabulary\"), and the two of them that mislead.\n *\n * `ready` and `done` are entries of their own rather than aliases of `stage`\n * because they are where a reader goes wrong, and in opposite directions.\n * `ready` reads as \"built\" and means only that the DOCUMENTS are right — the\n * code may not exist and no claim may be answered. `done` on an archived\n * feature reads as \"verified\" and means only that it was archived, which\n * checks no code and no evidence. The JSON `stage` values are a frozen\n * contract and keep their spelling; the words around them are what can be\n * fixed, and these paragraphs are where `loam explain` fixes them.\n *\n * The other three share `stage` as aliases: each one is a single clause, and\n * the pairs (missing against blocked, draft against ready) are only legible\n * read together.\n */\nimport type { TermGroup } from \"./entry.js\";\n\nexport const STAGE_TERMS: TermGroup = {\n heading: \"feature stages — what `loam status` reports\",\n terms: [\n {\n term: \"stage\",\n aliases: [\"stages\", \"missing\", \"blocked\", \"draft\"],\n paragraph:\n \"A stage is where a feature, or one artifact it owes, stands — one of five closed values `loam status` reports. \" +\n \"In `--json` a feature carries it as `stage` and each artifact as `status`. \" +\n \"`missing` (owed, nothing in the way — write it now). \" +\n \"`blocked` (not written and not writable yet; the entry names what comes first — an artifact it derives from, \" +\n \"or another feature that has to archive first). \" +\n \"`draft` (on disk, and the shared checks report an error against it, or a warning that gates archive — what \" +\n \"exists is wrong, and the fix is in the documents). \" +\n \"`ready` and `done` have entries of their own, because they are the two that mislead. \" +\n \"The pairs are the point: `missing` says write it now where `blocked` says you cannot yet, and `draft` says the \" +\n \"document is wrong where `ready` says it is right and the world has not caught up. \" +\n \"A feature's stage is the worst thing it owes, graded on the union of what `loam validate --feature` and \" +\n \"`loam archive` refuse, so it may be more pessimistic than either and can never be greener than both; the \" +\n \"fleet form never says `draft`, because grading is a per-feature cost it does not pay. \" +\n \"Not to be confused with `status: draft` in a document's frontmatter, which says no person has vouched for it \" +\n \"yet (`loam explain vouch`).\",\n pins: [\n { source: \"CODES_PAGE\", phrase: \"`missing` (owed, nothing in\" },\n { source: \"CODES_PAGE\", phrase: \"`blocked` (not written and not writable yet; the entry\" },\n { source: \"CODES_PAGE\", phrase: \"`draft` (on disk, and the shared checks report an error\" },\n { source: \"CODES_PAGE\", phrase: \"so it may be more pessimistic than either and can never be greener than both\" },\n ],\n },\n {\n term: \"ready\",\n aliases: [],\n paragraph:\n \"Ready means the documents are written and pass the shared checks — it does not mean anything is built or verified. \" +\n \"On a feature, `ready` is every artifact on disk and clean while the done-check is not yet discharged: the \" +\n \"code may not exist yet, and the claims `loam verify` asks are not all answered by evidence. \" +\n \"As an artifact's `status`, `ready` (on disk and clean, but something outside the documents — code, a test \" +\n \"run, a recording — still has to answer it) is a verification record whose claims are still open. \" +\n \"A record that is complete but rests on an agent's word for a scenario claim — **attested** — is still \" +\n \"`ready`, because only a `verified` verdict makes a feature `done`. \" +\n \"So the next move from `ready` is never another edit to a document that is already right: it is \" +\n \"`loam tasks <FEAT>` for the work still open, and `loam verify <FEAT>` for what the checklist still asks. \" +\n \"The stage that means the document itself is wrong is `draft`.\",\n pins: [\n { source: \"CODES_PAGE\", phrase: \"`ready` (on disk and clean, but something\" },\n { source: \"CODES_PAGE\", phrase: \"outside the documents — code, a test run, a recording — still has to answer it\" },\n ],\n },\n {\n term: \"done\",\n aliases: [],\n paragraph:\n \"Done means nothing more is owed — and on an archived feature it says only that the feature was archived, not that \" +\n \"anybody verified it. \" +\n \"A feature in flight earns `done`: every artifact is clean and the done-check's verdict is `verified` (every \" +\n \"claim recorded confirmed, the scenario claims by a test run), so its next step is `next.archive` — a dry run \" +\n \"of `loam archive <FEAT>`, then the merge. \" +\n \"An ARCHIVED feature is `done` whatever its record says, because it is archived and for no other reason. \" +\n \"Archiving merges documents; it checks no code and no evidence, and it does not wait for the done-check. \" +\n \"**Nothing gates on it.** `loam archive` will ship an unverified feature. \" +\n \"The verification verdict beside the stage (`verified`, `attested`, `unverified`, or no record at all) is what \" +\n \"says whether it was ever verified, and the `next.archived` step `loam status` gives it says the same. \" +\n \"On an artifact row, `done` on a file that is not there means the feature owes no such file. \" +\n \"In `loam tasks`, `done` counts units that have left the packet: the unit no longer appears, and it stops \" +\n \"appearing only once its claim is recorded confirmed in a verification record that is not stale.\",\n pins: [\n { source: \"CODES_PAGE\", phrase: \"is `done` whatever its record says\" },\n { source: \"DONE_CHECK\", phrase: \"**Nothing gates on it.** `loam archive` will ship an unverified feature.\" },\n { source: \"IMPLEMENT\", phrase: \"the unit no longer appears, and it stops appearing only once its claim is\" },\n ],\n },\n ],\n};\n"]}
@@ -0,0 +1,97 @@
1
+ export const TASK_TERMS = {
2
+ heading: "the work packet — what `loam tasks` lists",
3
+ terms: [
4
+ {
5
+ term: "unit",
6
+ aliases: ["units", "work packet", "packet"],
7
+ paragraph: "A unit is one piece of open work in the packet `loam tasks` derives, and its id is the id of the done-check " +
8
+ "claim it closes. " +
9
+ "`loam tasks <FEAT> --service <id> --next --json` is ONE unit of work, and the loop an implementation runs " +
10
+ "inside; drop `--next` for every open unit. " +
11
+ "Each entry of `units[]` carries its `id` (the same id the verify checklist uses for that claim), its `kind`, " +
12
+ "the `source` it was derived from, and `done.check` — the fact that closes it. " +
13
+ "`at` is the instruction. It is the step the unit waits at — `describe`, `generate`, `implement` or " +
14
+ "`attested` — and each names exactly one action (`loam explain <step>`). " +
15
+ "The packet is derived, never stored: from the verify checklist, the delta, the verification record and, in a " +
16
+ "bound service repo, the digest stamps of the generated `.feature` files, so it is recomputed on every run. " +
17
+ "One kind is not a claim: `requirement.described`, a requirement with no scenario yet (`loam explain describe`).",
18
+ pins: [
19
+ { source: "IMPLEMENT", phrase: "ONE unit of work, and the loop" },
20
+ { source: "IMPLEMENT", phrase: "(the same id the verify checklist uses" },
21
+ { source: "IMPLEMENT", phrase: "`at` is the instruction." },
22
+ ],
23
+ },
24
+ {
25
+ term: "frontier",
26
+ aliases: [],
27
+ paragraph: "The frontier is the head of the work packet: the first ten open unit ids, in the order `loam tasks` says to " +
28
+ "take them. " +
29
+ "`--json` carries it as `frontier` (the first ten open unit ids, in order), with how many more are open beside " +
30
+ "it, and `--next` prints its head alone, in full, with what closes it. " +
31
+ "It is recomputed from the documents on every run, which is what makes taking the head of it always safe — so " +
32
+ "re-run `loam tasks <FEAT> --service <id>` after every recording instead of working down a list you copied out. " +
33
+ "When the packet is narrowed to one service, `waitingOn` names what another service still owes before your " +
34
+ "frontier can move.",
35
+ pins: [
36
+ { source: "IMPLEMENT", phrase: "`frontier` (the first ten open unit ids, in order)" },
37
+ { source: "IMPLEMENT", phrase: "every run, which is what makes taking the head of it always safe" },
38
+ { source: "IMPLEMENT", phrase: "still owes before your frontier can move" },
39
+ ],
40
+ },
41
+ {
42
+ term: "describe",
43
+ aliases: ["requirement.described"],
44
+ paragraph: "Describe is the first step a `loam tasks` unit can wait at: the requirement owns no scenarios yet. " +
45
+ "So there is nothing to generate a test from and nothing for `loam verify` to claim. " +
46
+ "Write the Given/When/Then in the DOCS repo, on the requirement the unit's `source` names, and nothing else — " +
47
+ "loam does not author, and no amount of code closes a unit sitting here. " +
48
+ "Its kind is `requirement.described`, the one unit kind that is not a done-check claim, because a requirement " +
49
+ "with no scenario asks no question anybody could answer with evidence; it closes when the requirement carries " +
50
+ "at least one `#### Scenario:`, which `loam validate --feature <FEAT>` grades. " +
51
+ "The steps after it are `generate`, `implement` and `attested`.",
52
+ pins: [
53
+ { source: "IMPLEMENT", phrase: "the requirement owns no scenarios yet" },
54
+ { source: "IMPLEMENT", phrase: "no amount of code closes a unit sitting here" },
55
+ ],
56
+ },
57
+ {
58
+ term: "generate",
59
+ aliases: [],
60
+ paragraph: "Generate is the step a `loam tasks` unit waits at when its scenario's test has not been generated yet. " +
61
+ "`generate` means no stamped `.feature` carries this scenario's digest, and the only action is " +
62
+ "`loam gherkin <FEAT>` in the service's own repository — do not write code. It writes one digest-stamped " +
63
+ "`.feature` per changed requirement under `<gherkinDir>/loam/`. Those files ARE the acceptance criteria. " +
64
+ "Never edit them: regeneration rewrites the directory. Generating is the whole action, and on the next run the " +
65
+ "same unit reads `implement`. " +
66
+ "The stamps are read from the repository `loam tasks` runs in, and nobody else's: an `unknown` makes every " +
67
+ "`generate` verdict a guess, so fix the binding before acting on one.",
68
+ pins: [
69
+ { source: "IMPLEMENT", phrase: "no stamped `.feature` carries this scenario's digest" },
70
+ { source: "IMPLEMENT", phrase: "Those files ARE the acceptance criteria." },
71
+ { source: "IMPLEMENT", phrase: "an `unknown` makes every `generate` verdict a guess" },
72
+ ],
73
+ },
74
+ {
75
+ term: "implement",
76
+ aliases: [],
77
+ paragraph: "Implement is the step a `loam tasks` unit waits at when what is still owed is code, or a recorded answer " +
78
+ "about code. " +
79
+ "For a scenario claim it means the stamped scenario exists and no recorded run has confirmed it: write step " +
80
+ "definitions outside the generated `loam/` directory, implement until the suite passes, then record the run " +
81
+ "with `loam verify <FEAT> --service <id> --results report.json`. " +
82
+ "For the other claim kinds it means the claim is not yet recorded confirmed: answer from the code with " +
83
+ "`file:line` evidence (`loam verify <FEAT> --record answers.json --service <id>`), or for `api.exposes` with a " +
84
+ "contract-test report. " +
85
+ "Either way the record decides — never your own reading of the code you just wrote — and the unit leaves " +
86
+ "the packet only once its claim is recorded confirmed. " +
87
+ "A scenario also reads `implement` when nothing could see its generated test — the stamps are read from the " +
88
+ "repository `loam tasks` runs in alone — so check `stamps` before writing a test by hand. " +
89
+ "`loam instructions loam-implement <FEAT>` is the whole protocol.",
90
+ pins: [
91
+ { source: "IMPLEMENT", phrase: "the stamped scenario exists and no recorded run has confirmed" },
92
+ { source: "IMPLEMENT", phrase: "never your own reading of the code you just wrote" },
93
+ ],
94
+ },
95
+ ],
96
+ };
97
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../../src/core/explain/terms/tasks.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,UAAU,GAAc;IACnC,OAAO,EAAE,2CAA2C;IACpD,KAAK,EAAE;QACL;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC;YAC3C,SAAS,EACP,8GAA8G;gBAC9G,mBAAmB;gBACnB,4GAA4G;gBAC5G,6CAA6C;gBAC7C,+GAA+G;gBAC/G,gFAAgF;gBAChF,qGAAqG;gBACrG,0EAA0E;gBAC1E,+GAA+G;gBAC/G,6GAA6G;gBAC7G,iHAAiH;YACnH,IAAI,EAAE;gBACJ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,gCAAgC,EAAE;gBACjE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,wCAAwC,EAAE;gBACzE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,0BAA0B,EAAE;aAC5D;SACF;QACD;YACE,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,EAAE;YACX,SAAS,EACP,8GAA8G;gBAC9G,aAAa;gBACb,gHAAgH;gBAChH,wEAAwE;gBACxE,+GAA+G;gBAC/G,iHAAiH;gBACjH,4GAA4G;gBAC5G,oBAAoB;YACtB,IAAI,EAAE;gBACJ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,oDAAoD,EAAE;gBACrF,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,kEAAkE,EAAE;gBACnG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,0CAA0C,EAAE;aAC5E;SACF;QACD;YACE,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,CAAC,uBAAuB,CAAC;YAClC,SAAS,EACP,qGAAqG;gBACrG,sFAAsF;gBACtF,+GAA+G;gBAC/G,0EAA0E;gBAC1E,+GAA+G;gBAC/G,+GAA+G;gBAC/G,gFAAgF;gBAChF,gEAAgE;YAClE,IAAI,EAAE;gBACJ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,uCAAuC,EAAE;gBACxE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,8CAA8C,EAAE;aAChF;SACF;QACD;YACE,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,EAAE;YACX,SAAS,EACP,yGAAyG;gBACzG,gGAAgG;gBAChG,0GAA0G;gBAC1G,0GAA0G;gBAC1G,gHAAgH;gBAChH,+BAA+B;gBAC/B,4GAA4G;gBAC5G,sEAAsE;YACxE,IAAI,EAAE;gBACJ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,sDAAsD,EAAE;gBACvF,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,0CAA0C,EAAE;gBAC3E,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,qDAAqD,EAAE;aACvF;SACF;QACD;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,EAAE;YACX,SAAS,EACP,2GAA2G;gBAC3G,cAAc;gBACd,6GAA6G;gBAC7G,6GAA6G;gBAC7G,kEAAkE;gBAClE,wGAAwG;gBACxG,gHAAgH;gBAChH,wBAAwB;gBACxB,0GAA0G;gBAC1G,wDAAwD;gBACxD,6GAA6G;gBAC7G,2FAA2F;gBAC3F,kEAAkE;YACpE,IAAI,EAAE;gBACJ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,+DAA+D,EAAE;gBAChG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,mDAAmD,EAAE;aACrF;SACF;KACF;CACF,CAAC","sourcesContent":["/**\n * The work-packet terms: the words `loam tasks` prints — a unit, the frontier,\n * and the steps a unit waits at (core/tasks/unit.ts `TaskStep`).\n *\n * The fourth step, `attested`, is not here: it is the same fact as the\n * done-check verdict of that name, seen from `loam tasks` rather than from\n * `loam verify`, and ./done-check.ts answers both readings in one entry. A\n * second `attested` would be a name two entries compete for.\n *\n * Every pin points at step 3 of the /loam-implement body, which is where the\n * binary teaches the packet — each step's own bullet there is one line, so\n * each entry here pins the clause that bullet opens with.\n */\nimport type { TermGroup } from \"./entry.js\";\n\nexport const TASK_TERMS: TermGroup = {\n heading: \"the work packet — what `loam tasks` lists\",\n terms: [\n {\n term: \"unit\",\n aliases: [\"units\", \"work packet\", \"packet\"],\n paragraph:\n \"A unit is one piece of open work in the packet `loam tasks` derives, and its id is the id of the done-check \" +\n \"claim it closes. \" +\n \"`loam tasks <FEAT> --service <id> --next --json` is ONE unit of work, and the loop an implementation runs \" +\n \"inside; drop `--next` for every open unit. \" +\n \"Each entry of `units[]` carries its `id` (the same id the verify checklist uses for that claim), its `kind`, \" +\n \"the `source` it was derived from, and `done.check` — the fact that closes it. \" +\n \"`at` is the instruction. It is the step the unit waits at — `describe`, `generate`, `implement` or \" +\n \"`attested` — and each names exactly one action (`loam explain <step>`). \" +\n \"The packet is derived, never stored: from the verify checklist, the delta, the verification record and, in a \" +\n \"bound service repo, the digest stamps of the generated `.feature` files, so it is recomputed on every run. \" +\n \"One kind is not a claim: `requirement.described`, a requirement with no scenario yet (`loam explain describe`).\",\n pins: [\n { source: \"IMPLEMENT\", phrase: \"ONE unit of work, and the loop\" },\n { source: \"IMPLEMENT\", phrase: \"(the same id the verify checklist uses\" },\n { source: \"IMPLEMENT\", phrase: \"`at` is the instruction.\" },\n ],\n },\n {\n term: \"frontier\",\n aliases: [],\n paragraph:\n \"The frontier is the head of the work packet: the first ten open unit ids, in the order `loam tasks` says to \" +\n \"take them. \" +\n \"`--json` carries it as `frontier` (the first ten open unit ids, in order), with how many more are open beside \" +\n \"it, and `--next` prints its head alone, in full, with what closes it. \" +\n \"It is recomputed from the documents on every run, which is what makes taking the head of it always safe — so \" +\n \"re-run `loam tasks <FEAT> --service <id>` after every recording instead of working down a list you copied out. \" +\n \"When the packet is narrowed to one service, `waitingOn` names what another service still owes before your \" +\n \"frontier can move.\",\n pins: [\n { source: \"IMPLEMENT\", phrase: \"`frontier` (the first ten open unit ids, in order)\" },\n { source: \"IMPLEMENT\", phrase: \"every run, which is what makes taking the head of it always safe\" },\n { source: \"IMPLEMENT\", phrase: \"still owes before your frontier can move\" },\n ],\n },\n {\n term: \"describe\",\n aliases: [\"requirement.described\"],\n paragraph:\n \"Describe is the first step a `loam tasks` unit can wait at: the requirement owns no scenarios yet. \" +\n \"So there is nothing to generate a test from and nothing for `loam verify` to claim. \" +\n \"Write the Given/When/Then in the DOCS repo, on the requirement the unit's `source` names, and nothing else — \" +\n \"loam does not author, and no amount of code closes a unit sitting here. \" +\n \"Its kind is `requirement.described`, the one unit kind that is not a done-check claim, because a requirement \" +\n \"with no scenario asks no question anybody could answer with evidence; it closes when the requirement carries \" +\n \"at least one `#### Scenario:`, which `loam validate --feature <FEAT>` grades. \" +\n \"The steps after it are `generate`, `implement` and `attested`.\",\n pins: [\n { source: \"IMPLEMENT\", phrase: \"the requirement owns no scenarios yet\" },\n { source: \"IMPLEMENT\", phrase: \"no amount of code closes a unit sitting here\" },\n ],\n },\n {\n term: \"generate\",\n aliases: [],\n paragraph:\n \"Generate is the step a `loam tasks` unit waits at when its scenario's test has not been generated yet. \" +\n \"`generate` means no stamped `.feature` carries this scenario's digest, and the only action is \" +\n \"`loam gherkin <FEAT>` in the service's own repository — do not write code. It writes one digest-stamped \" +\n \"`.feature` per changed requirement under `<gherkinDir>/loam/`. Those files ARE the acceptance criteria. \" +\n \"Never edit them: regeneration rewrites the directory. Generating is the whole action, and on the next run the \" +\n \"same unit reads `implement`. \" +\n \"The stamps are read from the repository `loam tasks` runs in, and nobody else's: an `unknown` makes every \" +\n \"`generate` verdict a guess, so fix the binding before acting on one.\",\n pins: [\n { source: \"IMPLEMENT\", phrase: \"no stamped `.feature` carries this scenario's digest\" },\n { source: \"IMPLEMENT\", phrase: \"Those files ARE the acceptance criteria.\" },\n { source: \"IMPLEMENT\", phrase: \"an `unknown` makes every `generate` verdict a guess\" },\n ],\n },\n {\n term: \"implement\",\n aliases: [],\n paragraph:\n \"Implement is the step a `loam tasks` unit waits at when what is still owed is code, or a recorded answer \" +\n \"about code. \" +\n \"For a scenario claim it means the stamped scenario exists and no recorded run has confirmed it: write step \" +\n \"definitions outside the generated `loam/` directory, implement until the suite passes, then record the run \" +\n \"with `loam verify <FEAT> --service <id> --results report.json`. \" +\n \"For the other claim kinds it means the claim is not yet recorded confirmed: answer from the code with \" +\n \"`file:line` evidence (`loam verify <FEAT> --record answers.json --service <id>`), or for `api.exposes` with a \" +\n \"contract-test report. \" +\n \"Either way the record decides — never your own reading of the code you just wrote — and the unit leaves \" +\n \"the packet only once its claim is recorded confirmed. \" +\n \"A scenario also reads `implement` when nothing could see its generated test — the stamps are read from the \" +\n \"repository `loam tasks` runs in alone — so check `stamps` before writing a test by hand. \" +\n \"`loam instructions loam-implement <FEAT>` is the whole protocol.\",\n pins: [\n { source: \"IMPLEMENT\", phrase: \"the stamped scenario exists and no recorded run has confirmed\" },\n { source: \"IMPLEMENT\", phrase: \"never your own reading of the code you just wrote\" },\n ],\n },\n ],\n};\n"]}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * The concept terms `loam explain` answers — the vocabulary wall an agent hits
3
+ * in its first minute, before any docs repo exists to read, and the words loam
4
+ * itself prints to a person: the stage `loam status` reports, the claims and
5
+ * verdicts of `loam verify`, the steps of `loam tasks`, the rungs of the
6
+ * maturity ladder.
7
+ *
8
+ * The paragraphs live one package down, in ./terms/, one module per subject;
9
+ * this module assembles them and names the texts their pins point at. The
10
+ * split came when the registry outgrew its first six terms: twenty-odd
11
+ * paragraphs do not fit one 400-line file, src/core/explain/ was already at
12
+ * its five-file cap, and the terms fall into the four clusters the listing
13
+ * prints them under — which is a subject seam, not a line count. `TERMS` and
14
+ * `PIN_SOURCE_TEXT` stay exported from here so every importer (the lookup, the
15
+ * MCP tool table, the tests) reads the registry from where it always did.
16
+ *
17
+ * Each paragraph is authored in ./terms/, but it is not free to drift: every
18
+ * entry carries pin phrases lifted VERBATIM from the section that teaches the
19
+ * concept, and test/explain.test.ts asserts each phrase appears both in the
20
+ * paragraph and in its named source constant. Rewording that prose therefore
21
+ * breaks the pairing loudly — the same discipline the compiler applies to
22
+ * refusals.ts, done with a test because prose has no type. A pin phrase is
23
+ * kept to one source LINE, because the sections wrap at ~80 columns and a
24
+ * phrase spanning a wrap would never match.
25
+ *
26
+ * A source is no longer always an agents-md section. When the reference pages
27
+ * were split out of the scaffolded AGENTS.md, the frontmatter teaching went
28
+ * with them, and `vouch`'s pin went with the text rather than being reworded
29
+ * to something still in the file — the pairing is with whatever loam SHIPS as
30
+ * the teaching, not with one delivery of it.
31
+ *
32
+ * The converse failure is a source that ships NOWHERE, and it happened: once
33
+ * AGENTS.md became the one ORIENTATION literal (../agent/agents-md.ts), the old
34
+ * section constants this file still imported — the long cycle, the layout
35
+ * opening, the binding rule — were assembled into nothing, so the pins on them
36
+ * guarded prose no reader could see and the drift test passed vacuously. Those
37
+ * sources were deleted with the constants; a pin now names a page the binary
38
+ * prints or the AGENTS.md it writes, never a constant that merely compiles.
39
+ * The five sources added with the printed-word terms follow that rule: each is
40
+ * a whole page `loam instructions` prints — the loam-codes page rather than its
41
+ * `loam status` section, the /loam-implement body rather than its step 3.
42
+ */
43
+ import { AGENTS_MD } from "../agent/agents-md.js";
44
+ import { REFUSALS } from "../agent/agents-md/refusals.js";
45
+ import { LOAM_CHECK } from "../agent/workflows/check.js";
46
+ import { LOAM_VERIFY } from "../agent/workflows/closing.js";
47
+ import { LOAM_FEATURE } from "../agent/workflows/feature.js";
48
+ import { LOAM_IMPLEMENT } from "../agent/workflows/implement.js";
49
+ import { LOAM_AUTHORING } from "../agent/workflows/reference/authoring.js";
50
+ import { LOAM_CODES } from "../agent/workflows/reference/codes.js";
51
+ import { LOAM_DONE_CHECK } from "../agent/workflows/reference/done-check.js";
52
+ import { LOAM_DRAWING } from "../agent/workflows/reference/drawing/drawing.js";
53
+ import { LOAM_SPINE } from "../agent/workflows/reference/spine.js";
54
+ import { DOCUMENT_TERMS, DRAWING_TERMS } from "./terms/documents.js";
55
+ import { DONE_CHECK_TERMS } from "./terms/done-check.js";
56
+ import { STAGE_TERMS } from "./terms/stages.js";
57
+ import { TASK_TERMS } from "./terms/tasks.js";
58
+ /**
59
+ * The shipped texts the pins point at, for the drift test and for anyone
60
+ * auditing a pairing.
61
+ *
62
+ * `REFUSALS` is still listed and still pinned against, and it is no longer a
63
+ * section of AGENTS.md — it is the refusal half of the `loam-codes` page. The
64
+ * constant is what a pin names, and the constant did not move; only its
65
+ * delivery did. `CODES_PAGE` is that whole page, which is where the `loam
66
+ * status` section teaching the five stage values is printed.
67
+ *
68
+ * The workflow bodies are the raw protocol text, `$1`/`$2` placeholders and
69
+ * all — `loam instructions` substitutes them on the way out — so a pin phrase
70
+ * must never span a placeholder, or it would match here and not on the page a
71
+ * reader is shown.
72
+ */
73
+ export const PIN_SOURCE_TEXT = {
74
+ AGENTS_MD,
75
+ SPINE_PAGE: LOAM_SPINE.body,
76
+ REFUSALS,
77
+ AUTHORING: LOAM_AUTHORING.body,
78
+ DRAWING: LOAM_DRAWING.body,
79
+ DONE_CHECK: LOAM_DONE_CHECK.body,
80
+ CODES_PAGE: LOAM_CODES.body,
81
+ CHECK: LOAM_CHECK.body,
82
+ FEATURE: LOAM_FEATURE.body,
83
+ IMPLEMENT: LOAM_IMPLEMENT.body,
84
+ VERIFY: LOAM_VERIFY.body,
85
+ };
86
+ /**
87
+ * The registry, by subject, in the order the bare `loam explain` listing
88
+ * prints it: where a feature stands first, because `loam status` is the first
89
+ * command a newcomer runs, then the two commands whose words its next steps
90
+ * send a reader to, then the document vocabulary underneath all three, and
91
+ * last the words for drawing the map, which no command prints and every page
92
+ * that draws an edge uses.
93
+ */
94
+ export const TERM_GROUPS = [
95
+ STAGE_TERMS,
96
+ DONE_CHECK_TERMS,
97
+ TASK_TERMS,
98
+ DOCUMENT_TERMS,
99
+ DRAWING_TERMS,
100
+ ];
101
+ /** Every term, flat, in listing order — what the lookup searches and the `--json` listing returns. */
102
+ export const TERMS = TERM_GROUPS.flatMap((group) => group.terms);
103
+ //# sourceMappingURL=terms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terms.js","sourceRoot":"","sources":["../../../src/core/explain/terms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,eAAe,GAA8B;IACxD,SAAS;IACT,UAAU,EAAE,UAAU,CAAC,IAAI;IAC3B,QAAQ;IACR,SAAS,EAAE,cAAc,CAAC,IAAI;IAC9B,OAAO,EAAE,YAAY,CAAC,IAAI;IAC1B,UAAU,EAAE,eAAe,CAAC,IAAI;IAChC,UAAU,EAAE,UAAU,CAAC,IAAI;IAC3B,KAAK,EAAE,UAAU,CAAC,IAAI;IACtB,OAAO,EAAE,YAAY,CAAC,IAAI;IAC1B,SAAS,EAAE,cAAc,CAAC,IAAI;IAC9B,MAAM,EAAE,WAAW,CAAC,IAAI;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAyB;IAC/C,WAAW;IACX,gBAAgB;IAChB,UAAU;IACV,cAAc;IACd,aAAa;CACd,CAAC;AAEF,sGAAsG;AACtG,MAAM,CAAC,MAAM,KAAK,GAAyB,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC","sourcesContent":["/**\n * The concept terms `loam explain` answers — the vocabulary wall an agent hits\n * in its first minute, before any docs repo exists to read, and the words loam\n * itself prints to a person: the stage `loam status` reports, the claims and\n * verdicts of `loam verify`, the steps of `loam tasks`, the rungs of the\n * maturity ladder.\n *\n * The paragraphs live one package down, in ./terms/, one module per subject;\n * this module assembles them and names the texts their pins point at. The\n * split came when the registry outgrew its first six terms: twenty-odd\n * paragraphs do not fit one 400-line file, src/core/explain/ was already at\n * its five-file cap, and the terms fall into the four clusters the listing\n * prints them under — which is a subject seam, not a line count. `TERMS` and\n * `PIN_SOURCE_TEXT` stay exported from here so every importer (the lookup, the\n * MCP tool table, the tests) reads the registry from where it always did.\n *\n * Each paragraph is authored in ./terms/, but it is not free to drift: every\n * entry carries pin phrases lifted VERBATIM from the section that teaches the\n * concept, and test/explain.test.ts asserts each phrase appears both in the\n * paragraph and in its named source constant. Rewording that prose therefore\n * breaks the pairing loudly — the same discipline the compiler applies to\n * refusals.ts, done with a test because prose has no type. A pin phrase is\n * kept to one source LINE, because the sections wrap at ~80 columns and a\n * phrase spanning a wrap would never match.\n *\n * A source is no longer always an agents-md section. When the reference pages\n * were split out of the scaffolded AGENTS.md, the frontmatter teaching went\n * with them, and `vouch`'s pin went with the text rather than being reworded\n * to something still in the file — the pairing is with whatever loam SHIPS as\n * the teaching, not with one delivery of it.\n *\n * The converse failure is a source that ships NOWHERE, and it happened: once\n * AGENTS.md became the one ORIENTATION literal (../agent/agents-md.ts), the old\n * section constants this file still imported — the long cycle, the layout\n * opening, the binding rule — were assembled into nothing, so the pins on them\n * guarded prose no reader could see and the drift test passed vacuously. Those\n * sources were deleted with the constants; a pin now names a page the binary\n * prints or the AGENTS.md it writes, never a constant that merely compiles.\n * The five sources added with the printed-word terms follow that rule: each is\n * a whole page `loam instructions` prints — the loam-codes page rather than its\n * `loam status` section, the /loam-implement body rather than its step 3.\n */\nimport { AGENTS_MD } from \"../agent/agents-md.js\";\nimport { REFUSALS } from \"../agent/agents-md/refusals.js\";\nimport { LOAM_CHECK } from \"../agent/workflows/check.js\";\nimport { LOAM_VERIFY } from \"../agent/workflows/closing.js\";\nimport { LOAM_FEATURE } from \"../agent/workflows/feature.js\";\nimport { LOAM_IMPLEMENT } from \"../agent/workflows/implement.js\";\nimport { LOAM_AUTHORING } from \"../agent/workflows/reference/authoring.js\";\nimport { LOAM_CODES } from \"../agent/workflows/reference/codes.js\";\nimport { LOAM_DONE_CHECK } from \"../agent/workflows/reference/done-check.js\";\nimport { LOAM_DRAWING } from \"../agent/workflows/reference/drawing/drawing.js\";\nimport { LOAM_SPINE } from \"../agent/workflows/reference/spine.js\";\nimport { DOCUMENT_TERMS, DRAWING_TERMS } from \"./terms/documents.js\";\nimport { DONE_CHECK_TERMS } from \"./terms/done-check.js\";\nimport type { PinSource, TermEntry, TermGroup } from \"./terms/entry.js\";\nimport { STAGE_TERMS } from \"./terms/stages.js\";\nimport { TASK_TERMS } from \"./terms/tasks.js\";\n\n/**\n * The shipped texts the pins point at, for the drift test and for anyone\n * auditing a pairing.\n *\n * `REFUSALS` is still listed and still pinned against, and it is no longer a\n * section of AGENTS.md — it is the refusal half of the `loam-codes` page. The\n * constant is what a pin names, and the constant did not move; only its\n * delivery did. `CODES_PAGE` is that whole page, which is where the `loam\n * status` section teaching the five stage values is printed.\n *\n * The workflow bodies are the raw protocol text, `$1`/`$2` placeholders and\n * all — `loam instructions` substitutes them on the way out — so a pin phrase\n * must never span a placeholder, or it would match here and not on the page a\n * reader is shown.\n */\nexport const PIN_SOURCE_TEXT: Record<PinSource, string> = {\n AGENTS_MD,\n SPINE_PAGE: LOAM_SPINE.body,\n REFUSALS,\n AUTHORING: LOAM_AUTHORING.body,\n DRAWING: LOAM_DRAWING.body,\n DONE_CHECK: LOAM_DONE_CHECK.body,\n CODES_PAGE: LOAM_CODES.body,\n CHECK: LOAM_CHECK.body,\n FEATURE: LOAM_FEATURE.body,\n IMPLEMENT: LOAM_IMPLEMENT.body,\n VERIFY: LOAM_VERIFY.body,\n};\n\n/**\n * The registry, by subject, in the order the bare `loam explain` listing\n * prints it: where a feature stands first, because `loam status` is the first\n * command a newcomer runs, then the two commands whose words its next steps\n * send a reader to, then the document vocabulary underneath all three, and\n * last the words for drawing the map, which no command prints and every page\n * that draws an edge uses.\n */\nexport const TERM_GROUPS: readonly TermGroup[] = [\n STAGE_TERMS,\n DONE_CHECK_TERMS,\n TASK_TERMS,\n DOCUMENT_TERMS,\n DRAWING_TERMS,\n];\n\n/** Every term, flat, in listing order — what the lookup searches and the `--json` listing returns. */\nexport const TERMS: readonly TermEntry[] = TERM_GROUPS.flatMap((group) => group.terms);\n"]}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * One service as the explorer sees it: what it is, what it touches, and the
3
+ * `loam new` line that would start work on it.
4
+ *
5
+ * Split from the walk in `./explore.ts` because it answers per SERVICE while
6
+ * that answers per QUESTION — the walk decides which services are in the answer
7
+ * and why, this fills each one in. `DescribeRequest` is a record rather than a
8
+ * parameter list for the ordinary reason: nine facts about one service, and no
9
+ * call site should be able to transpose two of them.
10
+ */
11
+ import { existsSync } from "node:fs";
12
+ import { FleetContext } from "../fleet-context.js";
13
+ import {} from "../c4/likec4.js";
14
+ import { landscapeEvidence, maturityGaps, serviceMaturity } from "../vocabulary/maturity.js";
15
+ import { compareIds } from "../repo/entries.js";
16
+ import { servicePathsAt } from "../repo/paths.js";
17
+ // Type-only, so it is erased and no runtime edge points back at the walk.
18
+ import {} from "./explore.js";
19
+ export async function describe(req) {
20
+ const { id, reason, entry, relationships, svcOf } = req;
21
+ // The edge partition, the modelled probe and the apiExpected rule are ONE
22
+ // derivation (core/vocabulary/maturity.ts `landscapeEvidence`), shared with
23
+ // the context pack's living slice — the same rule spelled twice is how the
24
+ // same service grades `partial` in one command and `documented` in another.
25
+ const { inbound, outbound, modelled, apiExpected } = landscapeEvidence({
26
+ id,
27
+ parses: req.parses,
28
+ relationships,
29
+ elementIds: req.elements.map((e) => e.id),
30
+ svcOf,
31
+ });
32
+ // A service that does not exist has no rung: `empty` would be a claim about a
33
+ // directory nobody has made, and it reads as "exists, nothing in it" — the
34
+ // one state a caller most needs to tell it apart from.
35
+ if (entry === undefined) {
36
+ return {
37
+ id,
38
+ reason,
39
+ known: false,
40
+ maturity: null,
41
+ missing: [],
42
+ modelled,
43
+ operations: [],
44
+ // Not `unreadable`: there is no contract here to fail to read. A service
45
+ // with no directory owes nothing, and reporting a parse failure over an
46
+ // absent file would send a reader looking for a document to fix.
47
+ openapi: { unreadable: false },
48
+ inbound,
49
+ outbound,
50
+ };
51
+ }
52
+ const archSpec = existsSync(servicePathsAt(entry.dir).archSpec);
53
+ const input = { entry, archSpec, apiExpected };
54
+ // `readOpenapi`, not `operationIds`: a contract that exists but does not
55
+ // parse comes back from the id list as an EMPTY set, indistinguishable from a
56
+ // service with no endpoints — and "this service offers nothing" is the worst
57
+ // possible lie to tell somebody deciding whether to call it.
58
+ const api = await req.context.readOpenapi(servicePathsAt(entry.dir).openapi);
59
+ const operations = api.ops.filter((o) => !o.remove).map((o) => o.id);
60
+ return {
61
+ id,
62
+ reason,
63
+ known: true,
64
+ maturity: serviceMaturity(input),
65
+ missing: maturityGaps(input),
66
+ modelled,
67
+ operations,
68
+ openapi: {
69
+ unreadable: api.unreadable,
70
+ ...(api.error === undefined ? {} : { error: api.error }),
71
+ },
72
+ inbound,
73
+ outbound,
74
+ };
75
+ }
76
+ /**
77
+ * The service whose living contract defines an operationId, or null.
78
+ *
79
+ * Reads every service's `openapi.yaml`, which is the cost of asking a question
80
+ * nothing indexes. It is YAML, not LikeC4 — the expensive parse in this
81
+ * codebase — and it happens only when somebody passes `--op`.
82
+ */
83
+ export async function operationOwner(entries, op, context) {
84
+ for (const entry of entries) {
85
+ if (!entry.has.openapi)
86
+ continue;
87
+ const api = await context.readOpenapi(servicePathsAt(entry.dir).openapi);
88
+ if (api.ops.some((o) => o.id === op && !o.remove))
89
+ return entry.id;
90
+ }
91
+ return null;
92
+ }
93
+ /**
94
+ * The `loam new` line the seeds imply. A seed that names no existing service is
95
+ * `--new-service`, not `--touches`: those are different scaffolds, and getting
96
+ * it wrong is what leaves a feature with a requirement delta for a service that
97
+ * has no directory to archive into.
98
+ */
99
+ export function newCommand(featureId, seeds, known) {
100
+ const flags = [...seeds]
101
+ .sort(compareIds)
102
+ .map((id) => (known.has(id) ? `--touches ${id}` : `--new-service ${id}`));
103
+ return `loam new ${featureId}${flags.length > 0 ? ` ${flags.join(" ")}` : ""}`;
104
+ }
105
+ //# sourceMappingURL=describe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe.js","sourceRoot":"","sources":["../../../src/core/explore/describe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAuB,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAqB,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,0EAA0E;AAC1E,OAAO,EAA2C,MAAM,cAAc,CAAC;AAcvE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAoB;IACjD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAExD,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC;QACrE,EAAE;QACF,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,aAAa;QACb,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,KAAK;KACN,CAAC,CAAC;IAEH,8EAA8E;IAC9E,2EAA2E;IAC3E,uDAAuD;IACvD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;YACL,EAAE;YACF,MAAM;YACN,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE;YACX,QAAQ;YACR,UAAU,EAAE,EAAE;YACd,yEAAyE;YACzE,wEAAwE;YACxE,iEAAiE;YACjE,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;YAC9B,OAAO;YACP,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAE/C,yEAAyE;IACzE,8EAA8E;IAC9E,6EAA6E;IAC7E,6DAA6D;IAC7D,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAErE,OAAO;QACL,EAAE;QACF,MAAM;QACN,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC;QAChC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;QAC5B,QAAQ;QACR,UAAU;QACV,OAAO,EAAE;YACP,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;SACzD;QACD,OAAO;QACP,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAuB,EACvB,EAAU,EACV,OAAqB;IAErB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO;YAAE,SAAS;QACjC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QACzE,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC,EAAE,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB,EAAE,KAAe,EAAE,KAA0B;IACvF,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;SACrB,IAAI,CAAC,UAAU,CAAC;SAChB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5E,OAAO,YAAY,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACjF,CAAC","sourcesContent":["/**\n * One service as the explorer sees it: what it is, what it touches, and the\n * `loam new` line that would start work on it.\n *\n * Split from the walk in `./explore.ts` because it answers per SERVICE while\n * that answers per QUESTION — the walk decides which services are in the answer\n * and why, this fills each one in. `DescribeRequest` is a record rather than a\n * parameter list for the ordinary reason: nine facts about one service, and no\n * call site should be able to transpose two of them.\n */\nimport { existsSync } from \"node:fs\";\nimport { FleetContext } from \"../fleet-context.js\";\nimport { type Elem, type Rel } from \"../c4/likec4.js\";\nimport { landscapeEvidence, maturityGaps, serviceMaturity } from \"../vocabulary/maturity.js\";\nimport { compareIds, type ServiceEntry } from \"../repo/entries.js\";\nimport { servicePathsAt } from \"../repo/paths.js\";\n// Type-only, so it is erased and no runtime edge points back at the walk.\nimport { type ExploreReason, type ExploreService } from \"./explore.js\";\n\ninterface DescribeRequest {\n id: string;\n reason: ExploreReason;\n entry: ServiceEntry | undefined;\n relationships: Rel[];\n svcOf: (id: string) => string;\n elements: Elem[];\n /** Whether the landscape parsed — what makes its silence evidence rather than absence. */\n parses: boolean;\n context: FleetContext;\n}\n\nexport async function describe(req: DescribeRequest): Promise<ExploreService> {\n const { id, reason, entry, relationships, svcOf } = req;\n\n // The edge partition, the modelled probe and the apiExpected rule are ONE\n // derivation (core/vocabulary/maturity.ts `landscapeEvidence`), shared with\n // the context pack's living slice — the same rule spelled twice is how the\n // same service grades `partial` in one command and `documented` in another.\n const { inbound, outbound, modelled, apiExpected } = landscapeEvidence({\n id,\n parses: req.parses,\n relationships,\n elementIds: req.elements.map((e) => e.id),\n svcOf,\n });\n\n // A service that does not exist has no rung: `empty` would be a claim about a\n // directory nobody has made, and it reads as \"exists, nothing in it\" — the\n // one state a caller most needs to tell it apart from.\n if (entry === undefined) {\n return {\n id,\n reason,\n known: false,\n maturity: null,\n missing: [],\n modelled,\n operations: [],\n // Not `unreadable`: there is no contract here to fail to read. A service\n // with no directory owes nothing, and reporting a parse failure over an\n // absent file would send a reader looking for a document to fix.\n openapi: { unreadable: false },\n inbound,\n outbound,\n };\n }\n\n const archSpec = existsSync(servicePathsAt(entry.dir).archSpec);\n const input = { entry, archSpec, apiExpected };\n\n // `readOpenapi`, not `operationIds`: a contract that exists but does not\n // parse comes back from the id list as an EMPTY set, indistinguishable from a\n // service with no endpoints — and \"this service offers nothing\" is the worst\n // possible lie to tell somebody deciding whether to call it.\n const api = await req.context.readOpenapi(servicePathsAt(entry.dir).openapi);\n const operations = api.ops.filter((o) => !o.remove).map((o) => o.id);\n\n return {\n id,\n reason,\n known: true,\n maturity: serviceMaturity(input),\n missing: maturityGaps(input),\n modelled,\n operations,\n openapi: {\n unreadable: api.unreadable,\n ...(api.error === undefined ? {} : { error: api.error }),\n },\n inbound,\n outbound,\n };\n}\n\n/**\n * The service whose living contract defines an operationId, or null.\n *\n * Reads every service's `openapi.yaml`, which is the cost of asking a question\n * nothing indexes. It is YAML, not LikeC4 — the expensive parse in this\n * codebase — and it happens only when somebody passes `--op`.\n */\nexport async function operationOwner(\n entries: ServiceEntry[],\n op: string,\n context: FleetContext,\n): Promise<ServiceEntry[\"id\"] | null> {\n for (const entry of entries) {\n if (!entry.has.openapi) continue;\n const api = await context.readOpenapi(servicePathsAt(entry.dir).openapi);\n if (api.ops.some((o) => o.id === op && !o.remove)) return entry.id;\n }\n return null;\n}\n\n/**\n * The `loam new` line the seeds imply. A seed that names no existing service is\n * `--new-service`, not `--touches`: those are different scaffolds, and getting\n * it wrong is what leaves a feature with a requirement delta for a service that\n * has no directory to archive into.\n */\nexport function newCommand(featureId: string, seeds: string[], known: ReadonlySet<string>): string {\n const flags = [...seeds]\n .sort(compareIds)\n .map((id) => (known.has(id) ? `--touches ${id}` : `--new-service ${id}`));\n return `loam new ${featureId}${flags.length > 0 ? ` ${flags.join(\" \")}` : \"\"}`;\n}\n"]}