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.
- package/CHANGELOG.md +1283 -22
- package/README.md +62 -37
- package/SECURITY.md +46 -31
- package/dist/akm +162 -38
- package/dist/akm-migrate +44 -0
- package/dist/assets/backends/schtasks-template.xml +2 -1
- package/dist/assets/hints/cli-hints-full.md +268 -118
- package/dist/assets/hints/cli-hints-short.md +87 -24
- package/dist/assets/{profiles → improve-strategies}/catchup.json +3 -1
- package/dist/assets/{profiles → improve-strategies}/consolidate.json +3 -1
- package/dist/assets/{profiles → improve-strategies}/default.json +6 -7
- package/dist/assets/improve-strategies/frequent.json +15 -0
- package/dist/assets/{profiles → improve-strategies}/graph-refresh.json +4 -2
- package/dist/assets/{profiles → improve-strategies}/memory-focus.json +4 -1
- package/dist/assets/{profiles → improve-strategies}/proactive-maintenance.json +5 -5
- package/dist/assets/{profiles → improve-strategies}/quick.json +4 -2
- package/dist/assets/improve-strategies/reflect-distill.json +30 -0
- package/dist/assets/{profiles → improve-strategies}/thorough.json +1 -1
- package/dist/assets/prompts/consolidate-system.md +5 -5
- package/dist/assets/prompts/extract-session.md +2 -6
- package/dist/assets/prompts/memory-infer-user.md +2 -3
- package/dist/assets/prompts/reflect-llm-framed-contract.md +11 -0
- package/dist/assets/prompts/reflect-llm-schema-contract.md +3 -0
- package/dist/assets/prompts/reflect-output-repair.md +3 -0
- package/dist/assets/prompts/workflow-unit-preamble.md +26 -0
- package/dist/assets/stash-skeleton/README.md +38 -10
- package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +8 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +8 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +14 -1
- package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +13 -1
- package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +9 -1
- package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +11 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +9 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +9 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +8 -0
- package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +100 -0
- package/dist/assets/stash-skeleton/facts/conventions/domains.md +64 -0
- package/dist/assets/stash-skeleton/facts/conventions/organization.md +136 -0
- package/dist/assets/tasks/core/extract.yml +3 -2
- package/dist/assets/tasks/core/improve.yml +2 -1
- package/dist/assets/tasks/core/index-refresh.yml +1 -0
- package/dist/assets/tasks/core/sync.yml +1 -0
- package/dist/assets/tasks/core/version-check.yml +2 -1
- package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-catchup.yml +8 -0
- package/dist/assets/tasks/improve/akm-improve-consolidate.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-frequent.yml +5 -0
- package/dist/assets/tasks/improve/akm-improve-nightly.yml +5 -0
- package/dist/assets/templates/html/health.html +5 -4
- package/dist/assets/workflows/workflow-template.md +31 -15
- package/dist/cli/invocation.js +279 -0
- package/dist/cli/parse-args.js +5 -90
- package/dist/cli/retired-commands.js +78 -0
- package/dist/cli/shared.js +158 -48
- package/dist/cli-node.mjs +2 -1
- package/dist/cli.js +747 -293
- package/dist/commands/agent/agent-dispatch.js +19 -18
- package/dist/commands/agent/agent-support.js +0 -24
- package/dist/commands/agent/contribute-cli.js +43 -97
- package/dist/commands/completions.js +80 -23
- package/dist/commands/config-cli.js +44 -281
- package/dist/commands/env/env-binding.js +99 -0
- package/dist/commands/env/env-cli.js +84 -224
- package/dist/commands/env/env.js +12 -163
- package/dist/commands/env/marker-path.js +6 -0
- package/dist/commands/env/secret-cli.js +45 -61
- package/dist/commands/env/secret.js +32 -62
- package/dist/commands/feedback-cli.js +179 -85
- package/dist/commands/health/accept-rate.js +58 -0
- package/dist/commands/health/advisories.js +7 -8
- package/dist/commands/health/checks.js +279 -94
- package/dist/commands/health/html-report.js +197 -578
- package/dist/commands/health/improve-metrics.js +277 -246
- package/dist/commands/health/llm-usage.js +19 -19
- package/dist/commands/health/md-report.js +16 -7
- package/dist/commands/health/metrics.js +67 -32
- package/dist/commands/health/renderers.js +47 -0
- package/dist/commands/health/report-view-model.js +508 -0
- package/dist/commands/health/stash-exposure.js +1 -1
- package/dist/commands/health/surfaces.js +16 -56
- package/dist/commands/health/task-runs.js +3 -67
- package/dist/{migrate-storage-node.mjs → commands/health/types-checks.js} +1 -5
- package/dist/commands/health/types-improve.js +29 -0
- package/dist/{output/text/save.js → commands/health/types-metrics.js} +1 -2
- package/dist/commands/health/types-result.js +7 -0
- package/dist/commands/health/types-runs.js +4 -0
- package/dist/commands/health/types-session-log.js +4 -0
- package/dist/commands/health/types-windows.js +4 -0
- package/dist/commands/health/types.js +26 -21
- package/dist/commands/health/windows.js +2 -3
- package/dist/commands/health.js +296 -167
- package/dist/commands/improve/anti-collapse.js +5 -5
- package/dist/commands/improve/autonomy-gate.js +68 -0
- package/dist/commands/improve/collapse-detector.js +65 -52
- package/dist/commands/improve/consolidate/chunking.js +9 -7
- package/dist/commands/improve/consolidate/eligibility.js +1 -23
- package/dist/commands/improve/consolidate/merge.js +4 -0
- package/dist/commands/improve/consolidate.js +454 -1354
- package/dist/commands/improve/content-hash.js +39 -0
- package/dist/commands/improve/distill/content-repair.js +4 -10
- package/dist/commands/improve/distill/promote-memory.js +89 -64
- package/dist/commands/improve/distill/quality-gate.js +118 -42
- package/dist/commands/improve/distill-guards.js +1 -1
- package/dist/commands/improve/distill-promotion-policy.js +33 -888
- package/dist/commands/improve/distill.js +607 -363
- package/dist/commands/improve/eligibility.js +165 -79
- package/dist/commands/improve/extract-cli.js +35 -126
- package/dist/commands/improve/extract-prompt.js +6 -35
- package/dist/commands/improve/extract.js +640 -391
- package/dist/commands/improve/feedback-valence.js +2 -12
- package/dist/commands/improve/improve-cli.js +134 -135
- package/dist/commands/improve/improve-result-file.js +30 -50
- package/dist/commands/improve/improve-run-types.js +4 -0
- package/dist/commands/improve/improve-strategies.js +135 -0
- package/dist/commands/improve/improve.js +904 -701
- package/dist/commands/improve/locks.js +64 -111
- package/dist/commands/improve/loop-stages.js +1110 -923
- package/dist/commands/improve/memory/derived-ref.js +124 -0
- package/dist/commands/improve/memory/memory-belief.js +79 -7
- package/dist/commands/improve/memory/memory-contradiction-detect.js +49 -52
- package/dist/commands/improve/memory/memory-improve.js +25 -37
- package/dist/commands/improve/outcome-loop.js +25 -88
- package/dist/commands/improve/preparation.js +1034 -813
- package/dist/commands/improve/proactive-maintenance.js +34 -9
- package/dist/commands/improve/proposal-envelope.js +31 -0
- package/dist/commands/improve/reflect.js +983 -794
- package/dist/commands/improve/run-context.js +119 -0
- package/dist/commands/improve/salience.js +24 -127
- package/dist/commands/improve/session-asset.js +7 -3
- package/dist/commands/improve/shared.js +14 -34
- package/dist/commands/improve/source-identity.js +28 -0
- package/dist/commands/improve/triage.js +20 -17
- package/dist/commands/lint/base-linter.js +340 -313
- package/dist/commands/lint/env-key-rules.js +31 -47
- package/dist/commands/lint/index.js +185 -30
- package/dist/commands/{events.js → log.js} +28 -38
- package/dist/commands/migrate-cli.js +54 -0
- package/dist/commands/migration-tool.js +55 -0
- package/dist/commands/observability-cli.js +70 -208
- package/dist/commands/proposal/diff-format.js +50 -0
- package/dist/commands/proposal/drain-policies.js +0 -6
- package/dist/commands/proposal/drain.js +91 -40
- package/dist/commands/proposal/proposal-cli.js +134 -132
- package/dist/commands/proposal/proposal-types.js +56 -0
- package/dist/commands/proposal/proposal.js +83 -65
- package/dist/commands/proposal/propose-cli.js +88 -0
- package/dist/commands/proposal/propose.js +105 -88
- package/dist/commands/proposal/repository.js +1303 -278
- package/dist/commands/proposal/validators/proposal-quality-validators.js +16 -6
- package/dist/commands/proposal/validators/proposal-validators.js +61 -12
- package/dist/commands/proposal/validators/proposals.js +6 -8
- package/dist/commands/read/curate.js +78 -73
- package/dist/commands/read/knowledge.js +510 -13
- package/dist/commands/read/registry-search.js +2 -2
- package/dist/commands/read/remember-cli.js +84 -15
- package/dist/commands/read/search-cli.js +203 -96
- package/dist/commands/read/search.js +126 -94
- package/dist/commands/read/show.js +226 -250
- package/dist/commands/registry-cli.js +34 -60
- package/dist/commands/remember.js +18 -57
- package/dist/commands/sources/add-cli.js +104 -49
- package/dist/commands/sources/bundle-cli.js +166 -0
- package/dist/commands/sources/bundle-config-ops.js +63 -0
- package/dist/commands/sources/info.js +27 -15
- package/dist/commands/sources/init.js +30 -40
- package/dist/commands/sources/installed-stashes.js +469 -172
- package/dist/commands/sources/migration-help.js +7 -4
- package/dist/commands/sources/schema-repair.js +10 -9
- package/dist/commands/sources/self-update.js +182 -121
- package/dist/commands/sources/source-add.js +169 -178
- package/dist/commands/sources/source-clone.js +144 -41
- package/dist/commands/sources/source-manage.js +94 -59
- package/dist/commands/sources/sources-cli.js +64 -205
- package/dist/commands/sources/stash-cli.js +91 -54
- package/dist/commands/sources/stash-skeleton.js +1 -1
- package/dist/commands/tasks/tasks-cli.js +106 -104
- package/dist/commands/tasks/tasks.js +445 -262
- package/dist/commands/workflow-cli.js +232 -121
- package/dist/core/action-contributors.js +1 -1
- package/dist/core/activation-policy.js +49 -0
- package/dist/core/adapter/adapters/agent-skills-adapter.js +181 -0
- package/dist/core/adapter/adapters/akm-adapter.js +528 -0
- package/dist/core/adapter/adapters/akm-lint.js +392 -0
- package/dist/core/adapter/adapters/akm-metadata.js +387 -0
- package/dist/core/adapter/adapters/akm-task-adapter.js +149 -0
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +180 -0
- package/dist/core/adapter/adapters/claude-adapter.js +61 -0
- package/dist/core/adapter/adapters/dotenv-adapter.js +187 -0
- package/dist/core/adapter/adapters/generic-files-adapter.js +119 -0
- package/dist/core/adapter/adapters/index.js +80 -0
- package/dist/core/adapter/adapters/llm-wiki-adapter.js +419 -0
- package/dist/core/adapter/adapters/okf-adapter.js +391 -0
- package/dist/core/adapter/adapters/opencode-adapter.js +68 -0
- package/dist/core/adapter/adapters/shared.js +286 -0
- package/dist/core/adapter/adapters/tool-dir-shared.js +217 -0
- package/dist/core/adapter/adapters/website-snapshot-adapter.js +155 -0
- package/dist/core/adapter/bundle-adapter.js +4 -0
- package/dist/core/adapter/detect-adapter.js +17 -0
- package/dist/core/adapter/recognize-match.js +44 -0
- package/dist/core/adapter/registry.js +56 -0
- package/dist/core/adapter/types.js +4 -0
- package/dist/core/asset/akm-markdown.js +30 -0
- package/dist/core/asset/asset-placement.js +243 -0
- package/dist/core/asset/asset-ref.js +110 -79
- package/dist/core/asset/asset-serialize.js +20 -0
- package/dist/core/asset/frontmatter.js +28 -12
- package/dist/core/asset/markdown.js +40 -51
- package/dist/core/asset/resolve-ref.js +274 -0
- package/dist/core/asset/stash-meta.js +2 -2
- package/dist/core/bundle-id.js +51 -0
- package/dist/core/common.js +281 -86
- package/dist/core/config/config-io.js +42 -128
- package/dist/core/config/config-schema.js +233 -834
- package/dist/core/config/config-sources.js +162 -39
- package/dist/core/config/config-types.js +16 -11
- package/dist/core/config/config-version.js +29 -0
- package/dist/core/config/config-walker.js +126 -37
- package/dist/core/config/config.js +154 -331
- package/dist/core/config/deep-merge.js +41 -0
- package/dist/core/config/engine-semantics.js +28 -0
- package/dist/core/config/experimental.js +21 -0
- package/dist/core/config/schema/embedding.js +38 -0
- package/dist/core/config/schema/engines.js +116 -0
- package/dist/core/config/schema/experimental.js +47 -0
- package/dist/core/config/schema/feedback.js +31 -0
- package/dist/core/config/schema/improve-processes.js +389 -0
- package/dist/core/config/schema/improve.js +94 -0
- package/dist/core/config/schema/index-config.js +176 -0
- package/dist/core/config/schema/output.js +18 -0
- package/dist/core/config/schema/primitives.js +94 -0
- package/dist/core/config/schema/search.js +30 -0
- package/dist/core/config/schema/setup.js +18 -0
- package/dist/core/config/schema/sources-bundles.js +169 -0
- package/dist/core/config/schema/workflow.js +29 -0
- package/dist/core/env-secret-ref.js +155 -20
- package/dist/core/errors.js +17 -15
- package/dist/core/events-types.js +4 -0
- package/dist/core/events.js +46 -128
- package/dist/core/extra-params.js +62 -0
- package/dist/core/file-change.js +17 -0
- package/dist/core/file-lock.js +202 -57
- package/dist/core/fs-txn.js +392 -0
- package/dist/core/git-message.js +59 -0
- package/dist/core/improve-result.js +167 -0
- package/dist/core/json-schema.js +142 -0
- package/dist/core/lesson-lint.js +1 -17
- package/dist/core/logs-db.js +1 -1
- package/dist/core/maintenance-barrier.js +135 -0
- package/dist/core/migration-operation.js +44 -0
- package/dist/core/mutation-target.js +78 -0
- package/dist/core/paths.js +22 -25
- package/dist/core/platform.js +10 -0
- package/dist/core/recognition-util.js +128 -0
- package/dist/core/redaction.js +392 -0
- package/dist/core/standards/resolve-standards-context.js +36 -65
- package/dist/core/standards/resolve-stash-standards.js +2 -2
- package/dist/core/standards/resolve-type-conventions.js +5 -5
- package/dist/core/state/migrations.js +242 -11
- package/dist/core/state-db.js +98 -10
- package/dist/core/structured.js +1 -1
- package/dist/core/subprocess.js +303 -0
- package/dist/core/text-truncation.js +9 -5
- package/dist/core/time.js +20 -0
- package/dist/core/type-presentation.js +130 -0
- package/dist/core/warn.js +0 -3
- package/dist/core/write-source.js +834 -118
- package/dist/indexer/bundle-identity-guard.js +92 -0
- package/dist/indexer/db/graph-db.js +1 -25
- package/dist/indexer/db/llm-cache.js +1 -1
- package/dist/indexer/ensure-index.js +30 -9
- package/dist/indexer/graph/graph-boost.js +9 -30
- package/dist/indexer/graph/graph-extraction.js +41 -27
- package/dist/indexer/graph/graph-types.js +4 -0
- package/dist/indexer/index-writer-lock.js +93 -49
- package/dist/indexer/index-written-assets.js +100 -53
- package/dist/indexer/indexer.js +746 -329
- package/dist/indexer/init.js +18 -25
- package/dist/indexer/installations.js +142 -0
- package/dist/indexer/passes/dir-staleness.js +18 -10
- package/dist/indexer/passes/memory-inference.js +25 -15
- package/dist/indexer/passes/metadata.js +412 -243
- package/dist/indexer/scan/doc-to-entry.js +160 -0
- package/dist/indexer/scan/drain-dir.js +134 -0
- package/dist/indexer/search/db-search.js +292 -108
- package/dist/indexer/search/fts-query.js +64 -0
- package/dist/indexer/search/ranking-contributors.js +145 -25
- package/dist/indexer/search/ranking-types.js +4 -0
- package/dist/indexer/search/ranking.js +28 -71
- package/dist/indexer/search/search-attribution.js +67 -0
- package/dist/indexer/search/search-fields.js +18 -3
- package/dist/indexer/search/search-hit-enrichers.js +30 -40
- package/dist/indexer/search/search-source.js +157 -111
- package/dist/indexer/search/semantic-status.js +4 -1
- package/dist/indexer/usage/usage-events.js +10 -30
- package/dist/indexer/walk/file-context.js +3 -45
- package/dist/indexer/walk/matchers.js +42 -34
- package/dist/indexer/walk/path-resolver.js +11 -5
- package/dist/indexer/walk/walker.js +42 -14
- package/dist/integrations/agent/builder-shared.js +7 -0
- package/dist/integrations/agent/builders.js +5 -56
- package/dist/integrations/agent/config.js +3 -143
- package/dist/integrations/agent/detect.js +17 -2
- package/dist/integrations/agent/engine-resolution.js +231 -0
- package/dist/integrations/agent/index.js +1 -2
- package/dist/integrations/agent/model-aliases.js +16 -2
- package/dist/integrations/agent/profiles.js +36 -62
- package/dist/integrations/agent/prompts.js +46 -18
- package/dist/integrations/agent/runner-dispatch.js +93 -4
- package/dist/integrations/agent/runner.js +76 -208
- package/dist/integrations/agent/spawn.js +88 -196
- package/dist/integrations/harnesses/aider/agent-builder.js +114 -0
- package/dist/integrations/harnesses/aider/index.js +48 -0
- package/dist/integrations/harnesses/aider/result-extractor.js +53 -0
- package/dist/integrations/harnesses/amazonq/agent-builder.js +147 -0
- package/dist/integrations/harnesses/amazonq/index.js +45 -0
- package/dist/integrations/harnesses/amazonq/result-extractor.js +48 -0
- package/dist/integrations/harnesses/claude/agent-builder.js +46 -8
- package/dist/integrations/harnesses/claude/config-import.js +1 -3
- package/dist/integrations/harnesses/claude/index.js +24 -35
- package/dist/integrations/harnesses/claude/result-extractor.js +52 -0
- package/dist/integrations/harnesses/claude/session-log.js +27 -75
- package/dist/integrations/harnesses/codex/agent-builder.js +138 -0
- package/dist/integrations/harnesses/codex/index.js +52 -0
- package/dist/integrations/harnesses/codex/result-extractor.js +73 -0
- package/dist/integrations/harnesses/copilot/agent-builder.js +122 -0
- package/dist/integrations/harnesses/copilot/index.js +48 -0
- package/dist/integrations/harnesses/copilot/result-extractor.js +151 -0
- package/dist/integrations/harnesses/gemini/agent-builder.js +120 -0
- package/dist/integrations/harnesses/gemini/index.js +48 -0
- package/dist/integrations/harnesses/gemini/result-extractor.js +121 -0
- package/dist/integrations/harnesses/ids.js +24 -0
- package/dist/integrations/harnesses/index.js +54 -34
- package/dist/integrations/harnesses/opencode/agent-builder.js +23 -5
- package/dist/integrations/harnesses/opencode/config-import.js +1 -3
- package/dist/integrations/harnesses/opencode/index.js +14 -32
- package/dist/integrations/harnesses/opencode/session-log.js +67 -125
- package/dist/integrations/harnesses/opencode-sdk/harness.js +51 -0
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +681 -108
- package/dist/integrations/harnesses/openhands/agent-builder.js +128 -0
- package/dist/integrations/harnesses/openhands/index.js +48 -0
- package/dist/integrations/harnesses/openhands/result-extractor.js +103 -0
- package/dist/integrations/harnesses/pi/agent-builder.js +97 -0
- package/dist/integrations/harnesses/pi/index.js +45 -0
- package/dist/integrations/harnesses/pi/result-extractor.js +135 -0
- package/dist/integrations/harnesses/shared.js +17 -0
- package/dist/integrations/harnesses/types.js +43 -32
- package/dist/integrations/lockfile.js +211 -24
- package/dist/integrations/session-logs/index.js +36 -39
- package/dist/integrations/session-logs/provider-base.js +113 -0
- package/dist/llm/client.js +182 -110
- package/dist/llm/embedders/deterministic.js +2 -2
- package/dist/llm/embedders/remote.js +21 -9
- package/dist/llm/feature-gate.js +17 -57
- package/dist/llm/graph-extract.js +12 -13
- package/dist/llm/index-passes.js +8 -42
- package/dist/llm/memory-infer.js +144 -1
- package/dist/llm/metadata-enhance.js +45 -30
- package/dist/llm/structured-call.js +16 -8
- package/dist/llm/usage-persist.js +30 -5
- package/dist/llm/usage-telemetry.js +59 -6
- package/dist/output/cli-hints.js +1 -2
- package/dist/output/command-registry.js +27 -0
- package/dist/output/context.js +22 -7
- package/dist/output/format-exempt.js +80 -0
- package/dist/output/generic-render.js +251 -0
- package/dist/output/html-render.js +11 -16
- package/dist/output/render-registry.js +57 -0
- package/dist/output/renderers.js +14 -279
- package/dist/output/shapes/curate.js +10 -1
- package/dist/output/shapes/events.js +12 -7
- package/dist/output/shapes/helpers.js +58 -84
- package/dist/output/shapes/passthrough.js +11 -39
- package/dist/output/shapes/proposal/producer.js +15 -7
- package/dist/output/shapes/registry.js +12 -6
- package/dist/output/shapes.js +0 -9
- package/dist/output/text/{init.js → bundle-create.js} +3 -1
- package/dist/output/text/bundle-show.js +7 -0
- package/dist/output/text/command-format.js +562 -0
- package/dist/output/text/env.js +1 -3
- package/dist/output/text/events.js +8 -7
- package/dist/output/text/helpers.js +15 -1164
- package/dist/output/text/proposal/producer.js +4 -2
- package/dist/output/text/proposal-format.js +202 -0
- package/dist/output/text/registry-commands.js +1 -2
- package/dist/output/text/registry.js +12 -6
- package/dist/output/text/show-directives.js +117 -0
- package/dist/output/text/show-format.js +103 -0
- package/dist/output/text/sync.js +5 -0
- package/dist/output/text/workflow-format.js +332 -0
- package/dist/output/text/workflow.js +3 -2
- package/dist/output/text.js +10 -19
- package/dist/registry/factory.js +4 -6
- package/dist/registry/origin-resolve.js +16 -27
- package/dist/registry/providers/skills-sh.js +3 -3
- package/dist/registry/providers/static-index.js +15 -25
- package/dist/registry/resolve.js +43 -94
- package/dist/registry/semver.js +43 -0
- package/dist/runtime.js +81 -12
- package/dist/scripts/akm-migrate.js +35529 -0
- package/dist/setup/detect.js +5 -7
- package/dist/setup/detected-engines.js +136 -0
- package/dist/setup/engine-config.js +100 -0
- package/dist/setup/registry-stash-loader.js +3 -3
- package/dist/setup/semantic-assets.js +12 -9
- package/dist/setup/setup.js +444 -208
- package/dist/setup/steps/connection-shared.js +120 -0
- package/dist/setup/steps/connection.js +108 -305
- package/dist/setup/steps/platforms.js +13 -12
- package/dist/setup/steps/semantic.js +15 -3
- package/dist/setup/steps/sources.js +21 -15
- package/dist/setup/steps/stashdir.js +6 -4
- package/dist/setup/steps/tasks.js +236 -119
- package/dist/setup/steps.js +3 -2
- package/dist/sources/freshness.js +39 -0
- package/dist/sources/provider-factory.js +11 -17
- package/dist/sources/providers/filesystem.js +2 -3
- package/dist/sources/providers/git-install.js +278 -34
- package/dist/sources/providers/git-provider.js +54 -56
- package/dist/sources/providers/git-stash.js +420 -91
- package/dist/sources/providers/git.js +2 -2
- package/dist/sources/providers/npm.js +16 -19
- package/dist/sources/providers/provider-utils.js +47 -22
- package/dist/sources/providers/sync-from-ref.js +3 -9
- package/dist/sources/providers/website.js +2 -2
- package/dist/sources/resolve.js +11 -10
- package/dist/sources/snapshot-fetchers/types.js +4 -0
- package/dist/sources/{website-ingest.js → snapshot-fetchers/website-ingest.js} +110 -41
- package/dist/storage/database.js +60 -4
- package/dist/storage/engines/sqlite-migrations.js +156 -5
- package/dist/storage/locations.js +1 -2
- package/dist/storage/repositories/canaries-repository.js +1 -1
- package/dist/storage/repositories/events-repository.js +51 -11
- package/dist/storage/repositories/improve-runs-repository.js +6 -32
- package/dist/storage/repositories/index-connection.js +79 -0
- package/dist/storage/repositories/index-db.js +4 -3
- package/dist/storage/repositories/index-entries-repository.js +863 -0
- package/dist/{indexer/db/entry-mapper.js → storage/repositories/index-entry-mapper.js} +19 -2
- package/dist/storage/repositories/index-entry-types.js +4 -0
- package/dist/storage/repositories/index-fts-repository.js +167 -0
- package/dist/storage/repositories/index-llm-cache-repository.js +108 -0
- package/dist/storage/repositories/index-meta-repository.js +49 -0
- package/dist/{indexer/db/schema.js → storage/repositories/index-schema.js} +226 -100
- package/dist/storage/repositories/index-sql.js +12 -0
- package/dist/storage/repositories/index-utility-repository.js +356 -0
- package/dist/storage/repositories/index-vec-repository.js +250 -0
- package/dist/storage/repositories/outcome-repository.js +119 -0
- package/dist/storage/repositories/proposals-repository.js +317 -75
- package/dist/storage/repositories/registry-cache.js +1 -1
- package/dist/storage/repositories/salience-repository.js +172 -0
- package/dist/storage/repositories/task-history-repository.js +110 -3
- package/dist/storage/repositories/workflow-runs-repository.js +240 -19
- package/dist/tasks/backends/cron.js +169 -46
- package/dist/tasks/backends/exec-utils.js +76 -3
- package/dist/tasks/backends/index.js +6 -9
- package/dist/tasks/backends/launchd.js +292 -55
- package/dist/tasks/backends/schtasks.js +557 -70
- package/dist/tasks/backends/types.js +4 -0
- package/dist/tasks/command-executable.js +93 -0
- package/dist/tasks/embedded.js +56 -38
- package/dist/tasks/parser.js +156 -64
- package/dist/tasks/resolve-akm-bin.js +144 -51
- package/dist/tasks/runner.js +377 -209
- package/dist/tasks/schedule.js +108 -19
- package/dist/tasks/scheduler-invocation.js +296 -0
- package/dist/tasks/schema.js +1 -1
- package/dist/tasks/task-id.js +35 -0
- package/dist/tasks/validator.js +30 -16
- package/dist/text-import-hook.mjs +1 -1
- package/dist/workflows/authoring/authoring.js +104 -43
- package/dist/workflows/authoring/scope-key.js +1 -1
- package/dist/workflows/cli.js +0 -16
- package/dist/workflows/concurrency-policy.js +15 -0
- package/dist/workflows/exec/brief.js +450 -0
- package/dist/workflows/exec/frozen-judge.js +47 -0
- package/dist/workflows/exec/native-executor.js +1038 -0
- package/dist/workflows/exec/param-secrets.js +115 -0
- package/dist/workflows/exec/report.js +1460 -0
- package/dist/workflows/exec/run-workflow.js +602 -0
- package/dist/workflows/exec/scheduler.js +71 -0
- package/dist/workflows/exec/step-work.js +1190 -0
- package/dist/workflows/exec/unit-writer.js +23 -0
- package/dist/workflows/exec/workflow-engine-gate.js +67 -0
- package/dist/workflows/exec/worktree.js +171 -0
- package/dist/workflows/ir/compile.js +246 -0
- package/dist/workflows/ir/freeze.js +233 -0
- package/dist/workflows/ir/params.js +54 -0
- package/dist/workflows/ir/plan-hash.js +68 -0
- package/dist/workflows/ir/schema.js +540 -0
- package/dist/workflows/parser.js +878 -304
- package/dist/workflows/program/expressions.js +181 -0
- package/dist/workflows/program/schema.js +51 -0
- package/dist/workflows/renderer.js +100 -45
- package/dist/workflows/resource-limits.js +22 -0
- package/dist/workflows/runtime/agent-identity.js +59 -14
- package/dist/workflows/runtime/checkin.js +1 -1
- package/dist/workflows/runtime/plan-classifier.js +131 -0
- package/dist/workflows/runtime/runs.js +376 -119
- package/dist/workflows/runtime/unit-checkin.js +45 -0
- package/dist/workflows/runtime/unit-phases.js +20 -0
- package/dist/workflows/runtime/workflow-asset-loader.js +241 -40
- package/dist/workflows/schema.js +1 -11
- package/dist/workflows/validate-summary.js +2 -3
- package/dist/workflows/validator.js +52 -30
- package/docs/README.md +42 -78
- package/docs/migration/README.md +8 -0
- package/docs/migration/release-notes/0.6.0.md +1 -1
- package/docs/migration/release-notes/0.7.0.md +9 -8
- package/docs/migration/release-notes/0.9.0.md +158 -14
- package/docs/migration/v0.7-to-v0.8.md +46 -47
- package/docs/migration/v0.8-to-v0.9.md +844 -0
- package/docs/reference/README.md +12 -0
- package/docs/reference/data-and-telemetry.md +333 -0
- package/package.json +21 -17
- package/schemas/akm-asset-envelope.json +93 -0
- package/schemas/akm-config.json +4636 -0
- package/schemas/akm-task.json +87 -0
- package/schemas/akm-workflow.json +373 -0
- package/dist/akm-migrate-storage +0 -38
- package/dist/assets/help/help-accept.md +0 -12
- package/dist/assets/help/help-improve.md +0 -84
- package/dist/assets/help/help-proposals.md +0 -17
- package/dist/assets/help/help-propose.md +0 -17
- package/dist/assets/help/help-reject.md +0 -11
- package/dist/assets/profiles/frequent.json +0 -13
- package/dist/assets/profiles/recombine-only.json +0 -21
- package/dist/assets/profiles/reflect-distill.json +0 -30
- package/dist/assets/profiles/synthesize.json +0 -15
- package/dist/assets/prompts/procedural-system.md +0 -44
- package/dist/assets/prompts/recombine-system.md +0 -40
- package/dist/assets/prompts/staleness-detect-system.md +0 -6
- package/dist/assets/tasks/core/backup.yml +0 -4
- package/dist/assets/tasks/graph-refresh-weekly.yml +0 -10
- package/dist/assets/templates/html/default.html +0 -78
- package/dist/assets/templates/html/vendor/echarts.min.js +0 -45
- package/dist/assets/wiki/index-template.md +0 -12
- package/dist/assets/wiki/ingest-workflow-template.md +0 -83
- package/dist/assets/wiki/log-template.md +0 -8
- package/dist/assets/wiki/schema-template.md +0 -61
- package/dist/cli/config-migrate.js +0 -150
- package/dist/cli/config-validate.js +0 -39
- package/dist/commands/graph/graph-cli.js +0 -124
- package/dist/commands/graph/graph.js +0 -487
- package/dist/commands/improve/calibration.js +0 -161
- package/dist/commands/improve/dedup.js +0 -482
- package/dist/commands/improve/extract-watch.js +0 -140
- package/dist/commands/improve/hot-probation.js +0 -45
- package/dist/commands/improve/improve-auto-accept.js +0 -276
- package/dist/commands/improve/improve-profiles.js +0 -168
- package/dist/commands/improve/procedural.js +0 -398
- package/dist/commands/improve/recombine.js +0 -818
- package/dist/commands/improve/schema-similarity-gate.js +0 -168
- package/dist/commands/lint/agent-linter.js +0 -44
- package/dist/commands/lint/command-linter.js +0 -44
- package/dist/commands/lint/default-linter.js +0 -16
- package/dist/commands/lint/fact-linter.js +0 -39
- package/dist/commands/lint/knowledge-linter.js +0 -16
- package/dist/commands/lint/memory-linter.js +0 -61
- package/dist/commands/lint/registry.js +0 -41
- package/dist/commands/lint/skill-linter.js +0 -45
- package/dist/commands/lint/task-linter.js +0 -50
- package/dist/commands/lint/workflow-linter.js +0 -81
- package/dist/commands/proposal/legacy-import.js +0 -115
- package/dist/commands/sources/history.js +0 -196
- package/dist/commands/tasks/default-tasks.js +0 -186
- package/dist/commands/wiki-cli.js +0 -292
- package/dist/core/asset/asset-registry.js +0 -76
- package/dist/core/asset/asset-spec.js +0 -259
- package/dist/core/config/config-migration.js +0 -602
- package/dist/core/deep-merge.js +0 -38
- package/dist/core/eval/rank-metrics.js +0 -113
- package/dist/core/ripgrep/install.js +0 -163
- package/dist/core/ripgrep/resolve.js +0 -81
- package/dist/indexer/db/db.js +0 -1413
- package/dist/indexer/manifest.js +0 -170
- package/dist/indexer/passes/metadata-contributors.js +0 -31
- package/dist/indexer/usage/unmigrated-vaults-guard.js +0 -94
- package/dist/integrations/harnesses/opencode-sdk/index.js +0 -49
- package/dist/llm/call-ai.js +0 -62
- package/dist/llm/memory-infer-impl.js +0 -138
- package/dist/output/shapes/distill.js +0 -14
- package/dist/output/shapes/history.js +0 -11
- package/dist/output/text/distill.js +0 -6
- package/dist/output/text/enable-disable.js +0 -8
- package/dist/output/text/history.js +0 -6
- package/dist/output/text/wiki.js +0 -16
- package/dist/registry/build-index.js +0 -386
- package/dist/scripts/migrate-storage.js +0 -19108
- package/dist/scripts/migrations/import-fs-improve-runs-to-db.js +0 -9411
- package/dist/scripts/migrations/v16-to-v17.js +0 -141
- package/dist/setup/legacy-config.js +0 -106
- package/dist/storage/repositories/consolidation-repository.js +0 -38
- package/dist/storage/repositories/recombine-repository.js +0 -213
- package/dist/wiki/wiki-templates.js +0 -15
- package/dist/wiki/wiki.js +0 -1012
- package/dist/workflows/db.js +0 -215
- package/docs/data-and-telemetry.md +0 -226
- /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/registry.js +0 -0
- /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 =
|
|
47
|
-
|
|
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 =
|
|
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
|
|
121
|
+
const xrefs = [input.inputRef];
|
|
116
122
|
if (typeof fm.source === "string" && fm.source.trim())
|
|
117
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
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
|
-
|
|
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 =
|
|
456
|
+
const SELECTED_MODEL = DEFAULT_PROMOTION_POLICY_SELECTION.selectedModel;
|
|
1309
457
|
export const DEFAULT_PROMOTION_POLICY = {
|
|
1310
|
-
name:
|
|
1311
|
-
threshold: DEFAULT_PROMOTION_POLICY_SELECTION.
|
|
1312
|
-
assess: (input) => assessWithWeightedModel(input, SELECTED_MODEL, DEFAULT_PROMOTION_POLICY_SELECTION.
|
|
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
|
}
|