akm-cli 0.9.0-rc.0 → 0.9.0-rc.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 (598) hide show
  1. package/CHANGELOG.md +1283 -22
  2. package/README.md +62 -37
  3. package/SECURITY.md +46 -31
  4. package/dist/akm +162 -38
  5. package/dist/akm-migrate +44 -0
  6. package/dist/assets/backends/schtasks-template.xml +2 -1
  7. package/dist/assets/hints/cli-hints-full.md +268 -118
  8. package/dist/assets/hints/cli-hints-short.md +87 -24
  9. package/dist/assets/{profiles → improve-strategies}/catchup.json +3 -1
  10. package/dist/assets/{profiles → improve-strategies}/consolidate.json +3 -1
  11. package/dist/assets/{profiles → improve-strategies}/default.json +6 -7
  12. package/dist/assets/improve-strategies/frequent.json +15 -0
  13. package/dist/assets/{profiles → improve-strategies}/graph-refresh.json +4 -2
  14. package/dist/assets/{profiles → improve-strategies}/memory-focus.json +4 -1
  15. package/dist/assets/{profiles → improve-strategies}/proactive-maintenance.json +5 -5
  16. package/dist/assets/{profiles → improve-strategies}/quick.json +4 -2
  17. package/dist/assets/improve-strategies/reflect-distill.json +30 -0
  18. package/dist/assets/{profiles → improve-strategies}/thorough.json +1 -1
  19. package/dist/assets/prompts/consolidate-system.md +5 -5
  20. package/dist/assets/prompts/extract-session.md +2 -6
  21. package/dist/assets/prompts/memory-infer-user.md +2 -3
  22. package/dist/assets/prompts/reflect-llm-framed-contract.md +11 -0
  23. package/dist/assets/prompts/reflect-llm-schema-contract.md +3 -0
  24. package/dist/assets/prompts/reflect-output-repair.md +3 -0
  25. package/dist/assets/prompts/workflow-unit-preamble.md +26 -0
  26. package/dist/assets/stash-skeleton/README.md +38 -10
  27. package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +8 -0
  28. package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +8 -0
  29. package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +14 -1
  30. package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +13 -1
  31. package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +9 -1
  32. package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +11 -0
  33. package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +9 -0
  34. package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +9 -0
  35. package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +8 -0
  36. package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +100 -0
  37. package/dist/assets/stash-skeleton/facts/conventions/domains.md +64 -0
  38. package/dist/assets/stash-skeleton/facts/conventions/organization.md +136 -0
  39. package/dist/assets/tasks/core/extract.yml +3 -2
  40. package/dist/assets/tasks/core/improve.yml +2 -1
  41. package/dist/assets/tasks/core/index-refresh.yml +1 -0
  42. package/dist/assets/tasks/core/sync.yml +1 -0
  43. package/dist/assets/tasks/core/version-check.yml +2 -1
  44. package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +5 -0
  45. package/dist/assets/tasks/improve/akm-improve-catchup.yml +8 -0
  46. package/dist/assets/tasks/improve/akm-improve-consolidate.yml +5 -0
  47. package/dist/assets/tasks/improve/akm-improve-frequent.yml +5 -0
  48. package/dist/assets/tasks/improve/akm-improve-nightly.yml +5 -0
  49. package/dist/assets/templates/html/health.html +5 -4
  50. package/dist/assets/workflows/workflow-template.md +31 -15
  51. package/dist/cli/invocation.js +279 -0
  52. package/dist/cli/parse-args.js +5 -90
  53. package/dist/cli/retired-commands.js +78 -0
  54. package/dist/cli/shared.js +158 -48
  55. package/dist/cli-node.mjs +2 -1
  56. package/dist/cli.js +747 -293
  57. package/dist/commands/agent/agent-dispatch.js +19 -18
  58. package/dist/commands/agent/agent-support.js +0 -24
  59. package/dist/commands/agent/contribute-cli.js +43 -97
  60. package/dist/commands/completions.js +80 -23
  61. package/dist/commands/config-cli.js +44 -281
  62. package/dist/commands/env/env-binding.js +99 -0
  63. package/dist/commands/env/env-cli.js +84 -224
  64. package/dist/commands/env/env.js +12 -163
  65. package/dist/commands/env/marker-path.js +6 -0
  66. package/dist/commands/env/secret-cli.js +45 -61
  67. package/dist/commands/env/secret.js +32 -62
  68. package/dist/commands/feedback-cli.js +179 -85
  69. package/dist/commands/health/accept-rate.js +58 -0
  70. package/dist/commands/health/advisories.js +7 -8
  71. package/dist/commands/health/checks.js +279 -94
  72. package/dist/commands/health/html-report.js +197 -578
  73. package/dist/commands/health/improve-metrics.js +277 -246
  74. package/dist/commands/health/llm-usage.js +19 -19
  75. package/dist/commands/health/md-report.js +16 -7
  76. package/dist/commands/health/metrics.js +67 -32
  77. package/dist/commands/health/renderers.js +47 -0
  78. package/dist/commands/health/report-view-model.js +508 -0
  79. package/dist/commands/health/stash-exposure.js +1 -1
  80. package/dist/commands/health/surfaces.js +16 -56
  81. package/dist/commands/health/task-runs.js +3 -67
  82. package/dist/{migrate-storage-node.mjs → commands/health/types-checks.js} +1 -5
  83. package/dist/commands/health/types-improve.js +29 -0
  84. package/dist/{output/text/save.js → commands/health/types-metrics.js} +1 -2
  85. package/dist/commands/health/types-result.js +7 -0
  86. package/dist/commands/health/types-runs.js +4 -0
  87. package/dist/commands/health/types-session-log.js +4 -0
  88. package/dist/commands/health/types-windows.js +4 -0
  89. package/dist/commands/health/types.js +26 -21
  90. package/dist/commands/health/windows.js +2 -3
  91. package/dist/commands/health.js +296 -167
  92. package/dist/commands/improve/anti-collapse.js +5 -5
  93. package/dist/commands/improve/autonomy-gate.js +68 -0
  94. package/dist/commands/improve/collapse-detector.js +65 -52
  95. package/dist/commands/improve/consolidate/chunking.js +9 -7
  96. package/dist/commands/improve/consolidate/eligibility.js +1 -23
  97. package/dist/commands/improve/consolidate/merge.js +4 -0
  98. package/dist/commands/improve/consolidate.js +454 -1354
  99. package/dist/commands/improve/content-hash.js +39 -0
  100. package/dist/commands/improve/distill/content-repair.js +4 -10
  101. package/dist/commands/improve/distill/promote-memory.js +89 -64
  102. package/dist/commands/improve/distill/quality-gate.js +118 -42
  103. package/dist/commands/improve/distill-guards.js +1 -1
  104. package/dist/commands/improve/distill-promotion-policy.js +33 -888
  105. package/dist/commands/improve/distill.js +607 -363
  106. package/dist/commands/improve/eligibility.js +165 -79
  107. package/dist/commands/improve/extract-cli.js +35 -126
  108. package/dist/commands/improve/extract-prompt.js +6 -35
  109. package/dist/commands/improve/extract.js +640 -391
  110. package/dist/commands/improve/feedback-valence.js +2 -12
  111. package/dist/commands/improve/improve-cli.js +134 -135
  112. package/dist/commands/improve/improve-result-file.js +30 -50
  113. package/dist/commands/improve/improve-run-types.js +4 -0
  114. package/dist/commands/improve/improve-strategies.js +135 -0
  115. package/dist/commands/improve/improve.js +904 -701
  116. package/dist/commands/improve/locks.js +64 -111
  117. package/dist/commands/improve/loop-stages.js +1110 -923
  118. package/dist/commands/improve/memory/derived-ref.js +124 -0
  119. package/dist/commands/improve/memory/memory-belief.js +79 -7
  120. package/dist/commands/improve/memory/memory-contradiction-detect.js +49 -52
  121. package/dist/commands/improve/memory/memory-improve.js +25 -37
  122. package/dist/commands/improve/outcome-loop.js +25 -88
  123. package/dist/commands/improve/preparation.js +1034 -813
  124. package/dist/commands/improve/proactive-maintenance.js +34 -9
  125. package/dist/commands/improve/proposal-envelope.js +31 -0
  126. package/dist/commands/improve/reflect.js +983 -794
  127. package/dist/commands/improve/run-context.js +119 -0
  128. package/dist/commands/improve/salience.js +24 -127
  129. package/dist/commands/improve/session-asset.js +7 -3
  130. package/dist/commands/improve/shared.js +14 -34
  131. package/dist/commands/improve/source-identity.js +28 -0
  132. package/dist/commands/improve/triage.js +20 -17
  133. package/dist/commands/lint/base-linter.js +340 -313
  134. package/dist/commands/lint/env-key-rules.js +31 -47
  135. package/dist/commands/lint/index.js +185 -30
  136. package/dist/commands/{events.js → log.js} +28 -38
  137. package/dist/commands/migrate-cli.js +54 -0
  138. package/dist/commands/migration-tool.js +55 -0
  139. package/dist/commands/observability-cli.js +70 -208
  140. package/dist/commands/proposal/diff-format.js +50 -0
  141. package/dist/commands/proposal/drain-policies.js +0 -6
  142. package/dist/commands/proposal/drain.js +91 -40
  143. package/dist/commands/proposal/proposal-cli.js +134 -132
  144. package/dist/commands/proposal/proposal-types.js +56 -0
  145. package/dist/commands/proposal/proposal.js +83 -65
  146. package/dist/commands/proposal/propose-cli.js +88 -0
  147. package/dist/commands/proposal/propose.js +105 -88
  148. package/dist/commands/proposal/repository.js +1303 -278
  149. package/dist/commands/proposal/validators/proposal-quality-validators.js +16 -6
  150. package/dist/commands/proposal/validators/proposal-validators.js +61 -12
  151. package/dist/commands/proposal/validators/proposals.js +6 -8
  152. package/dist/commands/read/curate.js +78 -73
  153. package/dist/commands/read/knowledge.js +510 -13
  154. package/dist/commands/read/registry-search.js +2 -2
  155. package/dist/commands/read/remember-cli.js +84 -15
  156. package/dist/commands/read/search-cli.js +203 -96
  157. package/dist/commands/read/search.js +126 -94
  158. package/dist/commands/read/show.js +226 -250
  159. package/dist/commands/registry-cli.js +34 -60
  160. package/dist/commands/remember.js +18 -57
  161. package/dist/commands/sources/add-cli.js +104 -49
  162. package/dist/commands/sources/bundle-cli.js +166 -0
  163. package/dist/commands/sources/bundle-config-ops.js +63 -0
  164. package/dist/commands/sources/info.js +27 -15
  165. package/dist/commands/sources/init.js +30 -40
  166. package/dist/commands/sources/installed-stashes.js +469 -172
  167. package/dist/commands/sources/migration-help.js +7 -4
  168. package/dist/commands/sources/schema-repair.js +10 -9
  169. package/dist/commands/sources/self-update.js +182 -121
  170. package/dist/commands/sources/source-add.js +169 -178
  171. package/dist/commands/sources/source-clone.js +144 -41
  172. package/dist/commands/sources/source-manage.js +94 -59
  173. package/dist/commands/sources/sources-cli.js +64 -205
  174. package/dist/commands/sources/stash-cli.js +91 -54
  175. package/dist/commands/sources/stash-skeleton.js +1 -1
  176. package/dist/commands/tasks/tasks-cli.js +106 -104
  177. package/dist/commands/tasks/tasks.js +445 -262
  178. package/dist/commands/workflow-cli.js +232 -121
  179. package/dist/core/action-contributors.js +1 -1
  180. package/dist/core/activation-policy.js +49 -0
  181. package/dist/core/adapter/adapters/agent-skills-adapter.js +181 -0
  182. package/dist/core/adapter/adapters/akm-adapter.js +528 -0
  183. package/dist/core/adapter/adapters/akm-lint.js +392 -0
  184. package/dist/core/adapter/adapters/akm-metadata.js +387 -0
  185. package/dist/core/adapter/adapters/akm-task-adapter.js +149 -0
  186. package/dist/core/adapter/adapters/akm-workflow-adapter.js +180 -0
  187. package/dist/core/adapter/adapters/claude-adapter.js +61 -0
  188. package/dist/core/adapter/adapters/dotenv-adapter.js +187 -0
  189. package/dist/core/adapter/adapters/generic-files-adapter.js +119 -0
  190. package/dist/core/adapter/adapters/index.js +80 -0
  191. package/dist/core/adapter/adapters/llm-wiki-adapter.js +419 -0
  192. package/dist/core/adapter/adapters/okf-adapter.js +391 -0
  193. package/dist/core/adapter/adapters/opencode-adapter.js +68 -0
  194. package/dist/core/adapter/adapters/shared.js +286 -0
  195. package/dist/core/adapter/adapters/tool-dir-shared.js +217 -0
  196. package/dist/core/adapter/adapters/website-snapshot-adapter.js +155 -0
  197. package/dist/core/adapter/bundle-adapter.js +4 -0
  198. package/dist/core/adapter/detect-adapter.js +17 -0
  199. package/dist/core/adapter/recognize-match.js +44 -0
  200. package/dist/core/adapter/registry.js +56 -0
  201. package/dist/core/adapter/types.js +4 -0
  202. package/dist/core/asset/akm-markdown.js +30 -0
  203. package/dist/core/asset/asset-placement.js +243 -0
  204. package/dist/core/asset/asset-ref.js +110 -79
  205. package/dist/core/asset/asset-serialize.js +20 -0
  206. package/dist/core/asset/frontmatter.js +28 -12
  207. package/dist/core/asset/markdown.js +40 -51
  208. package/dist/core/asset/resolve-ref.js +274 -0
  209. package/dist/core/asset/stash-meta.js +2 -2
  210. package/dist/core/bundle-id.js +51 -0
  211. package/dist/core/common.js +281 -86
  212. package/dist/core/config/config-io.js +42 -128
  213. package/dist/core/config/config-schema.js +233 -834
  214. package/dist/core/config/config-sources.js +162 -39
  215. package/dist/core/config/config-types.js +16 -11
  216. package/dist/core/config/config-version.js +29 -0
  217. package/dist/core/config/config-walker.js +126 -37
  218. package/dist/core/config/config.js +154 -331
  219. package/dist/core/config/deep-merge.js +41 -0
  220. package/dist/core/config/engine-semantics.js +28 -0
  221. package/dist/core/config/experimental.js +21 -0
  222. package/dist/core/config/schema/embedding.js +38 -0
  223. package/dist/core/config/schema/engines.js +116 -0
  224. package/dist/core/config/schema/experimental.js +47 -0
  225. package/dist/core/config/schema/feedback.js +31 -0
  226. package/dist/core/config/schema/improve-processes.js +389 -0
  227. package/dist/core/config/schema/improve.js +94 -0
  228. package/dist/core/config/schema/index-config.js +176 -0
  229. package/dist/core/config/schema/output.js +18 -0
  230. package/dist/core/config/schema/primitives.js +94 -0
  231. package/dist/core/config/schema/search.js +30 -0
  232. package/dist/core/config/schema/setup.js +18 -0
  233. package/dist/core/config/schema/sources-bundles.js +169 -0
  234. package/dist/core/config/schema/workflow.js +29 -0
  235. package/dist/core/env-secret-ref.js +155 -20
  236. package/dist/core/errors.js +17 -15
  237. package/dist/core/events-types.js +4 -0
  238. package/dist/core/events.js +46 -128
  239. package/dist/core/extra-params.js +62 -0
  240. package/dist/core/file-change.js +17 -0
  241. package/dist/core/file-lock.js +202 -57
  242. package/dist/core/fs-txn.js +392 -0
  243. package/dist/core/git-message.js +59 -0
  244. package/dist/core/improve-result.js +167 -0
  245. package/dist/core/json-schema.js +142 -0
  246. package/dist/core/lesson-lint.js +1 -17
  247. package/dist/core/logs-db.js +1 -1
  248. package/dist/core/maintenance-barrier.js +135 -0
  249. package/dist/core/migration-operation.js +44 -0
  250. package/dist/core/mutation-target.js +78 -0
  251. package/dist/core/paths.js +22 -25
  252. package/dist/core/platform.js +10 -0
  253. package/dist/core/recognition-util.js +128 -0
  254. package/dist/core/redaction.js +392 -0
  255. package/dist/core/standards/resolve-standards-context.js +36 -65
  256. package/dist/core/standards/resolve-stash-standards.js +2 -2
  257. package/dist/core/standards/resolve-type-conventions.js +5 -5
  258. package/dist/core/state/migrations.js +242 -11
  259. package/dist/core/state-db.js +98 -10
  260. package/dist/core/structured.js +1 -1
  261. package/dist/core/subprocess.js +303 -0
  262. package/dist/core/text-truncation.js +9 -5
  263. package/dist/core/time.js +20 -0
  264. package/dist/core/type-presentation.js +130 -0
  265. package/dist/core/warn.js +0 -3
  266. package/dist/core/write-source.js +834 -118
  267. package/dist/indexer/bundle-identity-guard.js +92 -0
  268. package/dist/indexer/db/graph-db.js +1 -25
  269. package/dist/indexer/db/llm-cache.js +1 -1
  270. package/dist/indexer/ensure-index.js +30 -9
  271. package/dist/indexer/graph/graph-boost.js +9 -30
  272. package/dist/indexer/graph/graph-extraction.js +41 -27
  273. package/dist/indexer/graph/graph-types.js +4 -0
  274. package/dist/indexer/index-writer-lock.js +93 -49
  275. package/dist/indexer/index-written-assets.js +100 -53
  276. package/dist/indexer/indexer.js +746 -329
  277. package/dist/indexer/init.js +18 -25
  278. package/dist/indexer/installations.js +142 -0
  279. package/dist/indexer/passes/dir-staleness.js +18 -10
  280. package/dist/indexer/passes/memory-inference.js +25 -15
  281. package/dist/indexer/passes/metadata.js +412 -243
  282. package/dist/indexer/scan/doc-to-entry.js +160 -0
  283. package/dist/indexer/scan/drain-dir.js +134 -0
  284. package/dist/indexer/search/db-search.js +292 -108
  285. package/dist/indexer/search/fts-query.js +64 -0
  286. package/dist/indexer/search/ranking-contributors.js +145 -25
  287. package/dist/indexer/search/ranking-types.js +4 -0
  288. package/dist/indexer/search/ranking.js +28 -71
  289. package/dist/indexer/search/search-attribution.js +67 -0
  290. package/dist/indexer/search/search-fields.js +18 -3
  291. package/dist/indexer/search/search-hit-enrichers.js +30 -40
  292. package/dist/indexer/search/search-source.js +157 -111
  293. package/dist/indexer/search/semantic-status.js +4 -1
  294. package/dist/indexer/usage/usage-events.js +10 -30
  295. package/dist/indexer/walk/file-context.js +3 -45
  296. package/dist/indexer/walk/matchers.js +42 -34
  297. package/dist/indexer/walk/path-resolver.js +11 -5
  298. package/dist/indexer/walk/walker.js +42 -14
  299. package/dist/integrations/agent/builder-shared.js +7 -0
  300. package/dist/integrations/agent/builders.js +5 -56
  301. package/dist/integrations/agent/config.js +3 -143
  302. package/dist/integrations/agent/detect.js +17 -2
  303. package/dist/integrations/agent/engine-resolution.js +231 -0
  304. package/dist/integrations/agent/index.js +1 -2
  305. package/dist/integrations/agent/model-aliases.js +16 -2
  306. package/dist/integrations/agent/profiles.js +36 -62
  307. package/dist/integrations/agent/prompts.js +46 -18
  308. package/dist/integrations/agent/runner-dispatch.js +93 -4
  309. package/dist/integrations/agent/runner.js +76 -208
  310. package/dist/integrations/agent/spawn.js +88 -196
  311. package/dist/integrations/harnesses/aider/agent-builder.js +114 -0
  312. package/dist/integrations/harnesses/aider/index.js +48 -0
  313. package/dist/integrations/harnesses/aider/result-extractor.js +53 -0
  314. package/dist/integrations/harnesses/amazonq/agent-builder.js +147 -0
  315. package/dist/integrations/harnesses/amazonq/index.js +45 -0
  316. package/dist/integrations/harnesses/amazonq/result-extractor.js +48 -0
  317. package/dist/integrations/harnesses/claude/agent-builder.js +46 -8
  318. package/dist/integrations/harnesses/claude/config-import.js +1 -3
  319. package/dist/integrations/harnesses/claude/index.js +24 -35
  320. package/dist/integrations/harnesses/claude/result-extractor.js +52 -0
  321. package/dist/integrations/harnesses/claude/session-log.js +27 -75
  322. package/dist/integrations/harnesses/codex/agent-builder.js +138 -0
  323. package/dist/integrations/harnesses/codex/index.js +52 -0
  324. package/dist/integrations/harnesses/codex/result-extractor.js +73 -0
  325. package/dist/integrations/harnesses/copilot/agent-builder.js +122 -0
  326. package/dist/integrations/harnesses/copilot/index.js +48 -0
  327. package/dist/integrations/harnesses/copilot/result-extractor.js +151 -0
  328. package/dist/integrations/harnesses/gemini/agent-builder.js +120 -0
  329. package/dist/integrations/harnesses/gemini/index.js +48 -0
  330. package/dist/integrations/harnesses/gemini/result-extractor.js +121 -0
  331. package/dist/integrations/harnesses/ids.js +24 -0
  332. package/dist/integrations/harnesses/index.js +54 -34
  333. package/dist/integrations/harnesses/opencode/agent-builder.js +23 -5
  334. package/dist/integrations/harnesses/opencode/config-import.js +1 -3
  335. package/dist/integrations/harnesses/opencode/index.js +14 -32
  336. package/dist/integrations/harnesses/opencode/session-log.js +67 -125
  337. package/dist/integrations/harnesses/opencode-sdk/harness.js +51 -0
  338. package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +681 -108
  339. package/dist/integrations/harnesses/openhands/agent-builder.js +128 -0
  340. package/dist/integrations/harnesses/openhands/index.js +48 -0
  341. package/dist/integrations/harnesses/openhands/result-extractor.js +103 -0
  342. package/dist/integrations/harnesses/pi/agent-builder.js +97 -0
  343. package/dist/integrations/harnesses/pi/index.js +45 -0
  344. package/dist/integrations/harnesses/pi/result-extractor.js +135 -0
  345. package/dist/integrations/harnesses/shared.js +17 -0
  346. package/dist/integrations/harnesses/types.js +43 -32
  347. package/dist/integrations/lockfile.js +211 -24
  348. package/dist/integrations/session-logs/index.js +36 -39
  349. package/dist/integrations/session-logs/provider-base.js +113 -0
  350. package/dist/llm/client.js +182 -110
  351. package/dist/llm/embedders/deterministic.js +2 -2
  352. package/dist/llm/embedders/remote.js +21 -9
  353. package/dist/llm/feature-gate.js +17 -57
  354. package/dist/llm/graph-extract.js +12 -13
  355. package/dist/llm/index-passes.js +8 -42
  356. package/dist/llm/memory-infer.js +144 -1
  357. package/dist/llm/metadata-enhance.js +45 -30
  358. package/dist/llm/structured-call.js +16 -8
  359. package/dist/llm/usage-persist.js +30 -5
  360. package/dist/llm/usage-telemetry.js +59 -6
  361. package/dist/output/cli-hints.js +1 -2
  362. package/dist/output/command-registry.js +27 -0
  363. package/dist/output/context.js +22 -7
  364. package/dist/output/format-exempt.js +80 -0
  365. package/dist/output/generic-render.js +251 -0
  366. package/dist/output/html-render.js +11 -16
  367. package/dist/output/render-registry.js +57 -0
  368. package/dist/output/renderers.js +14 -279
  369. package/dist/output/shapes/curate.js +10 -1
  370. package/dist/output/shapes/events.js +12 -7
  371. package/dist/output/shapes/helpers.js +58 -84
  372. package/dist/output/shapes/passthrough.js +11 -39
  373. package/dist/output/shapes/proposal/producer.js +15 -7
  374. package/dist/output/shapes/registry.js +12 -6
  375. package/dist/output/shapes.js +0 -9
  376. package/dist/output/text/{init.js → bundle-create.js} +3 -1
  377. package/dist/output/text/bundle-show.js +7 -0
  378. package/dist/output/text/command-format.js +562 -0
  379. package/dist/output/text/env.js +1 -3
  380. package/dist/output/text/events.js +8 -7
  381. package/dist/output/text/helpers.js +15 -1164
  382. package/dist/output/text/proposal/producer.js +4 -2
  383. package/dist/output/text/proposal-format.js +202 -0
  384. package/dist/output/text/registry-commands.js +1 -2
  385. package/dist/output/text/registry.js +12 -6
  386. package/dist/output/text/show-directives.js +117 -0
  387. package/dist/output/text/show-format.js +103 -0
  388. package/dist/output/text/sync.js +5 -0
  389. package/dist/output/text/workflow-format.js +332 -0
  390. package/dist/output/text/workflow.js +3 -2
  391. package/dist/output/text.js +10 -19
  392. package/dist/registry/factory.js +4 -6
  393. package/dist/registry/origin-resolve.js +16 -27
  394. package/dist/registry/providers/skills-sh.js +3 -3
  395. package/dist/registry/providers/static-index.js +15 -25
  396. package/dist/registry/resolve.js +43 -94
  397. package/dist/registry/semver.js +43 -0
  398. package/dist/runtime.js +81 -12
  399. package/dist/scripts/akm-migrate.js +35529 -0
  400. package/dist/setup/detect.js +5 -7
  401. package/dist/setup/detected-engines.js +136 -0
  402. package/dist/setup/engine-config.js +100 -0
  403. package/dist/setup/registry-stash-loader.js +3 -3
  404. package/dist/setup/semantic-assets.js +12 -9
  405. package/dist/setup/setup.js +444 -208
  406. package/dist/setup/steps/connection-shared.js +120 -0
  407. package/dist/setup/steps/connection.js +108 -305
  408. package/dist/setup/steps/platforms.js +13 -12
  409. package/dist/setup/steps/semantic.js +15 -3
  410. package/dist/setup/steps/sources.js +21 -15
  411. package/dist/setup/steps/stashdir.js +6 -4
  412. package/dist/setup/steps/tasks.js +236 -119
  413. package/dist/setup/steps.js +3 -2
  414. package/dist/sources/freshness.js +39 -0
  415. package/dist/sources/provider-factory.js +11 -17
  416. package/dist/sources/providers/filesystem.js +2 -3
  417. package/dist/sources/providers/git-install.js +278 -34
  418. package/dist/sources/providers/git-provider.js +54 -56
  419. package/dist/sources/providers/git-stash.js +420 -91
  420. package/dist/sources/providers/git.js +2 -2
  421. package/dist/sources/providers/npm.js +16 -19
  422. package/dist/sources/providers/provider-utils.js +47 -22
  423. package/dist/sources/providers/sync-from-ref.js +3 -9
  424. package/dist/sources/providers/website.js +2 -2
  425. package/dist/sources/resolve.js +11 -10
  426. package/dist/sources/snapshot-fetchers/types.js +4 -0
  427. package/dist/sources/{website-ingest.js → snapshot-fetchers/website-ingest.js} +110 -41
  428. package/dist/storage/database.js +60 -4
  429. package/dist/storage/engines/sqlite-migrations.js +156 -5
  430. package/dist/storage/locations.js +1 -2
  431. package/dist/storage/repositories/canaries-repository.js +1 -1
  432. package/dist/storage/repositories/events-repository.js +51 -11
  433. package/dist/storage/repositories/improve-runs-repository.js +6 -32
  434. package/dist/storage/repositories/index-connection.js +79 -0
  435. package/dist/storage/repositories/index-db.js +4 -3
  436. package/dist/storage/repositories/index-entries-repository.js +863 -0
  437. package/dist/{indexer/db/entry-mapper.js → storage/repositories/index-entry-mapper.js} +19 -2
  438. package/dist/storage/repositories/index-entry-types.js +4 -0
  439. package/dist/storage/repositories/index-fts-repository.js +167 -0
  440. package/dist/storage/repositories/index-llm-cache-repository.js +108 -0
  441. package/dist/storage/repositories/index-meta-repository.js +49 -0
  442. package/dist/{indexer/db/schema.js → storage/repositories/index-schema.js} +226 -100
  443. package/dist/storage/repositories/index-sql.js +12 -0
  444. package/dist/storage/repositories/index-utility-repository.js +356 -0
  445. package/dist/storage/repositories/index-vec-repository.js +250 -0
  446. package/dist/storage/repositories/outcome-repository.js +119 -0
  447. package/dist/storage/repositories/proposals-repository.js +317 -75
  448. package/dist/storage/repositories/registry-cache.js +1 -1
  449. package/dist/storage/repositories/salience-repository.js +172 -0
  450. package/dist/storage/repositories/task-history-repository.js +110 -3
  451. package/dist/storage/repositories/workflow-runs-repository.js +240 -19
  452. package/dist/tasks/backends/cron.js +169 -46
  453. package/dist/tasks/backends/exec-utils.js +76 -3
  454. package/dist/tasks/backends/index.js +6 -9
  455. package/dist/tasks/backends/launchd.js +292 -55
  456. package/dist/tasks/backends/schtasks.js +557 -70
  457. package/dist/tasks/backends/types.js +4 -0
  458. package/dist/tasks/command-executable.js +93 -0
  459. package/dist/tasks/embedded.js +56 -38
  460. package/dist/tasks/parser.js +156 -64
  461. package/dist/tasks/resolve-akm-bin.js +144 -51
  462. package/dist/tasks/runner.js +377 -209
  463. package/dist/tasks/schedule.js +108 -19
  464. package/dist/tasks/scheduler-invocation.js +296 -0
  465. package/dist/tasks/schema.js +1 -1
  466. package/dist/tasks/task-id.js +35 -0
  467. package/dist/tasks/validator.js +30 -16
  468. package/dist/text-import-hook.mjs +1 -1
  469. package/dist/workflows/authoring/authoring.js +104 -43
  470. package/dist/workflows/authoring/scope-key.js +1 -1
  471. package/dist/workflows/cli.js +0 -16
  472. package/dist/workflows/concurrency-policy.js +15 -0
  473. package/dist/workflows/exec/brief.js +450 -0
  474. package/dist/workflows/exec/frozen-judge.js +47 -0
  475. package/dist/workflows/exec/native-executor.js +1038 -0
  476. package/dist/workflows/exec/param-secrets.js +115 -0
  477. package/dist/workflows/exec/report.js +1460 -0
  478. package/dist/workflows/exec/run-workflow.js +602 -0
  479. package/dist/workflows/exec/scheduler.js +71 -0
  480. package/dist/workflows/exec/step-work.js +1190 -0
  481. package/dist/workflows/exec/unit-writer.js +23 -0
  482. package/dist/workflows/exec/workflow-engine-gate.js +67 -0
  483. package/dist/workflows/exec/worktree.js +171 -0
  484. package/dist/workflows/ir/compile.js +246 -0
  485. package/dist/workflows/ir/freeze.js +233 -0
  486. package/dist/workflows/ir/params.js +54 -0
  487. package/dist/workflows/ir/plan-hash.js +68 -0
  488. package/dist/workflows/ir/schema.js +540 -0
  489. package/dist/workflows/parser.js +878 -304
  490. package/dist/workflows/program/expressions.js +181 -0
  491. package/dist/workflows/program/schema.js +51 -0
  492. package/dist/workflows/renderer.js +100 -45
  493. package/dist/workflows/resource-limits.js +22 -0
  494. package/dist/workflows/runtime/agent-identity.js +59 -14
  495. package/dist/workflows/runtime/checkin.js +1 -1
  496. package/dist/workflows/runtime/plan-classifier.js +131 -0
  497. package/dist/workflows/runtime/runs.js +376 -119
  498. package/dist/workflows/runtime/unit-checkin.js +45 -0
  499. package/dist/workflows/runtime/unit-phases.js +20 -0
  500. package/dist/workflows/runtime/workflow-asset-loader.js +241 -40
  501. package/dist/workflows/schema.js +1 -11
  502. package/dist/workflows/validate-summary.js +2 -3
  503. package/dist/workflows/validator.js +52 -30
  504. package/docs/README.md +42 -78
  505. package/docs/migration/README.md +8 -0
  506. package/docs/migration/release-notes/0.6.0.md +1 -1
  507. package/docs/migration/release-notes/0.7.0.md +9 -8
  508. package/docs/migration/release-notes/0.9.0.md +158 -14
  509. package/docs/migration/v0.7-to-v0.8.md +46 -47
  510. package/docs/migration/v0.8-to-v0.9.md +844 -0
  511. package/docs/reference/README.md +12 -0
  512. package/docs/reference/data-and-telemetry.md +333 -0
  513. package/package.json +21 -17
  514. package/schemas/akm-asset-envelope.json +93 -0
  515. package/schemas/akm-config.json +4636 -0
  516. package/schemas/akm-task.json +87 -0
  517. package/schemas/akm-workflow.json +373 -0
  518. package/dist/akm-migrate-storage +0 -38
  519. package/dist/assets/help/help-accept.md +0 -12
  520. package/dist/assets/help/help-improve.md +0 -84
  521. package/dist/assets/help/help-proposals.md +0 -17
  522. package/dist/assets/help/help-propose.md +0 -17
  523. package/dist/assets/help/help-reject.md +0 -11
  524. package/dist/assets/profiles/frequent.json +0 -13
  525. package/dist/assets/profiles/recombine-only.json +0 -21
  526. package/dist/assets/profiles/reflect-distill.json +0 -30
  527. package/dist/assets/profiles/synthesize.json +0 -15
  528. package/dist/assets/prompts/procedural-system.md +0 -44
  529. package/dist/assets/prompts/recombine-system.md +0 -40
  530. package/dist/assets/prompts/staleness-detect-system.md +0 -6
  531. package/dist/assets/tasks/core/backup.yml +0 -4
  532. package/dist/assets/tasks/graph-refresh-weekly.yml +0 -10
  533. package/dist/assets/templates/html/default.html +0 -78
  534. package/dist/assets/templates/html/vendor/echarts.min.js +0 -45
  535. package/dist/assets/wiki/index-template.md +0 -12
  536. package/dist/assets/wiki/ingest-workflow-template.md +0 -83
  537. package/dist/assets/wiki/log-template.md +0 -8
  538. package/dist/assets/wiki/schema-template.md +0 -61
  539. package/dist/cli/config-migrate.js +0 -150
  540. package/dist/cli/config-validate.js +0 -39
  541. package/dist/commands/graph/graph-cli.js +0 -124
  542. package/dist/commands/graph/graph.js +0 -487
  543. package/dist/commands/improve/calibration.js +0 -161
  544. package/dist/commands/improve/dedup.js +0 -482
  545. package/dist/commands/improve/extract-watch.js +0 -140
  546. package/dist/commands/improve/hot-probation.js +0 -45
  547. package/dist/commands/improve/improve-auto-accept.js +0 -276
  548. package/dist/commands/improve/improve-profiles.js +0 -168
  549. package/dist/commands/improve/procedural.js +0 -398
  550. package/dist/commands/improve/recombine.js +0 -818
  551. package/dist/commands/improve/schema-similarity-gate.js +0 -168
  552. package/dist/commands/lint/agent-linter.js +0 -44
  553. package/dist/commands/lint/command-linter.js +0 -44
  554. package/dist/commands/lint/default-linter.js +0 -16
  555. package/dist/commands/lint/fact-linter.js +0 -39
  556. package/dist/commands/lint/knowledge-linter.js +0 -16
  557. package/dist/commands/lint/memory-linter.js +0 -61
  558. package/dist/commands/lint/registry.js +0 -41
  559. package/dist/commands/lint/skill-linter.js +0 -45
  560. package/dist/commands/lint/task-linter.js +0 -50
  561. package/dist/commands/lint/workflow-linter.js +0 -81
  562. package/dist/commands/proposal/legacy-import.js +0 -115
  563. package/dist/commands/sources/history.js +0 -196
  564. package/dist/commands/tasks/default-tasks.js +0 -186
  565. package/dist/commands/wiki-cli.js +0 -292
  566. package/dist/core/asset/asset-registry.js +0 -76
  567. package/dist/core/asset/asset-spec.js +0 -259
  568. package/dist/core/config/config-migration.js +0 -602
  569. package/dist/core/deep-merge.js +0 -38
  570. package/dist/core/eval/rank-metrics.js +0 -113
  571. package/dist/core/ripgrep/install.js +0 -163
  572. package/dist/core/ripgrep/resolve.js +0 -81
  573. package/dist/indexer/db/db.js +0 -1413
  574. package/dist/indexer/manifest.js +0 -170
  575. package/dist/indexer/passes/metadata-contributors.js +0 -31
  576. package/dist/indexer/usage/unmigrated-vaults-guard.js +0 -94
  577. package/dist/integrations/harnesses/opencode-sdk/index.js +0 -49
  578. package/dist/llm/call-ai.js +0 -62
  579. package/dist/llm/memory-infer-impl.js +0 -138
  580. package/dist/output/shapes/distill.js +0 -14
  581. package/dist/output/shapes/history.js +0 -11
  582. package/dist/output/text/distill.js +0 -6
  583. package/dist/output/text/enable-disable.js +0 -8
  584. package/dist/output/text/history.js +0 -6
  585. package/dist/output/text/wiki.js +0 -16
  586. package/dist/registry/build-index.js +0 -386
  587. package/dist/scripts/migrate-storage.js +0 -19108
  588. package/dist/scripts/migrations/import-fs-improve-runs-to-db.js +0 -9411
  589. package/dist/scripts/migrations/v16-to-v17.js +0 -141
  590. package/dist/setup/legacy-config.js +0 -106
  591. package/dist/storage/repositories/consolidation-repository.js +0 -38
  592. package/dist/storage/repositories/recombine-repository.js +0 -213
  593. package/dist/wiki/wiki-templates.js +0 -15
  594. package/dist/wiki/wiki.js +0 -1012
  595. package/dist/workflows/db.js +0 -215
  596. package/docs/data-and-telemetry.md +0 -226
  597. /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/registry.js +0 -0
  598. /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/youtube.js +0 -0
