akm-cli 0.9.0-rc.1 → 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 (587) hide show
  1. package/CHANGELOG.md +1190 -52
  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/stash-skeleton/README.md +38 -10
  26. package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +8 -0
  27. package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +8 -0
  28. package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +14 -1
  29. package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +13 -1
  30. package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +9 -1
  31. package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +11 -0
  32. package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +9 -0
  33. package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +9 -0
  34. package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +8 -0
  35. package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +100 -0
  36. package/dist/assets/stash-skeleton/facts/conventions/domains.md +64 -0
  37. package/dist/assets/stash-skeleton/facts/conventions/organization.md +136 -0
  38. package/dist/assets/tasks/core/extract.yml +3 -2
  39. package/dist/assets/tasks/core/improve.yml +2 -1
  40. package/dist/assets/tasks/core/index-refresh.yml +1 -0
  41. package/dist/assets/tasks/core/sync.yml +1 -0
  42. package/dist/assets/tasks/core/version-check.yml +2 -1
  43. package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +5 -0
  44. package/dist/assets/tasks/improve/akm-improve-catchup.yml +8 -0
  45. package/dist/assets/tasks/improve/akm-improve-consolidate.yml +5 -0
  46. package/dist/assets/tasks/improve/akm-improve-frequent.yml +5 -0
  47. package/dist/assets/tasks/improve/akm-improve-nightly.yml +5 -0
  48. package/dist/assets/templates/html/health.html +5 -4
  49. package/dist/assets/workflows/workflow-template.md +31 -15
  50. package/dist/cli/invocation.js +279 -0
  51. package/dist/cli/parse-args.js +5 -90
  52. package/dist/cli/retired-commands.js +78 -0
  53. package/dist/cli/shared.js +158 -48
  54. package/dist/cli-node.mjs +2 -1
  55. package/dist/cli.js +747 -293
  56. package/dist/commands/agent/agent-dispatch.js +19 -18
  57. package/dist/commands/agent/agent-support.js +0 -24
  58. package/dist/commands/agent/contribute-cli.js +43 -97
  59. package/dist/commands/completions.js +80 -23
  60. package/dist/commands/config-cli.js +44 -281
  61. package/dist/commands/env/env-binding.js +13 -9
  62. package/dist/commands/env/env-cli.js +76 -159
  63. package/dist/commands/env/env.js +12 -163
  64. package/dist/commands/env/marker-path.js +6 -0
  65. package/dist/commands/env/secret-cli.js +45 -61
  66. package/dist/commands/env/secret.js +32 -62
  67. package/dist/commands/feedback-cli.js +179 -85
  68. package/dist/commands/health/accept-rate.js +58 -0
  69. package/dist/commands/health/advisories.js +7 -8
  70. package/dist/commands/health/checks.js +279 -94
  71. package/dist/commands/health/html-report.js +197 -578
  72. package/dist/commands/health/improve-metrics.js +277 -246
  73. package/dist/commands/health/llm-usage.js +19 -19
  74. package/dist/commands/health/md-report.js +16 -7
  75. package/dist/commands/health/metrics.js +67 -32
  76. package/dist/commands/health/renderers.js +47 -0
  77. package/dist/commands/health/report-view-model.js +508 -0
  78. package/dist/commands/health/stash-exposure.js +1 -1
  79. package/dist/commands/health/surfaces.js +16 -56
  80. package/dist/commands/health/task-runs.js +3 -67
  81. package/dist/{migrate-storage-node.mjs → commands/health/types-checks.js} +1 -5
  82. package/dist/commands/health/types-improve.js +29 -0
  83. package/dist/{output/text/save.js → commands/health/types-metrics.js} +1 -2
  84. package/dist/commands/health/types-result.js +7 -0
  85. package/dist/commands/health/types-runs.js +4 -0
  86. package/dist/commands/health/types-session-log.js +4 -0
  87. package/dist/commands/health/types-windows.js +4 -0
  88. package/dist/commands/health/types.js +26 -21
  89. package/dist/commands/health/windows.js +2 -3
  90. package/dist/commands/health.js +296 -167
  91. package/dist/commands/improve/anti-collapse.js +5 -5
  92. package/dist/commands/improve/autonomy-gate.js +68 -0
  93. package/dist/commands/improve/collapse-detector.js +65 -52
  94. package/dist/commands/improve/consolidate/chunking.js +9 -7
  95. package/dist/commands/improve/consolidate/eligibility.js +1 -23
  96. package/dist/commands/improve/consolidate/merge.js +4 -0
  97. package/dist/commands/improve/consolidate.js +454 -1354
  98. package/dist/commands/improve/content-hash.js +39 -0
  99. package/dist/commands/improve/distill/content-repair.js +4 -10
  100. package/dist/commands/improve/distill/promote-memory.js +89 -64
  101. package/dist/commands/improve/distill/quality-gate.js +118 -42
  102. package/dist/commands/improve/distill-guards.js +1 -1
  103. package/dist/commands/improve/distill-promotion-policy.js +33 -888
  104. package/dist/commands/improve/distill.js +607 -363
  105. package/dist/commands/improve/eligibility.js +165 -79
  106. package/dist/commands/improve/extract-cli.js +35 -126
  107. package/dist/commands/improve/extract-prompt.js +6 -35
  108. package/dist/commands/improve/extract.js +640 -391
  109. package/dist/commands/improve/feedback-valence.js +2 -12
  110. package/dist/commands/improve/improve-cli.js +134 -135
  111. package/dist/commands/improve/improve-result-file.js +30 -50
  112. package/dist/commands/improve/improve-run-types.js +4 -0
  113. package/dist/commands/improve/improve-strategies.js +135 -0
  114. package/dist/commands/improve/improve.js +904 -701
  115. package/dist/commands/improve/locks.js +64 -111
  116. package/dist/commands/improve/loop-stages.js +1110 -923
  117. package/dist/commands/improve/memory/derived-ref.js +124 -0
  118. package/dist/commands/improve/memory/memory-belief.js +79 -7
  119. package/dist/commands/improve/memory/memory-contradiction-detect.js +49 -52
  120. package/dist/commands/improve/memory/memory-improve.js +25 -37
  121. package/dist/commands/improve/outcome-loop.js +25 -88
  122. package/dist/commands/improve/preparation.js +1034 -813
  123. package/dist/commands/improve/proactive-maintenance.js +34 -9
  124. package/dist/commands/improve/proposal-envelope.js +31 -0
  125. package/dist/commands/improve/reflect.js +983 -794
  126. package/dist/commands/improve/run-context.js +119 -0
  127. package/dist/commands/improve/salience.js +24 -127
  128. package/dist/commands/improve/session-asset.js +7 -3
  129. package/dist/commands/improve/shared.js +14 -34
  130. package/dist/commands/improve/source-identity.js +28 -0
  131. package/dist/commands/improve/triage.js +20 -17
  132. package/dist/commands/lint/base-linter.js +340 -313
  133. package/dist/commands/lint/env-key-rules.js +31 -47
  134. package/dist/commands/lint/index.js +185 -30
  135. package/dist/commands/{events.js → log.js} +28 -38
  136. package/dist/commands/migrate-cli.js +54 -0
  137. package/dist/commands/migration-tool.js +55 -0
  138. package/dist/commands/observability-cli.js +70 -208
  139. package/dist/commands/proposal/diff-format.js +50 -0
  140. package/dist/commands/proposal/drain-policies.js +0 -6
  141. package/dist/commands/proposal/drain.js +91 -40
  142. package/dist/commands/proposal/proposal-cli.js +134 -132
  143. package/dist/commands/proposal/proposal-types.js +56 -0
  144. package/dist/commands/proposal/proposal.js +83 -65
  145. package/dist/commands/proposal/propose-cli.js +88 -0
  146. package/dist/commands/proposal/propose.js +105 -88
  147. package/dist/commands/proposal/repository.js +1303 -278
  148. package/dist/commands/proposal/validators/proposal-quality-validators.js +16 -6
  149. package/dist/commands/proposal/validators/proposal-validators.js +61 -12
  150. package/dist/commands/proposal/validators/proposals.js +6 -8
  151. package/dist/commands/read/curate.js +78 -73
  152. package/dist/commands/read/knowledge.js +510 -13
  153. package/dist/commands/read/registry-search.js +2 -2
  154. package/dist/commands/read/remember-cli.js +84 -15
  155. package/dist/commands/read/search-cli.js +203 -96
  156. package/dist/commands/read/search.js +126 -94
  157. package/dist/commands/read/show.js +226 -250
  158. package/dist/commands/registry-cli.js +34 -60
  159. package/dist/commands/remember.js +18 -57
  160. package/dist/commands/sources/add-cli.js +104 -49
  161. package/dist/commands/sources/bundle-cli.js +166 -0
  162. package/dist/commands/sources/bundle-config-ops.js +63 -0
  163. package/dist/commands/sources/info.js +27 -15
  164. package/dist/commands/sources/init.js +30 -40
  165. package/dist/commands/sources/installed-stashes.js +469 -172
  166. package/dist/commands/sources/schema-repair.js +10 -9
  167. package/dist/commands/sources/self-update.js +182 -121
  168. package/dist/commands/sources/source-add.js +169 -178
  169. package/dist/commands/sources/source-clone.js +144 -41
  170. package/dist/commands/sources/source-manage.js +94 -59
  171. package/dist/commands/sources/sources-cli.js +64 -205
  172. package/dist/commands/sources/stash-cli.js +91 -54
  173. package/dist/commands/sources/stash-skeleton.js +1 -1
  174. package/dist/commands/tasks/tasks-cli.js +106 -104
  175. package/dist/commands/tasks/tasks.js +445 -262
  176. package/dist/commands/workflow-cli.js +75 -228
  177. package/dist/core/action-contributors.js +1 -1
  178. package/dist/core/activation-policy.js +49 -0
  179. package/dist/core/adapter/adapters/agent-skills-adapter.js +181 -0
  180. package/dist/core/adapter/adapters/akm-adapter.js +528 -0
  181. package/dist/core/adapter/adapters/akm-lint.js +392 -0
  182. package/dist/core/adapter/adapters/akm-metadata.js +387 -0
  183. package/dist/core/adapter/adapters/akm-task-adapter.js +149 -0
  184. package/dist/core/adapter/adapters/akm-workflow-adapter.js +180 -0
  185. package/dist/core/adapter/adapters/claude-adapter.js +61 -0
  186. package/dist/core/adapter/adapters/dotenv-adapter.js +187 -0
  187. package/dist/core/adapter/adapters/generic-files-adapter.js +119 -0
  188. package/dist/core/adapter/adapters/index.js +80 -0
  189. package/dist/core/adapter/adapters/llm-wiki-adapter.js +419 -0
  190. package/dist/core/adapter/adapters/okf-adapter.js +391 -0
  191. package/dist/core/adapter/adapters/opencode-adapter.js +68 -0
  192. package/dist/core/adapter/adapters/shared.js +286 -0
  193. package/dist/core/adapter/adapters/tool-dir-shared.js +217 -0
  194. package/dist/core/adapter/adapters/website-snapshot-adapter.js +155 -0
  195. package/dist/core/adapter/bundle-adapter.js +4 -0
  196. package/dist/core/adapter/detect-adapter.js +17 -0
  197. package/dist/core/adapter/recognize-match.js +44 -0
  198. package/dist/core/adapter/registry.js +56 -0
  199. package/dist/core/adapter/types.js +4 -0
  200. package/dist/core/asset/akm-markdown.js +30 -0
  201. package/dist/core/asset/asset-placement.js +243 -0
  202. package/dist/core/asset/asset-ref.js +110 -79
  203. package/dist/core/asset/asset-serialize.js +20 -0
  204. package/dist/core/asset/frontmatter.js +28 -12
  205. package/dist/core/asset/markdown.js +40 -51
  206. package/dist/core/asset/resolve-ref.js +274 -0
  207. package/dist/core/asset/stash-meta.js +2 -2
  208. package/dist/core/bundle-id.js +51 -0
  209. package/dist/core/common.js +281 -86
  210. package/dist/core/config/config-io.js +42 -128
  211. package/dist/core/config/config-schema.js +233 -855
  212. package/dist/core/config/config-sources.js +162 -39
  213. package/dist/core/config/config-types.js +16 -11
  214. package/dist/core/config/config-version.js +29 -0
  215. package/dist/core/config/config-walker.js +126 -37
  216. package/dist/core/config/config.js +154 -331
  217. package/dist/core/config/deep-merge.js +41 -0
  218. package/dist/core/config/engine-semantics.js +28 -0
  219. package/dist/core/config/experimental.js +21 -0
  220. package/dist/core/config/schema/embedding.js +38 -0
  221. package/dist/core/config/schema/engines.js +116 -0
  222. package/dist/core/config/schema/experimental.js +47 -0
  223. package/dist/core/config/schema/feedback.js +31 -0
  224. package/dist/core/config/schema/improve-processes.js +389 -0
  225. package/dist/core/config/schema/improve.js +94 -0
  226. package/dist/core/config/schema/index-config.js +176 -0
  227. package/dist/core/config/schema/output.js +18 -0
  228. package/dist/core/config/schema/primitives.js +94 -0
  229. package/dist/core/config/schema/search.js +30 -0
  230. package/dist/core/config/schema/setup.js +18 -0
  231. package/dist/core/config/schema/sources-bundles.js +169 -0
  232. package/dist/core/config/schema/workflow.js +29 -0
  233. package/dist/core/env-secret-ref.js +155 -20
  234. package/dist/core/errors.js +17 -15
  235. package/dist/core/events-types.js +4 -0
  236. package/dist/core/events.js +46 -128
  237. package/dist/core/extra-params.js +62 -0
  238. package/dist/core/file-change.js +17 -0
  239. package/dist/core/file-lock.js +202 -57
  240. package/dist/core/fs-txn.js +392 -0
  241. package/dist/core/git-message.js +59 -0
  242. package/dist/core/improve-result.js +167 -0
  243. package/dist/core/lesson-lint.js +1 -17
  244. package/dist/core/logs-db.js +1 -1
  245. package/dist/core/maintenance-barrier.js +135 -0
  246. package/dist/core/migration-operation.js +44 -0
  247. package/dist/core/mutation-target.js +78 -0
  248. package/dist/core/paths.js +22 -25
  249. package/dist/core/platform.js +10 -0
  250. package/dist/core/recognition-util.js +128 -0
  251. package/dist/core/redaction.js +392 -0
  252. package/dist/core/standards/resolve-standards-context.js +36 -65
  253. package/dist/core/standards/resolve-stash-standards.js +2 -2
  254. package/dist/core/standards/resolve-type-conventions.js +5 -5
  255. package/dist/core/state/migrations.js +242 -11
  256. package/dist/core/state-db.js +98 -10
  257. package/dist/core/structured.js +1 -1
  258. package/dist/core/subprocess.js +303 -0
  259. package/dist/core/text-truncation.js +9 -5
  260. package/dist/core/time.js +20 -0
  261. package/dist/core/type-presentation.js +130 -0
  262. package/dist/core/warn.js +0 -3
  263. package/dist/core/write-source.js +834 -118
  264. package/dist/indexer/bundle-identity-guard.js +92 -0
  265. package/dist/indexer/db/graph-db.js +1 -25
  266. package/dist/indexer/db/llm-cache.js +1 -1
  267. package/dist/indexer/ensure-index.js +30 -9
  268. package/dist/indexer/graph/graph-boost.js +9 -30
  269. package/dist/indexer/graph/graph-extraction.js +41 -27
  270. package/dist/indexer/graph/graph-types.js +4 -0
  271. package/dist/indexer/index-writer-lock.js +93 -49
  272. package/dist/indexer/index-written-assets.js +100 -53
  273. package/dist/indexer/indexer.js +746 -329
  274. package/dist/indexer/init.js +18 -25
  275. package/dist/indexer/installations.js +142 -0
  276. package/dist/indexer/passes/dir-staleness.js +18 -10
  277. package/dist/indexer/passes/memory-inference.js +25 -15
  278. package/dist/indexer/passes/metadata.js +412 -243
  279. package/dist/indexer/scan/doc-to-entry.js +160 -0
  280. package/dist/indexer/scan/drain-dir.js +134 -0
  281. package/dist/indexer/search/db-search.js +292 -108
  282. package/dist/indexer/search/fts-query.js +64 -0
  283. package/dist/indexer/search/ranking-contributors.js +145 -25
  284. package/dist/indexer/search/ranking-types.js +4 -0
  285. package/dist/indexer/search/ranking.js +28 -71
  286. package/dist/indexer/search/search-attribution.js +67 -0
  287. package/dist/indexer/search/search-fields.js +18 -3
  288. package/dist/indexer/search/search-hit-enrichers.js +30 -40
  289. package/dist/indexer/search/search-source.js +157 -111
  290. package/dist/indexer/search/semantic-status.js +4 -1
  291. package/dist/indexer/usage/usage-events.js +10 -30
  292. package/dist/indexer/walk/file-context.js +3 -45
  293. package/dist/indexer/walk/matchers.js +42 -73
  294. package/dist/indexer/walk/path-resolver.js +11 -5
  295. package/dist/indexer/walk/walker.js +42 -14
  296. package/dist/integrations/agent/builder-shared.js +7 -0
  297. package/dist/integrations/agent/builders.js +5 -58
  298. package/dist/integrations/agent/config.js +3 -143
  299. package/dist/integrations/agent/detect.js +17 -2
  300. package/dist/integrations/agent/engine-resolution.js +231 -0
  301. package/dist/integrations/agent/index.js +1 -2
  302. package/dist/integrations/agent/model-aliases.js +8 -3
  303. package/dist/integrations/agent/profiles.js +6 -99
  304. package/dist/integrations/agent/prompts.js +46 -18
  305. package/dist/integrations/agent/runner-dispatch.js +78 -13
  306. package/dist/integrations/agent/runner.js +76 -208
  307. package/dist/integrations/agent/spawn.js +48 -279
  308. package/dist/integrations/harnesses/aider/agent-builder.js +9 -8
  309. package/dist/integrations/harnesses/aider/index.js +2 -12
  310. package/dist/integrations/harnesses/amazonq/agent-builder.js +10 -16
  311. package/dist/integrations/harnesses/amazonq/index.js +3 -17
  312. package/dist/integrations/harnesses/claude/agent-builder.js +2 -3
  313. package/dist/integrations/harnesses/claude/config-import.js +1 -3
  314. package/dist/integrations/harnesses/claude/index.js +1 -14
  315. package/dist/integrations/harnesses/claude/session-log.js +27 -75
  316. package/dist/integrations/harnesses/codex/agent-builder.js +8 -7
  317. package/dist/integrations/harnesses/codex/index.js +2 -13
  318. package/dist/integrations/harnesses/copilot/agent-builder.js +9 -9
  319. package/dist/integrations/harnesses/copilot/index.js +1 -13
  320. package/dist/integrations/harnesses/gemini/agent-builder.js +8 -9
  321. package/dist/integrations/harnesses/gemini/index.js +1 -13
  322. package/dist/integrations/harnesses/ids.js +24 -0
  323. package/dist/integrations/harnesses/index.js +31 -33
  324. package/dist/integrations/harnesses/opencode/agent-builder.js +23 -5
  325. package/dist/integrations/harnesses/opencode/config-import.js +1 -3
  326. package/dist/integrations/harnesses/opencode/index.js +1 -18
  327. package/dist/integrations/harnesses/opencode/session-log.js +67 -125
  328. package/dist/integrations/harnesses/opencode-sdk/harness.js +3 -17
  329. package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +274 -191
  330. package/dist/integrations/harnesses/openhands/agent-builder.js +12 -10
  331. package/dist/integrations/harnesses/openhands/index.js +2 -12
  332. package/dist/integrations/harnesses/pi/agent-builder.js +11 -18
  333. package/dist/integrations/harnesses/pi/index.js +3 -16
  334. package/dist/integrations/harnesses/shared.js +17 -0
  335. package/dist/integrations/harnesses/types.js +38 -34
  336. package/dist/integrations/lockfile.js +211 -24
  337. package/dist/integrations/session-logs/index.js +24 -40
  338. package/dist/integrations/session-logs/provider-base.js +113 -0
  339. package/dist/llm/client.js +182 -110
  340. package/dist/llm/embedders/deterministic.js +2 -2
  341. package/dist/llm/embedders/remote.js +21 -9
  342. package/dist/llm/feature-gate.js +17 -57
  343. package/dist/llm/graph-extract.js +12 -13
  344. package/dist/llm/index-passes.js +8 -42
  345. package/dist/llm/memory-infer.js +144 -1
  346. package/dist/llm/metadata-enhance.js +45 -30
  347. package/dist/llm/structured-call.js +16 -8
  348. package/dist/llm/usage-persist.js +30 -5
  349. package/dist/llm/usage-telemetry.js +59 -6
  350. package/dist/output/cli-hints.js +1 -2
  351. package/dist/output/command-registry.js +27 -0
  352. package/dist/output/context.js +22 -7
  353. package/dist/output/format-exempt.js +80 -0
  354. package/dist/output/generic-render.js +251 -0
  355. package/dist/output/html-render.js +11 -16
  356. package/dist/output/render-registry.js +57 -0
  357. package/dist/output/renderers.js +15 -281
  358. package/dist/output/shapes/curate.js +10 -1
  359. package/dist/output/shapes/events.js +12 -7
  360. package/dist/output/shapes/helpers.js +58 -84
  361. package/dist/output/shapes/passthrough.js +8 -40
  362. package/dist/output/shapes/proposal/producer.js +15 -7
  363. package/dist/output/shapes/registry.js +12 -6
  364. package/dist/output/shapes.js +0 -9
  365. package/dist/output/text/{init.js → bundle-create.js} +3 -1
  366. package/dist/output/text/bundle-show.js +7 -0
  367. package/dist/output/text/command-format.js +562 -0
  368. package/dist/output/text/env.js +1 -3
  369. package/dist/output/text/events.js +8 -7
  370. package/dist/output/text/helpers.js +15 -1375
  371. package/dist/output/text/proposal/producer.js +4 -2
  372. package/dist/output/text/proposal-format.js +202 -0
  373. package/dist/output/text/registry-commands.js +1 -2
  374. package/dist/output/text/registry.js +12 -6
  375. package/dist/output/text/show-directives.js +117 -0
  376. package/dist/output/text/show-format.js +103 -0
  377. package/dist/output/text/sync.js +5 -0
  378. package/dist/output/text/workflow-format.js +332 -0
  379. package/dist/output/text/workflow.js +1 -2
  380. package/dist/output/text.js +10 -19
  381. package/dist/registry/factory.js +4 -6
  382. package/dist/registry/origin-resolve.js +16 -27
  383. package/dist/registry/providers/skills-sh.js +3 -3
  384. package/dist/registry/providers/static-index.js +15 -25
  385. package/dist/registry/resolve.js +43 -94
  386. package/dist/registry/semver.js +43 -0
  387. package/dist/runtime.js +81 -12
  388. package/dist/scripts/akm-migrate.js +35529 -0
  389. package/dist/setup/detect.js +5 -7
  390. package/dist/setup/detected-engines.js +136 -0
  391. package/dist/setup/engine-config.js +100 -0
  392. package/dist/setup/registry-stash-loader.js +3 -3
  393. package/dist/setup/semantic-assets.js +12 -9
  394. package/dist/setup/setup.js +444 -208
  395. package/dist/setup/steps/connection-shared.js +120 -0
  396. package/dist/setup/steps/connection.js +108 -305
  397. package/dist/setup/steps/platforms.js +13 -12
  398. package/dist/setup/steps/semantic.js +15 -3
  399. package/dist/setup/steps/sources.js +21 -15
  400. package/dist/setup/steps/stashdir.js +6 -4
  401. package/dist/setup/steps/tasks.js +236 -119
  402. package/dist/setup/steps.js +3 -2
  403. package/dist/sources/freshness.js +39 -0
  404. package/dist/sources/provider-factory.js +11 -17
  405. package/dist/sources/providers/filesystem.js +2 -3
  406. package/dist/sources/providers/git-install.js +278 -34
  407. package/dist/sources/providers/git-provider.js +54 -56
  408. package/dist/sources/providers/git-stash.js +420 -91
  409. package/dist/sources/providers/git.js +2 -2
  410. package/dist/sources/providers/npm.js +16 -19
  411. package/dist/sources/providers/provider-utils.js +47 -22
  412. package/dist/sources/providers/sync-from-ref.js +3 -9
  413. package/dist/sources/providers/website.js +2 -2
  414. package/dist/sources/resolve.js +11 -10
  415. package/dist/sources/snapshot-fetchers/types.js +4 -0
  416. package/dist/sources/{website-ingest.js → snapshot-fetchers/website-ingest.js} +110 -41
  417. package/dist/storage/database.js +60 -4
  418. package/dist/storage/engines/sqlite-migrations.js +156 -5
  419. package/dist/storage/locations.js +1 -2
  420. package/dist/storage/repositories/canaries-repository.js +1 -1
  421. package/dist/storage/repositories/events-repository.js +51 -11
  422. package/dist/storage/repositories/improve-runs-repository.js +6 -32
  423. package/dist/storage/repositories/index-connection.js +79 -0
  424. package/dist/storage/repositories/index-db.js +4 -3
  425. package/dist/storage/repositories/index-entries-repository.js +863 -0
  426. package/dist/{indexer/db/entry-mapper.js → storage/repositories/index-entry-mapper.js} +19 -2
  427. package/dist/storage/repositories/index-entry-types.js +4 -0
  428. package/dist/storage/repositories/index-fts-repository.js +167 -0
  429. package/dist/storage/repositories/index-llm-cache-repository.js +108 -0
  430. package/dist/storage/repositories/index-meta-repository.js +49 -0
  431. package/dist/{indexer/db/schema.js → storage/repositories/index-schema.js} +226 -100
  432. package/dist/storage/repositories/index-sql.js +12 -0
  433. package/dist/storage/repositories/index-utility-repository.js +356 -0
  434. package/dist/storage/repositories/index-vec-repository.js +250 -0
  435. package/dist/storage/repositories/outcome-repository.js +119 -0
  436. package/dist/storage/repositories/proposals-repository.js +317 -75
  437. package/dist/storage/repositories/registry-cache.js +1 -1
  438. package/dist/storage/repositories/salience-repository.js +172 -0
  439. package/dist/storage/repositories/task-history-repository.js +110 -3
  440. package/dist/storage/repositories/workflow-runs-repository.js +68 -35
  441. package/dist/tasks/backends/cron.js +169 -46
  442. package/dist/tasks/backends/exec-utils.js +76 -3
  443. package/dist/tasks/backends/index.js +6 -9
  444. package/dist/tasks/backends/launchd.js +292 -55
  445. package/dist/tasks/backends/schtasks.js +557 -70
  446. package/dist/tasks/backends/types.js +4 -0
  447. package/dist/tasks/command-executable.js +93 -0
  448. package/dist/tasks/embedded.js +56 -38
  449. package/dist/tasks/parser.js +156 -64
  450. package/dist/tasks/resolve-akm-bin.js +144 -51
  451. package/dist/tasks/runner.js +377 -209
  452. package/dist/tasks/schedule.js +108 -19
  453. package/dist/tasks/scheduler-invocation.js +296 -0
  454. package/dist/tasks/schema.js +1 -1
  455. package/dist/tasks/task-id.js +35 -0
  456. package/dist/tasks/validator.js +30 -16
  457. package/dist/workflows/authoring/authoring.js +96 -148
  458. package/dist/workflows/authoring/scope-key.js +1 -1
  459. package/dist/workflows/cli.js +0 -20
  460. package/dist/workflows/concurrency-policy.js +15 -0
  461. package/dist/workflows/exec/brief.js +25 -59
  462. package/dist/workflows/exec/frozen-judge.js +47 -0
  463. package/dist/workflows/exec/native-executor.js +157 -94
  464. package/dist/workflows/exec/report.js +365 -200
  465. package/dist/workflows/exec/run-workflow.js +46 -40
  466. package/dist/workflows/exec/scheduler.js +12 -41
  467. package/dist/workflows/exec/step-work.js +239 -205
  468. package/dist/workflows/exec/workflow-engine-gate.js +67 -0
  469. package/dist/workflows/ir/compile.js +141 -283
  470. package/dist/workflows/ir/freeze.js +233 -0
  471. package/dist/workflows/ir/plan-hash.js +40 -5
  472. package/dist/workflows/ir/schema.js +537 -1
  473. package/dist/workflows/parser.js +878 -306
  474. package/dist/workflows/program/expressions.js +20 -208
  475. package/dist/workflows/program/schema.js +7 -10
  476. package/dist/workflows/renderer.js +99 -121
  477. package/dist/workflows/resource-limits.js +22 -0
  478. package/dist/workflows/runtime/checkin.js +1 -1
  479. package/dist/workflows/runtime/plan-classifier.js +131 -0
  480. package/dist/workflows/runtime/runs.js +200 -113
  481. package/dist/workflows/runtime/unit-checkin.js +1 -1
  482. package/dist/workflows/runtime/unit-phases.js +20 -0
  483. package/dist/workflows/runtime/workflow-asset-loader.js +235 -97
  484. package/dist/workflows/schema.js +1 -11
  485. package/dist/workflows/validate-summary.js +4 -26
  486. package/dist/workflows/validator.js +52 -30
  487. package/docs/README.md +42 -78
  488. package/docs/migration/README.md +8 -0
  489. package/docs/migration/release-notes/0.6.0.md +1 -1
  490. package/docs/migration/release-notes/0.7.0.md +9 -8
  491. package/docs/migration/release-notes/0.9.0.md +158 -14
  492. package/docs/migration/v0.7-to-v0.8.md +46 -47
  493. package/docs/migration/v0.8-to-v0.9.md +844 -0
  494. package/docs/reference/README.md +12 -0
  495. package/docs/reference/data-and-telemetry.md +333 -0
  496. package/package.json +21 -17
  497. package/schemas/akm-asset-envelope.json +93 -0
  498. package/schemas/akm-config.json +4636 -0
  499. package/schemas/akm-task.json +87 -0
  500. package/{dist/schemas → schemas}/akm-workflow.json +127 -82
  501. package/dist/akm-migrate-storage +0 -38
  502. package/dist/assets/help/help-accept.md +0 -12
  503. package/dist/assets/help/help-improve.md +0 -84
  504. package/dist/assets/help/help-proposals.md +0 -17
  505. package/dist/assets/help/help-propose.md +0 -17
  506. package/dist/assets/help/help-reject.md +0 -11
  507. package/dist/assets/profiles/frequent.json +0 -13
  508. package/dist/assets/profiles/recombine-only.json +0 -21
  509. package/dist/assets/profiles/reflect-distill.json +0 -30
  510. package/dist/assets/profiles/synthesize.json +0 -15
  511. package/dist/assets/prompts/procedural-system.md +0 -44
  512. package/dist/assets/prompts/recombine-system.md +0 -40
  513. package/dist/assets/prompts/staleness-detect-system.md +0 -6
  514. package/dist/assets/tasks/core/backup.yml +0 -4
  515. package/dist/assets/tasks/graph-refresh-weekly.yml +0 -10
  516. package/dist/assets/templates/html/default.html +0 -78
  517. package/dist/assets/templates/html/vendor/echarts.min.js +0 -45
  518. package/dist/assets/wiki/index-template.md +0 -12
  519. package/dist/assets/wiki/ingest-workflow-template.md +0 -83
  520. package/dist/assets/wiki/log-template.md +0 -8
  521. package/dist/assets/wiki/schema-template.md +0 -61
  522. package/dist/cli/config-migrate.js +0 -150
  523. package/dist/cli/config-validate.js +0 -39
  524. package/dist/commands/graph/graph-cli.js +0 -124
  525. package/dist/commands/graph/graph.js +0 -487
  526. package/dist/commands/improve/calibration.js +0 -161
  527. package/dist/commands/improve/dedup.js +0 -482
  528. package/dist/commands/improve/extract-watch.js +0 -140
  529. package/dist/commands/improve/hot-probation.js +0 -45
  530. package/dist/commands/improve/improve-auto-accept.js +0 -276
  531. package/dist/commands/improve/improve-profiles.js +0 -168
  532. package/dist/commands/improve/procedural.js +0 -398
  533. package/dist/commands/improve/recombine.js +0 -818
  534. package/dist/commands/improve/schema-similarity-gate.js +0 -168
  535. package/dist/commands/lint/agent-linter.js +0 -44
  536. package/dist/commands/lint/command-linter.js +0 -44
  537. package/dist/commands/lint/default-linter.js +0 -16
  538. package/dist/commands/lint/fact-linter.js +0 -39
  539. package/dist/commands/lint/knowledge-linter.js +0 -16
  540. package/dist/commands/lint/memory-linter.js +0 -61
  541. package/dist/commands/lint/registry.js +0 -41
  542. package/dist/commands/lint/skill-linter.js +0 -45
  543. package/dist/commands/lint/task-linter.js +0 -50
  544. package/dist/commands/lint/workflow-linter.js +0 -81
  545. package/dist/commands/proposal/legacy-import.js +0 -115
  546. package/dist/commands/sources/history.js +0 -196
  547. package/dist/commands/tasks/default-tasks.js +0 -186
  548. package/dist/commands/wiki-cli.js +0 -292
  549. package/dist/core/asset/asset-registry.js +0 -76
  550. package/dist/core/asset/asset-spec.js +0 -316
  551. package/dist/core/config/config-migration.js +0 -602
  552. package/dist/core/deep-merge.js +0 -38
  553. package/dist/core/eval/rank-metrics.js +0 -113
  554. package/dist/core/ripgrep/install.js +0 -163
  555. package/dist/core/ripgrep/resolve.js +0 -81
  556. package/dist/indexer/db/db.js +0 -1414
  557. package/dist/indexer/manifest.js +0 -170
  558. package/dist/indexer/passes/metadata-contributors.js +0 -31
  559. package/dist/indexer/usage/unmigrated-vaults-guard.js +0 -94
  560. package/dist/integrations/harnesses/opencode-sdk/index.js +0 -25
  561. package/dist/llm/call-ai.js +0 -62
  562. package/dist/llm/memory-infer-impl.js +0 -138
  563. package/dist/output/shapes/distill.js +0 -14
  564. package/dist/output/shapes/history.js +0 -11
  565. package/dist/output/text/distill.js +0 -6
  566. package/dist/output/text/enable-disable.js +0 -8
  567. package/dist/output/text/history.js +0 -6
  568. package/dist/output/text/wiki.js +0 -16
  569. package/dist/registry/build-index.js +0 -386
  570. package/dist/schemas/akm-config.json +0 -14225
  571. package/dist/scripts/migrate-storage.js +0 -13169
  572. package/dist/scripts/migrations/import-fs-improve-runs-to-db.js +0 -10169
  573. package/dist/scripts/migrations/v16-to-v17.js +0 -141
  574. package/dist/setup/legacy-config.js +0 -106
  575. package/dist/storage/repositories/consolidation-repository.js +0 -38
  576. package/dist/storage/repositories/recombine-repository.js +0 -213
  577. package/dist/wiki/wiki-templates.js +0 -15
  578. package/dist/wiki/wiki.js +0 -1012
  579. package/dist/workflows/authoring/workflow-program-template.yaml +0 -31
  580. package/dist/workflows/db.js +0 -350
  581. package/dist/workflows/exec/watch.js +0 -116
  582. package/dist/workflows/program/parser.js +0 -760
  583. package/dist/workflows/program/project.js +0 -105
  584. package/docs/data-and-telemetry.md +0 -227
  585. package/docs/migration/release-notes/0.9.0-beta.60.md +0 -19
  586. /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/registry.js +0 -0
  587. /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/youtube.js +0 -0
