Skip to content

fix(release): correct VSIX tombstone identity + staging verify hygiene (v0.3.0 hotfix)#192

Merged
Dongbumlee merged 3 commits into
mainfrom
release/v0.3.0
May 29, 2026
Merged

fix(release): correct VSIX tombstone identity + staging verify hygiene (v0.3.0 hotfix)#192
Dongbumlee merged 3 commits into
mainfrom
release/v0.3.0

Conversation

@Dongbumlee
Copy link
Copy Markdown
Collaborator

Pre-tag-push hotfixes for v0.3.0

PR #187 was merged before two issues were caught:

  1. P0 — VSIX tombstone shipped with the wrong extension identity. The tombstone scaffolded in 2f128d9 published as AgentOpsToolkit.agentops-skills (a brand-new extension that has never existed on the VS Code Marketplace) and pointed migrating users to AgentOpsAccelerator.agentops-skills (also wrong — the canonical new identity per plugins/agentops/package.json is AgentOpsAccelerator.agentops-accelerator).

    Without this fix, publishing v0.3.0 would create a brand-new extension nobody has installed, and the ~5 versions of the legacy AgentOpsToolkit.agentops-toolkit extension already in users' VS Code installs would never receive a deprecation prompt.

    018cf74 rewrites the tombstone to identify itself as AgentOpsToolkit.agentops-toolkit (republishes onto the existing Marketplace listing, triggers in-place update for current users) and corrects all references to the new extension across package.json, src/extension.ts, the tombstone README/CHANGELOG/CDN deprecation request, the repo-root CHANGELOG.md (flows into the GitHub release body and PyPI tombstone long description), and docs/verifying-tombstones.md (verification commands users will copy-paste).

  2. CI hygiene — staging verify-tombstone-testpypi flaked when only dev versions of accelerator existed on TestPyPI. 5af6936 splits the verification into two install steps (tombstone with --no-deps, then accelerator with --pre) so staging stays green between full releases. No effect on release.yml (PyPI prod always has both packages at the tagged version when the verify step runs).

Verification

Staging on release/v0.3.0 is fully green at 018cf74 (8/8 jobs, run #26615257593):

  • build-pypi-tombstone
  • build / build
  • publish-vsix-prerelease
  • publish-testpypi
  • verify-testpypi
  • publish-tombstone-testpypi
  • publish-tombstone-vsix-prerelease ✅ — confirms AgentOpsToolkit.agentops-toolkit v0.3.0-pre publishes cleanly under the existing publisher
  • verify-tombstone-testpypi ✅ — confirms the redirect (agentops-toolkit==0.3.0agentops-accelerator>=0.3.0) installs cleanly from TestPyPI

Critic review (tombstone-identity-critic, Correctness lens)

  • Identity coherence ✅ — publisher+name yield AgentOpsToolkit.agentops-toolkit
  • Version monotonicity ✅ — 0.3.0 > 0.1.8 (highest existing) and > 0.2.2 (highest in git history)
  • NEW_EXTENSION_ID consistency ✅ — all 4 use sites + DEPRECATION_MESSAGE interpolation
  • Storage key namespace preservation ✅ — agentops-toolkit.deprecation-prompt-shown unchanged
  • Backward compatibility ✅ — legacy versions 0.1.7 and 0.2.2 verified declarative-only (contributes.chatSkills only, no main/commands/keybindings/settings), so zero state-collision risk
  • Workflow cross-references ✅ — release.yml publish-tombstone-vsix and staging.yml publish-tombstone-vsix-prerelease consume the renamed manifest cleanly

Plan after merge

  1. Tag v0.3.0 at this merge commit
  2. release.yml triggers — publishes agentops-accelerator==0.3.0 + agentops-toolkit==0.3.0 tombstone to PyPI; publishes accelerator + tombstone VSIX to VS Code Marketplace; creates GitHub release
  3. Verify all three tombstones live (PyPI, VSCode Marketplace, TestPyPI)
  4. File the Microsoft CDN deprecation request per tombstones/vscode/CDN_DEPRECATION_REQUEST.md

Closes part of #181.

Dongbumlee and others added 3 commits May 28, 2026 19:32
…smatch

In staging.yml the agentops-accelerator package is built with
setuptools-scm and published to TestPyPI as 0.2.3.devN, while the
tombstone (agentops-toolkit) hardcodes 'agentops-accelerator>=0.3.0'
in its pyproject.toml. A standard pip install of the tombstone then
fails because TestPyPI carries no >=0.3.0 candidate for the main
package — the version is only minted when release.yml runs against
the real v0.3.0 tag.

Restructure the verify job into two install steps:
  1. agentops-toolkit==<tombstone_version> --no-deps from TestPyPI
     (installs the wheel for its metadata only; --no-deps preserves
     'pip show Requires:' content so the redirect assertion still
     holds, verified empirically by Critic)
  2. agentops-accelerator --pre from TestPyPI (satisfies the runtime
     dep so 'import agentops' resolves; --pre is required so pip
     accepts the dev versions present in staging)

Both pre-existing assertions are preserved unchanged:
  - pip show agentops-toolkit lists agentops-accelerator under Requires
  - python -c 'import agentops' returns successfully

release.yml is intentionally NOT modified: its verify-tombstone-testpypi
works correctly because publish-testpypi (in release.yml) publishes
agentops-accelerator at the real 0.3.0 tag version, so the tombstone
dep resolves cleanly without --no-deps.
…tops-toolkit

The VSIX tombstone scaffolded in 2f128d9 mistakenly identified itself as
AgentOpsToolkit.agentops-skills — an extension name that has never existed
on the VS Code Marketplace. The actual deprecated extension is
AgentOpsToolkit.agentops-toolkit (live since v0.1.4, latest v0.1.8). It
also pointed users to AgentOpsAccelerator.agentops-skills as the migration
target, but the new extension's real identity (per
plugins/agentops/package.json) is AgentOpsAccelerator.agentops-accelerator.