@@ -1,6 +1,6 @@
1
1
  # akm CLI
2
2
 
3
- You have access to a searchable library of scripts, skills, commands, agents, knowledge documents, workflows, wikis, and memories via `akm`. Search your sources first before writing something from scratch.
3
+ You have access to a searchable library of scripts, skills, commands, agents, knowledge documents, workflows, env files, secrets, lessons, and memories via `akm`. Search your sources first before writing something from scratch.
4
4
 
5
5
  ## Agent Task Loop
6
6
 
@@ -8,15 +8,15 @@ For any task, follow this loop:
8
8
  1. `akm curate "<task>"` — find the best matching asset
9
9
  2. `akm show <ref>` — read the schema (field names and structure)
10
10
  3. Edit the workspace file using schema field names + task-specific values from your README
11
- 4. `akm feedback <ref> --positive` — record success
11
+ 4. `akm feedback <ref> --positive` — record success; use `--negative --reason "..."` when it fails
12
12
 
13
13
  For workflow tasks:
14
- 1. `akm workflow next workflow:<name>` — get current step instructions
14
+ 1. `akm workflow next workflows/<name>` — get current step instructions
15
15
  2. Do the step work in your workspace
16
- 3. `akm workflow complete <run-id> --step <step-id>` — mark done, get next step
16
+ 3. `akm workflow complete <run-id> --step <step-id> --summary "what was done"` — mark done, get next step
17
17
 
