akm-cli 0.9.31 → 0.10.26101002-alpha

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 (236) hide show
  1. package/CHANGELOG.md +265 -0
  2. package/STABILITY.md +79 -53
  3. package/dist/api-node.mjs +20 -0
  4. package/dist/api.d.ts +23 -0
  5. package/dist/api.js +45 -0
  6. package/dist/assets/hints/cli-hints-full.md +13 -27
  7. package/dist/assets/hints/cli-hints-short.md +1 -1
  8. package/dist/assets/improve-strategies/default.json +3 -3
  9. package/dist/assets/prompts/consolidate-pair.md +9 -7
  10. package/dist/cli/shared.js +31 -48
  11. package/dist/cli/unknown-flags.js +6 -43
  12. package/dist/cli.js +8 -34
  13. package/dist/commands/agent/contribute-cli.js +1 -1
  14. package/dist/commands/completions.js +1 -2
  15. package/dist/commands/config-cli.js +5 -28
  16. package/dist/commands/env/env-cli.js +5 -5
  17. package/dist/commands/env/secret-cli.js +2 -2
  18. package/dist/commands/health/checks.js +41 -16
  19. package/dist/commands/health/plugin-staleness.js +52 -22
  20. package/dist/commands/improve/autonomy-gate.js +5 -3
  21. package/dist/commands/improve/consolidate/pair-pass.js +7 -1
  22. package/dist/commands/improve/consolidate.js +6 -35
  23. package/dist/commands/improve/distill/lesson-update.js +91 -0
  24. package/dist/commands/improve/distill-guards.js +1 -43
  25. package/dist/commands/improve/distill.js +140 -20
  26. package/dist/commands/improve/eligibility.js +14 -1
  27. package/dist/commands/improve/extract-cli.js +1 -1
  28. package/dist/commands/improve/improve-cli.js +87 -102
  29. package/dist/commands/improve/improve-strategies.js +8 -12
  30. package/dist/commands/improve/improve.js +2 -2
  31. package/dist/commands/improve/loop-stages.js +0 -1
  32. package/dist/commands/improve/planner.js +0 -1
  33. package/dist/commands/improve/preparation.js +40 -99
  34. package/dist/commands/improve/proactive-maintenance.js +2 -2
  35. package/dist/commands/improve/reflect-noise.js +3 -55
  36. package/dist/commands/improve/reflect.js +3 -8
  37. package/dist/commands/improve/retrieval-scope.js +2 -2
  38. package/dist/commands/improve/salience.js +2 -9
  39. package/dist/commands/improve/stage.js +14 -9
  40. package/dist/commands/lint/index.js +5 -20
  41. package/dist/commands/observability-cli.js +3 -9
  42. package/dist/commands/proposal/drain.js +39 -6
  43. package/dist/commands/proposal/proposal-cli.js +11 -31
  44. package/dist/commands/proposal/repository.js +3 -3
  45. package/dist/commands/read/knowledge.js +3 -3
  46. package/dist/commands/read/remember-cli.js +0 -13
  47. package/dist/commands/read/search-cli.js +29 -97
  48. package/dist/commands/read/search.js +0 -11
  49. package/dist/commands/read/show.js +0 -19
  50. package/dist/commands/sources/plugin-upgrade.js +164 -101
  51. package/dist/commands/sources/sources-cli.js +1 -15
  52. package/dist/commands/sources/stash-cli.js +4 -12
  53. package/dist/commands/tasks/tasks-cli.js +4 -115
  54. package/dist/commands/workflow/plan.js +11 -33
  55. package/dist/commands/workflow-cli.js +2 -7
  56. package/dist/core/adapter/adapter-ids.js +1 -2
  57. package/dist/core/adapter/adapters/agent-skills-adapter.js +0 -4
  58. package/dist/core/adapter/adapters/akm-adapter.js +9 -48
  59. package/dist/core/adapter/adapters/akm-lint.js +10 -26
  60. package/dist/core/adapter/adapters/akm-metadata.js +2 -72
  61. package/dist/core/adapter/adapters/akm-task-adapter.js +0 -5
  62. package/dist/core/adapter/adapters/akm-workflow-adapter.js +9 -28
  63. package/dist/core/adapter/adapters/dotenv-adapter.js +1 -20
  64. package/dist/core/adapter/adapters/generic-files-adapter.js +0 -10
  65. package/dist/core/adapter/adapters/llm-wiki-adapter.js +0 -4
  66. package/dist/core/adapter/adapters/tool-dir-shared.js +0 -24
  67. package/dist/core/adapter/adapters/website-snapshot-adapter.js +4 -4
  68. package/dist/core/adapter/recognize-match.js +3 -4
  69. package/dist/core/common.js +18 -2
  70. package/dist/core/config/config-schema.js +12 -15
  71. package/dist/core/config/config-types.js +6 -15
  72. package/dist/core/config/config-walker.js +6 -23
  73. package/dist/core/config/config.js +17 -80
  74. package/dist/core/config/engine-semantics.js +7 -3
  75. package/dist/core/config/schema/engines.js +7 -7
  76. package/dist/core/config/schema/improve-processes.js +8 -61
  77. package/dist/core/config/schema/improve.js +2 -21
  78. package/dist/core/config/schema/index-config.js +6 -39
  79. package/dist/core/env-secret-ref.js +2 -45
  80. package/dist/core/errors.js +1 -2
  81. package/dist/core/extra-params.js +2 -86
  82. package/dist/core/improve-result.js +11 -1
  83. package/dist/core/mutation-target.js +2 -2
  84. package/dist/core/recognition-util.js +4 -5
  85. package/dist/core/warn.js +21 -4
  86. package/dist/core/write-source.js +3 -3
  87. package/dist/execution/target-ref.js +1 -2
  88. package/dist/indexer/search/db-search.js +4 -19
  89. package/dist/indexer/search/fts-query.js +0 -19
  90. package/dist/integrations/agent/engine-resolution.js +5 -2
  91. package/dist/integrations/agent/index.js +1 -1
  92. package/dist/integrations/agent/profiles.js +41 -98
  93. package/dist/integrations/agent/request-lowering.js +3 -3
  94. package/dist/integrations/harnesses/aider/index.js +5 -0
  95. package/dist/integrations/harnesses/amazonq/index.js +1 -0
  96. package/dist/integrations/harnesses/claude/config-import.js +2 -3
  97. package/dist/integrations/harnesses/claude/index.js +5 -0
  98. package/dist/integrations/harnesses/codex/index.js +1 -0
  99. package/dist/integrations/harnesses/copilot/index.js +1 -0
  100. package/dist/integrations/harnesses/gemini/index.js +1 -0
  101. package/dist/integrations/harnesses/index.js +18 -39
  102. package/dist/integrations/harnesses/opencode/agent-builder.js +60 -35
  103. package/dist/integrations/harnesses/opencode/config-import.js +121 -52
  104. package/dist/integrations/harnesses/opencode/index.js +22 -0
  105. package/dist/integrations/harnesses/opencode/plugin-layout.js +68 -0
  106. package/dist/integrations/harnesses/opencode/session-log-types.js +12 -0
  107. package/dist/integrations/harnesses/opencode/session-log-v1.js +72 -0
  108. package/dist/integrations/harnesses/opencode/session-log-v2.js +140 -0
  109. package/dist/integrations/harnesses/opencode/session-log.js +104 -115
  110. package/dist/integrations/harnesses/opencode/version.js +98 -0
  111. package/dist/integrations/harnesses/opencode-sdk/{harness.js → index.js} +5 -17
  112. package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +105 -206
  113. package/dist/integrations/harnesses/opencode-sdk/v1-adapter.js +199 -0
  114. package/dist/integrations/harnesses/opencode-sdk/v2-adapter.js +228 -0
  115. package/dist/integrations/harnesses/opencode-sdk/wire.js +66 -0
  116. package/dist/integrations/harnesses/openhands/index.js +1 -0
  117. package/dist/integrations/harnesses/pi/index.js +1 -0
  118. package/dist/integrations/harnesses/shared.js +2 -0
  119. package/dist/integrations/harnesses/types.js +2 -0
  120. package/dist/llm/client.js +41 -11
  121. package/dist/output/cli-hints.js +1 -1
  122. package/dist/output/context.js +10 -19
  123. package/dist/output/format-exempt.js +5 -8
  124. package/dist/output/shapes/helpers.js +1 -22
  125. package/dist/output/shapes/passthrough.js +0 -1
  126. package/dist/output/shapes.js +3 -31
  127. package/dist/output/stdout.js +5 -1
  128. package/dist/output/text/command-format.js +6 -1
  129. package/dist/output/text/workflow-format.js +4 -22
  130. package/dist/scripts/akm-migrate-node.js +13049 -14013
  131. package/dist/scripts/akm-migrate.js +16316 -17276
  132. package/dist/setup/detect.js +10 -4
  133. package/dist/setup/harness-config-import.js +5 -14
  134. package/dist/setup/setup.js +1 -1
  135. package/dist/setup/steps/tasks.js +12 -13
  136. package/dist/storage/repositories/task-history-repository.js +0 -5
  137. package/dist/storage/repositories/workflow-runs-repository.js +5 -15
  138. package/dist/tasks/embedded.js +2 -1
  139. package/dist/tasks/run/task-history.js +0 -2
  140. package/dist/tasks/schedule-gates.js +39 -0
  141. package/dist/tasks/scheduler-binding.js +0 -16
  142. package/dist/tasks/scheduler-sync.js +3 -97
  143. package/dist/tasks/source/bounded-document.js +1 -1
  144. package/dist/tasks/source/task-source-v4.js +2 -12
  145. package/dist/tasks/task-run-reserved-flags.js +2 -31
  146. package/dist/workflows/authoring/authoring.js +6 -6
  147. package/dist/workflows/compile.js +8 -65
  148. package/dist/workflows/exec/child-workflow.js +22 -3
  149. package/dist/workflows/exec/native-executor.js +12 -147
  150. package/dist/workflows/exec/run-workflow.js +31 -103
  151. package/dist/workflows/exec/step-work.js +9 -178
  152. package/dist/workflows/exec/unit-dispatch.js +0 -10
  153. package/dist/workflows/freeze/environment.js +3 -44
  154. package/dist/workflows/freeze/freeze.js +8 -41
  155. package/dist/workflows/freeze/targets/child-workflow.js +27 -63
  156. package/dist/workflows/freeze/targets/command.js +2 -16
  157. package/dist/workflows/freeze/targets/shell.js +0 -2
  158. package/dist/workflows/freeze/task-bindings.js +2 -28
  159. package/dist/workflows/ir/params.js +12 -2
  160. package/dist/workflows/parser.js +82 -232
  161. package/dist/workflows/plan.js +1 -1
  162. package/dist/workflows/renderer.js +10 -19
  163. package/dist/workflows/runtime/run-plan.js +11 -53
  164. package/dist/workflows/runtime/runs.js +4 -27
  165. package/dist/workflows/source-files.js +12 -16
  166. package/dist/workflows/source-semantics.js +1 -93
  167. package/docs/README.md +1 -1
  168. package/docs/agents/README.md +3 -3
  169. package/docs/agents/agent-install.md +1 -1
  170. package/docs/architecture/adapters.md +17 -31
  171. package/docs/architecture/architecture.md +4 -5
  172. package/docs/architecture/improvement.md +52 -21
  173. package/docs/architecture/internals/improve-workflow.md +15 -8
  174. package/docs/architecture/internals/indexing.md +1 -1
  175. package/docs/architecture/internals/search.md +1 -2
  176. package/docs/architecture/internals/storage-locations.md +5 -5
  177. package/docs/architecture/persisted-data-compat.md +13 -4
  178. package/docs/architecture/specs/0.9.0-decisions.md +6 -2
  179. package/docs/architecture/specs/improve-collapse-churn-detector-design.md +2 -2
  180. package/docs/architecture/specs/workflow-format-unification.md +1 -6
  181. package/docs/architecture/testing/manual-testing-checklist.md +20 -29
  182. package/docs/architecture/testing/task-workflow-manual-tests.md +106 -203
  183. package/docs/architecture/testing/testing-workflow.md +1 -1
  184. package/docs/architecture/workflow-engine.md +5 -56
  185. package/docs/guides/author-workflows.md +39 -69
  186. package/docs/guides/capture-knowledge.md +1 -1
  187. package/docs/guides/claude-code-vs-akm-workflows.md +1 -2
  188. package/docs/guides/discover-and-load.md +4 -4
  189. package/docs/guides/getting-started.md +1 -1
  190. package/docs/guides/improve-the-library.md +7 -7
  191. package/docs/guides/recipes/headless-install.md +2 -2
  192. package/docs/guides/run-workflows.md +1 -1
  193. package/docs/guides/use-with-any-agent.md +49 -4
  194. package/docs/integration/bundling-akm.md +7 -6
  195. package/docs/maintainers/curate-workmap.md +1 -2
  196. package/docs/maintainers/release-checklist.md +30 -1
  197. package/docs/posts/akm-command-tour.md +3 -3
  198. package/docs/product-surface.md +1 -1
  199. package/docs/reference/README.md +1 -0
  200. package/docs/reference/api.md +65 -0
  201. package/docs/reference/asset-types.md +3 -5
  202. package/docs/reference/bundle-types.md +2 -4
  203. package/docs/reference/cli.md +129 -171
  204. package/docs/reference/configuration.md +84 -19
  205. package/docs/reference/data-and-telemetry.md +1 -1
  206. package/docs/reference/env-and-secrets.md +2 -2
  207. package/docs/reference/supported-formats.md +3 -4
  208. package/docs/reference/tasks.md +12 -19
  209. package/docs/reference/website-sources.md +1 -1
  210. package/docs/reference/workflow-schema.md +89 -317
  211. package/docs/reference/workflows.md +20 -48
  212. package/package.json +12 -2
  213. package/schemas/akm-config.json +2 -243
  214. package/schemas/akm-task.json +2 -3
  215. package/schemas/akm-workflow.json +47 -84
  216. package/dist/assets/improve-strategies/catchup.json +0 -41
  217. package/dist/assets/improve-strategies/proactive-maintenance.json +0 -24
  218. package/dist/assets/improve-strategies/quick.json +0 -17
  219. package/dist/assets/improve-strategies/reflect-distill.json +0 -29
  220. package/dist/assets/improve-strategies/thorough.json +0 -49
  221. package/dist/assets/tasks/improve/akm-improve-catchup.yml +0 -6
  222. package/dist/assets/tasks/improve/akm-improve-frequent.yml +0 -4
  223. package/dist/assets/tasks/improve/akm-improve-nightly.yml +0 -4
  224. package/dist/cli/retired-commands.js +0 -118
  225. package/dist/commands/tasks/validate.js +0 -176
  226. package/dist/core/config/legacy-source-shape-shim.js +0 -117
  227. package/dist/integrations/harnesses/ids.js +0 -28
  228. package/dist/tasks/source/task-source-v3-frozen.js +0 -424
  229. package/dist/tasks/source/task-to-v4.js +0 -863
  230. package/dist/workflows/exec/worktree.js +0 -372
  231. package/dist/workflows/freeze/child-output-references.js +0 -83
  232. package/dist/workflows/freeze/identity.js +0 -22
  233. package/dist/workflows/freeze/targets/script.js +0 -50
  234. package/dist/workflows/freeze/targets/task.js +0 -124
  235. package/dist/workflows/github-yaml.js +0 -506
  236. package/dist/workflows/runtime/run-outputs.js +0 -80