@@ -1,9 +1,9 @@
1
1
  // This Source Code Form is subject to the terms of the Mozilla Public
2
2
  // License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  // file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
- import { parseAssetRef } from "../../core/asset/asset-ref.js";
5
4
  import { assembleAsset } from "../../core/asset/asset-serialize.js";
6
5
  import { parseFrontmatter } from "../../core/asset/frontmatter.js";
6
+ import { parseRefInput } from "../../core/asset/resolve-ref.js";
7
7
  function hasNonEmptyList(value) {
8
8
  return Array.isArray(value) && value.some((item) => typeof item === "string" && item.trim().length > 0);
9
9
  }
@@ -43,11 +43,17 @@ function deriveDescription(body, description) {
43
43
  ?.slice(0, 160);
44
44
  }
45
45
  export function deriveKnowledgeRef(inputRef) {
46
- const parsed = parseAssetRef(inputRef);
47
- return `knowledge:${parsed.name}`;
46
+ const parsed = parseRefInput(inputRef);
47
+ const leaf = parsed.name.split("/").filter(Boolean).at(-1) ?? parsed.name;
48
+ const safe = leaf
49
+ .toLowerCase()
50
+ .replace(/[^a-z0-9-]+/g, "-")
51
+ .replace(/-+/g, "-")
52
+ .replace(/^-|-$/g, "");
53
+ return `knowledge/${safe}`;
48
54
  }
49
55
  function collectPromotionFeatures(input) {
50
- const parsed = parseAssetRef(input.inputRef);
56
+ const parsed = parseRefInput(input.inputRef);
51
57
  const blockedBy = [];
52
58
  if (parsed.type !== "memory") {
53
59
  return { blockedBy: ["not-memory"] };
@@ -112,14 +118,14 @@ function buildKnowledgeContent(input) {
112
118
  const body = parsedContent.content.trim();
113
119
  const description = typeof fm.description === "string" ? fm.description.trim() : undefined;
114
120
  const normalizedDescription = deriveDescription(body, description);
115
- const sources = [input.inputRef];
121
+ const xrefs = [input.inputRef];
116
122
  if (typeof fm.source === "string" && fm.source.trim())
117
- sources.push(fm.source.trim());
123
+ xrefs.push(fm.source.trim());
118
124
  const knowledgeFrontmatter = {
119
125
  ...(normalizedDescription ? { description: normalizedDescription } : {}),
120
126
  ...(Array.isArray(fm.tags) ? { tags: fm.tags } : {}),
121
127
  ...(typeof fm.observed_at === "string" && fm.observed_at.trim() ? { observed_at: fm.observed_at.trim() } : {}),
122
- sources,
128
+ xrefs,
123
129
  };
124
130
  return assembleAsset(knowledgeFrontmatter, body);
125
131
  }
@@ -288,56 +294,6 @@ export function evaluateMemoryPromotionBenchmark(cases, policy = DEFAULT_PROMOTI
288
294
  })),