18
18
  Workflow runs are scoped to your current project/worktree/directory. Ref-based
19
- commands like `workflow next workflow:<name>`, `workflow status workflow:<name>`,
19
+ commands like `workflow next workflows/<name>`, `workflow status workflows/<name>`,
20
20
  and `workflow list` operate within the current scope only.
21
21
 
22
22
  ## Quick Reference
@@ -25,26 +25,27 @@ and `workflow list` operate within the current scope only.
25
25
  akm search "<query>" # Search all sources
26
26
  akm curate "<task>" # Curate the best matches for a task
27
27
  akm search "<query>" --type workflow # Filter to workflow assets
28
- akm search "<query>" --source both # Also search registries
28
+ akm search "memories/projectA/" # List a subtree (conceptId prefix; trailing slash required)
29
+ akm search "<query>" --from all # Also search registries
29
30
  akm show <ref> # View asset details
31
+ akm help <command> # Show a command's options and subcommands
30
32
  akm workflow next <ref> # Start or resume a workflow
31
- akm remember "Deployment needs VPN access" # Record a memory in your stash
32
- akm remember "note" --target my-stash # Route write to a named writable stash source
33
- akm import ./notes/release-checklist.md # Import a knowledge doc into your stash
34
- akm import ./doc.md --target my-stash # Route import to a named writable stash source
35
- akm wiki list # List available wikis
36
- akm wiki ingest <name> # Dispatch an agent to run the ingest workflow (uses defaults.agent or --profile)
37
- akm wiki stash <name> ./paper.md --target my-stash # Route wiki stash write to a named source
38
- akm proposal diff skill:akm-dream # Diff proposal by ref, UUID, or 8-char prefix
33
+ akm remember "Deployment needs VPN access" # Record a memory in your bundle
34
+ akm remember "note" --bundle my-bundle # Route write to a named writable bundle source
35
+ akm remember "note" --xref knowledge/auth-flow # Cite provenance in frontmatter xrefs (repeatable)
36
+ akm remember "fix" --supersedes memories/old-note # Write a correction AND demote the superseded asset
37
+ akm import ./notes/release-checklist.md # Import a knowledge doc into your bundle
38
+ akm import ./doc.md --target my-bundle # Route import to a named writable bundle source
39
+ akm proposal diff skills/akm-dream # Diff proposal by ref, UUID, or 8-char prefix
39
40
  akm proposal accept 7c115132 # Accept by UUID prefix