Without this fix, publishing the v0.3.0 tombstone would create a brand-new
extension nobody has installed, and the ~5 versions of the legacy extension
already in users' VS Code installs would never receive a deprecation prompt.

Changes:
  tombstones/vscode/package.json   - rename 'agentops-skills' to
                                     'agentops-toolkit' so the published
                                     identity is AgentOpsToolkit.agentops-toolkit
                                     (republishes onto the existing listing,
                                     triggers in-place update for current users)
  tombstones/vscode/src/extension.ts
                                   - NEW_EXTENSION_ID points at
                                     AgentOpsAccelerator.agentops-accelerator
                                   - DEPRECATION_MESSAGE interpolates the
                                     constant instead of hardcoding the literal
                                     (prevents future drift)
  tombstones/vscode/README.md      - corrected legacy ID + migration target
  tombstones/vscode/CHANGELOG.md   - corrected legacy ID + migration target
  tombstones/vscode/CDN_DEPRECATION_REQUEST.md
                                   - corrected all subject lines, body IDs,
                                     and pre-flight checklist IDs
  CHANGELOG.md                     - corrected the [0.3.0] VS Code
                                     Marketplace tombstone bullet (flows
                                     into GitHub release body and PyPI
                                     tombstone long description)
  docs/verifying-tombstones.md     - corrected all 10 publisher-prefixed
                                     identifiers in verification commands
                                     (vsce show, --install-extension,
                                     marketplace URLs)

STORAGE_KEY ('agentops-toolkit.deprecation-prompt-shown') is unchanged —
already aligned with the legacy namespace. Version 0.3.0 > existing 0.1.8
satisfies VSCE monotonicity. Legacy versions were declarative-only (no
commands/keybindings/settings/views — only contributes.chatSkills), so
replacing them with the tombstone manifest carries no user-binding break
risk.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The two staging VSIX publish steps (main extension at line 348 and tombstone
at line 425) carried 'continue-on-error: true' which silently swallowed
every failure mode — including an expired VSCE_PAT. This made staging look
green when nothing was actually published to the Marketplace, hiding the
auth issue for an extended period and producing zero pre-release versions
for either AgentOpsAccelerator.agentops-accelerator or
AgentOpsToolkit.agentops-toolkit.

Replaces the blanket tolerance with the same conditional pattern release.yml
already uses (lines 469-489): capture combined stdout+stderr, swallow the
exit code ONLY when the output contains 'already exists' (re-run of an
already-published pre-release version, the only benign failure mode), and
propagate every other exit code so auth, network, validation, and
marketplace errors fail the job and surface in CI.

Also moves the PAT into an env: block as VSCE_PAT (out of the interpolated
shell line) to match release.yml's pattern and avoid leaking the secret
into command history or logs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@Dongbumlee
Copy link
Copy Markdown
Collaborator Author

🔍 Discovery during VSCode Marketplace verification — additional commit added

While verifying the staging publish-tombstone-vsix-prerelease run actually pushed a new pre-release to the Marketplace (no new versions appeared on the AgentOpsToolkit.agentops-toolkit listing after 018cf74), I pulled the job log and found:

Publishing 'AgentOpsToolkit.agentops-toolkit v0.3.0'...
Error: Access Denied: The Personal Access Token used has expired.
You're using an expired Personal Access Token, please get a new PAT.
Error: Process completed with exit code 1.

The job reported success because both staging VSIX publish steps carry continue-on-error: true. The expired VSCE_PAT has been silently failing every staging publish for an extended period — which is why the new accelerator extension (AgentOpsAccelerator.agentops-accelerator) doesn't exist on the Marketplace yet, and why no 0.3.0 pre-release ever landed on the legacy tombstone target.

New commit de0bf8a — replace blanket tolerance with conditional tolerance

de0bf8a fix(ci): staging vsce publish must surface auth/network failures ports the same pattern release.yml lines 469–489 already uses:

  • Capture combined stdout+stderr from vsce publish
  • Swallow exit code ONLY when output contains already exists (re-run of an already-published pre-release version — the only benign failure mode)
  • Propagate every other exit code (auth, network, validation, 5xx)
  • Move PAT to env: block (matches release.yml; avoids leaking into shell interpolation)

Applied to both:

  • staging.yml:348 — main extension agentops-accelerator publish
  • staging.yml:425 — tombstone agentops-toolkit publish

Required actions before pushing v0.3.0 tag

  • @donlee regenerates VSCE_PAT at https://aka.ms/vscodepat with scope covering BOTH publishers (AgentOpsToolkit + AgentOpsAccelerator)
  • Updates the VSCE_PAT GitHub repo secret
  • Re-trigger staging on this branch — must show all 8 jobs ✅ for the first time
  • Then merge this PR and tag v0.3.0

Without the PAT renewal, release.yml's publish-vsix and publish-tombstone-vsix jobs will fail outright on tag push (no continue-on-error there) and abort the release.

@Dongbumlee Dongbumlee merged commit d851677 into main May 29, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant