akm-cli 0.10.261012-beta → 0.10.261013-beta
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 +216 -0
- package/SECURITY.md +2 -2
- package/STABILITY.md +2 -2
- package/dist/assets/hints/cli-hints-full.md +6 -7
- package/dist/assets/hints/cli-hints-short.md +3 -4
- package/dist/commands/command/execution-source-loader.js +10 -14
- package/dist/commands/env/env-binding.js +47 -58
- package/dist/commands/env/env-cli.js +20 -22
- package/dist/commands/env/env.js +10 -58
- package/dist/commands/env/secret-cli.js +9 -27
- package/dist/commands/env/secret.js +3 -10
- package/dist/commands/health/scheduler-binary.js +1 -1
- package/dist/commands/improve/distill.js +0 -2
- package/dist/commands/improve/eligibility.js +0 -2
- package/dist/commands/lint/env-key-rules.js +7 -6
- package/dist/commands/lint/index.js +1 -1
- package/dist/commands/proposal/validators/proposal-validators.js +1 -4
- package/dist/commands/read/show.js +4 -25
- package/dist/commands/sources/add-cli.js +8 -63
- package/dist/commands/sources/bundle-cli.js +8 -9
- package/dist/commands/sources/installed-stashes.js +117 -61
- package/dist/commands/sources/schema-repair.js +0 -2
- package/dist/commands/sources/source-clone.js +31 -7
- package/dist/commands/tasks/explain.js +1 -1
- package/dist/commands/tasks/tasks.js +38 -56
- package/dist/commands/ui/redact.js +4 -4
- package/dist/commands/ui/workspace-actions.js +1 -1
- package/dist/commands/workflow/plan.js +47 -8
- package/dist/commands/workflow-cli.js +37 -41
- package/dist/core/adapter/adapters/akm-adapter.js +3 -3
- package/dist/core/adapter/adapters/akm-lint.js +3 -4
- package/dist/core/adapter/adapters/akm-metadata.js +2 -2
- package/dist/core/adapter/adapters/akm-task-adapter.js +5 -6
- package/dist/core/adapter/adapters/dotenv-adapter.js +4 -3
- package/dist/core/asset/resolve-ref.js +5 -0
- package/dist/core/bundle-rename.js +12 -4
- package/dist/core/common.js +4 -52
- package/dist/core/config/config-walker.js +1 -1
- package/dist/core/config/config.js +55 -18
- package/dist/core/config/schema/primitives.js +12 -6
- package/dist/core/config/schema/sources-bundles.js +2 -2
- package/dist/core/env-secret-ref.js +84 -73
- package/dist/core/errors.js +1 -1
- package/dist/core/paths.js +1 -6
- package/dist/core/redaction.js +16 -3
- package/dist/core/ref-token.js +82 -0
- package/dist/core/secret-value.js +14 -0
- package/dist/core/write-source.js +20 -4
- package/dist/indexer/indexer.js +27 -36
- package/dist/indexer/installations.js +1 -8
- package/dist/indexer/lookup/adapter-concept-owner.js +40 -14
- package/dist/indexer/materialize-embeddings.js +1 -1
- package/dist/indexer/scan/drain-dir.js +3 -3
- package/dist/indexer/search/search-source.js +4 -2
- package/dist/indexer/walk/path-resolver.js +13 -68
- package/dist/indexer/walk/walker.js +18 -22
- package/dist/integrations/agent/engine-resolution.js +9 -7
- package/dist/integrations/agent/runner-dispatch.js +4 -5
- package/dist/integrations/agent/runner.js +2 -0
- package/dist/llm/client.js +1 -1
- package/dist/llm/embedders/remote.js +4 -3
- package/dist/output/renderers.js +3 -4
- package/dist/output/shapes/helpers.js +0 -2
- package/dist/output/text/command-format.js +12 -2
- package/dist/output/text/show-directives.js +16 -28
- package/dist/output/text/workflow-format.js +37 -7
- package/dist/scripts/akm-migrate-node.js +45865 -44692
- package/dist/scripts/akm-migrate.js +45804 -44630
- package/dist/setup/steps/tasks.js +1 -2
- package/dist/sources/providers/provider-utils.js +12 -0
- package/dist/sources/resolve.js +12 -16
- package/dist/sources/snapshot-fetchers/secret-seam.js +2 -4
- package/dist/sources/snapshot-fetchers/x.js +1 -1
- package/dist/storage/repositories/proposals-repository.js +2 -2
- package/dist/storage/repositories/task-history-repository.js +2 -2
- package/dist/storage/repositories/workflow-runs-repository.js +38 -116
- package/dist/tasks/embedded.js +1 -1
- package/dist/tasks/prepare/prepare-support.js +3 -2
- package/dist/tasks/prepare/prepare.js +3 -4
- package/dist/tasks/prepare/script-capture.js +8 -22
- package/dist/tasks/run/load-task.js +46 -14
- package/dist/tasks/run/run-native-task.js +0 -8
- package/dist/tasks/run/run-workflow-task.js +2 -2
- package/dist/tasks/scheduler-sync.js +0 -1
- package/dist/tasks/source/bounded-document.js +0 -41
- package/dist/tasks/source/parse-task-source.js +0 -1
- package/dist/tasks/source/task-source-v4.js +1 -4
- package/dist/workflows/compile.js +1 -15
- package/dist/workflows/exec/child-workflow.js +1 -2
- package/dist/workflows/exec/dispatch-redaction.js +24 -6
- package/dist/workflows/exec/environment.js +11 -74
- package/dist/workflows/exec/exec-unit.js +31 -23
- package/dist/workflows/exec/frozen-judge.js +17 -3
- package/dist/workflows/exec/native-executor.js +70 -26
- package/dist/workflows/exec/run-workflow.js +31 -18
- package/dist/workflows/exec/step-work.js +4 -3
- package/dist/workflows/exec/unit-dispatch.js +1 -8
- package/dist/workflows/freeze/environment.js +14 -119
- package/dist/workflows/freeze/freeze.js +0 -1
- package/dist/workflows/freeze/step-values.js +1 -2
- package/dist/workflows/freeze/targets/child-workflow.js +3 -5
- package/dist/workflows/freeze/targets/command.js +6 -9
- package/dist/workflows/freeze/targets/shell.js +0 -3
- package/dist/workflows/parser.js +6 -25
- package/dist/workflows/plan.js +6 -2
- package/dist/workflows/renderer.js +77 -4
- package/dist/workflows/runtime/run-plan.js +37 -23
- package/dist/workflows/runtime/runs.js +41 -84
- package/dist/workflows/runtime/workflow-asset-loader.js +55 -86
- package/dist/workflows/source-files.js +7 -19
- package/docs/architecture/0.10-process-rules.md +6 -6
- package/docs/architecture/architecture.md +6 -6
- package/docs/architecture/comparisons/claude-code-vs-akm-workflows-full.md +12 -18
- package/docs/architecture/decisions/0003-child-env-allowlist-and-provenance.md +6 -8
- package/docs/architecture/internals/storage-locations.md +4 -4
- package/docs/architecture/persisted-data-compat.md +3 -2
- package/docs/architecture/specs/0.9.0-public-api-issue-backlog.md +1 -1
- package/docs/architecture/specs/akm-format-neutral-bundle-workspace-spec.md +3 -3
- package/docs/architecture/testing/manual-testing-checklist.md +46 -78
- package/docs/architecture/testing/task-workflow-manual-tests.md +22 -40
- package/docs/architecture/testing/testing-workflow.md +9 -11
- package/docs/architecture/workflow-engine.md +41 -27
- package/docs/guides/author-bundles.md +14 -17
- package/docs/guides/author-workflows.md +43 -9
- package/docs/guides/bundles.md +16 -11
- package/docs/guides/claude-code-vs-akm-workflows.md +1 -1
- package/docs/guides/run-workflows.md +25 -13
- package/docs/guides/scheduling.md +1 -1
- package/docs/maintainers/README.md +2 -3
- package/docs/maintainers/release-checklist.md +73 -126
- package/docs/migration/v0.9-to-v0.10.md +5 -1
- package/docs/reference/cli.md +124 -112
- package/docs/reference/configuration.md +16 -9
- package/docs/reference/data-and-telemetry.md +1 -1
- package/docs/reference/env-and-secrets.md +66 -15
- package/docs/reference/registry.md +6 -11
- package/docs/reference/tasks.md +11 -3
- package/docs/reference/ui-api.md +3 -3
- package/docs/reference/workflow-schema.md +109 -36
- package/package.json +1 -1
- package/schemas/akm-task.json +2 -4
- package/dist/commands/sources/dangerous-env-audit.js +0 -134
- package/dist/core/activation-policy.js +0 -67
- package/dist/execution/directory-identity.js +0 -78
- package/dist/workflows/authoring/scope-key.js +0 -79
- package/dist/workflows/source-semantics.js +0 -110
package/docs/guides/bundles.md
CHANGED
|
@@ -80,8 +80,8 @@ back out of `sourceAdded`/`installed`. Without `--name`, akm derives one
|
|
|
80
80
|
a `-<hash>` suffix only on a collision — that forgiving fallback applies
|
|
81
81
|
solely to a derived name, never to an explicit `--name`.
|
|
82
82
|
|
|
83
|
-
Git credentials must be symbolic references: `$VAR`, `${VAR}`, or
|
|
84
|
-
|
|
83
|
+
Git credentials must be symbolic references: `$VAR`, `${VAR}`, or an akm ref
|
|
84
|
+
such as `${secrets/gitea_token}`. AKM resolves the reference only at the Git subprocess boundary
|
|
85
85
|
and sends it as an HTTPS bearer header; it does not put the token in the remote
|
|
86
86
|
URL or `config.json`.
|
|
87
87
|
|
|
@@ -136,8 +136,10 @@ Valid `--kind` values are the four bundle providers: `filesystem`, `git`,
|
|
|
136
136
|
## akm bundle update / akm bundle remove
|
|
137
137
|
|
|
138
138
|
`akm bundle update` refreshes git, npm, and website bundles. Each candidate is
|
|
139
|
-
staged outside its active root
|
|
140
|
-
|
|
139
|
+
staged outside its active root and only then published and indexed. Installing
|
|
140
|
+
a bundle is the trust decision: neither `add` nor `update` inspects its `env/`
|
|
141
|
+
files, so a bundle that sets `PATH` in an env file installs and refreshes
|
|
142
|
+
unattended with no flag. `akm bundle remove` disconnects a bundle and
|
|
141
143
|
re-indexes without it.
|
|
142
144
|
|
|
143
145
|
Bundle refresh is deliberately explicit: Git bundles do not poll upstream on
|
|
@@ -152,7 +154,6 @@ akm bundle update @scope/bundle # One managed bundle
|
|
|
152
154
|
akm bundle update --all # All managed bundles
|
|
153
155
|
akm bundle update --all --force # Force fresh download even if version unchanged
|
|
154
156
|
akm bundle update --all --skip-if-locked # Scheduled refresh: exit 0 on DB contention
|
|
155
|
-
akm bundle update @scope/bundle --allow-dangerous-env-keys # Approve reviewed dangerous env keys
|
|
156
157
|
|
|
157
158
|
# Remove
|
|
158
159
|
akm bundle remove @scope/bundle # By npm id
|
|
@@ -161,12 +162,16 @@ akm bundle remove ~/.claude/skills # By path
|
|
|
161
162
|
akm bundle remove my-provider # By name
|
|
162
163
|
```
|
|
163
164
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
165
|
+
A read-only git or npm bundle whose upstream revision is unchanged is not
|
|
166
|
+
fetched or replaced again (`--force` fetches it anyway), so a task or workflow
|
|
167
|
+
running from it keeps its directory. When the revision does change, the
|
|
168
|
+
previous revision directory is kept and older ones are removed.
|
|
169
|
+
|
|
170
|
+
`--allow-dangerous-env-keys` and `--yes` are deprecated no-ops on update,
|
|
171
|
+
accepted through 0.10 so existing scripts keep working.
|
|
172
|
+
For `--all`, failed bundles are reported separately and later bundles continue.
|
|
173
|
+
A failed bundle keeps its prior bytes, lock/config state, and search-index
|
|
174
|
+
generation.
|
|
170
175
|
|
|
171
176
|
Private bundles that intentionally version every file under `env/` and
|
|
172
177
|
`secrets/` can place this documented marker anywhere in their root
|
|
@@ -6,7 +6,7 @@ subagents, runs them concurrently, and reports back before the session ends.
|
|
|
6
6
|
AKM workflows are a different thing: a portable procedure that any supported
|
|
7
7
|
agent harness can run, with durable state, retries, gates, and resume built
|
|
8
8
|
in. A workflow source is Markdown `.md`, lowered to source IR version 1. Every run freezes the durable plan
|
|
9
|
-
v4 family's executable `irVersion:
|
|
9
|
+
v4 family's executable `irVersion: 7` before execution; pre-`irVersion`-5
|
|
10
10
|
stored plans are rejected.
|
|
11
11
|
Neither replaces the other — they solve different problems, and the right
|
|
12
12
|
choice depends on whether the work is a one-off inside a session or a
|
|
@@ -12,15 +12,23 @@ see [Scheduling](scheduling.md).
|
|
|
12
12
|
|
|
13
13
|
## Start or continue a run
|
|
14
14
|
|
|
15
|
-
`akm workflow run <
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
`akm workflow run <workflows/ref>` always starts a new persisted run, and
|
|
16
|
+
`akm workflow run <run-id>` continues that exact run. Either way it executes
|
|
17
|
+
until completion, failure, verification rejection, interruption, or an
|
|
18
|
+
explicit invocation limit. A run is identified by its run id and a workflow by
|
|
19
|
+
its ref; the directory you run from never matters, so `akm workflow list` and
|
|
20
|
+
`akm workflow status` show the same runs from anywhere.
|
|
21
|
+
|
|
22
|
+
If other runs of the same ref are still active, a start says so in one
|
|
23
|
+
warning that names their ids and the `akm workflow run <id>` /
|
|
24
|
+
`akm workflow abandon <id>` commands. Starting is never refused.
|
|
25
|
+
`akm workflow resume <id>` is only for a blocked or failed run: it re-activates
|
|
26
|
+
the run so `akm workflow run <id>` can continue it.
|
|
27
|
+
`--new` is a deprecated no-op (a ref always starts a new run), kept through
|
|
28
|
+
0.10 so existing scripts keep working.
|
|
21
29
|
|
|
22
30
|
Every new run/start compiles source IR v1 and freezes the durable plan v4
|
|
23
|
-
family's current executable format (`irVersion:
|
|
31
|
+
family's current executable format (`irVersion: 7`) before publishing the run.
|
|
24
32
|
A workflow ref is a Markdown `.md` source.
|
|
25
33
|
|
|
26
34
|
```sh
|
|
@@ -29,6 +37,9 @@ akm workflow run workflows/review --changed_files a.ts --changed_files b.ts
|
|
|
29
37
|
akm workflow run <run-id> --max-retries 2 --timeout 10m
|
|
30
38
|
```
|
|
31
39
|
|
|
40
|
+
Parameters are accepted on every ref start. They cannot be combined with a run
|
|
41
|
+
id, which already has its parameters.
|
|
42
|
+
|
|
32
43
|
Parameter flags must come after the target and exactly match declared
|
|
33
44
|
`params` keys. Values are coerced through each parameter's JSON Schema:
|
|
34
45
|
repeat an array flag, pass an object or whole array as JSON, and use a bare
|
|
@@ -58,7 +69,7 @@ and evidence — for a given run ID or workflow ref.
|
|
|
58
69
|
```sh
|
|
59
70
|
akm workflow status <run-id>
|
|
60
71
|
akm workflow status workflows/ship-release
|
|
61
|
-
# When given a ref,
|
|
72
|
+
# When given a ref, shows the most recently updated run of that ref
|
|
62
73
|
```
|
|
63
74
|
|
|
64
75
|
Use this to inspect where a run is after a context window break, or to verify
|
|
@@ -151,12 +162,13 @@ A child run id always works directly, listed or not — `akm workflow status
|
|
|
151
162
|
<childRunId>`, `resume`, `abandon`, and `run` all operate on it exactly like
|
|
152
163
|
any other run.
|
|
153
164
|
|
|
154
|
-
## List runs
|
|
165
|
+
## List runs
|
|
155
166
|
|
|
156
|
-
`akm workflow list` shows workflow
|
|
167
|
+
`akm workflow list` shows every workflow run on this host, most recently
|
|
168
|
+
updated first. `--all-scopes` is a deprecated no-op, kept through 0.10.
|
|
157
169
|
|
|
158
170
|
```sh
|
|
159
|
-
akm workflow list # All runs
|
|
171
|
+
akm workflow list # All runs (any status)
|
|
160
172
|
akm workflow list --active # Only status=active (executable) runs
|
|
161
173
|
akm workflow list --ref workflows/ship-release # Runs for a specific workflow
|
|
162
174
|
```
|
|
@@ -190,7 +202,7 @@ completed are skipped, not re-run (see
|
|
|
190
202
|
A resume consumes the frozen plan and journaled attempts; it does not re-read
|
|
191
203
|
configuration or the index, and reads the authored workflow only to warn once
|
|
192
204
|
when it changed since the run was frozen (the run continues on the frozen
|
|
193
|
-
plan; `akm workflow run <ref
|
|
205
|
+
plan; `akm workflow run <ref>` starts a new run that picks up the edit). A stored plan this akm
|
|
194
206
|
cannot decode is abandoned with a message naming how to start a new run.
|
|
195
207
|
|
|
196
208
|
## Abandon a run
|
|
@@ -249,7 +261,7 @@ treat package dependencies**:
|
|
|
249
261
|
- **Audit before run** for any workflow that touches secrets, deploys to
|
|
250
262
|
production, or writes outside the project tree. Read the `env:` bindings a
|
|
251
263
|
workflow declares, and read its `exec.pass_env` lines.
|
|
252
|
-
The durable v4 family (`irVersion:
|
|
264
|
+
The durable v4 family (`irVersion: 7`) rejects `inherit_env`. Authors must
|
|
253
265
|
use exact named bindings and `pass_env` names.
|
|
254
266
|
- **Pin known-good versions** when adding workflow sources from a registry
|
|
255
267
|
or git remote (`akm bundle add github:owner/repo#v1.2.3`), and update
|
|
@@ -61,7 +61,7 @@ different checkout or package. Editing definitions and running ordinary `akm
|
|
|
61
61
|
task sync` preserves that captured runtime.
|
|
62
62
|
|
|
63
63
|
A scheduled fire re-reads the guarded current source and creates a fresh
|
|
64
|
-
durable-v4-family freeze at executable `irVersion:
|
|
64
|
+
durable-v4-family freeze at executable `irVersion: 7`.
|
|
65
65
|
Scheduler sync/validation evidence is not an executable snapshot and is never reused as the later run plan.
|
|
66
66
|
|
|
67
67
|
## A scheduled `akm improve` covers one bundle
|
|
@@ -8,9 +8,8 @@ actually improve it, and the current state of the `curate` implementation.
|
|
|
8
8
|
kind of contributor check (live source, built launcher, packed-package
|
|
9
9
|
acceptance, global checkout install) and the verification commands to run
|
|
10
10
|
before pushing.
|
|
11
|
-
- [Release Checklist](release-checklist.md) —
|
|
12
|
-
|
|
13
|
-
required before publication.
|
|
11
|
+
- [Release Checklist](release-checklist.md) — the branch model and the steps to
|
|
12
|
+
cut, release and install akm and its plugins.
|
|
14
13
|
- [akm-eval](https://github.com/itlackey/akm-eval) — the evals and benchmarks
|
|
15
14
|
that measure whether `akm improve` and retrieval changes are actually
|
|
16
15
|
working. The old in-repo toolkit is retired: see [eval.md](eval.md).
|
|
@@ -1,135 +1,82 @@
|
|
|
1
1
|
# Release Checklist
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
3
|
+
`main` is the stable line (npm `latest`). The next version is developed on a
|
|
4
|
+
release branch, `release/<version>` (npm `next`), which merges to `main` when
|
|
5
|
+
it becomes stable. A fix for stable lands on `main` and is cherry-picked onto
|
|
6
|
+
the release branch when that branch needs it.
|
|
7
|
+
|
|
8
|
+
## 1. Cut the version
|
|
9
|
+
|
|
10
|
+
On the branch you release from (`main` for stable, the release branch for
|
|
11
|
+
next):
|
|
12
|
+
|
|
13
|
+
1. Set the version: `npm pkg set version=<version>`. From 0.10,
|
|
14
|
+
`bun scripts/release-version.ts next` prints the next free one (see
|
|
15
|
+
[Versions](#versions)).
|
|
16
|
+
2. Cut the changelog: add `## [<version>] - <YYYY-MM-DD>` (UTC date) directly
|
|
17
|
+
under `## [Unreleased]`, so the unreleased entries become this release's
|
|
18
|
+
section. CI fails the release commit when the newest section does not name
|
|
19
|
+
the `package.json` version (`tests/workflow-release.test.ts`).
|
|
20
|
+
3. Add a migration note if the release needs one (see
|
|
21
|
+
[CONTRIBUTING](https://github.com/itlackey/akm/blob/main/.github/CONTRIBUTING.md#shipping-a-release--migration-notes)).
|
|
22
|
+
4. Commit `release: <version>`, push it to the branch, and let CI run on it.
|
|
23
|
+
|
|
24
|
+
## 2. Release akm
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
gh workflow run release.yml --ref <branch> -f version=<version> [-f stage=alpha|beta|rc]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The Release workflow, on the pushed commit:
|
|
31
|
+
|
|
32
|
+
1. runs Gated CI: semantic search with real embeddings, the Docker install
|
|
33
|
+
matrix, and the native schedulers on Linux, macOS and Windows;
|
|
34
|
+
2. requires CI to have passed on the same commit (it does not run lint, the
|
|
35
|
+
typecheck or the test suites again);
|
|
36
|
+
3. runs `tests/release-check.sh --skip-docker`: the packaged artifact's bin
|
|
37
|
+
targets and migrator, package acceptance, and the upgrade rehearsal against
|
|
38
|
+
the packed tarball;
|
|
39
|
+
4. builds the package and standalone binaries, publishes to npm (`latest` for
|
|
40
|
+
a stable version, `next` for a prerelease) and creates the GitHub release.
|
|
41
|
+
|
|
42
|
+
If a job fails on a flake, rerun the failed jobs. If the fix needs a code
|
|
43
|
+
change, commit it and release that commit. npm can take several minutes to show
|
|
44
|
+
a new version: check `npm view akm-cli@<tag> version` before upgrading.
|
|
45
|
+
|
|
46
|
+
## 3. Release the plugins
|
|
31
47
|
|
|
32
48
|
```sh
|
|
33
|
-
|
|
34
|
-
candidate_short_sha="$(git rev-parse --short=12 HEAD)"
|
|
35
|
-
candidate_version="$(node -p 'require("./package.json").version')"
|
|
36
|
-
candidate_tag="gated-ci/candidate-${candidate_version}-${candidate_short_sha}"
|
|
37
|
-
git tag "$candidate_tag" "$candidate_sha"
|
|
38
|
-
git push origin "refs/tags/$candidate_tag"
|
|
49
|
+
gh workflow run release.yml --repo itlackey/akm-plugins --ref <plugins branch> -f akm_version=<published akm version>
|
|
39
50
|
```
|
|
40
51
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
commit for every gate. Wait for all of these stable checks to succeed on either
|
|
59
|
-
candidate path:
|
|
60
|
-
|
|
61
|
-
- `Gated / Semantic Search`
|
|
62
|
-
- `Gated / Docker Install`
|
|
63
|
-
- `Gated / Native Scheduler / Linux`
|
|
64
|
-
- `Gated / Native Scheduler / macOS`
|
|
65
|
-
- `Gated / Native Scheduler / Windows`
|
|
66
|
-
- `Gated / Release Candidate Evidence`
|
|
67
|
-
|
|
68
|
-
The final evidence job records the requested and resolved SHA, the trigger ref,
|
|
69
|
-
each suite's result, and a run link in the workflow summary. A weekly run is
|
|
70
|
-
drift detection, not release evidence, because it may cover a different
|
|
71
|
-
commit.
|
|
72
|
-
|
|
73
|
-
Manual and tagged candidate runs are cache restore-only. Only a successful
|
|
74
|
-
scheduled run of the workflow on the repository's default branch may save the
|
|
75
|
-
HuggingFace model cache; its key identifies both the embedding model and the
|
|
76
|
-
source/lock inputs. This prevents candidate-controlled workflow code from
|
|
77
|
-
publishing cache entries while still avoiding repeated model downloads.
|
|
78
|
-
|
|
79
|
-
Copy the successful run URL (for example,
|
|
80
|
-
`https://github.com/itlackey/akm/actions/runs/<run-id>`) and the exact candidate
|
|
81
|
-
SHA into both the release PR and its milestone/parent tracker. Do not publish
|
|
82
|
-
from a candidate whose evidence link names a different SHA, whose final
|
|
83
|
-
evidence job is skipped, or whose run was re-run after the candidate changed.
|
|
84
|
-
|
|
85
|
-
## 3. Gated CI does not run on pull requests
|
|
86
|
-
|
|
87
|
-
Gated CI runs on three triggers only: the weekly schedule, an exact-SHA
|
|
88
|
-
`workflow_dispatch`, and a `gated-ci/candidate-*` tag. All three run every
|
|
89
|
-
suite.
|
|
90
|
-
|
|
91
|
-
There used to be a `Gated / Detect Changed Paths` job that also ran these on
|
|
92
|
-
PRs, selecting suites by regex-matching the diff against path lists. It was
|
|
93
|
-
deleted in 0.9.8: the patterns had gone stale — they still named test files a
|
|
94
|
-
reorganisation had moved or deleted, so it was silently under-selecting suites
|
|
95
|
-
and nobody noticed. A build-policing job that quietly stops policing is worse
|
|
96
|
-
than no job, because its green status is read as coverage.
|
|
97
|
-
|
|
98
|
-
Nothing about release evidence changes. Step 2 was always the requirement, and
|
|
99
|
-
it never went through the PR path.
|
|
100
|
-
|
|
101
|
-
The candidate-tag trigger is reserved for release evidence and workflow
|
|
102
|
-
rollout: it always runs `all`, because a tag-push workflow is the path available
|
|
103
|
-
before the workflow file reaches the default branch.
|
|
104
|
-
|
|
105
|
-
## 4. Publish
|
|
106
|
-
|
|
107
|
-
After the exact-SHA gated run and local release check are green, trigger the
|
|
108
|
-
Release workflow with the version already committed in `package.json`. Keep the
|
|
109
|
-
candidate SHA and Gated CI run URL in the release record so the published
|
|
110
|
-
artifact's validation can be audited later.
|
|
52
|
+
Plugins match akm's major.minor and keep their own patch numbers; each plugin
|
|
53
|
+
release's notes name the akm version it requires. A plugin-only fix is released
|
|
54
|
+
the same way, with the akm version already published. The Claude marketplace
|
|
55
|
+
reads the plugins repository's `main`, so stable plugin releases come from
|
|
56
|
+
`main`.
|
|
57
|
+
|
|
58
|
+
## 4. Upgrade
|
|
59
|
+
|
|
60
|
+
`akm upgrade` (stable) or `akm upgrade --next` (prerelease) updates akm and the
|
|
61
|
+
installed plugins.
|
|
62
|
+
|
|
63
|
+
## Gated CI on its own
|
|
64
|
+
|
|
65
|
+
Gated CI also runs weekly on `main` to catch drift, and on demand from the
|
|
66
|
+
Actions tab on any ref. Only the weekly run saves the Hugging Face model cache.
|
|
67
|
+
|
|
68
|
+
## Versions
|
|
111
69
|
|
|
112
70
|
0.10 and later use monthly release numbers, `0.10.YYMMNN`: `YY` the UTC year,
|
|
113
71
|
`MM` the month and `NN` the release in that month (`01` to `99`), two digits
|
|
114
|
-
each (see [`STABILITY.md`](../../STABILITY.md)).
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
`
|
|
120
|
-
|
|
121
|
-
The
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
`tests/release-version.test.ts`): two digits each for `YY`, `MM`, `NN`, a
|
|
126
|
-
month 01 to 12, `NN` 01 to 99; the old 8-digit daily form is rejected. For
|
|
127
|
-
0.9 and older it is the `X.Y.Z` as before.
|
|
128
|
-
- `stage`: `none` publishes `<version>` to the npm `latest` tag and as a GitHub
|
|
129
|
-
release. `alpha`, `beta` or `rc` publishes `<version>-<stage>` to `next` as a
|
|
130
|
-
GitHub prerelease (no `.N`: every release has its own number). There is no
|
|
131
|
-
promoting one build through stages: the next release, at any stage, commits
|
|
132
|
-
the next number (`0.10.261001-alpha`, then `0.10.261002-beta`, then
|
|
133
|
-
`0.10.261003`).
|
|
134
|
-
|
|
135
|
-
`bun scripts/release-version.ts validate <version>` checks a version by hand.
|
|
72
|
+
each (see [`STABILITY.md`](../../STABILITY.md)). `bun scripts/release-version.ts
|
|
73
|
+
next` takes `NN` as one above the highest release already on npm for this UTC
|
|
74
|
+
month, with or without a stage, and `bun scripts/release-version.ts validate
|
|
75
|
+
<version>` checks one by hand. The retired 8-digit daily builds
|
|
76
|
+
(`0.10.26101001-alpha` to `0.10.26101202-alpha`) are not counted. 0.9 and older
|
|
77
|
+
use `X.Y.Z`.
|
|
78
|
+
|
|
79
|
+
The `stage` input is not committed: `none` (the default) publishes `<version>`
|
|
80
|
+
to `latest`; `alpha`, `beta` or `rc` publishes `<version>-<stage>` to `next` as
|
|
81
|
+
a GitHub prerelease. Every release, at any stage, takes the next number; a
|
|
82
|
+
build is not promoted through stages.
|
|
@@ -48,7 +48,11 @@ akm workflow list --active
|
|
|
48
48
|
`script` target (both came from features 0.10 removed) cannot be decoded in
|
|
49
49
|
0.10; `akm workflow run` abandons it. A run whose plan has `unit.isolation`
|
|
50
50
|
still decodes and runs in the engine's working directory. Let active runs
|
|
51
|
-
finish, or abandon them on purpose, before you upgrade.
|
|
51
|
+
finish, or abandon them on purpose, before you upgrade. In 0.10
|
|
52
|
+
`akm workflow run <ref>` always starts a new run (`akm workflow run <run-id>`
|
|
53
|
+
continues one; `resume` only re-activates a blocked or failed one), runs are no longer scoped
|
|
54
|
+
to a directory, and 0.9.15 does not see runs 0.10 started on the same
|
|
55
|
+
`state.db`. `--new` and `--all-scopes` are accepted and do nothing.
|
|
52
56
|
- **Quit OpenCode.** `akm upgrade` skips (reports `deferred`) a plugin update
|
|
53
57
|
while an OpenCode process runs. See [Plugins](#plugins).
|
|
54
58
|
|