40
- akm proposal reject skill:my-skill --reason "..." # Reject by ref
41
+ akm proposal reject skills/my-skill --reason "..." # Reject by ref
41
42
  akm feedback <ref> --positive|--negative # Record whether an asset helped
42
- akm add <ref> # Add a source (npm, GitHub, git, local dir)
43
- akm clone <ref> # Copy an asset to the working stash (optional --dest arg to clone to specific location)
44
- akm sync # Commit (and push if writable remote) changes in the primary stash (--no-push to commit only)
43
+ akm bundle add <ref> # Add a source (npm, GitHub, git, local dir)
44
+ akm clone <ref> # Copy an asset to the working bundle (optional --dest arg to clone to specific location)
45
+ akm sync # Commit (and push if writable remote) changes in the primary bundle (--no-push to commit only)
45
46
  akm improve --no-sync # Run improve without the end-of-run auto-commit
46
47
  akm improve --no-push # Auto-commit but skip push for this run
47
- akm registry search "<query>" # Search all registries
48
+ akm search "<query>" --from registry # Search all registries (registry search was folded into search)
48
49
  ```
49
50
 
50
51
  ## Primary Asset Types
@@ -55,14 +56,76 @@ akm registry search "<query>" # Search all registries
55
56
  | skill | Instructions to follow (read the full content) |
56
57
  | command | A prompt template with placeholders to fill in |
57
58
  | agent | A system prompt with model and tool hints |
58
- | knowledge | A reference doc (use `toc` or `section "..."` to navigate) |
59
+ | knowledge | A reference doc (append `#<heading-slug>` to the ref to read one section) |
59
60
  | workflow | Parsed steps plus workflow-specific execution commands |
