* docs: add npm managed python runtime design * build: add bundled python runtime wheel builder * build: make local embedding dependencies optional * build: bundle python runtime wheel in cli artifacts * build: track bundled python runtime release artifact * test: verify bundled python runtime wheel * docs: add plan for bundled python runtime wheel * test: cover managed python runtime lifecycle * feat: add managed python runtime installer * feat: add runtime command runner * feat: expose runtime management commands * test: verify managed python runtime commands * docs: add plan for managed python runtime installer * feat: add managed python command helper * feat: use managed runtime for sl query compute * feat: route sl query managed runtime policy * docs: add plan for managed runtime sl query integration * feat: add managed runtime daemon metadata * feat: manage python daemon lifecycle * feat: add runtime daemon start stop commands * fix: verify managed runtime daemon lifecycle * docs: add plan for managed runtime daemon lifecycle * feat: add managed local embeddings config marker * feat: add managed local embeddings daemon helper * feat: use managed runtime for local embedding setup * feat: pass managed runtime policy through setup * docs: add plan for managed local embeddings runtime * feat: read CLI package metadata dynamically * feat: assemble public kaelio ktx npm package * feat: release one public kaelio ktx npm artifact * test: cover public kaelio ktx package invocations * chore: verify public kaelio ktx package artifacts * docs: add plan for public kaelio ktx npm package * test: verify managed runtime in public package smoke * test: finalize managed runtime release smoke * docs: add plan for managed runtime release smoke * test: specify local embeddings release smoke * feat: add local embeddings runtime smoke * chore: register local embeddings smoke * fix: verify local embeddings smoke * fix: restore artifact smoke python env helper * docs: add plan for managed local embeddings release smoke * refactor: share managed runtime install policy parsing * feat: use managed runtime for agent semantic queries * feat: use managed runtime for MCP semantic compute * docs: add plan for managed agent and MCP semantic runtime * feat(cli): add managed daemon HTTP helpers * feat(cli): route local adapters through managed daemon * feat(cli): use managed daemon for ingest helpers * feat(cli): pass managed daemon options to scan * feat(context): pass MCP ingest pull config options * feat(cli): pass managed daemon options to serve ingest * test: verify managed local ingest daemon runtime * docs: add plan for managed local ingest daemon runtime * docs: align managed runtime examples * docs: add plan for managed runtime docs cleanup * test: cover published package runtime smoke commands * test: validate published package smoke outputs * docs: add plan for published package runtime smoke * build: stamp public npm package version * release: add npm public release policy * release: add guarded npm publish script * release: document public npm release handoff * docs: add plan for public npm release handoff * test: cover managed runtime prune in package smoke * docs: document managed runtime prune * docs: add plan for managed runtime prune smoke and docs * chore: encode uv runtime prerequisite policy * fix: clarify missing uv runtime error * docs: document uv runtime prerequisite * docs: add plan for uv runtime prerequisite contract * refactor: limit release artifacts to public package runtime * chore: align release policy with bundled runtime wheel * docs: describe single public runtime artifact surface * test: verify single public runtime artifact contract * docs: add plan for single public runtime artifact cleanup * fix: align local embeddings smoke with public version * docs: add plan for local embeddings smoke public version * release: soft-launch as @kaelio/ktx@0.1.0-rc.0 on next tag Publish target moves to the pre-release version 0.1.0-rc.0 under the next dist-tag so npm install @kaelio/ktx (which resolves to latest) does not pick up the soft-launch build. Users opt in via @kaelio/ktx@next. * Fix release script boundary checks * Remove PostHog from public package bundle
8.1 KiB
Managed Local Embeddings Smoke Public Version Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Make the opt-in local embeddings release smoke validate the public
@kaelio/ktx package version instead of the private workspace version.
Architecture: Reuse the public package constants from
scripts/build-public-npm-package.mjs inside the local embeddings smoke. Add a
small exported RegExp helper so the unit test can lock the version expectation
without running the expensive model-download smoke.
Tech Stack: Node.js ESM scripts, node:test, pnpm release scripts.
Current State
The npm-managed Python runtime spec is
docs/superpowers/specs/2026-05-11-npm-managed-python-runtime-design.md.
The current branch already contains implementation commits for each existing
plan derived from that spec.
Implemented spec-derived plans:
docs/superpowers/plans/2026-05-11-bundled-python-runtime-wheel.mddocs/superpowers/plans/2026-05-11-managed-python-runtime-installer.mddocs/superpowers/plans/2026-05-11-managed-python-runtime-command-integration.mddocs/superpowers/plans/2026-05-11-managed-python-runtime-daemon-lifecycle.mddocs/superpowers/plans/2026-05-11-managed-local-embeddings-runtime.mddocs/superpowers/plans/2026-05-11-public-kaelio-ktx-npm-package.mddocs/superpowers/plans/2026-05-11-managed-python-runtime-release-smoke.mddocs/superpowers/plans/2026-05-11-managed-local-embeddings-release-smoke.mddocs/superpowers/plans/2026-05-11-managed-agent-mcp-semantic-runtime.mddocs/superpowers/plans/2026-05-11-managed-local-ingest-daemon-runtime.mddocs/superpowers/plans/2026-05-11-managed-runtime-docs-and-postgres-smoke-cleanup.mddocs/superpowers/plans/2026-05-11-published-package-managed-runtime-smoke.mddocs/superpowers/plans/2026-05-11-public-npm-release-handoff.mddocs/superpowers/plans/2026-05-11-managed-runtime-prune-smoke-and-docs.mddocs/superpowers/plans/2026-05-11-managed-runtime-uv-prerequisite-contract.mddocs/superpowers/plans/2026-05-11-single-public-runtime-artifact-cleanup.md
The remaining gap is in
scripts/local-embeddings-runtime-smoke.mjs. The script selects and installs a
public tarball named kaelio-ktx-*.tgz and writes a smoke package dependency on
@kaelio/ktx, but line 267 still expects @kaelio/ktx 0.0.0-private. The
public package builder defines PUBLIC_NPM_PACKAGE_VERSION = '0.1.0', and the
main packed-package smoke already expects @kaelio/ktx 0.1.0.
File Structure
This change keeps the release version source of truth in one script and reuses it from the opt-in smoke.
- Modify
scripts/local-embeddings-runtime-smoke.mjs: import the public package constants, exportexpectedPublicKtxVersionPattern(), and use that pattern for the smoke version assertion. - Modify
scripts/local-embeddings-runtime-smoke.test.mjs: importexpectedPublicKtxVersionPattern()and assert that it accepts@kaelio/ktx 0.1.0and rejects@kaelio/ktx 0.0.0-private.
Task 1: Align the local embeddings smoke version assertion
Files:
-
Modify:
scripts/local-embeddings-runtime-smoke.mjs:1-267 -
Modify:
scripts/local-embeddings-runtime-smoke.test.mjs:5-118 -
Test:
scripts/local-embeddings-runtime-smoke.test.mjs -
Step 1: Write the failing version-pattern test
In scripts/local-embeddings-runtime-smoke.test.mjs, update the import block
to include expectedPublicKtxVersionPattern:
import {
buildLocalEmbeddingsSmokeEnv,
expectedPublicKtxVersionPattern,
localEmbeddingsSmokeCommands,
localEmbeddingsSmokeOptIn,
parseDaemonBaseUrl,
publicKtxTarballName,
validateEmbeddingResponse,
} from './local-embeddings-runtime-smoke.mjs';
Then add this test after the publicKtxTarballName describe block:
describe('expectedPublicKtxVersionPattern', () => {
it('matches the public package version and rejects the private workspace version', () => {
const pattern = expectedPublicKtxVersionPattern();
assert.match('@kaelio/ktx 0.1.0\n', pattern);
assert.doesNotMatch('@kaelio/ktx 0.0.0-private\n', pattern);
});
});
- Step 2: Run the test to verify it fails
Run:
node --test scripts/local-embeddings-runtime-smoke.test.mjs
Expected: FAIL with an ESM export error that says
expectedPublicKtxVersionPattern is not exported from
./local-embeddings-runtime-smoke.mjs.
- Step 3: Import the public package constants
In scripts/local-embeddings-runtime-smoke.mjs, add this import after the
existing Node imports:
import {
PUBLIC_NPM_PACKAGE_NAME,
PUBLIC_NPM_PACKAGE_VERSION,
} from './build-public-npm-package.mjs';
The top of the file becomes:
import { execFile } from 'node:child_process';
import { mkdir, mkdtemp, readFile, readdir, rm, writeFile } from 'node:fs/promises';
import { tmpdir } from 'node:os';
import { dirname, join, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
import { promisify } from 'node:util';
import {
PUBLIC_NPM_PACKAGE_NAME,
PUBLIC_NPM_PACKAGE_VERSION,
} from './build-public-npm-package.mjs';
- Step 4: Add the version-pattern helper
In scripts/local-embeddings-runtime-smoke.mjs, add these functions after the
OPT_IN_MESSAGE constant:
function escapeRegExp(value) {
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
export function expectedPublicKtxVersionPattern() {
return new RegExp(
`${escapeRegExp(PUBLIC_NPM_PACKAGE_NAME)} ${escapeRegExp(PUBLIC_NPM_PACKAGE_VERSION)}`,
);
}
- Step 5: Use the helper in the smoke
In scripts/local-embeddings-runtime-smoke.mjs, replace this line:
requireOutput(commands[0].label, version, /@kaelio\/ktx 0\.0\.0-private/);
with:
requireOutput(commands[0].label, version, expectedPublicKtxVersionPattern());
- Step 6: Run the focused test
Run:
node --test scripts/local-embeddings-runtime-smoke.test.mjs
Expected: PASS. The new test proves the smoke accepts @kaelio/ktx 0.1.0 and
rejects @kaelio/ktx 0.0.0-private.
- Step 7: Run related release-script tests
Run:
node --test scripts/local-embeddings-runtime-smoke.test.mjs scripts/build-public-npm-package.test.mjs scripts/package-artifacts.test.mjs
Expected: PASS. These tests cover the public package constants, tarball name, artifact smoke source, and local embeddings smoke helpers.
- Step 8: Run a stale-expectation search
Run:
rg -n "@kaelio/ktx 0\\.0\\.0-private|0\\\\\\.0\\\\\\.0-private" scripts/local-embeddings-runtime-smoke.mjs
Expected: no output. The opt-in local embeddings smoke no longer contains the
private package version expectation. The test file still uses
@kaelio/ktx 0.0.0-private as a negative fixture.
- Step 9: Commit
Run:
git add scripts/local-embeddings-runtime-smoke.mjs scripts/local-embeddings-runtime-smoke.test.mjs
git commit -m "fix: align local embeddings smoke with public version"
Verification
Run these checks before marking the plan complete:
node --test scripts/local-embeddings-runtime-smoke.test.mjs scripts/build-public-npm-package.test.mjs scripts/package-artifacts.test.mjs
rg -n "@kaelio/ktx 0\\.0\\.0-private|0\\\\\\.0\\\\\\.0-private" scripts/local-embeddings-runtime-smoke.mjs
Expected results:
node --test ...exits with code 0.rg ...prints no matches.- No Python files changed, so the repository Python pre-commit requirement does not apply.
Self-Review
- Spec coverage: this plan fixes the opt-in local embeddings release smoke from the npm-managed runtime spec so it validates the public npm package produced by the current release artifact flow.
- Placeholder scan: the plan contains concrete file paths, code blocks, commands, and expected outcomes.
- Type consistency: the helper name is consistently
expectedPublicKtxVersionPattern, and it usesPUBLIC_NPM_PACKAGE_NAMEplusPUBLIC_NPM_PACKAGE_VERSIONfrom the public package builder.