akm-cli 0.9.0-rc.8 → 0.9.0
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 +1063 -44
- package/README.md +51 -25
- package/SECURITY.md +14 -1
- package/STABILITY.md +497 -0
- package/dist/akm +148 -35
- package/dist/{akm-migrate-storage → akm-migrate} +6 -9
- package/dist/assets/hints/cli-hints-full.md +223 -95
- package/dist/assets/hints/cli-hints-short.md +85 -22
- package/dist/assets/improve-strategies/default.json +1 -1
- package/dist/assets/improve-strategies/reflect-distill.json +1 -1
- package/dist/assets/prompts/memory-infer-user.md +2 -3
- package/dist/assets/stash-skeleton/README.md +6 -5
- package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/domains.md +2 -0
- package/dist/assets/stash-skeleton/facts/conventions/organization.md +20 -9
- package/dist/assets/tasks/core/extract.yml +1 -1
- package/dist/assets/tasks/core/version-check.yml +1 -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 +1 -3
- package/dist/assets/workflows/workflow-template.md +32 -15
- package/dist/cli/invocation.js +40 -15
- package/dist/cli/parse-args.js +0 -22
- package/dist/cli/retired-commands.js +121 -0
- package/dist/cli/shared.js +154 -22
- package/dist/cli/unknown-flags.js +236 -0
- package/dist/cli-node.mjs +2 -1
- package/dist/cli.js +696 -258
- package/dist/commands/agent/agent-dispatch.js +14 -3
- package/dist/commands/agent/contribute-cli.js +73 -88
- package/dist/commands/completions.js +79 -22
- package/dist/commands/config-cli.js +17 -150
- package/dist/commands/env/env-cli.js +59 -143
- package/dist/commands/env/env.js +12 -163
- package/dist/commands/env/marker-path.js +6 -0
- package/dist/commands/env/secret-cli.js +36 -66
- package/dist/commands/env/secret.js +24 -57
- package/dist/commands/feedback-cli.js +141 -87
- package/dist/commands/health/accept-rate.js +58 -0
- package/dist/commands/health/advisories.js +3 -4
- package/dist/commands/health/checks.js +85 -23
- package/dist/commands/health/html-report.js +7 -10
- package/dist/commands/health/improve-metrics.js +25 -83
- package/dist/commands/health/md-report.js +5 -9
- package/dist/commands/health/metrics.js +62 -20
- package/dist/commands/health/renderers.js +47 -0
- package/dist/commands/health/report-view-model.js +4 -5
- package/dist/commands/health/stash-exposure.js +1 -1
- package/dist/commands/health/surfaces.js +3 -48
- package/dist/commands/health/task-runs.js +3 -67
- package/dist/commands/health/types-improve.js +7 -0
- package/dist/commands/health.js +99 -28
- package/dist/commands/improve/anti-collapse.js +2 -2
- package/dist/commands/improve/autonomy-gate.js +68 -0
- package/dist/commands/improve/collapse-detector.js +41 -40
- package/dist/commands/improve/consolidate/eligibility.js +1 -23
- package/dist/commands/improve/consolidate/merge.js +4 -0
- package/dist/commands/improve/consolidate.js +140 -1000
- package/dist/commands/improve/distill/promote-memory.js +12 -12
- package/dist/commands/improve/distill/quality-gate.js +6 -6
- package/dist/commands/improve/distill.js +58 -69
- package/dist/commands/improve/eligibility.js +105 -57
- package/dist/commands/improve/extract-cli.js +14 -133
- package/dist/commands/improve/improve-cli.js +98 -114
- package/dist/commands/improve/improve-result-file.js +1 -28
- package/dist/commands/improve/improve-strategies.js +8 -5
- package/dist/commands/improve/improve.js +128 -91
- package/dist/commands/improve/loop-stages.js +182 -20
- package/dist/commands/improve/memory/derived-ref.js +45 -43
- package/dist/commands/improve/memory/memory-belief.js +1 -1
- package/dist/commands/improve/memory/memory-contradiction-detect.js +4 -12
- package/dist/commands/improve/memory/memory-improve.js +6 -5
- package/dist/commands/improve/outcome-loop.js +22 -65
- package/dist/commands/improve/preparation.js +114 -123
- package/dist/commands/improve/proactive-maintenance.js +2 -5
- package/dist/commands/improve/reflect.js +56 -160
- package/dist/commands/improve/salience.js +11 -122
- package/dist/commands/improve/source-identity.js +10 -38
- package/dist/commands/lint/base-linter.js +20 -124
- package/dist/commands/lint/env-key-rules.js +31 -47
- package/dist/commands/lint/index.js +249 -43
- package/dist/commands/{events.js → log.js} +33 -38
- package/dist/commands/migrate-cli.js +92 -12
- package/dist/commands/migration-tool.js +46 -0
- package/dist/commands/observability-cli.js +70 -209
- package/dist/commands/proposal/drain.js +101 -29
- package/dist/commands/proposal/proposal-cli.js +76 -48
- package/dist/commands/proposal/proposal.js +54 -18
- package/dist/commands/proposal/propose-cli.js +88 -0
- package/dist/commands/proposal/propose.js +23 -15
- package/dist/commands/proposal/repository.js +701 -278
- package/dist/commands/proposal/validators/proposal-quality-validators.js +2 -8
- package/dist/commands/proposal/validators/proposal-validators.js +55 -7
- package/dist/commands/proposal/validators/proposals.js +4 -7
- package/dist/commands/read/curate.js +34 -53
- package/dist/commands/read/knowledge.js +150 -95
- package/dist/commands/read/registry-search.js +2 -2
- package/dist/commands/read/remember-cli.js +42 -15
- package/dist/commands/read/search-cli.js +180 -78
- package/dist/commands/read/search.js +58 -43
- package/dist/commands/read/show.js +197 -141
- package/dist/commands/registry-cli.js +12 -51
- package/dist/commands/remember.js +14 -57
- package/dist/commands/sources/add-cli.js +100 -31
- package/dist/commands/sources/bundle-cli.js +166 -0
- package/dist/commands/sources/bundle-config-ops.js +7 -2
- package/dist/commands/sources/info.js +18 -5
- package/dist/commands/sources/init.js +12 -12
- package/dist/commands/sources/installed-stashes.js +382 -98
- package/dist/commands/sources/schema-repair.js +3 -2
- package/dist/commands/sources/self-update.js +131 -38
- package/dist/commands/sources/source-add.js +72 -17
- package/dist/commands/sources/source-clone.js +129 -45
- package/dist/commands/sources/source-manage.js +43 -23
- package/dist/commands/sources/sources-cli.js +57 -208
- package/dist/commands/sources/stash-cli.js +46 -53
- package/dist/commands/tasks/tasks-cli.js +91 -97
- package/dist/commands/tasks/tasks.js +276 -421
- package/dist/commands/workflow-cli.js +175 -450
- package/dist/core/adapter/adapters/akm-adapter.js +47 -28
- package/dist/core/adapter/adapters/akm-lint.js +42 -27
- package/dist/core/adapter/adapters/akm-metadata.js +15 -44
- package/dist/core/adapter/adapters/akm-task-adapter.js +15 -13
- package/dist/core/adapter/adapters/akm-workflow-adapter.js +55 -71
- package/dist/core/adapter/adapters/dotenv-adapter.js +1 -1
- package/dist/core/adapter/adapters/generic-files-adapter.js +2 -0
- package/dist/core/adapter/adapters/index.js +6 -6
- package/dist/core/adapter/adapters/llm-wiki-adapter.js +14 -8
- package/dist/core/adapter/adapters/okf-adapter.js +187 -19
- package/dist/core/adapter/adapters/shared.js +3 -19
- package/dist/core/adapter/adapters/tool-dir-shared.js +8 -3
- package/dist/core/adapter/adapters/website-snapshot-adapter.js +1 -0
- package/dist/core/adapter/detect-adapter.js +17 -0
- package/dist/core/adapter/recognize-match.js +6 -4
- package/dist/core/adapter/validate-context.js +214 -0
- package/dist/core/asset/akm-markdown.js +63 -0
- package/dist/core/asset/asset-placement.js +20 -6
- package/dist/core/asset/asset-ref.js +11 -9
- package/dist/core/asset/frontmatter-lint.js +30 -0
- package/dist/core/asset/frontmatter.js +37 -9
- package/dist/core/asset/markdown.js +40 -51
- package/dist/core/asset/resolve-ref.js +89 -18
- package/dist/core/asset/stash-meta.js +1 -1
- package/dist/core/bundle-id.js +51 -0
- package/dist/core/common.js +152 -38
- package/dist/core/config/config-io.js +12 -1
- package/dist/core/config/config-schema.js +35 -8
- package/dist/core/config/config-sources.js +55 -11
- package/dist/core/config/config-walker.js +25 -9
- package/dist/core/config/config.js +9 -48
- package/dist/core/config/experimental.js +21 -0
- package/dist/core/config/schema/embedding.js +5 -1
- package/dist/core/config/schema/experimental.js +30 -0
- package/dist/core/config/schema/improve-processes.js +0 -6
- package/dist/core/config/schema/improve.js +21 -3
- package/dist/core/config/schema/index-config.js +8 -15
- package/dist/core/config/schema/output.js +4 -1
- package/dist/core/config/schema/setup.js +9 -18
- package/dist/core/config/schema/sources-bundles.js +49 -33
- package/dist/core/config/schema/workflow.js +3 -3
- package/dist/core/env-secret-ref.js +76 -46
- package/dist/core/errors.js +18 -12
- package/dist/core/events.js +46 -128
- package/dist/core/file-change.js +6 -5
- package/dist/core/fs-txn.js +83 -7
- package/dist/core/git-message.js +2 -2
- package/dist/core/improve-result.js +1 -100
- package/dist/core/lesson-lint.js +1 -17
- package/dist/core/logs-db.js +2 -1
- package/dist/core/migration-operation.js +16 -0
- package/dist/core/mutation-target.js +78 -0
- package/dist/core/parse.js +4 -1
- package/dist/core/paths.js +17 -20
- package/dist/core/recognition-util.js +12 -14
- package/dist/core/redaction.js +34 -0
- package/dist/core/standards/resolve-standards-context.js +2 -14
- package/dist/core/standards/resolve-stash-standards.js +2 -2
- package/dist/core/standards/resolve-type-conventions.js +2 -2
- package/dist/core/state/migrations.js +41 -18
- package/dist/core/state-db.js +5 -14
- package/dist/core/structured.js +1 -1
- package/dist/core/subprocess.js +6 -4
- package/dist/core/text-truncation.js +9 -5
- package/dist/core/type-presentation.js +3 -3
- package/dist/core/warn.js +0 -3
- package/dist/core/write-source.js +771 -95
- package/dist/indexer/bundle-identity-guard.js +3 -2
- package/dist/indexer/db/graph-db.js +0 -24
- package/dist/indexer/ensure-index.js +1 -0
- package/dist/indexer/graph/graph-boost.js +9 -34
- package/dist/indexer/graph/graph-extraction.js +8 -5
- package/dist/indexer/index-writer-lock.js +53 -17
- package/dist/indexer/index-written-assets.js +16 -22
- package/dist/indexer/indexer.js +497 -239
- package/dist/indexer/installations.js +14 -96
- package/dist/indexer/passes/dir-staleness.js +16 -9
- package/dist/indexer/passes/memory-inference.js +11 -9
- package/dist/indexer/passes/metadata.js +113 -47
- package/dist/indexer/scan/doc-to-entry.js +38 -1
- package/dist/indexer/scan/drain-dir.js +13 -23
- package/dist/indexer/search/db-search.js +99 -54
- package/dist/indexer/search/fts-query.js +47 -24
- package/dist/indexer/search/ranking-contributors.js +42 -20
- package/dist/indexer/search/ranking.js +18 -99
- package/dist/indexer/search/search-fields.js +7 -2
- package/dist/indexer/search/search-source.js +82 -93
- package/dist/indexer/usage/usage-events.js +0 -89
- package/dist/indexer/walk/file-context.js +2 -1
- package/dist/indexer/walk/matchers.js +30 -43
- package/dist/indexer/walk/path-resolver.js +7 -2
- package/dist/indexer/walk/walker.js +38 -12
- package/dist/integrations/agent/builders.js +0 -6
- package/dist/integrations/agent/config.js +2 -2
- package/dist/integrations/agent/detect.js +49 -19
- package/dist/integrations/agent/engine-fallback.js +76 -0
- package/dist/integrations/agent/profiles.js +14 -0
- package/dist/integrations/agent/prompts.js +12 -8
- package/dist/integrations/agent/runner-dispatch.js +4 -2
- package/dist/integrations/agent/runner.js +0 -1
- package/dist/integrations/agent/spawn.js +5 -6
- package/dist/integrations/github.js +1 -1
- package/dist/integrations/harnesses/aider/agent-builder.js +6 -4
- package/dist/integrations/harnesses/amazonq/agent-builder.js +7 -4
- package/dist/integrations/harnesses/claude/session-log.js +0 -10
- package/dist/integrations/harnesses/codex/agent-builder.js +5 -2
- package/dist/integrations/harnesses/copilot/agent-builder.js +5 -3
- package/dist/integrations/harnesses/gemini/agent-builder.js +5 -3
- package/dist/integrations/harnesses/index.js +3 -7
- package/dist/integrations/harnesses/opencode/agent-builder.js +21 -2
- package/dist/integrations/harnesses/opencode/session-log.js +0 -15
- package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +13 -4
- package/dist/integrations/harnesses/openhands/agent-builder.js +9 -6
- package/dist/integrations/harnesses/pi/agent-builder.js +6 -4
- package/dist/integrations/lockfile.js +101 -6
- package/dist/integrations/session-logs/index.js +3 -28
- package/dist/llm/client.js +136 -100
- package/dist/llm/embedders/remote.js +13 -5
- package/dist/llm/feature-gate.js +4 -12
- package/dist/llm/graph-extract.js +5 -11
- package/dist/llm/memory-infer.js +144 -1
- package/dist/llm/metadata-enhance.js +5 -7
- package/dist/llm/structured-call.js +1 -1
- package/dist/llm/usage-persist.js +26 -5
- package/dist/llm/usage-telemetry.js +25 -2
- package/dist/output/cli-hints.js +1 -2
- package/dist/output/context.js +22 -7
- package/dist/output/format-exempt.js +80 -0
- package/dist/output/generic-render.js +259 -0
- package/dist/output/render-registry.js +57 -0
- package/dist/output/renderers.js +14 -36
- package/dist/output/shapes/curate.js +10 -1
- package/dist/output/shapes/events.js +12 -7
- package/dist/output/shapes/helpers.js +56 -83
- package/dist/output/shapes/migrate.js +8 -0
- package/dist/output/shapes/passthrough.js +7 -41
- package/dist/output/shapes/proposal/producer.js +15 -7
- package/dist/output/shapes.js +2 -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 +164 -96
- package/dist/output/text/env.js +1 -3
- package/dist/output/text/events.js +8 -7
- package/dist/output/text/health-format.js +103 -0
- package/dist/output/text/health.js +7 -0
- package/dist/output/text/helpers.js +10 -8
- package/dist/output/text/lint-format.js +43 -0
- package/dist/output/text/{save.js → lint.js} +2 -2
- package/dist/output/text/migrate.js +88 -0
- package/dist/output/text/proposal/producer.js +4 -2
- package/dist/output/text/proposal-format.js +44 -72
- package/dist/output/text/registry-commands.js +1 -2
- package/dist/output/text/show-directives.js +15 -7
- package/dist/output/text/status-list.js +32 -0
- package/dist/output/text/sync.js +5 -0
- package/dist/output/text/workflow-format.js +24 -203
- package/dist/output/text/workflow.js +1 -7
- package/dist/output/text.js +16 -17
- 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 +13 -23
- package/dist/registry/resolve.js +42 -7
- package/dist/registry/semver.js +34 -84
- package/dist/runtime.js +2 -23
- package/dist/scripts/akm-migrate-node.js +60290 -0
- package/dist/scripts/akm-migrate.js +59628 -0
- package/dist/setup/detect.js +42 -15
- package/dist/setup/registry-stash-loader.js +2 -2
- package/dist/setup/setup.js +236 -136
- package/dist/setup/steps/connection.js +7 -9
- package/dist/setup/steps/platforms.js +9 -9
- package/dist/setup/steps/semantic.js +15 -3
- package/dist/setup/steps/sources.js +12 -13
- package/dist/setup/steps/stashdir.js +2 -3
- package/dist/setup/steps/tasks.js +237 -120
- package/dist/sources/freshness.js +1 -1
- 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 +25 -23
- package/dist/sources/providers/git-stash.js +395 -106
- package/dist/sources/providers/git.js +2 -2
- package/dist/sources/providers/npm.js +16 -19
- package/dist/sources/providers/provider-utils.js +7 -4
- package/dist/sources/providers/sync-from-ref.js +3 -9
- package/dist/sources/providers/website.js +6 -1
- package/dist/sources/resolve.js +6 -5
- package/dist/sources/snapshot-fetchers/bluesky.js +146 -0
- package/dist/sources/snapshot-fetchers/content-extract.js +566 -0
- package/dist/sources/snapshot-fetchers/fetcher-util.js +41 -0
- package/dist/sources/snapshot-fetchers/github.js +100 -0
- package/dist/sources/snapshot-fetchers/host-guard.js +291 -0
- package/dist/sources/snapshot-fetchers/registry.js +17 -1
- package/dist/sources/snapshot-fetchers/robots.js +348 -0
- package/dist/sources/snapshot-fetchers/rss.js +282 -0
- package/dist/sources/snapshot-fetchers/secret-seam.js +42 -0
- package/dist/sources/snapshot-fetchers/website-ingest.js +566 -268
- package/dist/sources/snapshot-fetchers/x.js +910 -0
- package/dist/storage/database.js +7 -0
- package/dist/storage/engines/sqlite-migrations.js +23 -111
- package/dist/storage/managed-db.js +2 -2
- package/dist/storage/repositories/canaries-repository.js +1 -1
- package/dist/storage/repositories/events-repository.js +27 -11
- package/dist/storage/repositories/improve-runs-repository.js +6 -12
- package/dist/storage/repositories/index-connection.js +17 -6
- package/dist/storage/repositories/index-entries-repository.js +151 -240
- package/dist/storage/repositories/index-entry-mapper.js +15 -11
- package/dist/storage/repositories/index-fts-repository.js +5 -2
- package/dist/storage/repositories/index-llm-cache-repository.js +0 -1
- package/dist/storage/repositories/index-meta-repository.js +2 -3
- package/dist/storage/repositories/index-schema.js +10 -25
- package/dist/storage/repositories/index-utility-repository.js +15 -28
- package/dist/storage/repositories/index-vec-repository.js +6 -1
- package/dist/storage/repositories/outcome-repository.js +119 -0
- package/dist/storage/repositories/proposals-repository.js +296 -59
- package/dist/storage/repositories/registry-cache.js +19 -0
- package/dist/storage/repositories/salience-repository.js +172 -0
- package/dist/storage/repositories/task-history-repository.js +15 -13
- package/dist/storage/repositories/workflow-runs-repository.js +52 -40
- package/dist/tasks/backends/cron.js +105 -15
- package/dist/tasks/backends/index.js +1 -1
- package/dist/tasks/backends/launchd.js +85 -38
- package/dist/tasks/backends/schtasks.js +135 -15
- package/dist/tasks/embedded.js +56 -40
- package/dist/tasks/parser.js +7 -157
- package/dist/tasks/resolve-akm-bin.js +137 -59
- package/dist/tasks/runner.js +79 -42
- package/dist/tasks/scheduler-invocation.js +220 -10
- package/dist/tasks/schema.js +24 -1
- package/dist/tasks/task-id.js +1 -3
- package/dist/tasks/validator.js +20 -6
- package/dist/workflows/authoring/authoring.js +94 -143
- package/dist/workflows/authoring/scope-key.js +1 -1
- package/dist/workflows/exec/frozen-judge.js +28 -2
- package/dist/workflows/exec/native-executor.js +77 -57
- package/dist/workflows/exec/param-secrets.js +9 -9
- package/dist/workflows/exec/run-workflow.js +133 -79
- package/dist/workflows/exec/step-work.js +219 -346
- package/dist/{migrate-storage-node.mjs → workflows/exec/unit-dispatch.js} +1 -5
- package/dist/workflows/ir/compile.js +141 -270
- package/dist/workflows/ir/freeze.js +40 -30
- package/dist/workflows/ir/params.js +135 -11
- package/dist/workflows/ir/plan-hash.js +1 -1
- package/dist/workflows/ir/schema.js +25 -26
- package/dist/workflows/parser.js +872 -307
- package/dist/workflows/program/expressions.js +20 -208
- package/dist/workflows/program/schema.js +7 -10
- package/dist/workflows/renderer.js +95 -68
- package/dist/workflows/resource-limits.js +2 -0
- package/dist/workflows/runtime/checkin.js +3 -3
- package/dist/workflows/runtime/plan-classifier.js +16 -75
- package/dist/workflows/runtime/runs.js +186 -127
- package/dist/workflows/runtime/unit-checkin.js +1 -1
- package/dist/workflows/runtime/unit-phases.js +2 -2
- package/dist/workflows/runtime/workflow-asset-loader.js +232 -83
- package/dist/workflows/schema.js +1 -11
- package/dist/workflows/validate-summary.js +30 -36
- package/dist/workflows/validator.js +21 -62
- package/docs/README.md +68 -0
- package/docs/migration/README.md +8 -0
- package/docs/migration/release-notes/0.7.0.md +11 -11
- package/docs/migration/release-notes/0.9.0.md +208 -27
- package/docs/migration/v0.7-to-v0.8.md +46 -47
- package/docs/migration/v0.8-to-v0.9.md +564 -208
- package/docs/migration/v0.9.0-troubleshooting.md +561 -0
- package/docs/reference/README.md +12 -0
- package/docs/reference/cli.md +2253 -0
- package/docs/reference/configuration.md +358 -0
- package/docs/reference/data-and-telemetry.md +105 -42
- package/docs/reference/workflows.md +647 -0
- package/package.json +22 -11
- package/schemas/akm-asset-envelope.json +93 -0
- package/schemas/akm-config.json +81 -128
- package/schemas/akm-workflow.json +74 -73
- package/dist/assets/tasks/core/backup.yml +0 -5
- package/dist/assets/tasks/graph-refresh-weekly.yml +0 -10
- package/dist/cli/config-migrate.js +0 -1806
- package/dist/cli/config-validate.js +0 -41
- package/dist/commands/backup-cli.js +0 -56
- package/dist/commands/bundle/bundle-cli.js +0 -68
- package/dist/commands/bundle/bundle.js +0 -219
- package/dist/commands/graph/graph-cli.js +0 -124
- package/dist/commands/graph/graph.js +0 -489
- package/dist/commands/improve/extract-watch.js +0 -140
- package/dist/commands/mv-cli.js +0 -1221
- package/dist/commands/sources/history.js +0 -201
- package/dist/commands/tasks/default-tasks.js +0 -186
- package/dist/core/migration-backup.js +0 -1234
- package/dist/indexer/usage/unmigrated-vaults-guard.js +0 -95
- package/dist/llm/memory-infer-impl.js +0 -138
- package/dist/migrate/legacy/config-source-migration.js +0 -223
- package/dist/migrate/legacy/content-migration.js +0 -305
- package/dist/migrate/legacy/legacy-layout.js +0 -779
- package/dist/migrate/legacy/legacy-paths.js +0 -25
- package/dist/migrate/legacy/legacy-stash-json.js +0 -72
- package/dist/migrate/legacy/proposal-fs-import.js +0 -168
- package/dist/migrate/legacy/task-target-ref-migration.js +0 -272
- package/dist/migrate/legacy/three-db-cutover.js +0 -841
- package/dist/migrate/legacy/workflow-migrations-bodies.js +0 -52
- package/dist/migrate/legacy/workflow-migrations-frozen.js +0 -21
- package/dist/migrate/legacy-ref-grammar.js +0 -214
- 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/registry/build-index.js +0 -382
- package/dist/schemas/akm-config.json +0 -4704
- package/dist/schemas/akm-task.json +0 -87
- package/dist/schemas/akm-workflow.json +0 -372
- package/dist/scripts/migrate-storage.js +0 -3816
- package/dist/workflows/authoring/workflow-program-template.yaml +0 -31
- package/dist/workflows/cli.js +0 -53
- package/dist/workflows/exec/brief.js +0 -481
- package/dist/workflows/exec/report.js +0 -1460
- package/dist/workflows/exec/watch.js +0 -116
- package/dist/workflows/program/parser.js +0 -813
- package/dist/workflows/program/project.js +0 -104
|
@@ -0,0 +1,561 @@
|
|
|
1
|
+
# AKM 0.9.0 Migration Troubleshooting
|
|
2
|
+
|
|
3
|
+
This guide covers recovery actions for a 0.9.0 installation that did not
|
|
4
|
+
complete cleanly. It is written for operators repairing their own AKM
|
|
5
|
+
installation; no source-code changes are required.
|
|
6
|
+
|
|
7
|
+
## Where AKM Stores Data
|
|
8
|
+
|
|
9
|
+
Recovery steps below reference these locations. Each default can be
|
|
10
|
+
overridden with the matching `AKM_*_DIR` environment variable; check the
|
|
11
|
+
environment before assuming the defaults.
|
|
12
|
+
|
|
13
|
+
| Variable | Default | Contents |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| `$CONFIG` | `~/.config/akm` | `config.json` |
|
|
16
|
+
| `$DATA` | `~/.local/share/akm` | `state.db`, `index.db`, `logs.db`, `txn/`, `backups/` |
|
|
17
|
+
| `$CACHE` | `~/.cache/akm` | task logs under `tasks/logs/`, index logs under `logs/` |
|
|
18
|
+
| `$BUNDLE` | `~/akm` | working bundle: assets, tasks, scripts, workflows, env files |
|
|
19
|
+
|
|
20
|
+
`akm config path --all` prints the resolved config, bundle, cache, and index
|
|
21
|
+
paths for the installation you are repairing.
|
|
22
|
+
|
|
23
|
+
## Before You Retry
|
|
24
|
+
|
|
25
|
+
Stop scheduled AKM jobs and any running `akm improve`, `akm proposal extract`, or
|
|
26
|
+
workflow processes. Do not delete databases, migration sentinels, WAL files, or
|
|
27
|
+
backup directories while a migration is incomplete.
|
|
28
|
+
|
|
29
|
+
Confirm that the command you are invoking is the intended 0.9 binary:
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
command -v akm
|
|
33
|
+
akm --version
|
|
34
|
+
akm upgrade --check
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If the shell resolves an older installation, invoke the new package-manager
|
|
38
|
+
launcher or staged binary explicitly for every migration command.
|
|
39
|
+
|
|
40
|
+
## Pin the Runtime the Scheduler Uses
|
|
41
|
+
|
|
42
|
+
`akm task doctor` reports the runtime `kind` and whether it is `eligible`
|
|
43
|
+
for scheduling. Scheduled jobs must be bound to an installed release, never
|
|
44
|
+
to a development checkout:
|
|
45
|
+
|
|
46
|
+
- If doctor reports `kind: checkout` with `eligible: false`, the scheduler
|
|
47
|
+
is invoking a mutable source tree. Rebuilding that tree changes task
|
|
48
|
+
behavior mid-schedule, which shows up as failures flipping to successes
|
|
49
|
+
(or the reverse) within the same day's logs with no configuration change.
|
|
50
|
+
- A launcher on `PATH` can be a thin wrapper back into a checkout. Verify
|
|
51
|
+
with `command -v akm` and `realpath` before trusting the version string.
|
|
52
|
+
- The version string itself can lie: an uncommitted local `package.json`
|
|
53
|
+
edit produces a version that corresponds to no reproducible artifact.
|
|
54
|
+
|
|
55
|
+
Also audit the task definitions and their helper scripts. Any command that
|
|
56
|
+
invokes bare `akm` resolves through the scheduler's `PATH` at run time and
|
|
57
|
+
can silently pick up a different binary than the one you validated. Pin
|
|
58
|
+
nested invocations to the absolute launcher path — including in currently
|
|
59
|
+
disabled tasks, so re-enabling one later cannot fall back to a stale
|
|
60
|
+
binary — then resynchronize the bindings:
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
akm task doctor
|
|
64
|
+
akm task sync --rebind
|
|
65
|
+
akm task doctor
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Migration Status
|
|
69
|
+
|
|
70
|
+
Start with the read-only status command:
|
|
71
|
+
|
|
72
|
+
```sh
|
|
73
|
+
akm migrate status
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
If you prepared a separate target configuration, pass it again:
|
|
77
|
+
|
|
78
|
+
```sh
|
|
79
|
+
akm migrate status --config ./prepared-0.9.json
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
The status output identifies any incomplete operation, source configuration,
|
|
83
|
+
target configuration, and whether recovery is required.
|
|
84
|
+
|
|
85
|
+
## Common Failures
|
|
86
|
+
|
|
87
|
+
### WAL or database is busy
|
|
88
|
+
|
|
89
|
+
If migration reports that another process holds a database, lock, or workflow
|
|
90
|
+
claim, stop all schedulers and close every AKM process. Check for remaining
|
|
91
|
+
processes, then retry:
|
|
92
|
+
|
|
93
|
+
```sh
|
|
94
|
+
akm migrate apply --config ./prepared-0.9.json
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Do not remove `state.db-wal` or `state.db-shm` manually. SQLite owns those files.
|
|
98
|
+
|
|
99
|
+
### Migration was interrupted
|
|
100
|
+
|
|
101
|
+
After a killed process, host crash, or power loss, run status and retry apply:
|
|
102
|
+
|
|
103
|
+
```sh
|
|
104
|
+
akm migrate status
|
|
105
|
+
akm migrate apply
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The coordinator reuses the original backup and phase-free incomplete sentinel,
|
|
109
|
+
including its retained target config and path base, then reruns the idempotent
|
|
110
|
+
schema, data, and asset transforms. Do not edit or delete files under the AKM
|
|
111
|
+
data directory to force progress. Preserve the sentinel and backup if retry
|
|
112
|
+
reports malformed control data.
|
|
113
|
+
|
|
114
|
+
### `akm migrate status` stays "old" for one surface
|
|
115
|
+
|
|
116
|
+
If status reports every surface current except one, look for an obsolete
|
|
117
|
+
database file left behind by an earlier version — for example an empty
|
|
118
|
+
`workflow.db` in `$DATA` from a pre-0.9 install. Its mere presence can make
|
|
119
|
+
that surface report as unmigrated. Stop all writers, move the file into a
|
|
120
|
+
dated backup directory, and re-run `akm migrate status`. Do not delete the
|
|
121
|
+
file; a later diagnosis may need it.
|
|
122
|
+
|
|
123
|
+
### Configuration still uses retired keys
|
|
124
|
+
|
|
125
|
+
Errors naming `stashDir`, `sources`, `installed`, `wikiName`, or another
|
|
126
|
+
pre-0.9 key mean the current configuration has not crossed the bundle cutover.
|
|
127
|
+
Prepare a 0.9 configuration with `bundles` and `defaultBundle`, then run the
|
|
128
|
+
migration with that file:
|
|
129
|
+
|
|
130
|
+
```sh
|
|
131
|
+
akm migrate status --config ./prepared-0.9.json
|
|
132
|
+
akm migrate apply --config ./prepared-0.9.json --dry-run
|
|
133
|
+
akm migrate apply --config ./prepared-0.9.json
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Do not run a 0.8 binary with `akm migrate`; that command exists only in the
|
|
137
|
+
0.9 runtime.
|
|
138
|
+
|
|
139
|
+
Retired keys also linger inside task commands and helper scripts. A common
|
|
140
|
+
0.8 pattern was `akm config get stashDir`; it now fails with an unknown-key
|
|
141
|
+
error on every scheduled run. Replace it with the bundle path from
|
|
142
|
+
`akm config path --all` or `akm info`. Use `akm task history` to spot
|
|
143
|
+
tasks failing on every interval: an unbroken run of failures starting at
|
|
144
|
+
the migration date almost always means a retired key or reference inside
|
|
145
|
+
the task definition, not a scheduler fault.
|
|
146
|
+
|
|
147
|
+
### Old references no longer resolve
|
|
148
|
+
|
|
149
|
+
The normal 0.9 grammar is `[bundle//]conceptId`, such as:
|
|
150
|
+
|
|
151
|
+
```text
|
|
152
|
+
skills/code-review
|
|
153
|
+
memories/vpn-note
|
|
154
|
+
knowledge/api-guide
|
|
155
|
+
env/production
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Replace old `type:name` references in your own prompts, task files, scripts,
|
|
159
|
+
and documentation. The migration rewrites durable state and eligible asset
|
|
160
|
+
content, but it cannot safely infer every reference embedded in operator-owned
|
|
161
|
+
text.
|
|
162
|
+
|
|
163
|
+
Check scheduled task YAML and workflow documents first: `env:name`,
|
|
164
|
+
`workflow:name`, `knowledge:name`, and `skill:name` references inside a
|
|
165
|
+
task definition fail on every run until rewritten as `env/name`,
|
|
166
|
+
`workflows/name`, and so on.
|
|
167
|
+
|
|
168
|
+
Workflow runs that were already in flight before the upgrade keep their
|
|
169
|
+
frozen pre-0.9 plan. If a driver task resumes such a run, it executes the
|
|
170
|
+
old plan — including retired commands — even after you rewrite the workflow
|
|
171
|
+
document. Let the stale run reach a terminal state or abandon it, then
|
|
172
|
+
start a fresh run so the rewritten plan is what executes.
|
|
173
|
+
|
|
174
|
+
### Renamed or moved assets lose their ranking signal
|
|
175
|
+
|
|
176
|
+
`akm mv` was removed in 0.9. A rename is now a plain filesystem move followed
|
|
177
|
+
by `akm index` and `akm lint`, and the destination gets a **fresh identity**.
|
|
178
|
+
Everything the old ref had earned — feedback events, usage events, salience and
|
|
179
|
+
outcome history — stays keyed to the ref that no longer exists. The symptom is a
|
|
180
|
+
long-serving asset that suddenly ranks like a brand-new one after you renamed
|
|
181
|
+
or reorganized it, and orphaned rows accumulating in `state.db`.
|
|
182
|
+
|
|
183
|
+
Re-key the rows onto the new ref from a source clone:
|
|
184
|
+
|
|
185
|
+
```sh
|
|
186
|
+
# Preview the counts it would move
|
|
187
|
+
bun scripts/rekey-asset-ref.ts memories/old-note memories/new-note --dry-run
|
|
188
|
+
|
|
189
|
+
# Apply
|
|
190
|
+
bun scripts/rekey-asset-ref.ts memories/old-note memories/new-note
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
It re-keys the index `entries` row **in place** (preserving the row id, and
|
|
194
|
+
with it the utility/embedding history keyed to that id), the `asset_salience`
|
|
195
|
+
and `asset_outcome` rows, and `usage_events.entry_ref` — then appends one
|
|
196
|
+
`rekey` event. It is idempotent: a second run reports zero changed rows.
|
|
197
|
+
|
|
198
|
+
Two constraints follow from the identity model, and the script refuses rather
|
|
199
|
+
than guess: refs must name the same bundle and the same asset type
|
|
200
|
+
(cross-bundle and cross-type movement is copy/import plus delete), and the old
|
|
201
|
+
file must be gone — if both files exist that is a copy, not a rename.
|
|
202
|
+
|
|
203
|
+
Run it **before** `akm index` when you can. Afterwards still works and carries
|
|
204
|
+
the `state.db` signal, but `akm index` will already have dropped the old
|
|
205
|
+
`entries` row and minted a fresh one, so the utility/embedding history attached
|
|
206
|
+
to that row id is gone. The improve maintenance pass marks and clears orphaned
|
|
207
|
+
salience/outcome state. With `improve.stateGc.collect: true`, it collects rows
|
|
208
|
+
that remain orphaned after the seven-day grace period and emits an
|
|
209
|
+
`asset_state_gc` event. Re-key before indexing when you need to preserve that
|
|
210
|
+
history rather than collect it.
|
|
211
|
+
|
|
212
|
+
### `akm wiki` commands fail
|
|
213
|
+
|
|
214
|
+
The `akm wiki` command family was removed in 0.9. Use ordinary bundle and
|
|
215
|
+
knowledge commands instead:
|
|
216
|
+
|
|
217
|
+
```sh
|
|
218
|
+
akm index
|
|
219
|
+
akm search "your query"
|
|
220
|
+
akm show knowledge/your-document
|
|
221
|
+
akm lint --type knowledge
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
For URL snapshots, use `akm import URL --path articles`, then index and lint
|
|
225
|
+
the destination.
|
|
226
|
+
|
|
227
|
+
Scheduled pipelines built on `akm wiki` must be rewritten, not renamed:
|
|
228
|
+
|
|
229
|
+
1. Acquire URLs with `akm import <url> --path <subdir>` into an ordinary
|
|
230
|
+
knowledge subtree (for example `knowledge/articles`).
|
|
231
|
+
2. Deduplicate by source URL before importing, and normalize alias hosts
|
|
232
|
+
(for example `twitter.com` vs `x.com`) so one article is not imported
|
|
233
|
+
twice under two URLs.
|
|
234
|
+
3. Verify with `akm index`, `akm search`, and `akm show`, and lint the
|
|
235
|
+
destination subtree rather than the whole bundle.
|
|
236
|
+
4. Advance any incremental cursor (channel position, feed offset) only
|
|
237
|
+
after the whole task run succeeds, so a failed run is retried instead
|
|
238
|
+
of silently skipped.
|
|
239
|
+
|
|
240
|
+
### Tasks do not run after migration
|
|
241
|
+
|
|
242
|
+
Task files are strict YAML v2 in 0.9. Inspect and resynchronize the installed
|
|
243
|
+
scheduler bindings:
|
|
244
|
+
|
|
245
|
+
```sh
|
|
246
|
+
akm task doctor
|
|
247
|
+
akm task sync --rebind
|
|
248
|
+
akm task doctor
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Use `akm task history` to distinguish a disabled task, a failed command, and a
|
|
252
|
+
task that was never installed. A disabled task can still be run explicitly for
|
|
253
|
+
testing:
|
|
254
|
+
|
|
255
|
+
```sh
|
|
256
|
+
akm task run <task-id>
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
If a periodic task fails only when it coincides with a running improve
|
|
260
|
+
cycle, add `--skip-if-locked` to its improve invocation so the overlap is
|
|
261
|
+
skipped instead of recorded as a failure.
|
|
262
|
+
|
|
263
|
+
`akm task history` can also show rows stuck in an active state from runs
|
|
264
|
+
interrupted by a crash or power loss. Confirm no AKM process is actually
|
|
265
|
+
running before treating them as abandoned. Such rows are historical
|
|
266
|
+
records only, but they distort health fail-rate statistics until resolved.
|
|
267
|
+
|
|
268
|
+
### Improve aborts on legacy pending proposals
|
|
269
|
+
|
|
270
|
+
Proposals created before 0.9 can lack metadata the 0.9 lifecycle requires —
|
|
271
|
+
most often the proposed target and per-change paths. Symptoms:
|
|
272
|
+
|
|
273
|
+
- `akm improve` exits with code 70 on every cycle while processing a
|
|
274
|
+
specific proposal.
|
|
275
|
+
- `akm proposal reject` fails on the same row because archival cannot
|
|
276
|
+
serialize the missing metadata.
|
|
277
|
+
|
|
278
|
+
Inspect the queue read-only before changing anything:
|
|
279
|
+
|
|
280
|
+
```sh
|
|
281
|
+
akm proposal list --status pending --format json
|
|
282
|
+
sqlite3 -readonly "$DATA/state.db" \
|
|
283
|
+
"SELECT COUNT(*) FROM proposals WHERE status='pending' \
|
|
284
|
+
AND json_extract(metadata_json,'$.proposedTarget') IS NULL;"
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Reject duplicates and stale drafts through the normal proposal commands
|
|
288
|
+
wherever they still work; that preserves the audit trail. If rejection
|
|
289
|
+
itself fails on a malformed row, stop all writers, take a fresh
|
|
290
|
+
`sqlite3 ".backup"` copy of `state.db`, add only the missing metadata
|
|
291
|
+
fields to the affected rows, verify `PRAGMA quick_check` returns `ok`, and
|
|
292
|
+
then retry the CLI rejection. Never delete proposal rows directly.
|
|
293
|
+
|
|
294
|
+
The 0.9 pre-publish lint gate keeps structurally valid but lint-invalid
|
|
295
|
+
legacy drafts pending instead of publishing them. They are harmless, but
|
|
296
|
+
each is re-evaluated every cycle; reject drafts that can never promote so
|
|
297
|
+
they stop consuming the promotion budget.
|
|
298
|
+
|
|
299
|
+
### Stale transaction journals under `$DATA/txn`
|
|
300
|
+
|
|
301
|
+
An interrupted run can leave a journal directory under
|
|
302
|
+
`$DATA/txn/<installation>/<transaction-id>/`. Read its `journal.json`
|
|
303
|
+
before acting:
|
|
304
|
+
|
|
305
|
+
- A journal in an applying phase with zero completed operations recorded
|
|
306
|
+
no file changes. After stopping all writers, move the whole transaction
|
|
307
|
+
directory into a dated backup location. Do not delete it.
|
|
308
|
+
- A journal whose operations already published files needs per-proposal
|
|
309
|
+
reconciliation. If a published file matches the proposal content,
|
|
310
|
+
finalize the acceptance through the proposal commands. If the file has
|
|
311
|
+
since diverged (for example because you fixed lint defects in it), keep
|
|
312
|
+
the newer file, quarantine the journal, and reject the superseded
|
|
313
|
+
proposal.
|
|
314
|
+
|
|
315
|
+
A leftover journal can also block `akm proposal reject` for the proposal
|
|
316
|
+
it references. Resolve the journal first, then retry the rejection.
|
|
317
|
+
|
|
318
|
+
A journal whose `kind` no longer exists in 0.9 — notably `"mv"`, left by an
|
|
319
|
+
rc-era `akm mv` run — needs no action. It records no recoverable work, and any
|
|
320
|
+
recovery scan that meets it removes it once it is older than five minutes
|
|
321
|
+
rather than failing.
|
|
322
|
+
|
|
323
|
+
### Index or search results look incomplete
|
|
324
|
+
|
|
325
|
+
The index is regenerable. First verify the bundle and configuration, then
|
|
326
|
+
rebuild and inspect lint findings:
|
|
327
|
+
|
|
328
|
+
```sh
|
|
329
|
+
akm index
|
|
330
|
+
akm health
|
|
331
|
+
akm lint --type knowledge
|
|
332
|
+
akm search "a known document title"
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
Do not restore an old index database over a current one unless you have a
|
|
336
|
+
separate, verified recovery procedure. Rebuilding the index preserves the
|
|
337
|
+
source assets and avoids mixing database generations.
|
|
338
|
+
|
|
339
|
+
### `source "<name>" was not scanned completely`
|
|
340
|
+
|
|
341
|
+
Indexing prints this warning and preserves the source's last-known-good
|
|
342
|
+
rows when a file listed by the source cannot be read back during the walk.
|
|
343
|
+
On a Git-backed bundle the usual cause is benign: a tracked file was deleted
|
|
344
|
+
in the working tree and the deletion is not yet committed. The final 0.9.0
|
|
345
|
+
runtime handles that state; if you still see the warning, commit or restore
|
|
346
|
+
the deletion in the bundle repository and re-index:
|
|
347
|
+
|
|
348
|
+
```sh
|
|
349
|
+
git -C <bundle-dir> status --short
|
|
350
|
+
akm index
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
Because last-known-good rows are preserved, search keeps working while the
|
|
354
|
+
warning is active — but deleted assets do not disappear from the index
|
|
355
|
+
until a complete scan succeeds.
|
|
356
|
+
|
|
357
|
+
### Local LLM features fail after upgrade
|
|
358
|
+
|
|
359
|
+
Check the configured engine and endpoint without exposing credentials:
|
|
360
|
+
|
|
361
|
+
```sh
|
|
362
|
+
akm config get engines
|
|
363
|
+
akm health
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
Confirm that the local model server is running, reachable from the host, and
|
|
367
|
+
serves the configured model. Keep the endpoint and model under the named
|
|
368
|
+
`engines` configuration; the retired top-level `llm` configuration is not a
|
|
369
|
+
0.9 setting.
|
|
370
|
+
|
|
371
|
+
Verify the endpoint directly before changing AKM configuration:
|
|
372
|
+
|
|
373
|
+
```sh
|
|
374
|
+
curl -sS -o /dev/null -w '%{http_code}\n' http://HOST:PORT/v1/models
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
A 200 without an `Authorization` header means no token is needed — do not
|
|
378
|
+
wire one in. Old 401 entries in task logs can be stale evidence of a
|
|
379
|
+
transient server state, not a configuration rule; trust the live probe.
|
|
380
|
+
If a chat or classification feature fails while embeddings work, confirm
|
|
381
|
+
the exact configured model is loaded on the host you are pointing at: a
|
|
382
|
+
reachable server without the model loaded fails in ways that resemble
|
|
383
|
+
authentication or endpoint errors, and the fix may simply be pointing the
|
|
384
|
+
configuration at the host that actually serves the model.
|
|
385
|
+
|
|
386
|
+
### Derived memories contain placeholder text
|
|
387
|
+
|
|
388
|
+
A small local model can echo a prompt's example structure instead of
|
|
389
|
+
producing real content. Affected derived memories contain literal template
|
|
390
|
+
text — a description like "one sentence summary", tags like `tag1`, a
|
|
391
|
+
generic template body — and often omit the `updated` field. The final
|
|
392
|
+
0.9.0 runtime rejects this output pattern and uses a new inference cache
|
|
393
|
+
namespace, so upgrade first; regeneration under an old binary can
|
|
394
|
+
reproduce the same placeholders from cache.
|
|
395
|
+
|
|
396
|
+
Then clean up in this order:
|
|
397
|
+
|
|
398
|
+
1. Search the bundle for the literal template phrases and remove only the
|
|
399
|
+
placeholder derived assets. Do not edit dates onto them; that conceals
|
|
400
|
+
the bad automation without fixing it.
|
|
401
|
+
2. Re-run indexing and the improvement task with the upgraded runtime.
|
|
402
|
+
3. Confirm the regenerated memories contain real content and an `updated`
|
|
403
|
+
date before re-enabling any schedule that consumes them.
|
|
404
|
+
|
|
405
|
+
### Improve does less than it did on 0.8
|
|
406
|
+
|
|
407
|
+
0.9 gates autonomous maintenance lanes (memory inference, memory cleanup,
|
|
408
|
+
automatic triage promotion) behind an explicit opt-in. While
|
|
409
|
+
`experimental.improveAutonomy` is false, those lanes are skipped or queue
|
|
410
|
+
their work for review instead of applying it. That is configuration, not
|
|
411
|
+
damage. Check the current value and enable the opt-in only after reviewing
|
|
412
|
+
what the lanes may write:
|
|
413
|
+
|
|
414
|
+
```sh
|
|
415
|
+
akm config get experimental
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
Read health fail-rate advisories with the same care: the aggregate combines
|
|
419
|
+
improve results with every scheduled task, so one misconfigured legacy task
|
|
420
|
+
failing on a tight schedule can dominate the percentage while improve
|
|
421
|
+
itself is healthy. Distinguish deterministic check failures (integrity,
|
|
422
|
+
index, scheduler) from historical-rate advisories before treating health
|
|
423
|
+
as degraded.
|
|
424
|
+
|
|
425
|
+
### State databases are very large after migration
|
|
426
|
+
|
|
427
|
+
Improve telemetry accumulates in `state.db` and can dominate its size;
|
|
428
|
+
multi-gigabyte stored improve-run results are the usual cause. Set a
|
|
429
|
+
retention window, let the next quick improve run purge expired rows, then
|
|
430
|
+
compact offline:
|
|
431
|
+
|
|
432
|
+
```sh
|
|
433
|
+
akm config set improve.eventRetentionDays 30
|
|
434
|
+
akm task run <quick-improve-task-id>
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
Check the run log for the purge counts, stop all writers, then compact and
|
|
438
|
+
verify each database:
|
|
439
|
+
|
|
440
|
+
```sh
|
|
441
|
+
sqlite3 "$DATA/state.db" "VACUUM; PRAGMA quick_check;"
|
|
442
|
+
sqlite3 "$DATA/logs.db" "VACUUM; PRAGMA quick_check;"
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
Also review `$DATA/backups`: migration backups are large by design. Keep at
|
|
446
|
+
least the most recent verified pre-cutover backup, and do not prune backup
|
|
447
|
+
directories while any migration or recovery question is open.
|
|
448
|
+
|
|
449
|
+
### Proposal promotion is rejected by lint
|
|
450
|
+
|
|
451
|
+
0.9 rejects proposal promotion when a proposal has critical `unquoted-colon`,
|
|
452
|
+
`missing-ref`, or `stale-path` findings. Inspect the proposal, fix the content
|
|
453
|
+
or add an intentional lint suppression, then retry:
|
|
454
|
+
|
|
455
|
+
```sh
|
|
456
|
+
akm proposal show <proposal-id>
|
|
457
|
+
akm proposal diff <proposal-id>
|
|
458
|
+
akm proposal accept <proposal-id>
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
Rejected promotion leaves the proposal pending and does not publish the bad
|
|
462
|
+
asset. Do not force-copy the proposal into the bundle; fix the proposal through
|
|
463
|
+
the proposal command so its audit trail remains intact.
|
|
464
|
+
|
|
465
|
+
### Read-only bundles still contain v1 tasks
|
|
466
|
+
|
|
467
|
+
The migration deliberately never rewrites a read-only bundle. Affected
|
|
468
|
+
bundles are reported per bundle (a `readOnlyLegacyTasks` warning naming the
|
|
469
|
+
bundle and files), and those tasks remain non-executable warnings until the
|
|
470
|
+
upstream source ships 0.9-format tasks. Do not mark a lock-materialized
|
|
471
|
+
cache `writable: true` to silence the warning — the next source update
|
|
472
|
+
overwrites the cache and your edit with it. Update the upstream source, or
|
|
473
|
+
replace it with a writable local source if you must run those tasks now.
|
|
474
|
+
|
|
475
|
+
## Migrations Performed With a Pre-Release Build
|
|
476
|
+
|
|
477
|
+
If the migration originally ran under a 0.9.0 release candidate, re-verify
|
|
478
|
+
it with the final binary before trusting the environment:
|
|
479
|
+
|
|
480
|
+
1. Run `akm migrate status` with the final 0.9.0 binary.
|
|
481
|
+
2. Read
|
|
482
|
+
`$DATA/backups/migrations/<installation-id>/content-migration-report.json`
|
|
483
|
+
and confirm every installed bundle you expected was imported. Early
|
|
484
|
+
builds could skip an installed tree whose lock still used a prefixed
|
|
485
|
+
locator (for example `github:owner/repo`), leaving its legacy metadata
|
|
486
|
+
and filesystem proposals unimported.
|
|
487
|
+
3. Check whether quarantined legacy rows were preserved in full. The final
|
|
488
|
+
migration stores them in a `legacy_state_rows` table inside `state.db`;
|
|
489
|
+
some early builds recorded only per-surface summary counts (a
|
|
490
|
+
`legacy_state` table with counts but no `legacy_state_rows`). In that
|
|
491
|
+
case the full data exists only in the pre-cutover backup — preserve that
|
|
492
|
+
backup indefinitely, or restore and re-migrate with the final binary if
|
|
493
|
+
the quarantined history matters to you.
|
|
494
|
+
|
|
495
|
+
```sh
|
|
496
|
+
sqlite3 -readonly "$DATA/state.db" \
|
|
497
|
+
"SELECT name FROM sqlite_master \
|
|
498
|
+
WHERE name IN ('legacy_state','legacy_state_rows');"
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
## Credential Hygiene After Failures
|
|
502
|
+
|
|
503
|
+
Runs under pre-final builds could write full webhook URLs into task logs
|
|
504
|
+
when an unhandled network error printed the failing request. Before
|
|
505
|
+
archiving or sharing logs, scan for embedded credentials and rotate
|
|
506
|
+
anything you find — deleting the log copy does not un-expose a credential:
|
|
507
|
+
|
|
508
|
+
```sh
|
|
509
|
+
grep -rl 'discord.com/api/webhooks/' "$CACHE/tasks/logs" || true
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
Keep scheduler environment files (`env/*.env` in the bundle) at mode `600`
|
|
513
|
+
and out of version control. Scheduled task environments frequently hold
|
|
514
|
+
plaintext credentials; never paste their contents into logs, reports, or
|
|
515
|
+
issue trackers while diagnosing a failure.
|
|
516
|
+
|
|
517
|
+
## Recovery and Downgrade
|
|
518
|
+
|
|
519
|
+
Migration recovery runs are stored below:
|
|
520
|
+
|
|
521
|
+
```text
|
|
522
|
+
$DATA/backups/migrations/<installation-id>/<run-id>/
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
If you must restore, stop all writers first and use a verified recovery run:
|
|
526
|
+
|
|
527
|
+
```sh
|
|
528
|
+
akm-migrate restore --for 0.9.0 --run <run-id> --confirm
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
Only install an older AKM binary after restore completes. A 0.8 binary must
|
|
532
|
+
not run against a 0.9 configuration or migrated databases. If no verified
|
|
533
|
+
pre-cutover backup exists, preserve the current installation and reconstruct a
|
|
534
|
+
separate older-version data root instead of downgrading in place.
|
|
535
|
+
|
|
536
|
+
## Final Verification
|
|
537
|
+
|
|
538
|
+
After recovery, run these checks with the same binary used for migration:
|
|
539
|
+
|
|
540
|
+
```sh
|
|
541
|
+
akm --version
|
|
542
|
+
akm migrate status
|
|
543
|
+
akm task doctor
|
|
544
|
+
akm index
|
|
545
|
+
akm health
|
|
546
|
+
akm lint --type knowledge
|
|
547
|
+
akm proposal list --status pending
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
Before restarting schedules, also confirm the environment is quiescent:
|
|
551
|
+
|
|
552
|
+
- `$DATA/txn` contains no leftover transaction journals.
|
|
553
|
+
- No pending proposal is missing its target metadata (see the legacy
|
|
554
|
+
pending proposals section above).
|
|
555
|
+
- `akm task history` shows no rows stuck in an active state.
|
|
556
|
+
- Task logs contain no embedded credentials.
|
|
557
|
+
|
|
558
|
+
Restart scheduled jobs only after status is committed, the scheduler is bound
|
|
559
|
+
to the current launcher, and the index and lint checks are clean. Then watch
|
|
560
|
+
the first full scheduled cycle: one completed run of each task family under
|
|
561
|
+
cron is the real proof of recovery, not a successful manual invocation.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Reference
|
|
2
|
+
|
|
3
|
+
Authoritative reference documentation for the akm CLI and its data.
|
|
4
|
+
|
|
5
|
+
- [CLI](cli.md) -- All `akm` commands and flags
|
|
6
|
+
- [Configuration](configuration.md) -- Engines, strategies, bundles, and settings
|
|
7
|
+
- [Workflows](workflows.md) -- Unified Markdown workflow schema, run state, and native orchestration engine
|
|
8
|
+
- [Registry](https://github.com/itlackey/akm/blob/main/docs/reference/registry.md) -- Registries, search, hosting, and managing sources
|
|
9
|
+
- [Wiki Snapshot Fetchers](https://github.com/itlackey/akm/blob/main/docs/reference/wiki-snapshot-fetchers.md) -- The pluggable fetcher API for URL-based knowledge reads
|
|
10
|
+
- [Data & Telemetry](data-and-telemetry.md) -- Exactly what akm reads and writes on your machine (no remote telemetry)
|
|
11
|
+
- [akm-eval](https://github.com/itlackey/akm/blob/main/docs/reference/akm-eval.md) -- Standalone toolkit for measuring whether `akm improve` is working
|
|
12
|
+
- [Roadmap](https://github.com/itlackey/akm/blob/main/docs/reference/roadmap.md) -- High-level focus for the 0.9 and 1.0 releases
|