60
61
  | memory | Recalled context (read the content for background information) |
61
- | env | A `.env` file of related CONFIGURATION (many vars; sensitive or not — all protected); key names only. Inject with `akm env run <ref> -- <cmd>` (the agent-safe path — values stay on disk). |
62
- | secret | A single sensitive value for AUTHENTICATION (token, key, cert); name only. Use `akm secret path` / `akm secret run`. |
63
- | wiki | A page in a multi-wiki knowledge base. For any wiki task, start with `akm wiki list`. To ingest sources, run `akm wiki ingest <name>` — it dispatches the configured agent profile to execute the ingest workflow against the wiki's `raw/` directory. Run `akm wiki -h` for the full surface. |
62
+ | env | A `.env` file of configuration an app loads together (many vars; sensitive or not — all protected); key names only. Inject with `akm env run <ref> -- <cmd>` (the agent-safe path — values stay on disk). |
63
+ | secret | A single sensitive value for AUTHENTICATION (token, key, cert); name only. Inject with `akm secret run <ref> <VAR> -- <cmd>`. |
64
+ | lesson | A distilled feedback lesson: `content` plus `action` (rendered from the `when_to_use` frontmatter). Read both before applying a related skill. Generated by the improve pipeline and promoted through the proposal queue. |
64
65
 
65
66
  When an asset meaningfully helps or fails, record that with `akm feedback` so
66
67
  future search ranking can learn from real usage.
67
68
 
68
- Run `akm -h` for the full command reference.
69
+ ## Error Shapes and Exit Codes
70
+
71
+ Every command returns JSON by default. On failure, the shape is always
72
+ emitted on **stderr** (stdout is normally left empty):
73
+
74
+ ```json
75
+ {"ok": false, "error": "<message>", "code": "<optional machine-readable code>", "hint": "<optional remediation hint>"}
76
+ ```
77
+
78
+ Exit codes:
79
+
80
+ | Code | Meaning |
81
+ | --- | --- |
82
+ | 0 | Success |
83
+ | 1 | Not found or command-reported failure |
84
+ | 2 | Usage / bad input |
85
+ | 4 | Health warning (`akm health` only) |
86
+ | 70 | Internal / unclassified error |
87
+ | 78 | Configuration error |
88
+
89
+ Check `ok === false` or a non-zero exit code to detect failure. The `hint`
90
+ field, when present, describes a corrective action. `search`/`curate`
91
+ success results also carry an additive `tip` field (a plain-text suggestion)
92
+ when the result set is empty.
93
+
94
+ `env run`, `secret run`, and `migrate` preserve the spawned process's exact
95
+ status. `task run` preserves configuration failures as exit 78; other failed
96
+ task results and failed `agent` dispatches map to exit 1 while retaining the
97
+ child status in their result envelope.
98
+
99
+ `akm lint` is the exception: it exits **0 on every successful run regardless
100
+ of findings**. Read `summary.flagged` to detect issues, or pass
101
+ `--fail-on-flagged` to opt into "exit 1 when findings exist":
102
+
103
+ ```sh
104
+ akm lint | jq '.summary.flagged' # always exit 0; read the count
105
+ akm lint --fail-on-flagged && deploy # exit 1 if any flagged issues
106
+ ```
107
+
108
+ ## Proposals & improvement (0.8.0+)
109
+
110
+ `akm` ships a proposal queue so reflective edits, new asset drafts, and
111
+ feedback-distilled lessons land out-of-band before they touch the live
112
+ bundle. None of these commands mutate bundle content directly — they always
113
+ go through `akm proposal accept`.
114
+
115
+ ```sh
116
+ akm improve <ref> # Produce an improvement proposal for an existing asset
117
+ akm improve <ref> --task "tighten the description"
118
+ akm proposal new <type> <name> --task "..." # Draft a new asset proposal from a description
119
+ akm proposal new lesson docker-cleanup --task "consolidate cleanup feedback"
120
+ akm proposal list # List pending proposals
121
+ akm proposal list --status pending|accepted|rejected|reverted
122
+ akm proposal show <id> # Render the proposal body
123
+ akm proposal diff <ref-or-id> # Diff by ref, UUID, or 8-char prefix
124
+ akm proposal accept 7c115132 # Accept by UUID prefix
125
+ akm proposal reject skills/my-skill --reason "not ready" # Reject by asset ref
126
+ akm search "<query>" --include-proposed # Surface proposal-queue entries in search
127
+ ```
128
+
129
+ Run `akm help <command>` for that command's options and subcommands. Run
130
+ `akm --help` for the command overview or `akm hints --detail full` for the
131
+ complete agent guide.
@@ -7,7 +7,9 @@
7
7
  "memoryInference": { "enabled": false },
