ktx/docs/superpowers/plans/2026-05-11-managed-local-embeddings-smoke-public-version.md
Andrey Avtomonov 9dad936ac7
feat: npm-managed Python runtime for @kaelio/ktx (#7)
* 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
2026-05-11 15:50:34 +02:00

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.md
  • docs/superpowers/plans/2026-05-11-managed-python-runtime-installer.md
  • docs/superpowers/plans/2026-05-11-managed-python-runtime-command-integration.md
  • docs/superpowers/plans/2026-05-11-managed-python-runtime-daemon-lifecycle.md
  • docs/superpowers/plans/2026-05-11-managed-local-embeddings-runtime.md
  • docs/superpowers/plans/2026-05-11-public-kaelio-ktx-npm-package.md
  • docs/superpowers/plans/2026-05-11-managed-python-runtime-release-smoke.md
  • docs/superpowers/plans/2026-05-11-managed-local-embeddings-release-smoke.md
  • docs/superpowers/plans/2026-05-11-managed-agent-mcp-semantic-runtime.md
  • docs/superpowers/plans/2026-05-11-managed-local-ingest-daemon-runtime.md
  • docs/superpowers/plans/2026-05-11-managed-runtime-docs-and-postgres-smoke-cleanup.md
  • docs/superpowers/plans/2026-05-11-published-package-managed-runtime-smoke.md
  • docs/superpowers/plans/2026-05-11-public-npm-release-handoff.md
  • docs/superpowers/plans/2026-05-11-managed-runtime-prune-smoke-and-docs.md
  • docs/superpowers/plans/2026-05-11-managed-runtime-uv-prerequisite-contract.md
  • docs/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, export expectedPublicKtxVersionPattern(), and use that pattern for the smoke version assertion.
  • Modify scripts/local-embeddings-runtime-smoke.test.mjs: import expectedPublicKtxVersionPattern() and assert that it accepts @kaelio/ktx 0.1.0 and 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 uses PUBLIC_NPM_PACKAGE_NAME plus PUBLIC_NPM_PACKAGE_VERSION from the public package builder.