akm-cli 0.9.16 → 0.9.17-alpha.10

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 (403) hide show
  1. package/CHANGELOG.md +2101 -0
  2. package/STABILITY.md +11 -10
  3. package/dist/akm +124 -193
  4. package/dist/akm-migrate +38 -19
  5. package/dist/assets/hints/cli-hints-full.md +6 -7
  6. package/dist/assets/improve-strategies/catchup.json +0 -3
  7. package/dist/assets/improve-strategies/consolidate.json +0 -1
  8. package/dist/assets/improve-strategies/default.json +1 -2
  9. package/dist/assets/improve-strategies/proactive-maintenance.json +1 -2
  10. package/dist/assets/improve-strategies/quick.json +1 -2
  11. package/dist/assets/improve-strategies/reflect-distill.json +1 -2
  12. package/dist/assets/improve-strategies/thorough.json +0 -3
  13. package/dist/assets/prompts/consolidate-pair.md +20 -0
  14. package/dist/assets/prompts/consolidate-system.md +4 -11
  15. package/dist/assets/prompts/retrieval-relevance-judge.md +6 -0
  16. package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +20 -20
  17. package/dist/assets/stash-skeleton/facts/conventions/domains.md +2 -2
  18. package/dist/assets/templates/html/health.html +3 -5
  19. package/dist/cli/retired-commands.js +1 -1
  20. package/dist/cli/shared.js +6 -2
  21. package/dist/cli/unknown-flags.js +24 -1
  22. package/dist/cli.js +68 -10
  23. package/dist/commands/agent/agent-dispatch.js +1 -1
  24. package/dist/commands/command/command-execution.js +24 -62
  25. package/dist/commands/feedback-cli.js +0 -1
  26. package/dist/commands/health/accept-rate.js +6 -0
  27. package/dist/commands/health/archive-usage.js +92 -0
  28. package/dist/commands/health/checks.js +83 -74
  29. package/dist/commands/health/config-skew.js +38 -0
  30. package/dist/commands/health/data-dir-usage.js +25 -13
  31. package/dist/commands/health/egress.js +54 -0
  32. package/dist/commands/health/html-report.js +1 -42
  33. package/dist/commands/health/improve-metrics.js +136 -591
  34. package/dist/commands/health/md-report.js +1 -6
  35. package/dist/commands/health/plugin-staleness.js +53 -3
  36. package/dist/commands/health/renderers.js +12 -4
  37. package/dist/commands/health/report-view-model.js +14 -120
  38. package/dist/commands/health/types-improve.js +4 -19
  39. package/dist/commands/health/windows.js +64 -74
  40. package/dist/commands/health.js +145 -143
  41. package/dist/commands/improve/consolidate/chunking.js +26 -117
  42. package/dist/commands/improve/consolidate/continuity-check.js +137 -0
  43. package/dist/commands/improve/consolidate/pair-pass.js +791 -0
  44. package/dist/commands/improve/consolidate/sanitize.js +54 -149
  45. package/dist/commands/improve/consolidate.js +589 -1127
  46. package/dist/commands/improve/content-hash.js +16 -24
  47. package/dist/commands/improve/distill/content-repair.js +18 -100
  48. package/dist/commands/improve/distill-guards.js +20 -81
  49. package/dist/commands/improve/distill-promotion-policy.js +23 -243
  50. package/dist/commands/improve/distill.js +608 -1041
  51. package/dist/commands/improve/eligibility.js +126 -390
  52. package/dist/commands/improve/execution.js +8 -10
  53. package/dist/commands/improve/extract-prompt.js +1 -2
  54. package/dist/commands/improve/extract.js +487 -1046
  55. package/dist/commands/improve/feedback-valence.js +0 -25
  56. package/dist/commands/improve/improve-cli.js +75 -169
  57. package/dist/commands/improve/improve-result-file.js +10 -66
  58. package/dist/commands/improve/improve-strategies.js +52 -4
  59. package/dist/commands/improve/improve-usage-report.js +18 -64
  60. package/dist/commands/improve/improve.js +480 -1074
  61. package/dist/commands/improve/ledger.js +119 -0
  62. package/dist/commands/improve/locks.js +2 -8
  63. package/dist/commands/improve/loop-stages.js +415 -1073
  64. package/dist/commands/improve/memory/derived-ref.js +12 -77
  65. package/dist/commands/improve/memory/memory-belief.js +16 -118
  66. package/dist/commands/improve/memory/memory-improve.js +266 -14
  67. package/dist/commands/improve/outcome-loop.js +28 -156
  68. package/dist/commands/improve/planner.js +5 -15
  69. package/dist/commands/improve/preparation.js +779 -2319
  70. package/dist/commands/improve/proactive-maintenance.js +34 -101
  71. package/dist/commands/improve/reflect-noise.js +104 -280
  72. package/dist/commands/improve/reflect.js +642 -1353
  73. package/dist/commands/improve/retrieval-gate.js +127 -0
  74. package/dist/commands/improve/retrieval-scope.js +92 -0
  75. package/dist/commands/improve/salience.js +41 -240
  76. package/dist/commands/improve/session-asset.js +19 -100
  77. package/dist/commands/improve/stage.js +322 -0
  78. package/dist/commands/lint/base-linter.js +37 -15
  79. package/dist/commands/proposal/drain.js +261 -578
  80. package/dist/commands/proposal/proposal-cli.js +19 -20
  81. package/dist/commands/proposal/proposal-types.js +31 -24
  82. package/dist/commands/proposal/proposal.js +38 -8
  83. package/dist/commands/proposal/propose.js +134 -160
  84. package/dist/commands/proposal/repository.js +1097 -1394
  85. package/dist/commands/proposal/validators/proposal-quality-validators.js +71 -174
  86. package/dist/commands/proposal/validators/proposal-validators.js +1 -1
  87. package/dist/commands/proposal/validators/proposals.js +22 -89
  88. package/dist/commands/read/curate.js +105 -462
  89. package/dist/commands/read/knowledge.js +3 -2
  90. package/dist/commands/read/search-cli.js +16 -33
  91. package/dist/commands/read/search.js +17 -23
  92. package/dist/commands/read/show.js +57 -108
  93. package/dist/commands/sources/bundle-cli.js +25 -2
  94. package/dist/commands/sources/bundle-config-ops.js +4 -0
  95. package/dist/commands/sources/dangerous-env-audit.js +1 -2
  96. package/dist/commands/sources/info.js +127 -29
  97. package/dist/commands/sources/installed-stashes.js +197 -746
  98. package/dist/commands/sources/schema-repair.js +98 -129
  99. package/dist/commands/sources/source-add.js +62 -12
  100. package/dist/commands/sources/source-manage.js +9 -2
  101. package/dist/commands/sources/stash-cli.js +24 -4
  102. package/dist/commands/tasks/explain.js +10 -13
  103. package/dist/commands/tasks/tasks-cli.js +12 -13
  104. package/dist/commands/tasks/tasks.js +350 -936
  105. package/dist/commands/tasks/validate.js +26 -24
  106. package/dist/commands/workflow/plan.js +22 -29
  107. package/dist/commands/workflow-cli.js +4 -4
  108. package/dist/core/adapter/adapters/akm-adapter.js +2 -1
  109. package/dist/core/adapter/adapters/akm-lint.js +2 -3
  110. package/dist/core/adapter/adapters/akm-metadata.js +42 -12
  111. package/dist/core/adapter/adapters/akm-task-adapter.js +29 -8
  112. package/dist/core/adapter/adapters/akm-workflow-adapter.js +1 -1
  113. package/dist/core/adapter/execution-source.js +17 -29
  114. package/dist/core/asset/asset-placement.js +4 -13
  115. package/dist/core/asset/frontmatter.js +106 -1
  116. package/dist/core/asset/resolve-ref.js +1 -1
  117. package/dist/core/bundle-id.js +42 -5
  118. package/dist/core/bundle-rename.js +285 -0
  119. package/dist/core/config/config-io.js +1 -2
  120. package/dist/core/config/config-schema.js +9 -34
  121. package/dist/core/config/config-walker.js +1 -1
  122. package/dist/core/config/config.js +184 -111
  123. package/dist/core/config/engine-semantics.js +0 -2
  124. package/dist/core/config/legacy-source-shape-shim.js +38 -9
  125. package/dist/core/config/schema/embedding.js +20 -5
  126. package/dist/core/config/schema/engines.js +5 -0
  127. package/dist/core/config/schema/execution.js +1 -1
  128. package/dist/core/config/schema/experimental.js +1 -1
  129. package/dist/core/config/schema/improve-processes.js +54 -125
  130. package/dist/core/config/schema/improve.js +4 -42
  131. package/dist/core/config/schema/index-config.js +9 -48
  132. package/dist/core/config/schema/scheduler.js +12 -12
  133. package/dist/core/config/schema/search.js +6 -22
  134. package/dist/core/env-secret-ref.js +0 -1
  135. package/dist/core/errors.js +8 -9
  136. package/dist/core/file-change.js +13 -5
  137. package/dist/core/file-lock.js +76 -173
  138. package/dist/core/improve-result.js +35 -7
  139. package/dist/core/improve-types.js +0 -1
  140. package/dist/core/logs-db.js +2 -2
  141. package/dist/core/loopback.js +7 -12
  142. package/dist/core/non-task-input.js +20 -0
  143. package/dist/core/parse.js +13 -16
  144. package/dist/core/paths.js +0 -24
  145. package/dist/core/redaction.js +109 -2
  146. package/dist/core/run-lock.js +2 -5
  147. package/dist/core/spawn-env.js +1 -1
  148. package/dist/core/state/migrations.js +123 -61
  149. package/dist/core/state-db-scope.js +2 -4
  150. package/dist/core/state-db.js +126 -692
  151. package/dist/core/time.js +0 -20
  152. package/dist/core/type-presentation.js +1 -9
  153. package/dist/core/write-source.js +294 -1005
  154. package/dist/execution/input-contract.js +1 -1
  155. package/dist/execution/resolved-request.js +135 -689
  156. package/dist/execution/source.js +63 -257
  157. package/dist/execution/target-ref.js +1 -1
  158. package/dist/indexer/bundle-identity-guard.js +2 -2
  159. package/dist/indexer/db/llm-cache.js +2 -2
  160. package/dist/indexer/ensure-index.js +77 -73
  161. package/dist/indexer/index-rebuild-lock.js +3 -11
  162. package/dist/indexer/index-writer-lock.js +8 -17
  163. package/dist/indexer/index-written-assets.js +141 -154
  164. package/dist/indexer/indexer.js +400 -1124
  165. package/dist/indexer/links/declared-links.js +90 -0
  166. package/dist/indexer/materialize-embeddings.js +60 -397
  167. package/dist/indexer/passes/memory-inference.js +96 -90
  168. package/dist/indexer/passes/metadata.js +132 -219
  169. package/dist/indexer/read-preflight.js +0 -7
  170. package/dist/indexer/scan/doc-to-entry.js +2 -3
  171. package/dist/indexer/scan/drain-dir.js +1 -1
  172. package/dist/indexer/search/db-search.js +190 -590
  173. package/dist/indexer/search/fts-query.js +30 -41
  174. package/dist/indexer/search/ranking.js +28 -154
  175. package/dist/indexer/search/search-attribution.js +12 -32
  176. package/dist/indexer/search/search-fields.js +11 -15
  177. package/dist/indexer/search/search-hit-enrichers.js +54 -85
  178. package/dist/indexer/search/search-source.js +1 -4
  179. package/dist/indexer/usage/usage-events.js +36 -7
  180. package/dist/indexer/walk/walker.js +3 -4
  181. package/dist/integrations/agent/engine-fallback.js +23 -40
  182. package/dist/integrations/agent/engine-resolution.js +93 -183
  183. package/dist/integrations/agent/execution.js +507 -0
  184. package/dist/integrations/agent/model-map.js +28 -156
  185. package/dist/integrations/agent/request-lowering.js +66 -141
  186. package/dist/integrations/agent/runner-dispatch.js +143 -321
  187. package/dist/integrations/agent/runner.js +54 -14
  188. package/dist/integrations/lockfile.js +53 -101
  189. package/dist/llm/client.js +18 -6
  190. package/dist/llm/embedders/deterministic.js +2 -3
  191. package/dist/llm/embedders/profile.js +71 -0
  192. package/dist/llm/embedders/remote.js +11 -17
  193. package/dist/llm/feature-gate.js +0 -8
  194. package/dist/llm/index-passes.js +3 -5
  195. package/dist/llm/memory-infer.js +1 -2
  196. package/dist/llm/structured-call.js +5 -24
  197. package/dist/output/generic-render.js +23 -11
  198. package/dist/output/html-render.js +13 -10
  199. package/dist/output/render-registry.js +3 -32
  200. package/dist/output/shapes/helpers.js +25 -38
  201. package/dist/output/shapes/passthrough.js +1 -9
  202. package/dist/{indexer/graph/graph-types.js → output/text/bundle-rename.js} +4 -1
  203. package/dist/output/text/command-format.js +69 -31
  204. package/dist/output/text/helpers.js +1 -1
  205. package/dist/output/text/migrate.js +5 -14
  206. package/dist/output/text/proposal-format.js +48 -3
  207. package/dist/output/text/show-format.js +13 -17
  208. package/dist/output/text/workflow-format.js +0 -32
  209. package/dist/output/text.js +2 -0
  210. package/dist/registry/factory.js +4 -19
  211. package/dist/registry/network.js +66 -220
  212. package/dist/registry/providers/index.js +0 -2
  213. package/dist/registry/providers/skills-sh.js +3 -14
  214. package/dist/registry/providers/static-index.js +24 -26
  215. package/dist/registry/resolve.js +55 -131
  216. package/dist/scripts/akm-migrate-node.js +42948 -92369
  217. package/dist/scripts/akm-migrate.js +42935 -92354
  218. package/dist/setup/registry-stash-loader.js +4 -13
  219. package/dist/setup/semantic-assets.js +3 -44
  220. package/dist/setup/setup.js +1 -1
  221. package/dist/setup/steps/connection.js +5 -6
  222. package/dist/setup/steps/platforms.js +2 -2
  223. package/dist/setup/steps/tasks.js +25 -15
  224. package/dist/sources/provider-factory.js +17 -18
  225. package/dist/sources/providers/filesystem.js +2 -3
  226. package/dist/sources/providers/git-install.js +7 -1
  227. package/dist/sources/providers/git-provider.js +0 -3
  228. package/dist/sources/providers/git-stash.js +83 -21
  229. package/dist/sources/providers/npm.js +2 -4
  230. package/dist/sources/providers/provider-utils.js +5 -10
  231. package/dist/sources/providers/website.js +0 -2
  232. package/dist/sources/snapshot-fetchers/website-ingest.js +1 -1
  233. package/dist/sources/website-url.js +2 -2
  234. package/dist/storage/database.js +9 -35
  235. package/dist/storage/repositories/improve-ledger-repository.js +209 -0
  236. package/dist/storage/repositories/index-connection.js +39 -72
  237. package/dist/storage/repositories/index-entries-repository.js +131 -129
  238. package/dist/storage/repositories/index-entry-mapper.js +1 -2
  239. package/dist/storage/repositories/index-entry-schema.js +101 -268
  240. package/dist/storage/repositories/index-fts-repository.js +86 -256
  241. package/dist/storage/repositories/index-links-repository.js +143 -0
  242. package/dist/storage/repositories/index-llm-cache-repository.js +7 -9
  243. package/dist/storage/repositories/index-meta-repository.js +6 -4
  244. package/dist/storage/repositories/index-schema.js +257 -325
  245. package/dist/storage/repositories/index-utility-repository.js +8 -29
  246. package/dist/storage/repositories/index-vec-repository.js +133 -414
  247. package/dist/storage/repositories/outcome-repository.js +2 -1
  248. package/dist/storage/repositories/proposals-repository.js +104 -1
  249. package/dist/storage/repositories/registry-index-cache-repository.js +100 -0
  250. package/dist/storage/repositories/salience-repository.js +1 -19
  251. package/dist/storage/repositories/task-history-repository.js +26 -4
  252. package/dist/storage/repositories/workflow-runs-repository.js +53 -244
  253. package/dist/storage/sqlite-migrations.js +136 -0
  254. package/dist/storage/sqlite-pragmas.js +11 -9
  255. package/dist/storage/sqlite-transaction.js +170 -0
  256. package/dist/storage/state-db-integrity.js +130 -0
  257. package/dist/tasks/activation-config.js +134 -62
  258. package/dist/tasks/backends/cron.js +191 -302
  259. package/dist/tasks/backends/exec-utils.js +2 -5
  260. package/dist/tasks/backends/launchd.js +141 -748
  261. package/dist/tasks/backends/schtasks.js +119 -623
  262. package/dist/tasks/prepare/prepare-support.js +5 -15
  263. package/dist/tasks/prepare/prepare.js +0 -2
  264. package/dist/tasks/resolve-akm-bin.js +20 -79
  265. package/dist/tasks/run/attempt-lifecycle.js +0 -1
  266. package/dist/tasks/run/load-task.js +1 -1
  267. package/dist/tasks/scheduler-binding.js +20 -238
  268. package/dist/tasks/scheduler-invocation.js +136 -244
  269. package/dist/tasks/scheduler-lock.js +53 -0
  270. package/dist/tasks/scheduler-sync.js +368 -679
  271. package/dist/tasks/source/parse-task-source.js +55 -9
  272. package/dist/tasks/source/task-source-v3-frozen.js +3 -4
  273. package/dist/tasks/source/task-to-v4.js +464 -88
  274. package/dist/workflows/authoring/authoring.js +3 -12
  275. package/dist/workflows/compile.js +211 -0
  276. package/dist/workflows/concurrency-policy.js +13 -74
  277. package/dist/workflows/exec/child-invocation.js +3 -17
  278. package/dist/workflows/exec/child-workflow.js +32 -141
  279. package/dist/workflows/exec/dispatch-redaction.js +13 -53
  280. package/dist/workflows/exec/environment.js +98 -0
  281. package/dist/workflows/exec/exec-unit.js +33 -140
  282. package/dist/workflows/exec/frozen-judge.js +7 -59
  283. package/dist/workflows/exec/native-executor.js +82 -341
  284. package/dist/workflows/exec/param-secrets.js +29 -47
  285. package/dist/workflows/exec/run-workflow.js +154 -387
  286. package/dist/workflows/exec/scheduler.js +9 -36
  287. package/dist/workflows/exec/step-work.js +127 -430
  288. package/dist/workflows/exec/unit-dispatch.js +11 -63
  289. package/dist/workflows/exec/unit-writer.js +8 -52
  290. package/dist/workflows/exec/worktree.js +39 -273
  291. package/dist/workflows/freeze/child-output-references.js +4 -15
  292. package/dist/workflows/freeze/environment.js +99 -92
  293. package/dist/workflows/freeze/freeze.js +172 -0
  294. package/dist/workflows/freeze/step-values.js +19 -21
  295. package/dist/workflows/freeze/targets/child-workflow.js +23 -92
  296. package/dist/workflows/freeze/targets/command.js +10 -33
  297. package/dist/workflows/freeze/targets/script.js +5 -12
  298. package/dist/workflows/freeze/targets/shell.js +3 -6
  299. package/dist/workflows/freeze/targets/task.js +25 -80
  300. package/dist/workflows/freeze/task-bindings.js +20 -67
  301. package/dist/workflows/{source-ir/github-yaml.js → github-yaml.js} +88 -206
  302. package/dist/workflows/ir/params.js +6 -51
  303. package/dist/workflows/ir/plan-hash.js +2 -34
  304. package/dist/workflows/parser.js +140 -43
  305. package/dist/{commands/improve/consolidate/types.js → workflows/plan.js} +2 -1
  306. package/dist/workflows/renderer.js +36 -69
  307. package/dist/workflows/resource-limits.js +12 -120
  308. package/dist/workflows/runtime/agent-identity.js +8 -40
  309. package/dist/workflows/runtime/run-outputs.js +3 -6
  310. package/dist/workflows/runtime/run-plan.js +316 -0
  311. package/dist/workflows/runtime/runs.js +48 -200
  312. package/dist/workflows/runtime/workflow-asset-loader.js +24 -57
  313. package/dist/workflows/{source-ir/semantics.js → source-semantics.js} +16 -20
  314. package/dist/workflows/validate-summary.js +2 -7
  315. package/docs/integration/bundling-akm.md +49 -42
  316. package/docs/migration/README.md +1 -0
  317. package/docs/migration/release-notes/0.9.17.md +43 -0
  318. package/docs/migration/v0.9.1-to-v0.9.2.md +23 -7
  319. package/docs/reference/cli.md +232 -135
  320. package/docs/reference/configuration.md +71 -57
  321. package/docs/reference/data-and-telemetry.md +20 -21
  322. package/docs/reference/tasks.md +105 -39
  323. package/docs/reference/workflow-schema.md +14 -18
  324. package/docs/reference/workflows.md +6 -9
  325. package/package.json +1 -1
  326. package/schemas/akm-config.json +115 -738
  327. package/schemas/akm-workflow.json +1 -0
  328. package/dist/assets/improve-strategies/graph-refresh.json +0 -15
  329. package/dist/assets/prompts/contradiction-judge.md +0 -33
  330. package/dist/assets/prompts/graph-extract-system.md +0 -1
  331. package/dist/assets/prompts/graph-extract-user-prompt.md +0 -35
  332. package/dist/assets/prompts/metadata-enhance-system.md +0 -1
  333. package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +0 -4
  334. package/dist/commands/health/advisories.js +0 -150
  335. package/dist/commands/health/metrics.js +0 -329
  336. package/dist/commands/health/surfaces.js +0 -102
  337. package/dist/commands/improve/anti-collapse.js +0 -83
  338. package/dist/commands/improve/collapse-detector.js +0 -432
  339. package/dist/commands/improve/consolidate/eligibility.js +0 -48
  340. package/dist/commands/improve/consolidate/merge.js +0 -149
  341. package/dist/commands/improve/distill/promote-memory.js +0 -291
  342. package/dist/commands/improve/distill/quality-gate.js +0 -337
  343. package/dist/commands/improve/eval-cases.js +0 -52
  344. package/dist/commands/improve/memory/memory-contradiction-detect.js +0 -291
  345. package/dist/commands/improve/proposal-envelope.js +0 -31
  346. package/dist/commands/improve/run-context.js +0 -123
  347. package/dist/commands/improve/shared.js +0 -31
  348. package/dist/commands/improve/source-identity.js +0 -28
  349. package/dist/commands/improve/triage.js +0 -96
  350. package/dist/commands/proposal/drain-policies.js +0 -151
  351. package/dist/commands/sources/update-transaction.js +0 -220
  352. package/dist/core/action-contributors.js +0 -28
  353. package/dist/core/config/config-version-shim.js +0 -101
  354. package/dist/core/fs-txn.js +0 -405
  355. package/dist/core/lexical-score.js +0 -25
  356. package/dist/core/maintenance-barrier.js +0 -167
  357. package/dist/execution/executable-identity.js +0 -105
  358. package/dist/execution/guarded-source.js +0 -427
  359. package/dist/indexer/db/graph-db.js +0 -444
  360. package/dist/indexer/graph/graph-boost.js +0 -427
  361. package/dist/indexer/graph/graph-dedup.js +0 -95
  362. package/dist/indexer/graph/graph-extraction.js +0 -1108
  363. package/dist/indexer/search/name-match.js +0 -35
  364. package/dist/indexer/search/ranking-contributors.js +0 -515
  365. package/dist/indexer/search/ranking-types.js +0 -4
  366. package/dist/indexer/walk/project-context.js +0 -192
  367. package/dist/integrations/agent/execution-cascade.js +0 -566
  368. package/dist/integrations/agent/execution-definitions.js +0 -202
  369. package/dist/integrations/agent/execution-lowering.js +0 -841
  370. package/dist/integrations/agent/execution-preparation.js +0 -98
  371. package/dist/integrations/agent/inline-execution.js +0 -74
  372. package/dist/llm/graph-extract.js +0 -728
  373. package/dist/llm/metadata-enhance.js +0 -96
  374. package/dist/registry/create-provider-registry.js +0 -29
  375. package/dist/registry/pinned-request-helper.js +0 -247
  376. package/dist/registry/pinned-transport.js +0 -717
  377. package/dist/sources/providers/index.js +0 -14
  378. package/dist/storage/engines/sqlite-migrations.js +0 -271
  379. package/dist/storage/repositories/canaries-repository.js +0 -107
  380. package/dist/storage/repositories/embedding-salvage-repository.js +0 -184
  381. package/dist/storage/repositories/registry-cache.js +0 -113
  382. package/dist/tasks/scheduler-sync-preview.js +0 -52
  383. package/dist/tasks/source/task-to-v3.js +0 -507
  384. package/dist/workflows/freeze/resolve-steps.js +0 -86
  385. package/dist/workflows/freeze/source-freeze.js +0 -64
  386. package/dist/workflows/ir/compile.js +0 -321
  387. package/dist/workflows/ir/environment-v4.js +0 -330
  388. package/dist/workflows/ir/freeze-v4.js +0 -153
  389. package/dist/workflows/ir/schema-v4.js +0 -745
  390. package/dist/workflows/ir/schema.js +0 -354
  391. package/dist/workflows/program/schema.js +0 -77
  392. package/dist/workflows/runtime/checkin.js +0 -57
  393. package/dist/workflows/runtime/plan-classifier.js +0 -196
  394. package/dist/workflows/runtime/unit-checkin.js +0 -45
  395. package/dist/workflows/runtime/unit-phases.js +0 -20
  396. package/dist/workflows/schema.js +0 -4
  397. package/dist/workflows/source-ir/compile.js +0 -200
  398. package/dist/workflows/source-ir/program.js +0 -50
  399. package/dist/workflows/source-ir/result.js +0 -26
  400. package/dist/workflows/source-ir/schema.js +0 -786
  401. package/dist/workflows/source-ir/triggers.js +0 -79
  402. package/dist/workflows/source-ir/uses.js +0 -40
  403. package/dist/workflows/validator.js +0 -60
@@ -25,7 +25,6 @@ import { resolveImproveExecution } from "../improve/execution.js";
25
25
  import { extractCommand } from "../improve/extract-cli.js";
26
26
  import { resolveImproveStrategy } from "../improve/improve-strategies.js";
27
27
  import { drainProposals } from "./drain.js";
28
- import { resolveDrainPolicy } from "./drain-policies.js";
29
28
  import { akmProposalAccept, akmProposalDiff, akmProposalList, akmProposalReject, akmProposalRevert, akmProposalShow, bulkAdjudicateProposals, } from "./proposal.js";
30
29
  import { proposeCommand } from "./propose-cli.js";
31
30
  export function mergeProposalDrainNotices(resolutionNotices, dispatchNotices) {
@@ -90,6 +89,10 @@ const proposalListCommand = defineJsonCommand({
90
89
  },
91
90
  ref: { type: "string", description: "Filter by asset ref ([bundle//]conceptId, e.g. knowledge/guide.md)" },
92
91
  type: { type: "string", description: "Filter by asset type" },
92
+ generator: {
93
+ type: "string",
94
+ description: "Filter by generator/source (e.g. reflect, distill, consolidate-pair) — same value accept/reject --generator take.",
95
+ },
93
96
  },
94
97
  run({ args }) {
95
98
  const status = parseProposalStatus(args.status);
@@ -98,6 +101,7 @@ const proposalListCommand = defineJsonCommand({
98
101
  status,
99
102
  ref: args.ref,
100
103
  type: args.type,
104
+ generator: args.generator,
101
105
  includeArchive: status === "accepted" || status === "rejected" || status === "reverted",
102
106
  });
103
107
  output("proposal-list", result);
@@ -150,7 +154,7 @@ const proposalAcceptCommand = defineJsonCommand({
150
154
  return;
151
155
  }
152
156
  const { maxDiffLines, olderThanMs } = parseBulkFilterFlags(args);
153
- const { count, results } = await bulkAdjudicateProposals({
157
+ const { count, results, skippedForContinuityRisk } = await bulkAdjudicateProposals({
154
158
  action: "accept",
155
159
  generator,
156
160
  maxDiffLines,
@@ -159,7 +163,16 @@ const proposalAcceptCommand = defineJsonCommand({
159
163
  queue: args.queue,
160
164
  target: args.target,
161
165
  });
162
- output("proposal-accept-batch", { accepted: count, results, dryRun: args["dry-run"] });
166
+ output("proposal-accept-batch", {
167
+ accepted: count,
168
+ results,
169
+ // S4: how many otherwise-matching proposals were skipped specifically
170
+ // because they carry retirement.continuityRisk — visible under
171
+ // --dry-run and on a real run alike, distinct from an ordinary
172
+ // --max-diff-lines/--older-than miss.
173
+ skippedForContinuityRisk,
174
+ dryRun: args["dry-run"],
175
+ });
163
176
  return;
164
177
  }
165
178
  if (!args.id) {
@@ -323,13 +336,9 @@ const proposalShowCommand = defineJsonCommand({
323
336
  const proposalDrainCommand = defineJsonCommand({
324
337
  meta: {
325
338
  name: "drain",
326
- description: "Drain the standing pending proposal backlog using a deterministic triage policy",
339
+ description: "Drain the pending proposal backlog: accept what a quality judge passed, reject empty diffs, leave the rest for judgment or review",
327
340
  },
328
341
  args: {
329
- policy: {
330
- type: "string",
331
- description: "Built-in preset (personal-stash|conservative|manual) or path to a policy file",
332
- },
333
342
  "dry-run": {
334
343
  type: "boolean",
335
344
  description: "List what would be accepted/rejected/deferred without writing.",
@@ -345,10 +354,6 @@ const proposalDrainCommand = defineJsonCommand({
345
354
  type: "string",
346
355
  description: "Hard per-run accept ceiling. Accepts beyond this are reported as skippedByCap.",
347
356
  },
348
- "max-diff-lines": {
349
- type: "string",
350
- description: "Defer (never promote) accepts whose proposed content exceeds this many lines.",
351
- },
352
357
  "older-than": {
353
358
  type: "string",
354
359
  description: "Only consider proposals created more than this many days ago.",
@@ -365,7 +370,7 @@ const proposalDrainCommand = defineJsonCommand({
365
370
  },
366
371
  strategy: {
367
372
  type: "string",
368
- description: "Read the triage block (policy, applyMode, ceilings, judgment) from this improve strategy.",
373
+ description: "Read the triage block (applyMode, ceilings, judgment) from this improve strategy.",
369
374
  },
370
375
  },
371
376
  async run({ args, rawArgs }) {
@@ -378,20 +383,17 @@ const proposalDrainCommand = defineJsonCommand({
378
383
  // always override config; config supplies defaults for any flag omitted.
379
384
  const selectedStrategy = resolveImproveStrategy(args.strategy, cfg);
380
385
  const triageConfig = selectedStrategy.config.processes?.triage;
381
- const policy = resolveDrainPolicy(args.policy ?? triageConfig?.policy);
382
386
  const dryRun = args["dry-run"] === true;
383
387
  const applyMode = args.promote === true ? "promote" : (triageConfig?.applyMode ?? "queue");
384
388
  const maxAccepts = parsePositiveIntFlag(args["max-accepts"], "--max-accepts") ??
385
389
  triageConfig?.maxAcceptsPerRun ??
386
390
  25;
387
- const maxDiffLines = parsePositiveIntFlag(args["max-diff-lines"], "--max-diff-lines") ??
388
- triageConfig?.maxDiffLines;
389
391
  const rawOlderThan = parsePositiveIntFlag(args["older-than"], "--older-than");
390
392
  const olderThanMs = rawOlderThan !== undefined ? rawOlderThan * 86_400_000 : undefined;
391
393
  // Promotion in promote mode is destructive (commits to git, no batch revert).
392
394
  if (applyMode === "promote" && !dryRun) {
393
395
  const { confirmDestructive } = await import("../../cli/confirm.js");
394
- const confirmed = await confirmDestructive(`Drain and promote matching pending proposals under policy "${policy.name}"? Promotions commit to git and cannot be batch-reverted.`, { yes: args.yes === true });
396
+ const confirmed = await confirmDestructive("Drain and promote judge-passed pending proposals? Promotions commit to git and cannot be batch-reverted.", { yes: args.yes === true });
395
397
  if (!confirmed) {
396
398
  process.stderr.write("Aborted.\n");
397
399
  return;
@@ -444,11 +446,9 @@ const proposalDrainCommand = defineJsonCommand({
444
446
  result = await withLlmStage("drain", () => drainProposals({
445
447
  stashDir,
446
448
  config: cfg,
447
- policy,
448
449
  applyMode,
449
450
  maxAccepts,
450
451
  dryRun,
451
- ...(maxDiffLines !== undefined ? { maxDiffLines } : {}),
452
452
  ...(excludeIds ? { excludeIds } : {}),
453
453
  judgment,
454
454
  }));
@@ -461,7 +461,6 @@ const proposalDrainCommand = defineJsonCommand({
461
461
  output("proposal-drain", {
462
462
  schemaVersion: 1,
463
463
  ok: true,
464
- policy: policy.name,
465
464
  applyMode,
466
465
  dryRun,
467
466
  strategy: selectedStrategy.name,
@@ -1,56 +1,63 @@
1
1
  // This Source Code Form is subject to the terms of the Mozilla Public
2
2
  // License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  // file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
- // ── Source allow-list (F-4 / #385) ──────────────────────────────────────────
5
4
  /**
6
- * Curated allow-list of valid `source` values for proposals (F-4 / #385).
7
- *
8
- * Rationale (W3C PROV-DM 2013): Provenance records require typed, validated
9
- * sources for meaningful aggregation. Accept-rate-per-source is the core
10
- * self-measurement metric for recursive self-improvement: if reflect proposals
11
- * are accepted at 20% and distill proposals at 60%, that guides resource
12
- * allocation. Free-text typos (`"reflct"`) produce unaggregatable events.
13
- *
14
- * Automated sources (those in {@link AUTOMATED_PROPOSAL_SOURCES}) require a
15
- * `sourceRun` field for full PROV-DM traceability.
5
+ * Valid proposal `source` values (#385): typed sources keep accept-rate per
6
+ * source aggregatable (PROV-DM). An unknown value is accepted with a warning.
16
7
  */
17
8
  export const PROPOSAL_SOURCES = [
18
- // Automated sources — require sourceRun for traceability.
19
9
  "reflect",
20
10
  "distill",
21
11
  "consolidate",
12
+ /** The consolidate pair pass's own retire proposals (alpha.9, S6) — kept apart from `consolidate`'s promotions so a bulk `accept --generator consolidate` never sweeps a retirement, and the reverse. */
13
+ "consolidate-pair",
22
14
  "extract",
23
15
  "improve",
24
- // Semi-automated / tool-driven.
25
16
  "feedback",
26
- // Human-initiated / CLI-driven.
27
17
  "propose",
28
18
  "remember",
29
19
  "import",
30
- // Internal / system.
31
20
  "distill_quality_rejected",
32
21
  "schema-repair",
33
22
  ];
34
- /** Automated sources that SHOULD include a `sourceRun` for PROV-DM traceability. */
23
+ /** Automated sources, which should carry a `sourceRun`. */
35
24
  export const AUTOMATED_PROPOSAL_SOURCES = [
36
25
  "reflect",
37
26
  "distill",
38
27
  "consolidate",
28
+ "consolidate-pair",
39
29
  "extract",
40
30
  "improve",
41
31
  "schema-repair",
42
32
  ];
43
- /**
44
- * Check whether a string is a valid {@link ProposalSource}.
45
- * Unknown source values are accepted with a runtime warning rather than a hard
46
- * error, to allow extensions without breaking existing callers.
47
- */
48
33
  export function isValidProposalSource(source) {
49
34
  return PROPOSAL_SOURCES.includes(source);
50
35
  }
51
- /**
52
- * Check whether a source value is an automated source requiring `sourceRun`.
53
- */
54
36
  export function isAutomatedProposalSource(source) {
55
37
  return AUTOMATED_PROPOSAL_SOURCES.includes(source);
56
38
  }
39
+ /** A pending or accepted proposal whose primary change deletes its target (a consolidate retire proposal, alpha.9). */
40
+ export function isRetireProposal(proposal) {
41
+ return proposal.changes[0]?.op === "delete";
42
+ }
43
+ /** A promote refused because the target changed after mint (STALE, R20) — not a merit judgement. */
44
+ export const STALE_TARGET_GATE_REASON = "stale-target";
45
+ export const EXPIRED_GATE_REASON = "expired";
46
+ export const ASSET_MISSING_GATE_REASON = "asset-missing";
47
+ const PROCEDURAL_GATE_REASONS = new Set([
48
+ STALE_TARGET_GATE_REASON,
49
+ EXPIRED_GATE_REASON,
50
+ ASSET_MISSING_GATE_REASON,
51
+ ]);
52
+ /**
53
+ * A rejection nobody judged on its content (stale target, expiry, orphan
54
+ * purge). The "previously rejected" prompt context and the accept-rate metric
55
+ * leave these out. Expiries archived before the gate reason existed are known
56
+ * by their review reason.
57
+ */
58
+ export function isProceduralRejection(proposal) {
59
+ if (proposal.gateDecision?.outcome === "auto-rejected" && PROCEDURAL_GATE_REASONS.has(proposal.gateDecision.reason)) {
60
+ return true;
61
+ }
62
+ return proposal.review?.reason?.startsWith("expired:") === true;
63
+ }
@@ -15,7 +15,8 @@ import { resolveStashDir } from "../../core/common.js";
15
15
  import { loadConfig } from "../../core/config/config.js";
16
16
  import { resolveWriteTarget } from "../../core/write-source.js";
17
17
  import { withAssetMutationLease } from "../../indexer/index-writer-lock.js";
18
- import { diffProposal, listProposals, preflightProposalPromotion, promoteProposal, proposalContent, recoverProposalTransactionsForStash, rejectProposalDurably, resolveProposalId, revertProposal, } from "./repository.js";
18
+ import { isRetireProposal } from "./proposal-types.js";
19
+ import { diffProposal, listProposals, preflightProposalPromotion, promoteProposal, proposalContent, rejectProposalDurably, resolveProposalId, revertProposal, } from "./repository.js";
19
20
  import { validateProposal } from "./validators/proposals.js";
20
21
  // ── Shared helpers ──────────────────────────────────────────────────────────
21
22
  function resolveStash(stashDir) {
@@ -55,7 +56,7 @@ export function akmProposalList(options = {}) {
55
56
  status: options.status,
56
57
  ref: options.ref,
57
58
  type: options.type,
58
- });
59
+ }).filter((p) => options.generator === undefined || p.source === options.generator);
59
60
  return { schemaVersion: 1, totalCount: proposals.length, proposals };
60
61
  }
61
62
  export function akmProposalShow(options) {
@@ -64,9 +65,13 @@ export function akmProposalShow(options) {
64
65
  const proposal = resolveProposalId(stash, options.id);
65
66
  let validation = validateProposal(proposal);
66
67
  // An explicit stashDir without config is an in-process storage test seam; it
67
- // has no authenticated write-target context to preflight against.
68
+ // has no authenticated write-target context to preflight against. A retire
69
+ // proposal writes no content — preflightProposalPromotion's stamp/lint
70
+ // machinery is create/update-shaped and has nothing meaningful to check
71
+ // here; `diff` already shows the body being retired.
68
72
  if (validation.ok &&
69
73
  proposal.status === "pending" &&
74
+ !isRetireProposal(proposal) &&
70
75
  (options.config !== undefined || options.stashDir === undefined)) {
71
76
  try {
72
77
  preflightProposalPromotion(options.config ?? loadConfig(), proposal, { queueTarget: queue.target });
@@ -104,7 +109,6 @@ export async function akmProposalReject(options) {
104
109
  const config = options.config ?? loadConfig();
105
110
  const { stashDir: stash } = resolveProposalQueue(options.stashDir, options.queue, config);
106
111
  const proposalId = resolveProposalId(stash, options.id, options.ctx).id;
107
- await recoverProposalTransactionsForStash(stash, config, options.ctx, proposalId);
108
112
  const updated = rejectProposalDurably(stash, proposalId, options.reason, options.ctx, options.gateDecision);
109
113
  return {
110
114
  schemaVersion: 1,
@@ -162,6 +166,16 @@ export async function akmProposalRevert(options) {
162
166
  proposal: result.proposal,
163
167
  };
164
168
  }
169
+ /** The retired file's current line count for `--max-diff-lines` (S6); unresolvable is never size-filtered here — the real accept/reject attempt fails cleanly on a genuinely stale target. */
170
+ function retiredTargetLineCount(stashDir, config, proposal, queueTarget) {
171
+ try {
172
+ const existing = diffProposal(stashDir, config, proposal.id, { queueTarget }).existing;
173
+ return existing === null ? 0 : existing.split("\n").length;
174
+ }
175
+ catch {
176
+ return 0;
177
+ }
178
+ }
165
179
  /**
166
180
  * Bulk accept/reject every pending proposal from one generator, applying the
167
181
  * shared `--max-diff-lines` / `--older-than` filters. Consolidates the two
@@ -171,12 +185,21 @@ export async function akmProposalRevert(options) {
171
185
  */
172
186
  export async function bulkAdjudicateProposals(options) {
173
187
  const config = options.config ?? loadConfig();
174
- const { stashDir } = resolveProposalQueue(options.stashDir, options.queue, config);
175
- const pending = listProposals(stashDir, { status: "pending" }).filter((p) => {
188
+ const { stashDir, target: queueTarget } = resolveProposalQueue(options.stashDir, options.queue, config);
189
+ // Every filter EXCEPT the continuityRisk exclusion below — matched against
190
+ // separately so its own count (S4) can be reported apart from an ordinary
191
+ // --max-diff-lines/--older-than miss.
192
+ const matched = listProposals(stashDir, { status: "pending" }).filter((p) => {
176
193
  if (p.source !== options.generator)
177
194
  return false;
178
195
  if (options.maxDiffLines !== undefined) {
179
- const lines = proposalContent(p).split("\n").length;
196
+ // S6: a retire proposal's own payload is empty (it deletes its
197
+ // target) — proposalContent() would always read as 1 line, so
198
+ // --max-diff-lines could never filter one out. Count the retired
199
+ // file's own current line count instead.
200
+ const lines = isRetireProposal(p)
201
+ ? retiredTargetLineCount(stashDir, config, p, queueTarget)
202
+ : proposalContent(p).split("\n").length;
180
203
  if (lines > options.maxDiffLines)
181
204
  return false;
182
205
  }
@@ -187,6 +210,13 @@ export async function bulkAdjudicateProposals(options) {
187
210
  }
188
211
  return true;
189
212
  });
213
+ // Item 1 (continuity check, alpha.9 plan §5.4, rule R3): a retire proposal
214
+ // the check flagged is never bulk-accepted, by generator or any other
215
+ // sweep — only a person accepting it by id can. Bulk reject is unaffected:
216
+ // declining a risky proposal is never the unsafe direction.
217
+ const isContinuityExcluded = (p) => options.action === "accept" && Boolean(p.retirement?.continuityRisk);
218
+ const skippedForContinuityRisk = matched.filter(isContinuityExcluded).length;
219
+ const pending = matched.filter((p) => !isContinuityExcluded(p));
190
220
  const results = [];
191
221
  for (const proposal of pending) {
192
222
  if (options.dryRun) {
@@ -199,5 +229,5 @@ export async function bulkAdjudicateProposals(options) {
199
229
  results.push(await akmProposalReject({ stashDir, id: proposal.id, queue: options.queue, reason: options.reason, config }));
200
230
  }
201
231
  }
202
- return { count: results.length, results };
232
+ return { count: results.length, results, skippedForContinuityRisk };
203
233
  }