8
8
  "graphExtraction": { "enabled": false },
9
9
  "extract": { "enabled": false },
10
- "triage": { "enabled": true, "applyMode": "queue", "policy": "personal-stash", "maxAcceptsPerRun": 100 }
10
+ "triage": { "enabled": true, "applyMode": "queue", "policy": "personal-stash", "maxAcceptsPerRun": 100 },
11
+ "validation": { "enabled": false },
12
+ "proactiveMaintenance": { "enabled": false }
11
13
  },
12
14
  "sync": { "enabled": true, "push": true }
13
15
  }
@@ -7,7 +7,9 @@
7
7
  "memoryInference": { "enabled": false },
8
8
  "graphExtraction": { "enabled": false },
9
9
  "extract": { "enabled": false },
10
- "triage": { "enabled": false }
10
+ "triage": { "enabled": false },
11
+ "validation": { "enabled": false },
12
+ "proactiveMaintenance": { "enabled": false }
11
13
  },
12
14
  "sync": { "enabled": true, "push": true }
13
15
  }
@@ -1,20 +1,19 @@
1
1
  {
2
- "description": "Standard improve pass — all sub-processes + sustaining proactive lane.",
2
+ "description": "Standard improve pass — reflect, distill, advisory consolidation, graph extraction, and validation. Memory inference is listed below but only runs when experimental.improveAutonomy is set; improve-stage extract and proactive maintenance off.",
3
3
  "processes": {
4
4
  "reflect": {
5
5
  "enabled": true,
6
6
  "limit": 25,
7
- "allowedTypes": ["agent", "command", "knowledge", "lesson", "memory", "skill", "wiki", "workflow"]
7
+ "allowedTypes": ["agent", "command", "knowledge", "lesson", "memory", "skill", "workflow"]
8
8
  },
9
9
  "distill": { "enabled": true, "allowedTypes": ["memory"], "requirePlannedRefs": true },
10
10
  "consolidate": { "enabled": true, "allowedTypes": ["memory"], "minPoolSize": 500 },
11
11
  "memoryInference": { "enabled": true },
12
12
  "graphExtraction": { "enabled": true },
13
- "extract": { "enabled": true, "triage": { "enabled": true, "minScore": 2 } },
14
- "proactiveMaintenance": { "enabled": true, "dueDays": 30, "maxPerRun": 15 },
15
- "triage": { "enabled": false, "applyMode": "queue", "policy": "personal-stash" },
16
- "recombine": { "enabled": false },
17
- "procedural": { "enabled": false }
13
+ "extract": { "enabled": false, "triage": { "enabled": true, "minScore": 2 } },
14
+ "validation": { "enabled": true },
15
+ "proactiveMaintenance": { "enabled": false, "dueDays": 30, "maxPerRun": 15 },
16
+ "triage": { "enabled": false, "applyMode": "queue", "policy": "personal-stash" }
18
17
  },
19
18
  "sync": { "enabled": true, "push": true }
20
19
  }
@@ -0,0 +1,15 @@
1
+ {
2
+ "description": "Frequent inference pass — memory inference, graph extraction, and reflect; improve-stage extract off.",
3
+ "processes": {
4
+ "reflect": { "enabled": true },
5
+ "distill": { "enabled": false },
6
+ "consolidate": { "enabled": false },
7
+ "memoryInference": { "enabled": true },
8
+ "graphExtraction": { "enabled": true },
9
+ "extract": { "enabled": false, "minNewSessions": 3, "triage": { "enabled": true, "minScore": 2 } },
10
+ "triage": { "enabled": false },
11
+ "validation": { "enabled": false },
12
+ "proactiveMaintenance": { "enabled": false }
13
+ },
14
+ "sync": { "enabled": true, "push": true }
15
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "description": "Full-corpus graph extraction pass — rebuilds graph relationships across all stash files. Disables all other sub-processes. Use via `akm improve --profile graph-refresh` or the embedded `graph-refresh-weekly` task.",
2
+ "description": "Full-corpus graph extraction pass — rebuilds graph relationships across all stash files. Disables all other sub-processes. Use via `akm improve --strategy graph-refresh` or the embedded `graph-refresh-weekly` task.",
3
3
  "processes": {
4
4
  "reflect": { "enabled": false },
5
5
  "distill": { "enabled": false },
@@ -7,7 +7,9 @@
7
7
  "memoryInference": { "enabled": false },
8
8
  "graphExtraction": { "enabled": true, "fullScan": true },
9
9
  "extract": { "enabled": false },
10
- "triage": { "enabled": false }
10
+ "triage": { "enabled": false },
11
+ "validation": { "enabled": false },
12
+ "proactiveMaintenance": { "enabled": false }
11
13
  },
12
14
  "sync": { "enabled": true, "push": true }
13
15
  }
@@ -6,7 +6,10 @@
6
6
  "consolidate": { "enabled": false },
7
7
  "memoryInference": { "enabled": true },
8
8
  "graphExtraction": { "enabled": false },
9
- "triage": { "enabled": false }
9
+ "extract": { "enabled": false },
10
+ "triage": { "enabled": false },
11
+ "validation": { "enabled": false },
12
+ "proactiveMaintenance": { "enabled": false }
10
13
  },
11
14
  "sync": { "enabled": true, "push": true }
12
15
  }
@@ -1,23 +1,23 @@
1
1
  {
2
- "description": "Proactive-maintenance pass — reflect, distill, proposal triage (promote, high budget), and the proactive-maintenance lane (maxPerRun 100); consolidate/memoryInference/graphExtraction/extract off. Sync disabled: an interrupted run would otherwise leave an uncommitted backlog.",
2
+ "description": "Opt-in proactive-maintenance pass — reflect, distill, proposal triage (promote, high budget), and the proactive-maintenance lane (maxPerRun 100); consolidate/memoryInference/graphExtraction/extract off. Sync disabled: an interrupted run would otherwise leave an uncommitted backlog.",
3
3
  "processes": {
4
4
  "reflect": {
5
5
  "enabled": true,
6
- "mode": "llm",
7
- "allowedTypes": ["agent", "command", "knowledge", "lesson", "memory", "skill", "wiki", "workflow"]
6
+ "allowedTypes": ["agent", "command", "knowledge", "lesson", "memory", "skill", "workflow"]
8
7
  },
9
- "distill": { "enabled": true, "mode": "llm", "allowedTypes": ["memory"] },
8
+ "distill": { "enabled": true, "allowedTypes": ["memory"] },
10
9
  "consolidate": { "enabled": false },
11
10
  "memoryInference": { "enabled": false },
12
11
  "graphExtraction": { "enabled": false },
13
12
  "extract": { "enabled": false },
13
+ "validation": { "enabled": false },
14
14
  "triage": {
15
15
  "enabled": true,
16
16
  "applyMode": "promote",
17
17
  "policy": "personal-stash",
18
18
  "maxAcceptsPerRun": 100,
19
19
  "maxDiffLines": 200,
20
- "judgment": { "mode": "llm" }
20
+ "judgment": {}
21
21
  },
22
22
  "proactiveMaintenance": { "enabled": true, "dueDays": 30, "maxPerRun": 100 }
23
23
  },
@@ -3,14 +3,16 @@
3
3
  "processes": {
4
4
  "reflect": {
5
5
  "enabled": true,
6
- "allowedTypes": ["agent", "command", "knowledge", "lesson", "memory", "skill", "wiki", "workflow"]
6
+ "allowedTypes": ["agent", "command", "knowledge", "lesson", "memory", "skill", "workflow"]
7
7
  },
8
8
  "extract": { "enabled": false },
9
9
  "distill": { "enabled": false },
10
10
  "consolidate": { "enabled": false },
11
11
  "memoryInference": { "enabled": false },
12
12
  "graphExtraction": { "enabled": false },
13
- "triage": { "enabled": false }
13
+ "triage": { "enabled": false },
14
+ "validation": { "enabled": false },
15
+ "proactiveMaintenance": { "enabled": false }
14
16
  },
15
17
  "sync": { "enabled": true, "push": true }
16
18
  }
