Makes the aker rename visible to users of the published CLI, and makes releasing safe to repeat.
Install
npx --package aker-build aker check .Or globally: npm i -g aker-build → aker check . · Or from PyPI: pip install aker-build
The package is aker-build; the command it installs is aker. Requires Node.js 22.13+ (the PyPI wheel wraps the same compiled bundle and still needs a Node runtime).
Fixed
The published CLI identified itself by the retired name. On 0.1.0, aker --help printed Usage: aker-build [options] [command], and every usage and error line Commander emitted carried it — the rename visibly incomplete to every user. Registry pages and the shipped binary only update on publish, so the fix needed a version to travel on.
Both registry landing pages were rewritten for the audience that actually reads them. The npm page was a monorepo dev doc titled @aker-build/cli with links resolving to nothing on npmjs.com; the PyPI page never mentioned that a Node runtime is required. Both now lead with what the tool does, install for their own channel, and a real route.json showing why one task won and why others were blocked — plus the coverage caveat, the regex-not-parsed limitation, and what the tool refuses to do.
Releasing was not safe to repeat. Three separate defects in the release path, each of which produced an error naming something other than its cause:
- The version was restated by five producers rather than derived from one. A bump produced a manifest claiming one version wrapped around a binary reporting another — and the check meant to catch it compared its own literal against the builder's copy of the same literal, so it could not fail.
actions/setup-node'sregistry-urlwrote an.npmrcauth token defaulting to the placeholderXXXXX-XXXXX-XXXXX-XXXXX, which silently displaced OIDC. npm answers an unauthorizedPUTon an existing package with404rather than403, so rejected credentials read as a missing package — while provenance signing succeeded in the same step, making the log look like OIDC was working.- Both release environments were ungated: the
npm-releaseenvironment did not exist, andpypihad an empty protection-rules array. GitHub auto-creates a named-but-missing environment with no protection on first use, so a dispatch published with no approval stop.
All three are now guarded by tests: scripts/cli-version.mjs is the single version reader, scripts/release-oidc-auth.mjs fails the build if a workflow publishing under id-token: write sets registry-url again, and scripts/setup-release-environments.mjs applies and verifies the approval gates.
Also in this release: the MCP server advertises the real CLI version instead of a hardcoded one, and the generated agent bundle manifest is pinned to LF so a local rebuild no longer leaves a phantom modification in git status.
First provenanced release
0.1.2 carries a SLSA attestation (predicateType: https://slsa.dev/provenance/v1) on npm, published tokenlessly through Trusted Publishing, plus a PyPI publish attestation. 0.1.0 was published by hand — npm cannot bind a Trusted Publisher to a package that does not yet exist — so it has npm's registry signature only, which is not provenance.
Verified at this tag
pnpm test— 442 passed, 3 pre-existing skips, all 15 packages run under--no-bailpnpm test:cli-package— packed and installedaker-build-0.1.2.tgzend to endpnpm test:agent-bundle·pnpm typecheck(14 packages)python -m build→aker_build-0.1.2; packaging tests 8/8- From the public registries:
aker --version→0.1.2, andaker --help→Usage: aker [options] [command]
Note on 0.1.1
0.1.1 was tagged but never published to either registry. A workflow_dispatch runs the workflow file from the ref it is dispatched from, so the release-workflow fix could only take effect for a tag containing it. Rather than move a tag, the version was bumped — 0.1.1 reached no consumer.
What it does
Scans a repository, runs SaaS gates over what it finds, derives a queue, and routes the one next-safest task with the exact files that task may touch. It reports; it never mutates code, commits, merges, or executes an agent.