Skip to content

chore(release): v2.0.6 + guard release against tag/version mismatch#106

Merged
clay-good merged 1 commit into
mainfrom
chore/release-v2.0.6
Jun 1, 2026
Merged

chore(release): v2.0.6 + guard release against tag/version mismatch#106
clay-good merged 1 commit into
mainfrom
chore/release-v2.0.6

Conversation

@clay-good
Copy link
Copy Markdown
Owner

Why

The first v2.0.6 publish failed (Actions run 71639223540):

npm error You cannot publish over the previously published versions: 2.0.5.

Root cause: the v2.0.6 tag was pushed at the #103 merge commit, where package.json still said 2.0.5 — the chore(release) version bump was never made. So npm publish tried to republish 2.0.5 and npm rejected it. The release workflow had no guard that the tag matches the package version, so it sailed through validate and died late in publish with a cryptic message.

What this does

  1. Bump package.json + package-lock.json 2.0.5 → 2.0.6 (the missing bump; 3 lines, matching the v2.0.5 release commit's footprint).
  2. Guard the release workflow: a new "Verify tag matches package.json version" step in the validate job fails fast with an actionable message when the tag ≠ v<package.json version>. Sanity-checked: v2.0.6→pass, v2.0.5→fail.

Why v2.0.6 is ready to ship — field fix validated

v2.0.6 carries the spec 13.1 watch-mode fix (#102) + its verification (#103). PR #102 honestly noted the original field symptom was never reproduced. I have now reproduced it cleanly, on enklayve's real 2.1 MB llm-context.json corpus, comparing published 2.0.5 vs the local fix (median of 5; methodology = drive the real McpWatcher through real chokidar on a copy of enklayve's artifacts):

OLD 2.0.5 NEW (fix)
Single-save flush ~276 ms ~220 ms (no regression — G7)
Next tool-call read after a save ~4.6 ms (cold re-parse) 0.03 ms (cache HIT)
stderr lines per save 3 1
15-file burst — processing time ~5,900 ms (30 serialized O(repo) passes) 443 ms (1 coalesced flush)
15-file burst — stderr lines 46 2

The 15-file burst is the field "severe, batched result-delivery latency": old runs a full 2.1 MB rewrite + full 1,416-function BM25 rebuild per file, serialized, flooding stderr. The fix coalesces to one flush. A 50-file branch switch extrapolates to ~20 s vs one flush.

Release steps after merge (owner — NOT done here, publish intentionally held)

  1. Merge this PR.
  2. Re-create the tag at the merge commit: git tag -f v2.0.6 <merge-sha> && git push -f origin v2.0.6 (it currently points at the pre-bump test(watcher): close the spec 13.1 verification gap (read-cache handoff via the watcher's own flush) #103 merge), or delete + recreate, or re-run the publish workflow via workflow_dispatch against the retagged ref.
  3. The release workflow validates (now incl. the tag/version guard) → creates the Release → publishes to npm.

🤖 Generated with Claude Code

Bump version for the v2.0.6 release (spec 13.1 — O(change) watch-mode
freshness). The release workflow publishes package.json's version on the v*
tag, so this must match the tag.

**Why this commit exists:** the first v2.0.6 publish (run 71639223540) failed
with `npm error You cannot publish over the previously published versions:
2.0.5` — the v2.0.6 tag was pushed at a commit where package.json still said
2.0.5 (the bump was never made), so `npm publish` tried to republish 2.0.5.

Two changes:
- Bump package.json + package-lock.json 2.0.5 → 2.0.6 (the missing bump).
- Add a "Verify tag matches package.json version" guard to the release
  workflow's validate job. A mismatched tag now fails fast and loud in
  `validate` with an actionable message, instead of sailing through and dying
  late in `npm publish` with the cryptic over-publish error.

After this merges, the v2.0.6 tag must be re-created at the merge commit (it
currently points at the pre-bump #103 merge) before re-running publish.

Verification: tsc --noEmit clean; lint 0 errors; build clean; CI-mirror
(vitest run src examples) 2936 passed / 2 skipped / 0 failures; guard logic
sanity-checked (v2.0.6→pass, v2.0.5→fail).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@clay-good clay-good merged commit 7e0c97e into main Jun 1, 2026
4 checks passed
@clay-good clay-good deleted the chore/release-v2.0.6 branch June 1, 2026 18:47
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