289
295
  };
290
296
  }
291
- const CANDIDATE_MODELS = [
292
- {
293
- name: "balanced-evidence",
294
- positiveWeight: 0.8,
295
- repeatedPositiveWeight: 0.65,
296
- noPositivePenalty: 0.9,
297
- singlePositivePenalty: 0.7,
298
- negativeWeight: 2.0,
299
- curatedWeight: 0.55,
300
- confidenceWeight: 0.7,
301
- sourceWeight: 0.4,
302
- observedAtWeight: 0.4,
303
- descriptionWeight: 0.2,
304
- tagWeight: 0.15,
305
- substantiveBodyWeight: 0.15,
306
- tentativePenalty: 1.1,
307
- },
308
- {
309
- name: "strict-feedback",
310
- positiveWeight: 0.75,
311
- repeatedPositiveWeight: 0.8,
312
- noPositivePenalty: 1.1,
313
- singlePositivePenalty: 0.9,
314
- negativeWeight: 2.25,
315
- curatedWeight: 0.45,
316
- confidenceWeight: 0.55,
317
- sourceWeight: 0.35,
318
- observedAtWeight: 0.35,
319
- descriptionWeight: 0.15,
320
- tagWeight: 0.1,
321
- substantiveBodyWeight: 0.1,
322
- tentativePenalty: 1.15,
323
- },
324
- {
325
- name: "metadata-friendly",
326
- positiveWeight: 0.7,
327
- repeatedPositiveWeight: 0.55,
328
- noPositivePenalty: 0.75,
329
- singlePositivePenalty: 0.55,
330
- negativeWeight: 1.85,
331
- curatedWeight: 0.75,
332
- confidenceWeight: 0.9,
333
- sourceWeight: 0.5,
334
- observedAtWeight: 0.5,
335
- descriptionWeight: 0.25,
336
- tagWeight: 0.2,
337
- substantiveBodyWeight: 0.2,
338
- tentativePenalty: 1.0,
339
- },
340
- ];
341
297
  function thresholdCandidates() {
342
298
  const values = [];
343
299
  for (let value = 2.4; value <= 4.2; value += 0.2) {
@@ -416,12 +372,12 @@ const METADATA_BASELINE = {
416
372
  };
417
373
  },
418
374
  };