@@ -95,6 +95,23 @@ kebab-case, at most 63 characters, and cannot start with `akm-`.
95
95
  | `llm` | `endpoint`, `model` | OpenAI-compatible chat completions |
96
96
  | `agent` | `platform` | A registered dispatch-capable harness |
97
97
 
98
+ The registered harnesses (generated from the harness registry; do not edit):
99
+
100
+ <!-- harness-table:start (generated by scripts/gen-config-schema.ts) -->
101
+ | `platform` | Harness | Binary | Session logs | Model work | Native `agent` |
102
+ | --- | --- | --- | --- | --- | --- |
103
+ | `opencode` | OpenCode | `opencode` | yes | yes | yes |
104
+ | `claude` | Claude Code | `claude` | yes | yes | yes |
105
+ | `opencode-sdk` | OpenCode SDK | in-process | no | yes | yes |
106
+ | `codex` | OpenAI Codex CLI | `codex` | yes | no | no |
107
+ | `copilot` | GitHub Copilot CLI | `copilot` | no | no | no |
108
+ | `pi` | Pi | `pi` | no | no | no |
109
+ | `gemini` | Gemini CLI | `gemini` | no | no | no |
110
+ | `aider` | Aider | `aider` | no | no | no |
111
+ | `amazonq` | Amazon Q Developer CLI | `q` | no | no | no |
112
+ | `openhands` | OpenHands | `openhands` | no | no | no |
113
+ <!-- harness-table:end -->
114
+
98
115
  LLM endpoints must be complete `http://` or `https://` chat-completions URLs