@@ -0,0 +1,30 @@
1
+ {
2
+ "description": "Reflect + distill pass — reflect, distill, memoryInference, and proposal triage (promote); proactiveMaintenance/consolidate/graphExtraction/extract off. Sync disabled: an interrupted run would otherwise leave an uncommitted backlog.",
3
+ "processes": {
4
+ "reflect": {
5
+ "enabled": true,
6
+ "allowedTypes": ["agent", "command", "knowledge", "lesson", "memory", "skill", "workflow"]
7
+ },
8
+ "distill": { "enabled": true, "allowedTypes": ["memory"], "requirePlannedRefs": false },
9
+ "consolidate": { "enabled": false },
10
+ "memoryInference": { "enabled": true },
11
+ "graphExtraction": { "enabled": false },
12
+ "extract": {
13
+ "enabled": false,
14
+ "timeoutMs": 300000,
15
+ "triage": { "enabled": true, "minScore": 2 },
16
+ "minNewSessions": 1
17
+ },
18
+ "validation": { "enabled": false },
19
+ "triage": {
20
+ "enabled": true,
21
+ "applyMode": "promote",
22
+ "policy": "personal-stash",
23
+ "maxAcceptsPerRun": 15,
24
+ "maxDiffLines": 200,
25
+ "judgment": {}
26
+ },
27
+ "proactiveMaintenance": { "enabled": false, "dueDays": 30, "maxPerRun": 15 }
28
+ },
29
+ "sync": { "enabled": false }
30
+ }
@@ -3,7 +3,7 @@
3
3
  "processes": {
4
4
  "reflect": {
5
5
  "enabled": true,
6
- "allowedTypes": ["agent", "command", "knowledge", "lesson", "memory", "skill", "wiki", "workflow"]
6
+ "allowedTypes": ["agent", "command", "knowledge", "lesson", "memory", "skill", "workflow"]
7
7
  },
8
8
  "distill": { "enabled": true, "allowedTypes": ["memory"] },
9
9
  "consolidate": { "enabled": true, "allowedTypes": ["memory"] },
@@ -3,17 +3,17 @@ You are the akm consolidate assistant analyzing memory assets.
3
3
  Rules:
4
4
  1. MERGE: Two or more memories are substantially duplicated or closely related → propose merging. Return the primary ref to keep and secondary refs to delete. Do NOT include mergedContent — the merge will be executed in a separate step.
5
5
  2. DELETE: Memory is clearly outdated, contradicted, or redundant → propose deletion. NEVER propose delete for memories annotated `(captureMode: hot)` — they are user-explicit and only the user can retire them. The downstream guard will refuse these regardless, so proposing them just wastes tokens.
6
- 3. PROMOTE: Memory expresses a stable, reusable fact suitable as a `knowledge:` asset → propose promotion. Do NOT delete the source memory. NEVER propose promote / merge / contradict for memories annotated `(already queued)` — they have a pending proposal whose body matches; a duplicate will be deterministically dropped, so proposing them just wastes tokens.
6
+ 3. PROMOTE: Memory expresses a stable, reusable fact suitable as a `knowledge/` asset → propose promotion. Do NOT delete the source memory. NEVER propose promote / merge / contradict for memories annotated `(already queued)` — they have a pending proposal whose body matches; a duplicate will be deterministically dropped, so proposing them just wastes tokens.
7
7
  4. CONTRADICT: Two memories assert logically exclusive facts such that following BOTH simultaneously is impossible — not merely related or overlapping. You MUST cite the exact sentence from Memory A and the exact sentence from Memory B that are in direct conflict. If you cannot cite specific opposing sentences, use KEEP instead. Sharing a topic, tool, domain, or workflow stage is NOT sufficient. Only direct factual opposites qualify: opposing recommended commands, opposing boolean flags, opposing version numbers, or mutually exclusive instructions. Use confidence ≥ 0.92 only; omit the op entirely if below that threshold.
8
8
  5. KEEP: Memory is unique and current → omit from output.
9
9
 
10
10
  Return ONLY JSON (no prose, no code fences):
11
11
  {
12
12
  "operations": [
13
- { "op": "merge", "primary": "memory:<name>", "secondaries": ["memory:<name>", ...], "mergeStrategy": "synthesize", "confidence": 0.95 },
14
- { "op": "delete", "ref": "memory:<name>", "reason": "<brief reason>", "confidence": 0.90 },
15
- { "op": "promote", "ref": "memory:<name>", "knowledgeRef": "knowledge:<suggested-slug>", "reason": "<brief reason>", "description": "<one sentence describing the new knowledge asset>", "confidence": 0.92 },
16
- { "op": "contradict", "ref": "memory:<name>", "contradictedByRef": "memory:<name>", "reason": "<brief reason>", "confidence": 0.88 }
13
+ { "op": "merge", "primary": "memories/<name>", "secondaries": ["memories/<name>", ...], "mergeStrategy": "synthesize", "confidence": 0.95 },
14
+ { "op": "delete", "ref": "memories/<name>", "reason": "<brief reason>", "confidence": 0.90 },
15
+ { "op": "promote", "ref": "memories/<name>", "knowledgeRef": "knowledge/<suggested-slug>", "reason": "<brief reason>", "description": "<one sentence describing the new knowledge asset>", "confidence": 0.92 },
16
+ { "op": "contradict", "ref": "memories/<name>", "contradictedByRef": "memories/<name>", "reason": "<brief reason>", "confidence": 0.88 }
17
17
  ],
18
18
  "warnings": ["<optional concerns>"]
19
19
  }
@@ -46,22 +46,18 @@ Respond with EXACTLY one JSON object matching this shape:
46
46
  "candidates": [
47
47
  {
48
48
  "type": "memory" | "lesson" | "knowledge",
49
- "name": "<kebab-case-slug>",
49
+ "name": "<kebab-case name, e.g. jwt-token; optionally under one kebab-case scope, e.g. auth/jwt-token>",
50
50
  "description": "<one sentence 20-400 chars>",
51
51
  "when_to_use": "<one sentence 15-400 chars; REQUIRED only when type=lesson>",
52
52
  "body": "<markdown body, 200-3000 chars typical>",
53
53
  "confidence": <number 0.0-1.0>,
54
- "evidence": "<one-line pointer to the moment in the session>",
55
- "orderedActions": ["<action-1>", "<action-2>", ...],
56
- "outcomeData": "<one sentence describing the outcome of the action sequence>"
54
+ "evidence": "<one-line pointer to the moment in the session>"
57
55
  }
58
56
  ],
59
57
  "rationale_if_empty": "<one sentence; REQUIRED when candidates is empty>"
60
58
  }