419
- export function selectPromotionPolicy(corpus) {
375
+ export function selectPromotionPolicy(corpus, candidates) {
420
376
  const trainingCases = corpus.filter((testCase) => (testCase.split ?? "train") === "train");
421
377
  const heldOutCases = corpus.filter((testCase) => (testCase.split ?? "train") === "heldout");
422
378
  let bestPolicy;
423
379
  let bestTraining;
424
- for (const model of CANDIDATE_MODELS) {
380
+ for (const model of candidates) {
425
381
  for (const threshold of thresholdCandidates()) {
426
382
  const policy = {
427
383
  name: model.name,
@@ -478,842 +434,31 @@ export function selectPromotionPolicy(corpus) {
478
434
  strictlyBeatsBaselines,
479
435
  };
480
436
  }
481
- // Frozen module-load selection. The promotion policy's selected model was
482
- // historically computed by running `selectPromotionPolicy` over a large
483
- // hardcoded benchmark corpus at import time (a full grid search on every module
484
- // load). That corpus and the grid search now live in the bench test
485
- // (tests/commands/distill/distill-promotion-policy.bench.test.ts), which
486
- // re-runs `selectPromotionPolicy(DEFAULT_PROMOTION_POLICY_CORPUS)` and asserts
487
- // deep equality with this constant so the freeze stays honest.
488
437
  export const DEFAULT_PROMOTION_POLICY_SELECTION = {
489
- corpusSize: 21,
490
- trainingSize: 14,
491
- heldOutSize: 7,
492
438
  selectedModel: {
493
439
  name: "balanced-evidence",
494
- threshold: 3.8,
495
- },
496
- training: {
497
- total: 14,
498
- correct: 13,
499
- falsePositives: 1,
500
- falseNegatives: 0,
501
- accuracy: 0.9285714285714286,
502
- precision: 0.8333333333333334,
503
- recall: 1,
504
- f1: 0.9090909090909091,
505
- truePositives: 5,
506
- trueNegatives: 8,
507
- netOutcomeScore: 11,
508
- capturedPromoteValue: 15,
509
- preventedFalsePromotionCost: 33,
510
- results: [
511
- {
512
- name: "deploy-vpn-required",
513
- expectPromote: true,
514
- assessment: {
515
- applicable: true,
516
- promote: true,
517
- score: 4.250000000000001,
518
- threshold: 3.8,
519
- knowledgeRef: "knowledge:deploy-vpn-required",
520
- content: "---\ndescription: VPN required before deploy\ntags:\n - deploy\n - ops\nobserved_at: 2026-04-20\nsources:\n - memory:deploy-vpn-required\n - skill:deploy\n---\n\nAlways connect the VPN before starting production deploys.\n",
521
- blockedBy: [],
522
- positiveSignals: [
523
- "2 positive feedback events",
524
- "repeated reinforcement",
525
- "strong confidence",
526
- "linked source",
527
- "observed_at present",
528
- "description present",
529
- "tagged memory",
530
- "substantive body",
531
- ],
532
- negativeSignals: [],
533
- modelName: "balanced-evidence",
534
- },
535
- passed: true,
536
- },
537
- {
538
- name: "release-smoke-test",
539
- expectPromote: true,
540
- assessment: {
541
- applicable: true,
542
- promote: true,
543
- score: 5.240000000000002,
544
- threshold: 3.8,
545
- knowledgeRef: "knowledge:release-smoke-test",
546
- content: "---\ndescription: Smoke test gates release\nobserved_at: 2026-04-18\nsources:\n - memory:release-smoke-test\n - skill:release\n---\n\nRun the smoke test before tagging a release candidate.\n",
547
- blockedBy: [],
548
- positiveSignals: [
549
- "3 positive feedback events",
550
- "repeated reinforcement",
551
- "curated quality",
552
- "strong confidence",
553
- "linked source",
554
- "observed_at present",
555
- "description present",
556
- "substantive body",
557
- ],
558
- negativeSignals: [],
559
- modelName: "balanced-evidence",
560
- },
561
- passed: true,
562
- },
563
- {
564
- name: "kubernetes-rollout-check",
565
- expectPromote: true,
566
- assessment: {
567
- applicable: true,
568
- promote: true,
569
- score: 4.250000000000001,
570
- threshold: 3.8,
571
- knowledgeRef: "knowledge:kubernetes-rollout-check",
572
- content: "---\ndescription: Verify rollout status after apply\ntags:\n - k8s\nobserved_at: 2026-04-15\nsources:\n - memory:kubernetes-rollout-check\n - skill:k8s\n---\n\nCheck rollout status after kubectl apply before declaring success.\n",
573
- blockedBy: [],
574
- positiveSignals: [
575
- "2 positive feedback events",
576
- "repeated reinforcement",
577
- "strong confidence",
578
- "linked source",
579
- "observed_at present",
580
- "description present",
581
- "tagged memory",
582
- "substantive body",
583
- ],
584
- negativeSignals: [],
585
- modelName: "balanced-evidence",
586
- },
587
- passed: true,
588
- },
589
- {
590
- name: "incident-channel-rule",
591
- expectPromote: true,
592
- assessment: {
593
- applicable: true,
594
- promote: true,
595
- score: 5.450000000000002,
596
- threshold: 3.8,
597
- knowledgeRef: "knowledge:incident-channel-rule",
598
- content: "---\ndescription: Incident bridge stays single-threaded\nobserved_at: 2026-04-12\nsources:\n - memory:incident-channel-rule\n - skill:incident\n---\n\nKeep one operator narrating decisions in the incident bridge to avoid conflicting instructions.\n",
599
- blockedBy: [],
600
- positiveSignals: [
601
- "3 positive feedback events",
602
- "repeated reinforcement",
603
- "curated quality",
604
- "strong confidence",
605
- "linked source",
606
- "observed_at present",
607
- "description present",
608
- "substantive body",
609
- ],
610
- negativeSignals: [],
611
- modelName: "balanced-evidence",
612
- },
613
- passed: true,
614
- },
615
- {
616
- name: "weak-single-signal",
617
- expectPromote: false,
618
- assessment: {
619
- applicable: true,
620
- promote: false,
621
- score: 2.1,
622
- threshold: 3.8,
623
- knowledgeRef: "knowledge:weak-single-signal",
624
- blockedBy: [],
625
- positiveSignals: [
626
- "1 positive feedback event",
627
- "strong confidence",
628
- "linked source",
629
- "observed_at present",
630
- "description present",
631
- "tagged memory",
632
- "substantive body",
633
- ],
634
- negativeSignals: ["only one reinforcing feedback event"],
635
- modelName: "balanced-evidence",
636
- },
637
- passed: true,
638
- },
639
- {
640
- name: "contested-fact",
641
- expectPromote: false,
642
- assessment: {
643
- applicable: true,
644
- promote: false,
645
- score: 2.65,
646
- threshold: 3.8,
647
- knowledgeRef: "knowledge:contested-fact",
648
- blockedBy: [],
649
- positiveSignals: [
650
- "2 positive feedback events",
651
- "repeated reinforcement",
652
- "curated quality",
653
- "strong confidence",
654
- "linked source",
655
- "observed_at present",
656
- "description present",
657
- "substantive body",
658
- ],
659
- negativeSignals: ["1 negative feedback event"],
660
- modelName: "balanced-evidence",
661
- },
662
- passed: true,
663
- },
664
- {
665
- name: "tentative-fact",
666
- expectPromote: false,
667
- assessment: {
668
- applicable: true,
669
- promote: false,
670
- score: 3.0000000000000004,
671
- threshold: 3.8,
672
- knowledgeRef: "knowledge:tentative-fact",
673
- blockedBy: [],
674
- positiveSignals: [
675
- "2 positive feedback events",
676
- "repeated reinforcement",
677
- "strong confidence",
678
- "linked source",
679
- "observed_at present",
680
- "description present",
681
- "substantive body",
682
- ],
683
- negativeSignals: ["tentative language"],
684
- modelName: "balanced-evidence",
685
- },
686
- passed: true,
687
- },
688
- {
689
- name: "subjective-preference",
690
- expectPromote: false,
691
- assessment: {
692
- applicable: true,
693
- promote: false,
694
- score: 0,
695
- threshold: 3.8,
696
- knowledgeRef: "knowledge:subjective-preference",
697
- blockedBy: ["subjective-memory"],
698
- positiveSignals: [],
699
- negativeSignals: [],
700
- modelName: "balanced-evidence",
701
- },
702
- passed: true,
703
- },
704
- {
705
- name: "feedback-conflict",
706
- expectPromote: false,
707
- assessment: {
708
- applicable: true,
709
- promote: true,
710
- score: 4.1000000000000005,
711
- threshold: 3.8,
712
- knowledgeRef: "knowledge:feedback-conflict",
713
- content: "---\ndescription: VPN required before deploy\nobserved_at: 2026-04-20\nsources:\n - memory:feedback-conflict\n - skill:deploy\n---\n\nAlways connect the VPN before starting production deploys.\n",
714
- blockedBy: [],
715
- positiveSignals: [
716
- "2 positive feedback events",
717
- "repeated reinforcement",
718
- "strong confidence",
719
- "linked source",
720
- "observed_at present",
721
- "description present",
722
- "substantive body",
723
- ],
724
- negativeSignals: [],
725
- modelName: "balanced-evidence",
726
- },
727
- passed: false,
728
- },
729
- {
730
- name: "derived-memory",
731
- expectPromote: false,
732
- assessment: {
733
- applicable: true,
734
- promote: false,
735
- score: 3.7,
736
- threshold: 3.8,
737
- knowledgeRef: "knowledge:derived-memory",
738
- blockedBy: [],
739
- positiveSignals: [
740
- "2 positive feedback events",
741
- "repeated reinforcement",
742
- "strong confidence",
743
- "linked source",
744
- "description present",
745
- "substantive body",
746
- ],
747
- negativeSignals: [],
748
- modelName: "balanced-evidence",
749
- },
750
- passed: true,
751
- },
752
- {
753
- name: "staging-cutover-order",
754
- expectPromote: true,
755
- assessment: {
756
- applicable: true,
757
- promote: true,
758
- score: 4.840000000000001,
759
- threshold: 3.8,
760
- knowledgeRef: "knowledge:staging-cutover-order",
761
- content: "---\ndescription: Cut over staging after migrations\ntags:\n - db\n - deploy\nobserved_at: 2026-04-10\nsources:\n - memory:staging-cutover-order\n - skill:database\n---\n\nRun database migrations before shifting staging traffic onto the new release.\n",
762
- blockedBy: [],
763
- positiveSignals: [
764
- "3 positive feedback events",
765
- "repeated reinforcement",
766
- "strong confidence",
767
- "linked source",
768
- "observed_at present",
769
- "description present",
770
- "tagged memory",
771
- "substantive body",
772
- ],
773
- negativeSignals: [],
774
- modelName: "balanced-evidence",
775
- },
776
- passed: true,
777
- },
778
- {
779
- name: "temporary-token-workaround",
780
- expectPromote: false,
781
- assessment: {
782
- applicable: true,
783
- promote: false,
784
- score: 0,
785
- threshold: 3.8,
786
- knowledgeRef: "knowledge:temporary-token-workaround",
787
- blockedBy: ["expiring-memory"],
788
- positiveSignals: [],
789
- negativeSignals: [],
790
- modelName: "balanced-evidence",
791
- },
792
- passed: true,
793
- },
794
- {
795
- name: "thin-metadata-memory",
796
- expectPromote: false,
797
- assessment: {
798
- applicable: true,
799
- promote: false,
800
- score: 3,
801
- threshold: 3.8,
802
- knowledgeRef: "knowledge:thin-metadata-memory",
803
- blockedBy: [],
804
- positiveSignals: [
805
- "2 positive feedback events",
806
- "repeated reinforcement",
807
- "linked source",
808
- "description present",
809
- "substantive body",
810
- ],
811
- negativeSignals: [],
812
- modelName: "balanced-evidence",
813
- },
814
- passed: true,
815
- },
816
- {
817
- name: "promoted-quality-memory",
818
- expectPromote: false,
819
- assessment: {
820
- applicable: true,
821
- promote: false,
822
- score: 0,
823
- threshold: 3.8,
824
- knowledgeRef: "knowledge:promoted-quality-memory",
825
- blockedBy: ["proposed-quality"],
826
- positiveSignals: [],
827
- negativeSignals: [],
828
- modelName: "balanced-evidence",
829
- },
830
- passed: true,
831
- },
832
- ],
833
- },
834
- heldOut: {
835
- total: 7,
836
- correct: 7,
837
- falsePositives: 0,
838
- falseNegatives: 0,
839
- accuracy: 1,
840
- precision: 1,
841
- recall: 1,
842
- f1: 1,
843
- truePositives: 4,
844
- trueNegatives: 3,
845
- netOutcomeScore: 14,
846
- capturedPromoteValue: 14,
847
- preventedFalsePromotionCost: 14,
848
- results: [
849
- {
850
- name: "kafka-rebalance-note",
851
- expectPromote: true,
852
- assessment: {
853
- applicable: true,
854
- promote: true,
855
- score: 5.600000000000002,
856
- threshold: 3.8,
857
- knowledgeRef: "knowledge:kafka-rebalance-note",
858
- content: "---\ndescription: Pause consumers during rebalance\ntags:\n - kafka\n - ops\nobserved_at: 2026-04-08\nsources:\n - memory:kafka-rebalance-note\n - skill:kafka\n---\n\nPause consumers during partition rebalances to avoid duplicate processing while assignments settle.\n",
859
- blockedBy: [],
860
- positiveSignals: [
861
- "3 positive feedback events",
862
- "repeated reinforcement",
863
- "curated quality",
864
- "strong confidence",
865
- "linked source",
866
- "observed_at present",
867
- "description present",
868
- "tagged memory",
869
- "substantive body",
870
- ],
871
- negativeSignals: [],
872
- modelName: "balanced-evidence",
873
- },
874
- passed: true,
875
- },
876
- {
877
- name: "gha-token-scope",
878
- expectPromote: true,
879
- assessment: {
880
- applicable: true,
881
- promote: true,
882
- score: 4.04,
883
- threshold: 3.8,
884
- knowledgeRef: "knowledge:gha-token-scope",
885
- content: "---\ndescription: Minimize GitHub token scopes\ntags:\n - gha\n - security\nobserved_at: 2026-04-07\nsources:\n - memory:gha-token-scope\n - skill:github-actions\n---\n\nUse the narrowest GitHub token scope that still allows the workflow step to succeed.\n",
886
- blockedBy: [],
887
- positiveSignals: [
888
- "2 positive feedback events",
889
- "repeated reinforcement",
890
- "strong confidence",
891
- "linked source",
892
- "observed_at present",
893
- "description present",
894
- "tagged memory",
895
- "substantive body",
896
- ],
897
- negativeSignals: [],
898
- modelName: "balanced-evidence",
899
- },
900
- passed: true,
901
- },
902
- {
903
- name: "helm-debug-guess",
904
- expectPromote: false,
905
- assessment: {
906
- applicable: true,
907
- promote: false,
908
- score: 2.7899999999999996,
909
- threshold: 3.8,
910
- knowledgeRef: "knowledge:helm-debug-guess",
911
- blockedBy: [],
912
- positiveSignals: [
913
- "2 positive feedback events",
914
- "repeated reinforcement",
915
- "strong confidence",
916
- "linked source",
917
- "observed_at present",
918
- "description present",
919
- "substantive body",
920
- ],
921
- negativeSignals: ["tentative language"],
922
- modelName: "balanced-evidence",
923
- },
924
- passed: true,
925
- },
926
- {
927
- name: "terraform-state-location",
928
- expectPromote: true,
929
- assessment: {
930
- applicable: true,
931
- promote: true,
932
- score: 5.600000000000002,
933
- threshold: 3.8,
934
- knowledgeRef: "knowledge:terraform-state-location",
935
- content: "---\ndescription: Use remote state locks\ntags:\n - terraform\nobserved_at: 2026-04-04\nsources:\n - memory:terraform-state-location\n - skill:terraform\n---\n\nUse remote state with locking enabled before applying shared Terraform stacks.\n",
936
- blockedBy: [],
937
- positiveSignals: [
938
- "3 positive feedback events",
939
- "repeated reinforcement",
940
- "curated quality",
941
- "strong confidence",
942
- "linked source",
943
- "observed_at present",
944
- "description present",
945
- "tagged memory",
946
- "substantive body",
947
- ],
948
- negativeSignals: [],
949
- modelName: "balanced-evidence",
950
- },
951
- passed: true,
952
- },
953
- {
954
- name: "mixed-signal-rollback",
955
- expectPromote: false,
956
- assessment: {
957
- applicable: true,
958
- promote: false,
959
- score: 2.65,
960
- threshold: 3.8,
961
- knowledgeRef: "knowledge:mixed-signal-rollback",
962
- blockedBy: [],
963
- positiveSignals: [
964
- "2 positive feedback events",
965
- "repeated reinforcement",
966
- "curated quality",
967
- "strong confidence",
968
- "linked source",
969
- "observed_at present",
970
- "description present",
971
- "substantive body",
972
- ],
973
- negativeSignals: ["1 negative feedback event"],
974
- modelName: "balanced-evidence",
975
- },
976
- passed: true,
977
- },
978
- {
979
- name: "cache-ttl-fact",
980
- expectPromote: true,
981
- assessment: {
982
- applicable: true,
983
- promote: true,
984
- score: 4.250000000000001,
985
- threshold: 3.8,
986
- knowledgeRef: "knowledge:cache-ttl-fact",
987
- content: "---\ndescription: Cache TTL defaults to five minutes\ntags:\n - cache\n - platform\nobserved_at: 2026-04-02\nsources:\n - memory:cache-ttl-fact\n - skill:platform\n---\n\nThe shared platform cache TTL defaults to five minutes unless the service opts out.\n",
988
- blockedBy: [],
989
- positiveSignals: [
990
- "2 positive feedback events",
991
- "repeated reinforcement",
992
- "strong confidence",
993
- "linked source",
994
- "observed_at present",
995
- "description present",
996
- "tagged memory",
997
- "substantive body",
998
- ],
999
- negativeSignals: [],
1000
- modelName: "balanced-evidence",
1001
- },
1002
- passed: true,
1003
- },
1004
- {
1005
- name: "personal-shell-alias",
1006
- expectPromote: false,
1007
- assessment: {
1008
- applicable: true,
1009
- promote: false,
1010
- score: 0,
1011
- threshold: 3.8,
1012
- knowledgeRef: "knowledge:personal-shell-alias",
1013
- blockedBy: ["subjective-memory"],
1014
- positiveSignals: [],
1015
- negativeSignals: [],
1016
- modelName: "balanced-evidence",
1017
- },
1018
- passed: true,
1019
- },
1020
- ],
440
+ positiveWeight: 0.8,
441
+ repeatedPositiveWeight: 0.65,
442
+ noPositivePenalty: 0.9,
443
+ singlePositivePenalty: 0.7,
444
+ negativeWeight: 2.0,
445
+ curatedWeight: 0.55,
446
+ confidenceWeight: 0.7,
447
+ sourceWeight: 0.4,
448
+ observedAtWeight: 0.4,
449
+ descriptionWeight: 0.2,
450
+ tagWeight: 0.15,
451
+ substantiveBodyWeight: 0.15,
452
+ tentativePenalty: 1.1,
1021
453
  },
1022
- baselines: [
1023
- {
1024
- name: "baseline-positive-feedback",
1025
- heldOut: {
1026
- total: 7,
1027
- correct: 5,
1028
- falsePositives: 2,
1029
- falseNegatives: 0,
1030
- accuracy: 0.7142857142857143,
1031
- precision: 0.6666666666666666,
1032
- recall: 1,
1033
- f1: 0.8,
1034
- truePositives: 4,
1035
- trueNegatives: 1,
1036
- netOutcomeScore: 4,
1037
- capturedPromoteValue: 14,
1038
- preventedFalsePromotionCost: 4,
1039
- results: [
1040
- {
1041
- name: "kafka-rebalance-note",
1042
- expectPromote: true,
1043
- assessment: {
1044
- applicable: true,
1045
- promote: true,
1046
- score: 3,
1047
- threshold: 2,
1048
- knowledgeRef: "knowledge:kafka-rebalance-note",
1049
- content: "---\ndescription: Pause consumers during rebalance\ntags:\n - kafka\n - ops\nobserved_at: 2026-04-08\nsources:\n - memory:kafka-rebalance-note\n - skill:kafka\n---\n\nPause consumers during partition rebalances to avoid duplicate processing while assignments settle.\n",
1050
- blockedBy: [],
1051
- positiveSignals: ["baseline positive feedback rule"],
1052
- negativeSignals: [],
1053
- modelName: "baseline-positive-feedback",
1054
- },
1055
- passed: true,
1056
- },
1057
- {
1058
- name: "gha-token-scope",
1059
- expectPromote: true,
1060
- assessment: {
1061
- applicable: true,
1062
- promote: true,
1063
- score: 2,
1064
- threshold: 2,
1065
- knowledgeRef: "knowledge:gha-token-scope",
1066
- content: "---\ndescription: Minimize GitHub token scopes\ntags:\n - gha\n - security\nobserved_at: 2026-04-07\nsources:\n - memory:gha-token-scope\n - skill:github-actions\n---\n\nUse the narrowest GitHub token scope that still allows the workflow step to succeed.\n",
1067
- blockedBy: [],
1068
- positiveSignals: ["baseline positive feedback rule"],
1069
- negativeSignals: [],
1070
- modelName: "baseline-positive-feedback",
1071
- },
1072
- passed: true,
1073
- },
1074
- {
1075
- name: "helm-debug-guess",
1076
- expectPromote: false,
1077
- assessment: {
1078
- applicable: true,
1079
- promote: true,
1080
- score: 2,
1081
- threshold: 2,
1082
- knowledgeRef: "knowledge:helm-debug-guess",
1083
- content: "---\ndescription: Helm upgrade might need --debug\nobserved_at: 2026-04-05\nsources:\n - memory:helm-debug-guess\n - skill:helm\n---\n\nIt might help to add --debug to helm upgrade output during failures.\n",
1084
- blockedBy: [],
1085
- positiveSignals: ["baseline positive feedback rule"],
1086
- negativeSignals: [],
1087
- modelName: "baseline-positive-feedback",
1088
- },
1089
- passed: false,
1090
- },
1091
- {
1092
- name: "terraform-state-location",
1093
- expectPromote: true,
1094
- assessment: {
1095
- applicable: true,
1096
- promote: true,
1097
- score: 3,
1098
- threshold: 2,
1099
- knowledgeRef: "knowledge:terraform-state-location",
1100
- content: "---\ndescription: Use remote state locks\ntags:\n - terraform\nobserved_at: 2026-04-04\nsources:\n - memory:terraform-state-location\n - skill:terraform\n---\n\nUse remote state with locking enabled before applying shared Terraform stacks.\n",
1101
- blockedBy: [],
1102
- positiveSignals: ["baseline positive feedback rule"],
1103
- negativeSignals: [],
1104
- modelName: "baseline-positive-feedback",
1105
- },
1106
- passed: true,
1107
- },
1108
- {
1109
- name: "mixed-signal-rollback",
1110
- expectPromote: false,
1111
- assessment: {
1112
- applicable: true,
1113
- promote: true,
1114
- score: 2,
1115
- threshold: 2,
1116
- knowledgeRef: "knowledge:mixed-signal-rollback",
1117
- content: "---\ndescription: Rollback the cluster immediately\nobserved_at: 2026-04-03\nsources:\n - memory:mixed-signal-rollback\n - skill:incident\n---\n\nRollback the cluster immediately after any 5xx spike.\n",
1118
- blockedBy: [],
1119
- positiveSignals: ["baseline positive feedback rule"],
1120
- negativeSignals: [],
1121
- modelName: "baseline-positive-feedback",
1122
- },
1123
- passed: false,
1124
- },
1125
- {
1126
- name: "cache-ttl-fact",
1127
- expectPromote: true,
1128
- assessment: {
1129
- applicable: true,
1130
- promote: true,
1131
- score: 2,
1132
- threshold: 2,
1133
- knowledgeRef: "knowledge:cache-ttl-fact",
1134
- content: "---\ndescription: Cache TTL defaults to five minutes\ntags:\n - cache\n - platform\nobserved_at: 2026-04-02\nsources:\n - memory:cache-ttl-fact\n - skill:platform\n---\n\nThe shared platform cache TTL defaults to five minutes unless the service opts out.\n",
1135
- blockedBy: [],
1136
- positiveSignals: ["baseline positive feedback rule"],
1137
- negativeSignals: [],
1138
- modelName: "baseline-positive-feedback",
1139
- },
1140
- passed: true,
1141
- },
1142
- {
1143
- name: "personal-shell-alias",
1144
- expectPromote: false,
1145
- assessment: {
1146
- applicable: true,
1147
- promote: false,
1148
- score: 0,
1149
- threshold: 2,
1150
- knowledgeRef: "knowledge:personal-shell-alias",
1151
- blockedBy: ["subjective-memory"],
1152
- positiveSignals: [],
1153
- negativeSignals: [],
1154
- modelName: "baseline-positive-feedback",
1155
- },
1156
- passed: true,
1157
- },
1158
- ],
1159
- },
1160
- noWorseThanSelected: true,
1161
- strictWin: true,
1162
- strictWinMetrics: ["f1", "netOutcomeScore", "accuracy"],
1163
- },
1164
- {
1165
- name: "baseline-metadata",
1166
- heldOut: {
1167
- total: 7,
1168
- correct: 5,
1169
- falsePositives: 2,
1170
- falseNegatives: 0,
1171
- accuracy: 0.7142857142857143,
1172
- precision: 0.6666666666666666,
1173
- recall: 1,
1174
- f1: 0.8,
1175
- truePositives: 4,
1176
- trueNegatives: 1,
1177
- netOutcomeScore: 4,
1178
- capturedPromoteValue: 14,
1179
- preventedFalsePromotionCost: 4,
1180
- results: [
1181
- {
1182
- name: "kafka-rebalance-note",
1183
- expectPromote: true,
1184
- assessment: {
1185
- applicable: true,
1186
- promote: true,
1187
- score: 2,
1188
- threshold: 3,
1189
- knowledgeRef: "knowledge:kafka-rebalance-note",
1190
- content: "---\ndescription: Pause consumers during rebalance\ntags:\n - kafka\n - ops\nobserved_at: 2026-04-08\nsources:\n - memory:kafka-rebalance-note\n - skill:kafka\n---\n\nPause consumers during partition rebalances to avoid duplicate processing while assignments settle.\n",
1191
- blockedBy: [],
1192
- positiveSignals: ["baseline metadata rule"],
1193
- negativeSignals: [],
1194
- modelName: "baseline-metadata",
1195
- },
1196
- passed: true,
1197
- },
1198
- {
1199
- name: "gha-token-scope",
1200
- expectPromote: true,
1201
- assessment: {
1202
- applicable: true,
1203
- promote: true,
1204
- score: 2,
1205
- threshold: 3,
1206
- knowledgeRef: "knowledge:gha-token-scope",
1207
- content: "---\ndescription: Minimize GitHub token scopes\ntags:\n - gha\n - security\nobserved_at: 2026-04-07\nsources:\n - memory:gha-token-scope\n - skill:github-actions\n---\n\nUse the narrowest GitHub token scope that still allows the workflow step to succeed.\n",
1208
- blockedBy: [],
1209
- positiveSignals: ["baseline metadata rule"],
1210
- negativeSignals: [],
1211
- modelName: "baseline-metadata",
1212
- },
1213
- passed: true,
1214
- },
1215
- {
1216
- name: "helm-debug-guess",
1217
- expectPromote: false,
1218
- assessment: {
1219
- applicable: true,
1220
- promote: true,
1221
- score: 2,
1222
- threshold: 3,
1223
- knowledgeRef: "knowledge:helm-debug-guess",
1224
- content: "---\ndescription: Helm upgrade might need --debug\nobserved_at: 2026-04-05\nsources:\n - memory:helm-debug-guess\n - skill:helm\n---\n\nIt might help to add --debug to helm upgrade output during failures.\n",
1225
- blockedBy: [],
1226
- positiveSignals: ["baseline metadata rule"],
1227
- negativeSignals: [],
1228
- modelName: "baseline-metadata",
1229
- },
1230
- passed: false,
1231
- },
1232
- {
1233
- name: "terraform-state-location",
1234
- expectPromote: true,
1235
- assessment: {
1236
- applicable: true,
1237
- promote: true,
1238
- score: 2,
1239
- threshold: 3,
1240
- knowledgeRef: "knowledge:terraform-state-location",
1241
- content: "---\ndescription: Use remote state locks\ntags:\n - terraform\nobserved_at: 2026-04-04\nsources:\n - memory:terraform-state-location\n - skill:terraform\n---\n\nUse remote state with locking enabled before applying shared Terraform stacks.\n",
1242
- blockedBy: [],
1243
- positiveSignals: ["baseline metadata rule"],
1244
- negativeSignals: [],
1245
- modelName: "baseline-metadata",
1246
- },
1247
- passed: true,
1248
- },
1249
- {
1250
- name: "mixed-signal-rollback",
1251
- expectPromote: false,
1252
- assessment: {
1253
- applicable: true,
1254
- promote: true,
1255
- score: 2,
1256
- threshold: 3,
1257
- knowledgeRef: "knowledge:mixed-signal-rollback",
1258
- content: "---\ndescription: Rollback the cluster immediately\nobserved_at: 2026-04-03\nsources:\n - memory:mixed-signal-rollback\n - skill:incident\n---\n\nRollback the cluster immediately after any 5xx spike.\n",
1259
- blockedBy: [],
1260
- positiveSignals: ["baseline metadata rule"],
1261
- negativeSignals: [],
1262
- modelName: "baseline-metadata",
1263
- },
1264
- passed: false,
1265
- },
1266
- {
1267
- name: "cache-ttl-fact",
1268
- expectPromote: true,
1269
- assessment: {
1270
- applicable: true,
1271
- promote: true,
1272
- score: 2,
1273
- threshold: 3,
1274
- knowledgeRef: "knowledge:cache-ttl-fact",
1275
- content: "---\ndescription: Cache TTL defaults to five minutes\ntags:\n - cache\n - platform\nobserved_at: 2026-04-02\nsources:\n - memory:cache-ttl-fact\n - skill:platform\n---\n\nThe shared platform cache TTL defaults to five minutes unless the service opts out.\n",
1276
- blockedBy: [],
1277
- positiveSignals: ["baseline metadata rule"],
1278
- negativeSignals: [],
1279
- modelName: "baseline-metadata",
1280
- },
1281
- passed: true,
1282
- },
1283
- {
1284
- name: "personal-shell-alias",
1285
- expectPromote: false,
1286
- assessment: {
1287
- applicable: true,
1288
- promote: false,
1289
- score: 0,
1290
- threshold: 2,
1291
- knowledgeRef: "knowledge:personal-shell-alias",
1292
- blockedBy: ["subjective-memory"],
1293
- positiveSignals: [],
1294
- negativeSignals: [],
1295
- modelName: "baseline-metadata",
1296
- },
1297
- passed: true,
1298
- },
1299
- ],
1300
- },
1301
- noWorseThanSelected: true,
1302
- strictWin: true,
1303
- strictWinMetrics: ["f1", "netOutcomeScore", "accuracy"],
1304
- },
1305
- ],
1306
- strictlyBeatsBaselines: true,
454
+ threshold: 3.8,
1307
455
  };
1308
- const SELECTED_MODEL = CANDIDATE_MODELS.find((model) => model.name === DEFAULT_PROMOTION_POLICY_SELECTION.selectedModel.name);
456
+ const SELECTED_MODEL = DEFAULT_PROMOTION_POLICY_SELECTION.selectedModel;
1309
457
  export const DEFAULT_PROMOTION_POLICY = {
1310
- name: DEFAULT_PROMOTION_POLICY_SELECTION.selectedModel.name,
1311
- threshold: DEFAULT_PROMOTION_POLICY_SELECTION.selectedModel.threshold,
1312
- assess: (input) => assessWithWeightedModel(input, SELECTED_MODEL, DEFAULT_PROMOTION_POLICY_SELECTION.selectedModel.threshold),
458
+ name: SELECTED_MODEL.name,
459
+ threshold: DEFAULT_PROMOTION_POLICY_SELECTION.threshold,
460
+ assess: (input) => assessWithWeightedModel(input, SELECTED_MODEL, DEFAULT_PROMOTION_POLICY_SELECTION.threshold),
1313
461
  };
1314
- export function getDefaultPromotionPolicySelection() {
1315
- return DEFAULT_PROMOTION_POLICY_SELECTION;
1316
- }
1317
462
  export function assessMemoryKnowledgePromotionCandidate(input) {
1318
463
  return DEFAULT_PROMOTION_POLICY.assess(input);
1319
464
  }