99
116
  ending in `/chat/completions`, without userinfo, query, or fragment. API keys
100
117
  are symbolic only: `$VAR` or `${VAR}`. AKM resolves them only at dispatch.
@@ -141,6 +158,16 @@ the LLM engine used as that SDK engine's fallback connection. With no
141
158
  provider, model and auth from its own configuration. `defaults.llmEngine` is
142
159
  not a substitute.
143
160
 
161
+ An `opencode` or `opencode-sdk` engine has no setting for the OpenCode major: akm
162
+ detects it. With no `bin`, the engine runs the most recent OpenCode on `PATH`
163
+ (`opencode2`, OpenCode 2's own alias, when present, else `opencode`); with a
164
+ `bin`, it runs that binary. akm runs `<bin> --version` once per binary per
165
+ process and uses the OpenCode 2 or OpenCode 1 adapters to match. OpenCode 1 keeps
166
+ working and logs a warning recommending OpenCode 2. A `--version` akm cannot read
167
+ (or a major it does not know) uses the OpenCode 2 adapters and logs a warning
168
+ with the raw output. To run a particular OpenCode, set the engine's `bin`, e.g.
169
+ `{"kind":"agent","platform":"opencode-sdk","bin":"/opt/opencode1/bin/opencode"}`.
170
+
144
171
  On an engine without `timeoutMs`, model work (an improve process, a quality or
145
172
  triage judge, or an index pass) stops after 600 seconds, whatever the engine's
146
173
  kind; other work on an agent engine runs until it finishes. An improve stage's
@@ -209,7 +236,7 @@ cannot enforce:
209
236
  | LLM | No tools. |
210
237
  | `claude` | Read and Edit inside the working directory, and Bash for `akm search` and `akm show` only. akm runs it with `--restricted`, so your user, project and local settings cannot widen that. |
211
238
  | `opencode`, `opencode-sdk` | Read, grep and glob in the working directory and the stash, edit in the working directory only, and `akm_search` and `akm_show`, through an injected `akm-model-work` agent. No bash, because opencode cannot stop a redirect such as `akm show x > file` from writing elsewhere. |
212
- | `codex`, `copilot`, `pi`, `gemini`, `aider`, `amazonq`, `openhands` | Cannot run model work: akm refuses the request before it starts. |
239
+ | Every other `agent` harness | Cannot run model work: akm refuses the request before it starts. |
213
240
 
214
241
  **The one rule.** Every key model work reads its engine from must name an
215
242
  LLM engine or a `claude`, `opencode` or `opencode-sdk` agent engine. Those
@@ -235,7 +262,9 @@ key, the engine and its platform. Other engine keys, `defaults.engine` and
235
262
  - opencode model work may read the stash and write only its working directory.
236
263
  `akm_search` and `akm_show` come from the akm-opencode plugin (0.9.21 or
237
264
  later), which akm does not load: put it in your opencode config
238
- (`"plugin": ["akm-opencode"]`). akm turns off the plugin's curation, learning
265
+ (`"plugin": ["akm-opencode"]` for OpenCode 1; for OpenCode 2 install
266
+ `akm-opencode-v2` with `opencode plugin add akm-opencode-v2`, see
267
+ [Use AKM With Any Agent](https://github.com/itlackey/akm/blob/main/docs/guides/use-with-any-agent.md#opencode-plugins-one-package-per-opencode-major)). akm turns off the plugin's curation, learning
239
268
  and write gate for these dispatches and keeps its state in akm's state
240
269
  directory. The stash is protected from edits only while the temporary
241
270
  directory is outside a git repository.
@@ -442,11 +471,21 @@ can select `engine`, `model`, `timeoutMs`, and LLM request overrides:
442
471
 
443
472
  An improve process's engine follows
444
473
  [the one rule](#engines-for-unattended-model-work); an explicit invalid or
445
- incompatible engine never falls back to another engine. Built-in strategies
446
- are complete presets. User-defined strategies inherit omitted fields from the
447
- built-in `default` strategy before applying their own overrides. The built-in
448
- strategies other than `default` and `consolidate` are Experimental (see
449
- [STABILITY.md](../../STABILITY.md)): 0.10 measures each and keeps, folds or removes it.
474
+ incompatible engine never falls back to another engine. The built-in strategies
475
+ are `default` and `consolidate`. `consolidate` is a patch that
476
+ is deep-merged onto `default`, and a user-defined strategy of the same name is
477
+ merged on top of that; so every strategy, built-in or user-defined, inherits
478
+ omitted fields from `default`. `quick`, `reflect-distill`, `thorough`,
479
+ `catchup` were removed in 0.10 (#1130): measured, none beat `default` (`thorough`
480
+ and `catchup` added only a judged triage drain, and `catchup` was identical to
481
+ `consolidate`). `proactive-maintenance` was removed too (#1129): its lane now
482
+ lives in `default`. A `improve.strategies.<name>` block with one of those names is
483
+ now an ordinary user-defined strategy that inherits `default`, so it no longer
484
+ carries the old built-in's settings; `--strategy` or `defaults.improveStrategy`
485
+ naming one with no such block fails with an error that names `default`. To keep
486
+ the old judged drain, set `processes.triage` (`enabled`, `applyMode: "promote"`,
487
+ `judgment: true`) in your own strategy. The built-in strategies other than
488
+ `default` and `consolidate` are Experimental (see [STABILITY.md](../../STABILITY.md)).
450
489
 
451
490
  `processes.triage.judgment` explicitly controls the optional judgment tier.
452
491
  Use `true` to enable it, `false` to disable it, or an object with `enabled`,
@@ -457,6 +496,22 @@ the retired `mode` and `profile` keys continue to report their engine migration
457
496
  guidance. When enabled, engine selection is judgment → triage → strategy →
458
497
  `defaults.llmEngine`, and resolution fails closed if none is available.
459
498
 
499
+ The `default` strategy runs triage in `promote` mode with judgment off and
500
+ `maxAcceptsPerRun: 200` (#1143), so the proposal backlog drains through the
501
+ deterministic gates without `experimental.improveAutonomy`. Turning judgment on
502
+ in a promote strategy is what that opt-in gates.
503
+
504
+ Judgment is off in every built-in strategy, and the judgment tier may accept
505
+ only a consolidate promotion. Retirements, exact fixes and reflect revisions it
506
+ would accept are left for a person. This is measured, not cautious by habit
507
+ (#1132, #1094): with `experimental.improveAutonomy` and judgment over every
508
+ proposal kind, the nightly eval solved 0.49 (gpt-5.6-terra) and 0.53
509
+ (qwen3.8-27b) of its items while harming 14 and 11, and changed 18 and 21 notes
510
+ outside the planted set; the judge accepted unsafe retirements and applied exact
511
+ fixes unreviewed. Judging promotions alone was reasonable: on qwen3.8-27b it
512
+ had precision 0.87 and recall 0.78 and accepted 4.8% of bad promotions; on
513
+ gpt-5.6-terra it was very cautious (precision 1.0, recall 0.17).
514
+
460
515
  ```jsonc
461
516
  {
462
517
  "improve": {
@@ -557,10 +612,16 @@ off too. Every entry must be a non-empty string, or the config does not load.
557
612
  ```
558
613
 
559
614
  No shipped strategy turns improve-stage session extraction on.
560
- `proactiveMaintenance` is on only in the `proactive-maintenance` preset; run
561
- `akm improve --strategy proactive-maintenance` to use that opt-in preset.
562
- Because strategies inherit from `default`, a preset that omits either process
563
- also inherits the off value. User strategy overrides
615
+ `proactiveMaintenance` is on in `default` (and in the strategies that inherit
616
+ from it), and off in `quick`, `consolidate`, `catchup` and
617
+ `reflect-distill`. It plans stable assets that have had no feedback: at most
618
+ `maxPerRun` (default 15) per run, only assets not reflected or distilled for
619
+ `dueDays` (default 30), so each comes up at most once a month, and reflect's
620
+ `limit` (25) still bounds the run. A preset that omits either process
621
+ inherits the `default` value; set `processes.proactiveMaintenance.enabled: false` in the
622
+ selected strategy to turn the lane off. A proposal from this lane is never
623
+ accepted by `proposal drain`: it waits for a person (reason
624
+ `proactive-needs-review`, #1147). User strategy overrides
564
625
  are applied last, so an explicit `enabled: true` still opts the selected
565
626
  strategy in.
566
627
 
@@ -789,8 +850,7 @@ explicit destination flag is given and the command isn't already scoped to a
789
850
  specific source. It must name a configured bundle; setting it with no
790
851
  `bundles` configured, or naming an unconfigured bundle, is rejected at
791
852
  `config set` (or config load) time. The full write-target resolution order
792
- is the command's destination flag (`--bundle` on `remember`/`clone`/
793
- `improve`, `--target` on `env`/`secret create`) -> `defaultWriteTarget` ->
853
+ is the command's destination flag (`--bundle`) -> `defaultWriteTarget` ->
794
854
  working bundle (`defaultBundle`) -> `ConfigError`.
795
855
 
796
856
  ### Memory scope
@@ -857,7 +917,8 @@ section, an absent key, and an explicit `false` all read identically as off.
857
917
  ```
858
918
 
859
919
  - **`experimental.improveAutonomy`** — gates only the autonomous
860
- `memoryInference`, `triagePromote`, and `memoryCleanup` lanes. `akm improve`
920
+ `memoryInference`, `triagePromote` (a promote with triage judgment on; a
921
+ deterministic-only promote runs without it), and `memoryCleanup` lanes. `akm improve`
861
922
  itself always runs; this only gates mutations without a human in the loop.
862
923
  Consolidation is not gated: it remains advisory and emits reviewable
863
924
  proposals. `sync.push` is deliberately **not** gated by this key.
@@ -1034,11 +1095,15 @@ network filesystem for the data directory and falls back to `DELETE`.
1034
1095
 
1035
1096
  ## Retired Configuration
1036
1097
 
1037
- `profiles`, `llm`, `agent`, `features`, `stashes`, `defaults.llm`,
1038
- `defaults.agent`, and `defaults.improve` are rejected in 0.9. Recreate the
1039
- configuration using `engines`, `defaults.engine`, `defaults.llmEngine`, and
1040
- `improve.strategies`; AKM deliberately does not infer or rename ambiguous
1041
- profile identities.
1098
+ `profiles`, `llm`, `agent`, `features`, and `stashes` are rejected in 0.9.
1099
+ Recreate the configuration using `engines`, `defaults.engine`,
1100
+ `defaults.llmEngine`, and `improve.strategies`; AKM deliberately does not infer
1101
+ or rename ambiguous profile identities. `defaults.llm`, `defaults.agent`,
1102
+ `defaults.improve`, `index.stalenessDetection`, the engine settings that used to
1103
+ sit under `index.<pass>` (`endpoint`, `provider`, `apiKey`, `baseUrl`,
1104
+ `temperature`, `maxTokens`, `capabilities`) and the `feedbackDistillation`
1105
+ process (use `processes.distill.enabled`) load like any other unknown key: named
1106
+ once by the unknown-key warning, ignored, and dropped by `akm migrate apply`.
1042
1107
 
1043
1108
  `embedding.chunkSize` was never read by anything under `src/` (#954), so a
1044
1109
  config that still sets it is simply ignored — it still loads, unvalidated
@@ -189,7 +189,7 @@ the set of types the code actually emits at HEAD (verified against every
189
189
  | `improve_invoked` | Start of an `akm improve` run | `ref` (scope); `strategy`, `scope`, `dryRun`, `eligibleCount` |
190
190
  | `improve_completed` | `akm improve` run finished | run stats |
191
191
  | `improve_failed` | `akm improve` run errored | error |
192
- | `improve_skipped` | `akm improve` left a ref, a lane, or a group of refs out | `reason` (`no_new_signal`, `not_retrieved`, `distill_no_new_signal`, `budget_exhausted`, `budget_exhausted_batch`, `asset_missing_on_disk`, `strategy_filtered_all_passes`, `autonomy_gated`, `engine_unavailable`, `pool_below_min_size`, `consolidation_no_memory_updates`, `below_min_new_sessions`, `derived_memory_reflect_skipped`, `memory_distill_requires_feedback`, `distill_flagged_wrong`, `distill_positive_without_reason`, `distill_deprecated_or_superseded`); `count`, `remaining`, `strategy`, `lane` or `configKey` where they apply |
192
+ | `improve_skipped` | `akm improve` left a ref, a lane, or a group of refs out | `reason` (`no_new_signal`, `not_retrieved`, `distill_no_new_signal`, `budget_exhausted`, `budget_exhausted_batch`, `asset_missing_on_disk`, `strategy_filtered_all_passes`, `autonomy_gated`, `engine_unavailable`, `consolidation_no_memory_updates`, `below_min_new_sessions`, `derived_memory_reflect_skipped`, `memory_distill_requires_feedback`, `distill_flagged_wrong`, `distill_positive_without_reason`, `distill_deprecated_or_superseded`); `count`, `remaining`, `strategy`, `lane` or `configKey` where they apply |
193
193
  | `improve_lock_recovered` | Stale improve lock cleared at startup | |
194
194
  | `improve_review_needed` | `akm feedback` pushed a high-utility asset's utility below the review threshold — a review-needed escalation is recorded (not a proposal, so it can't accidentally overwrite the asset) | `ref`, `previousUtility`, `nextUtility` |
195
195
  | `reflect_invoked` | Start of reflect phase in `akm improve` | `ref`, engine |
@@ -50,7 +50,7 @@ printf '%s' "$TOKEN" | akm secret set secrets/deploy-token
50
50
  akm secret run secrets/deploy-token GITHUB_TOKEN -- gh release create v1.0.0
51
51
 
52
52
  # Write into a specific source instead of the working bundle:
53
- akm secret set secrets/deploy-token --target team --from-file ./token
53
+ akm secret set secrets/deploy-token --bundle team --from-file ./token
54
54
  ```
55
55
 
56
56
  `env export --out <file>` writes a safe, sourceable `export KEY='value'`
@@ -73,7 +73,7 @@ output and from the search index entirely; the value remains usable via
73
73
 
74
74
  Env/secret **mutations** (`env create`, `env remove`, `secret set`) choose
75
75
  their write destination like every other write command: an explicit
76
- `--target <source>` wins, else `defaultWriteTarget`, else the working
76
+ `--bundle <source>` wins, else `defaultWriteTarget`, else the working
77
77
  bundle. The chosen source must be writable — a non-writable target fails
78
78
  with a `ConfigError` before anything is written — and a git-backed writable
79
79
  target commits the mutation at a single operation boundary. Reads (`list`,
@@ -20,7 +20,7 @@ one explicitly. 0.9.0 recognizes 11 formats.
20
20
  | `claude` | `CLAUDE.md` as `instruction`; `commands/`, `agents/`, `skills/<name>/SKILL.md` as their matching types | Root `CLAUDE.md` plus at least one of `commands/`, `agents/`, `skills/` | Read-only | Point AKM at an existing Claude Code `.claude` tool directory |
21
21
  | `opencode` | Same shape as `claude`, rooted on `AGENTS.md` | `opencode.json`/`opencode.jsonc`, or root `AGENTS.md` plus a canonical plural tool directory | Read-only | Point AKM at an existing OpenCode `.opencode` tool directory |
22
22
  | `dotenv` | `env` entries as key names only (never values); `secret` entries as file names only (never content) | Every top-level directory is `env/` and/or `secrets/`, with at least one present | Writable, narrowly — `akm env create`/`env remove`/`secret set` only | A standalone env/secrets-only bundle |
23
- | `akm-workflow` | Workflow steps, name, description, tags | Either a top-level `.md` file with explicit `type: workflow` frontmatter or a peer top-level GitHub-shaped `.yml` workflow | Writable — `akm workflow create` only | A standalone workflow bundle, one workflow per file |
23
+ | `akm-workflow` | Workflow steps, name, description, tags | A top-level `.md` file with explicit `type: workflow` frontmatter | Writable — `akm workflow create` only | A standalone workflow bundle, one workflow per file |
24
24
  | `akm-task` | Task source v4 (`version: 4`) `.yml` sources as type `task`, including local schedules/manual triggers and the exact authored YAML | A top-level `.yml` file accepted by the task source v4 parser (`version: 4`, one `uses`/`run` executable selector, optional top-level `schedule:`) | Read-only | A standalone scheduled-task bundle; `.yaml` is rejected |
25
25
  | `llm-wiki` | `raw/` sources as `wiki-source`; `pages/` as their `pageKind` (default `note`), with resolved cross-reference links | Root `schema.md` plus a `pages/` directory | Read-only (author by writing directly into `pages/`; AKM indexes and serves the result) | [Karpathy's LLM-wiki pattern](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) — agent-authored reference wikis |
26
26
  | `akm` (native) | AKM's own 14 native asset types — see [Asset Types](https://github.com/itlackey/akm/blob/main/docs/reference/asset-types.md) | A `.stash` marker directory, or two-plus native subdirectories, or the fallback when nothing else matches | Fully writable — every AKM-native write command | Your working bundle, and any bundle authored as AKM's own format |
@@ -50,9 +50,8 @@ indexed, scheduled, or executed. See [Tasks](tasks.md).
50
50
 
51
51
  ## Workflow formats
52
52
 
53
- Workflow sources are the one intentional peer-format case inside the native
54
- AKM workspace: workflows may be `.md` or `.yml`, and both compile to the same
55
- source IR. Task sources remain `.yml` only, authored as task source v4. See
53
+ Workflow sources are `.md` and compile to source IR. Task sources are `.yml`
54
+ only, authored as task source v4. See
56
55
  [Tasks](tasks.md) and [Workflow Schema](workflow-schema.md).
57
56
 
58
57
  ## Why this matters
@@ -251,10 +251,9 @@ redact: [TOKEN]
251
251
  consumer — a native run's status comes from its exit code alone — so
252
252
  declaring `output:` on them fails parsing with `TASK_SOURCE_INVALID`
253
253
  instead of silently recording a contract nothing enforces.
254
- - A task source v4 document **can** be the target of a workflow step's
255
- `uses: tasks/<ref>` — see the
256
- [GitHub-shaped YAML subset](workflow-schema.md#github-shaped-yaml-subset)
257
- for how a workflow step's `with:` binds a v4 task's declared `inputs:`.
254
+ - A workflow step cannot target a task: the GitHub-shaped YAML workflow format
255
+ that carried `uses: tasks/<ref>` was removed in 0.10. A task runs a workflow
256
+ (`uses: workflows/<ref>`), not the other way round.
258
257
 
259
258
  ### Input flags
260
259
 
@@ -280,10 +279,8 @@ workflow step's own composition uses); for every other target — `run:`
280
279
  shell, `scripts/<ref>`, `commands/<ref>` — the values are validated and then
281
280
  **discarded**. `akm task run`'s own flags never populate an
282
281
  `AKM_TASK_INPUTS` environment variable or a `## Task inputs` prompt block.
283
- Those two surfaces are a *different* delivery path: they exist only when a
284
- **workflow step** composes this task through `uses: tasks/<ref>` and a
285
- `with:` binding, resolved fresh for that step's own dispatch — see
286
- [`with:` on a task-composed step](workflow-schema.md#github-shaped-yaml-subset).
282
+ Those two surfaces existed only for a workflow step composing a task through
283
+ `uses: tasks/<ref>`, which was removed in 0.10.
287
284
  A scheduled run (`schedule[].inputs`, above) reaches the target through this
288
285
  same `akm task run` path, so it inherits the identical rule: delivered as
289
286
  params for a `workflows/<ref>` target, otherwise validated and discarded.
@@ -401,21 +398,17 @@ for full before/after examples and recovery guidance.
401
398
 
402
399
  ## Operations
403
400
 
404
- - `akm search --type task` (or its alias `akm task list`) and
401
+ - `akm search --type task` and
405
402
  `akm show tasks/<id>` inspect task assets.
406
403
  - `akm task explain <ref>` prints a task's declared inputs, resolved target,
407
404
  effective execution settings, and schedule bindings without running
408
405
  anything — see [`akm task explain`](#akm-task-explain) above.
409
- - `akm task validate <path>` parses one task file by filesystem path (the
410
- file need not live in a configured bundle) and reports the same
411
- `valid`/`blocked`/`invalid`/`not-a-task` diagnostic
412
- `akm task sync` would produce for it — including sync's own cron-dialect
413
- check and its per-schedule-entry input-contract check — without touching
414
- the scheduler and without requiring a configured engine, even for a
415
- command-kind task. The envelope's own `sourceVersion` field names the
416
- file's declared schema version. A version 2/3 file, and a `version: 4`
417
- file still carrying a retired `schedule[].enabled`, report `blocked`
418
- (exit 1) naming `akm migrate apply`, which converts them.
406
+ - `akm lint --type tasks` reports what `akm task sync` would refuse for a task
407
+ file: a document that does not parse as task source v4, a version 2/3 file or
408
+ a `version: 4` file still carrying a retired `schedule[].enabled` (the finding
409
+ names `akm migrate apply`, which converts them), a cron the local scheduler
410
+ backend cannot parse, and a schedule entry whose `inputs` leave a required
411
+ input unsatisfied. It is read-only and needs no configured engine.
419
412
  - `akm task add` validates a task source v4 document, writes it, adds its ref
420
413
  to local scheduler activation, and syncs its bundle. `--params` renders
421
414
  typed `inputs:` declarations instead of a `with:` bag; `--schedule` is
@@ -51,7 +51,7 @@ Drop fetcher modules into:
51
51
  ```
52
52
 
53
53
  `<stashDir>` is the active bundle for the current operation. When a command has a
54
- resolved write target (for example `akm import --target ...`), akm loads
54
+ resolved write target (for example `akm import --bundle ...`), akm loads
55
55
  fetchers from that target bundle before falling back to the built-in website
56
56
  scraper.
57
57