61
59
  ```
62
60
 
63
- `orderedActions` and `outcomeData` are **optional**. Include them only when the candidate represents a recurring action sequence (e.g. a recovery procedure, a build-fix recipe, a deployment checklist) where preserving the ordered steps adds future value. When present, `outcomeData` is required and must describe what happened when the sequence completed (success or failure). Omit both fields entirely for standalone facts, observations, or lessons that are not action-sequence-shaped.
64
-
65
61
  ## Rules
66
62
 
67
63
  1. **Zero candidates is a valid and frequent answer.** Most sessions yield no new durable insight. When that's the case, return `{"candidates": [], "rationale_if_empty": "..."}` explaining what you saw and why it didn't rise to durable-knowledge level. Do not fabricate.
@@ -1,5 +1,4 @@
1
- Compress the memory below into one derived memory. Output ONLY JSON:
2
- {"title":"short title string","description":"one sentence summary string","tags":["tag1","tag2"],"searchHints":["search phrase 1","search phrase 2"],"content":"2-3 sentence compressed body preserving key facts verbatim"}
3
- Rules: be specific, no vague generalizations, preserve key facts (names/versions/paths/config keys verbatim), merge related points, 3-8 tags, 3-6 searchHints. The content field must be a plain string with 2-3 sentences.
1
+ Compress the memory below into one derived memory. Output ONLY a JSON object with exactly these fields: title, description, tags, searchHints, and content.
2
+ Rules: title must be specific and short; description must be one sentence; tags must contain 3-8 specific tags; searchHints must contain 3-6 useful retrieval phrases; content must be a plain string with 2-3 sentences. Avoid vague generalizations, preserve key facts (names/versions/paths/config keys verbatim), and merge related points. Never return field descriptions or placeholder values.
4
3
 
5
4
  Memory:
@@ -0,0 +1,11 @@
1
+ Respond with exactly this plain-text frame, with no prose or code fence around it:
2
+
3
+ {{REF_LINE}}AKM_REFLECT_CONFIDENCE: <number from 0 to 1>
4
+ AKM_REFLECT_FRONTMATTER_PATCH: {"description": null, "when_to_use": null}
5
+ AKM_REFLECT_CONTENT_BEGIN
6
+ <complete improved markdown body>
7
+ AKM_REFLECT_CONTENT_END
8
+
9
+ The first begin marker and final end marker delimit the body; marker lines between them are literal content. Put the complete markdown body between those outer markers. Quotes, Markdown fences, and backslashes inside the body are literal content; do not JSON-escape them. Emit the body only, without YAML frontmatter, because AKM preserves and merges the source frontmatter itself.
10
+
11
+ The frontmatter patch must be a one-line JSON object with exactly `description` and `when_to_use`. Keep a field `null` when it should not change. Supply a non-empty string only when adding or correcting that field; AKM merges those values through its existing sanitizer.
@@ -0,0 +1,3 @@
1
+ Respond only through the provider's native JSON schema. {{FIELD_RULE}}
2
+
3
+ `content` must contain the complete improved markdown body only, without YAML frontmatter. `frontmatterPatch` must contain exactly `description` and `when_to_use`; set either field to `null` when it should not change, or to a non-empty string when adding or correcting it. AKM merges that narrow patch with the source frontmatter and preserves target identity itself. `confidence` is your honest self-rated quality confidence from 0 to 1. Do not add prose or Markdown fences around the JSON response.
@@ -0,0 +1,3 @@
1
+ Your previous response could not be extracted using the required output contract. Reformat that response exactly once using the contract below. Preserve its proposed markdown verbatim: do not revise, summarize, or add content. Return only the repaired envelope.
2
+
3
+ {{OUTPUT_CONTRACT}}
@@ -0,0 +1,26 @@
1
+ You are executing one unit of an akm workflow run.
2
+
3
+ - Workflow run: {{RUN_ID}}
4
+ - Step: {{STEP_ID}}
5
+ - Unit: {{UNIT_ID}}
6
+ - Run parameters: {{PARAMS_JSON}}
7
+
8
+ Ground rules for this unit:
9
+
10
+ 1. Pull knowledge on demand instead of guessing: `akm search '<query>'` to find
11
+ relevant assets, `akm show <ref>` to read one, `akm curate '<query>'` to let
12
+ akm select the best match. Only pull what this unit actually needs.
13
+ 2. Environment values and secrets are provided through your process
14
+ environment when the workflow declares them. Never print secret values to
15
+ stdout or embed them in your answer. If you need an env file path, use
16
+ `akm env path <ref>`; never `cat` secrets.
17
+ 3. Do exactly the work described in the instructions below — no more. Other
18
+ units may be running concurrently on sibling items; do not touch files or
19
+ state outside the scope this unit was given.
20
+ 4. Your final output IS the unit result recorded by the engine. When a JSON
21
+ schema is requested, respond with ONLY the JSON value (no prose, no code
22
+ fences). Otherwise finish with a concise factual summary of what you did.
23
+
24
+ Unit instructions follow.
25
+
26
+ ---
@@ -1,7 +1,7 @@
1
1
  # AKM Stash
2
2
 
3
3
  This is an **AKM stash** — a structured knowledge repository that stores reusable
4
- assets for you and your AI agents. AKM (Agent Knowledge Management) indexes, ranks,
4
+ assets for you and your AI agents. AKM (Agent Knowledge Manager) indexes, ranks,
5
5
  and surfaces these assets at the right moment during coding sessions, improving
6
6
  consistency and reducing repeated context-setting.
7
7
 
@@ -17,10 +17,37 @@ consistency and reducing repeated context-setting.
17
17
  | `workflows/` | Workflows | Multi-step orchestration sequences |
18
18
  | `tasks/` | Tasks | Scheduled or on-demand automation tasks |
19
19
  | `lessons/` | Lessons | Durable lessons extracted from past sessions |
20
+ | `facts/` | Facts | Durable stash-level context; the house conventions in `facts/conventions/` are auto-surfaced to authoring agents |
21
+ | `scripts/` | Scripts | Executable helpers agents and humans can run |
22
+ | `env/`, `secrets/` | Env & Secrets | Configuration groups and single credentials; values are never content-indexed |
20
23
 
21
24
  Add your own assets to any of these directories. AKM will index them automatically
22
25
  on the next `akm index` run (or when the background improve pipeline picks them up).
23
26
 
27
+ ## How to organize assets
28
+
29
+ A file's path under its type directory becomes part of its ref
30
+ (`knowledge/auth/oauth-refresh-races.md` → `knowledge/auth/oauth-refresh-races`),
31
+ and its segments are search terms: `akm search "auth" --type knowledge` narrows
32
+ to that subtree. Retrieval is search, not folder-browse, so pick subdirectories
33
+ deliberately. The house rules live in three convention facts under
34
+ `facts/conventions/` and are surfaced to agents automatically when they author
35
+ assets:
36
+
37
+ - **`facts/conventions/organization`** — the single path axis, chosen by asset
38
+ type. **Scope-born** types (`memory`, `lesson`, `task`, `env`, `secret`) go
39
+ under the current **project/client** slug; **reuse-born** types (`knowledge`,
40
+ `skill`, `fact`, `script`) go under a stable **domain**; global types
41
+ stay at the type root.
42
+ - **`facts/conventions/backlinks`** — how to cross-link: a provenance xref
43
+ whenever an asset derives from another, sparse real associative links,
44
+ corrections as new assets, canonical entity naming.
45
+ - **`facts/conventions/domains`** — the (editable) domain vocabulary for
46
+ reuse-born assets, plus canonical entity spellings.
47
+
48
+ Per-type nuances live in `facts/conventions/assets/<type>.md`. All of these are
49
+ soft guidance — edit them to match how your stash is queried.
50
+
24
51
  ## For agents: how to access this stash
25
52
 
26
53
  All assets in this stash are searchable via the `akm` CLI. Use these commands to
@@ -35,15 +62,16 @@ akm search "<query>"
35
62
  akm search "<query>" --type skill
36
63
  akm search "<query>" --type knowledge
37
64
 
38
- # Show a specific asset by ref
39
- akm show skill:<name>
40
- akm show knowledge:<name>
41
- akm show memory:<name>
42
- akm show command:<name>
65
+ # Show a specific asset by ref ([bundle//]conceptId)
66
+ akm show skills/<name>
67
+ akm show knowledge/<name>
68
+ akm show memories/<name>
69
+ akm show commands/<name>
43
70
 
44
- # List available assets by type
45
- akm list --type skill
46
- akm list --type knowledge
71
+ # Browse available assets by type (a trailing slash lists the subtree)
72
+ akm search "skills/"
73
+ akm search "knowledge/"
74
+ akm search "<query>" --type skill
47
75
  ```
48
76
 
49
77
  ### Recording feedback and new knowledge
@@ -73,4 +101,4 @@ akm proposal accept <id>
73
101
 
74
102
  ---
75
103
 
76
- *Created by `akm init`. See `akm --help` for full command reference.*
104
+ *Created by `akm bundle create`. See `akm --help` for full command reference.*
@@ -1,7 +1,9 @@
1
1
  ---
2
+ type: fact
2
3
  category: convention
3
4
  description: Soft authoring conventions for agent assets using scoped role, tool, and maintenance rules.
4
5
  when_to_use: Surfaced to authoring agents when they write or revise an agent asset.
6
+ updated: 2026-07-28
5
7
  ---
6
8
 
7
9
  <!--
@@ -36,3 +38,9 @@ Use an agent when a recurring task benefits from a specialized role, bounded res
36
38
  - Add explicit negative guidance when the agent overreaches.
37
39
  - Keep role instructions stable and concise; move large background material into knowledge assets.
38
40
  - Use lessons to capture operational improvements, then promote stable ones into the agent when they become part of the role.
41
+
42
+ ## Placement & linking
43
+
44
+ - Agent definitions are usually **global**: keep them at the type root or under a
45
+ role/domain slug (`agents/reviewer`). Point the agent at the standards and type
46
+ conventions it must read first via xrefs.
@@ -1,7 +1,9 @@
1
1
  ---
2
+ type: fact
2
3
  category: convention
3
4
  description: Soft authoring conventions for command assets using repeatable LLM operation patterns.
4
5
  when_to_use: Surfaced to authoring agents when they write or revise a command asset.
6
+ updated: 2026-07-28
5
7
  ---
6
8
 
7
9
  <!--
@@ -36,3 +38,9 @@ Use a command when the user or agent needs to perform the same prompt-shaped tas
36
38
  - If command output regularly becomes useful durable knowledge, instruct the agent to file the result into the right asset type.
37
39
  - If the command starts handling multiple unrelated tasks, split it into smaller commands.
38
40
  - Preserve a clear invocation contract so future agents can call the command safely.
41
+
42
+ ## Placement & linking
43
+
44
+ - Commands are usually **global**: keep them at the type root or under a
45
+ tool/domain slug. Scope to a project only when the command is genuinely
46
+ project-specific.
@@ -1,7 +1,9 @@
1
1
  ---
2
+ type: fact
2
3
  category: convention
3
4
  description: Soft authoring conventions for fact assets using pinned-core and just-in-time context principles.
4
5
  when_to_use: Surfaced to authoring agents when they write or revise a fact asset.
6
+ updated: 2026-07-28
5
7
  ---
6
8
 
7
9
  <!--
@@ -34,6 +36,17 @@ Use a fact for stable information that future agents should treat as true or nor
34
36
  ## Maintenance strategy
35
37
 
36
38
  - Revise or supersede facts when the durable truth changes.
37
- - Do not allow contradictory facts to remain equally active.
39
+ - Do not allow contradictory facts to remain equally active: mark the loser
40
+ `beliefState: superseded` / `supersededBy: [<new ref>]` so ranking demotes it.
38
41
  - Promote repeated memories or lessons into facts only when they become stable context.
39
42
  - Keep convention and meta facts especially clear, because they steer future asset creation.
43
+
44
+ ## Placement & linking
45
+
46
+ - Facts are **reuse-born**: give a policy/standard fact a domain-like prefix
47
+ (`facts/policies/pii-handling`) or the type root for personal/meta facts.
48
+ - Facts are also the **delivery layer** for stash-wide conventions:
49
+ `category: convention` or `category: meta` facts are surfaced to every non-wiki
50
+ author, so this is where naming, placement, and linking house-rules live. Keep
51
+ each one short — they inject into authoring prompts. Reserve `pinned: true` for
52
+ the small always-injected core.