How to cut an ALTAI VS Code extension build for the channels defined in the engineering plan: internal → alpha → beta → stable.
For architecture and compatibility pins see ENGINEERING_PLAN.md and PROTOCOL_COMPATIBILITY.md.
For the multi-repo program that unblocks Apply/Deny, shared UI extract, npm publish, Marketplace, MCP/skills, usage meters, and CI foundations see UNLOCK_PLAN.md.
| Channel | Audience | Distribution | Exit criteria |
|---|---|---|---|
internal |
Maintainers | CI package.yml fixture VSIX artifacts |
npm run verify green; package matrix green |
alpha |
Org testers | Private / org feed with host binaries | Checklist below + real agent run on one macOS + one Linux |
beta |
Opt-in Marketplace pre-release | VS Marketplace pre-release | Alpha criteria + Remote SSH smoke |
stable |
Public Marketplace | VS Marketplace stable | Full feature matrix; no P0/P1; pinned host checksums |
Copy into the release PR description and check every box for the target channel.
-
package.jsonversionmatchesCOMPATIBILITY.extensionand a## [x.y.z]section inCHANGELOG.md -
docs/PROTOCOL_COMPATIBILITY.mdupdated for UI package, protocol major, andaltai-agent-hostpin - Protocol major bump (if any) documented with migration notes
-
npm run verifygreen locally (typecheck, lint, tests, build, guards, package audit, security) - CI
qualityworkflow green - CI
packageworkflow green for all release targets (darwin-arm64,darwin-x64,linux-x64,win32-x64)
- Real host binary per target staged via
npm run package:target -- --target=<t> --host=<path> - Each VSIX passes
npm run verify:vsix -- --vsix=<file> --target=<t> - Exactly one
resources/native/<target>/tree;.sha256present and valid - No source maps or
src//test/trees in the VSIX - VSIX installs on a clean machine / empty profile
- Workspace Trust: host does not start until trusted
- Trust + host:
ALTAI: Run Diagnosticsshows lifecycle Ready (or clear Missing recovery when override is unset) - Provider Connect prompts via Extension Host input (no secret in Webview)
- Start run / stream / cancel on a trusted local workspace
- Operations open + at least one deep-link command works
- Remote SSH (or WSL / Dev Container): extension runs as workspace kind on remote
- Host binary resolves on the remote (packaged or
ALTAI_AGENT_HOST_PATH) - Diagnostics report
remoteNamenon-local
- Secret scan + license audit part of verify (no opt-out for release)
- No credentials in logs (
ALTAI: Open Logssample redacts tokens) - README / Marketplace description disclose: workspace trust boundary, local native host, no secrets in Webview
-
publisher,repository,license, icon/media assets present - CHANGELOG current; version tag
vX.Y.Zcreated after merge - Pre-release flag set only for beta channel
# Full gate
npm run verify
# Single-target release VSIX (host binary required)
npm run package:target -- --target=linux-x64 --host=/path/to/altai-agent-host
# Audit a built VSIX
npm run verify:vsix -- --vsix=altai-0.1.0-linux-x64.vsix --target=linux-x64# Requires sibling altai-app + Rust toolchain
export ALTAI_APP_ROOT=../altai-app-main
npm run build:native-host -- --target=darwin-arm64
npm run package:target -- --target=darwin-arm64 \
--host=resources/native/darwin-arm64/altai-agent-host
# Or dispatch GitHub Action: release.yml (all targets)CI tags v* and manual release runs produce real altai-cli hosts per
OS, not fixtures. A manual run also publishes all target VSIX artifacts as a
Marketplace pre-release when both ALTAI_PUBLISH_MARKETPLACE=true and
VSCE_PAT are configured. Tag pushes never publish by themselves; set
package.json preview=false only for a stable release after the soak gate.
-
VSCE_PATconfigured for publisheraltaidevorg - Pre-release publish of multi-target VSIX from
release.ymlartifacts - After soak: remove
"preview": true, bump version, stable publish - npm automation identity can publish the
@altaiscope; publish@altai/host-contract,@altai/agent-protocol, then@altai/agent-uifromaltai-app; switch vscodefile:deps to exact versions
- Bump
package.jsonversionandCOMPATIBILITY.extensiontogether. - Add a Keep a Changelog section in
CHANGELOG.mdfor that version before tagging. - Never commit
ALTAI_AGENT_HOST_PATHor real host binaries into git; release CI/CD injects signed hosts at package time. - Protocol-major mismatches must fail host initialize once packaged binary pins land (see protocol compatibility policy).
See FEATURE_MATRIX.md for the full internal matrix.
External (not blocked on vscode-only code):
- Release CI builds and packages real
altai-agent-hostartifacts for every supported target; organization signing beyond the recorded sha256 remains. - Published
@altai/agent-ui/@altai/host-contractnpm versions (stillfile:links). - Automated Remote SSH e2e in CI (manual Remote section above for beta).
- Visual / a11y regression suite.