OKF Workbench

Release checklist

Release checklist

This checklist prepares and records one release candidate; it does not make older evidence apply to new bytes. Mark a gate only from retained evidence. A configured workflow, passing component test, or absent observation is not a substitute for its named manual or hosted check. This is a historical release record; none of its pass results qualifies the current source candidate.

The 0.2.0 candidate adds the Activity Bar/sidebar workflow and therefore changes the manifest, Extension Host bytes, and packaged resource inventory. All 0.1.x qualification and publication records are historical evidence for those exact released bytes only.

Release blockers

Build the immutable candidate

  1. Freeze every packaged reader-facing file first: manifest, license, generated notices, README, changelog, icons, approved public contact routes, and runtime bundles. Start from that intended clean commit and record its full revision.
  2. Use Node.js 24.18.0, npm 11.16.0, Rust 1.92.0, and the installed wasm32-unknown-unknown target.
  3. Install from the committed lockfiles and run all local release gates:

    mise x node@24.18.0 -- npm ci
    mise x node@24.18.0 -- npx --no-install playwright install chromium
    mise x node@24.18.0 -- npm run check
    mise x node@24.18.0 -- env VSCODE_TEST_VERSION=1.121.0 npm run test:integration
    mise x node@24.18.0 -- env VSCODE_TEST_VERSION=1.129.1 npm run test:integration
    mise x node@24.18.0 -- npm run test:webview
    mise x node@24.18.0 -- npm run package
    mise x node@24.18.0 -- node scripts/benchmark-report.mjs \
      --measurements artifacts/performance/vscode-1.129.1-0.2.0.json \
      --require-passing \
      > artifacts/performance/vscode-1.129.1-0.2.0-release-check.md
    cmp artifacts/performance/vscode-1.129.1-0.2.0.md \
      artifacts/performance/vscode-1.129.1-0.2.0-release-check.md
    mise x node@24.18.0 -- npm run package:check
    mise x node@24.18.0 -- node scripts/security-check.mjs --check-notices
    mise x node@24.18.0 -- npm run rust:notices:check
    mise x node@24.18.0 -- node scripts/security-check.mjs \
      --vsix artifacts/okf-workbench.vsix
    mise x node@24.18.0 -- npm audit --omit=dev --audit-level=high
    
  4. Record the universal VSIX SHA-256, byte size, revision, build environment, exact package versions, and command results. Treat locally rebuilt bytes as local evidence until the hosted package-set workflow establishes the release artifacts.
  5. Run the manual Compatibility workflow for the immutable candidate. Supply a genuinely older VSIX and digest when upgrade evidence is required.
  6. Run the manual Package smoke workflow for the same revision and require all target lanes plus the aggregate consistency job to pass.
  7. Review the fresh headed GPU/network evidence and the theme/accessibility screenshots without adding workspace content, profiles, or secrets to the repository.
  8. Apply evidence-only release-record updates before tagging. If any source, dependency, manifest, notice, icon, README, changelog, or packaged file changes, discard the prior digest and repeat the affected gates.

Approval and publication

Per ADR 0006, the Open VSX release workflow is the only automated publication path. It runs only when a v* tag is pushed. The tag is the maintainer’s release authorization; pull requests, ordinary branch pushes, and reusable workflow calls cannot invoke publication.

Before pushing the tag:

  1. complete every unchecked release blocker above;
  2. merge the reviewed release and evidence commits into protected main;
  3. confirm the tag is exactly v0.2.0, matches package.json, and does not already exist;
  4. verify the signed tag locally and confirm its commit is contained in main; and
  5. confirm the release credential names exist and the Open VSX Publisher Agreement remains current.

Push the tag only after those checks:

git tag -s v0.2.0 -m "OKF Workbench 0.2.0"
git tag -v v0.2.0
git push origin v0.2.0

The workflow rejects a tag whose commit is not contained in main, whose version does not match the manifest, or whose changelog entry is still Unreleased. It reruns the deterministic source, dependency, security, audit, reproducibility, and package gates; creates the universal and four target VSIX packages plus four native CLI archives and checksums; creates the GitHub Release; updates the Homebrew and Scoop manifests; and publishes the VSIX set to Open VSX.

Do not print a token, pass it as a command argument, save it in shell history, or commit it. Do not run ovsx publish against a mutable local path as a fallback. If a runner is lost after publishing starts, inspect Open VSX before retrying because the external outcome may already have succeeded.

Post-publication verification

Rollback and unpublish process

Open VSX CLI 1.0.2 exposes publish, download, token, and namespace commands but no unpublish command. Do not run vsce unpublish: that manages the Microsoft Marketplace, not Open VSX.

For a defective but non-malicious release:

  1. Stop promotion and announce the affected version and safe workaround through the approved public support and release channels.
  2. Preserve the published artifact, digest, logs, evidence, and incident timeline.
  3. Fix forward with a higher SemVer version, repeat this checklist, and publish only after new explicit approval. Registry versions are immutable; never reuse 0.2.0 for different bytes.
  4. Ask users to update or uninstall. The extension itself never deletes generated bundles or agent instructions.

For a security, privacy, credential, or licensing incident:

  1. Revoke the Open VSX token immediately and remove unauthorized namespace members when applicable.
  2. Open a private security incident channel; do not put secrets or sensitive bundle data in a public issue.
  3. Contact the Open VSX project/service support channel and request removal of the exact namespace, extension, version, and digest. Record who authorized the request and the registry response.
  4. Verify registry search, metadata, and download behavior after the registry action. Do not assume removal from search revokes already downloaded or installed copies.
  5. Notify affected users with the version, exposure window, indicators, uninstall/update guidance, and a known-good digest when available.

Release record

Field 0.2.0 value
Extension ID straydog.okf-workbench
Immutable packaged candidate revision 522fd5fcff02350aabaaf32c5f46407287a1493d
Hosted CI PR #36 checks and PR #37 checks passed
Hosted compatibility Pass — run 30325248296; acceptance plus all seven editor/OS lifecycle lanes using published v0.1.2 as the upgrade predecessor
Hosted package smoke Pass — run 30325249515; browser boundary, four targets, and aggregate consistency
Headed performance/network Pass — VS Code 1.129.1, QR-002 672 ms p95/20 samples, QR-003 d3, remote 0, packaged local 2, internal Webview 2, other 0
Local universal VSIX 978017 bytes; SHA-256 6fcda0bb7da0237d6cef31d4476178611234df6201a059aec366ff057264361b
Hosted qualified universal VSIX 978140 bytes; SHA-256 d3c012c1f7bcacf3284fde8b810eb4c176b12c118290486ba31733dd064c3eeb
Node / npm / Rust 24.18.0 / 11.16.0 / 1.92.0
Signed tag v0.2.0 on 888e27f982fa71d705a34cda4a8e4a85cfa3a758; SSH signature verified with the maintainer’s established signing key
Release workflow Pass — run 30326024628; all eight publication jobs passed
GitHub Release Published v0.2.0; 18 assets, with all release checksum files verified
Open VSX listing https://open-vsx.org/extension/straydog/okf-workbench
Post-publication VSCodium lifecycle Pass — VSCodium 1.121.03429 arm64; clean and untrusted installs, 0.1.2 to 0.2.0 upgrade, uninstall, and workspace preservation
Homebrew / Scoop repository https://github.com/koizumikento/stray-tools

Historical publication evidence