chore(release): 0.2.92 — ship the merged multi-tag data-loss fix (#34) that was never published - #58
Merged
Conversation
…can ship The `-t/--tag` silent-data-loss fix landed on main in 78db6e1 (PR #34) on 2026-07-27, but npm 0.2.91 was published on 2026-07-24 and package.json was never bumped. main and the registry therefore both say 0.2.91 while behaving differently: main stores all five tags, the published artifact stores only the last one. Because the version number is identical, nothing signals the difference, and `npm publish` cannot ship the fix at all — the version already exists. Every fleet install is the pre-fix artifact, so 31 other commits merged since the 0.2.91 publish are also unshipped. Bundles are regenerated because they embed the version string; the bundle diff is provably the version string alone (both files are byte-identical to their predecessors once 0.2.92 is reverted to 0.2.91). Refs: 2db5e98d, 78db6e1, #34 Agent: vespasian
Agent: vespasian
andrei-hasna
force-pushed
the
task/2db5e98d-multitag-add-dataloss
branch
from
July 30, 2026 13:03
fb7ed1d to
69ced04
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
No source change. This releases a fix that is already on
mainand has never reached a single install.-t/--tagsilent data loss onknowledge addwas fixed by #34 (fix(cli): stop silently dropping repeated -t tags on add/update/upsert), merged 2026-07-27T19:39:04Z, commit78db6e1— confirmed an ancestor oforigin/main.npm
0.2.91was published 2026-07-24T15:52:10Z, three days earlier, andpackage.jsonwas never bumped.package.jsonat78db6e1and at its parent both read0.2.91.So
mainand the registry both claim0.2.91while behaving differently, andnpm publishcannot ship the fix at all — that version already exists. Since the version numbers match, nothing signals the difference.Measured
Installed
0.2.91, five repeated flags:main's committed bundle, same five flags:Tags are the retrieval surface, so a dropped tag makes an entry invisible to every
--tagquery — indistinguishable from never having written it. This was not theoretical: a taxonomy ruling was absent fromknowledge list --tag conventionuntil repaired by hand.addis covered by #34, not onlyupdate/upsert: the fix is at the option declaration —case '--tag': case '-t': flags.tag = collectTagFlag(flags.tag, argv[i + 1])— so every verb taking-tbenefits from one place, and theaddpath consumes it viaitemStore.create({ …, tags: flags.tag ?? [] }). Verbs affected and now covered:add,update,upsert,untag,list.Comma-joined
-t "a,b"splits rather than being rejected. That decision is #34's and is kept deliberately: it matches thetodosCLI (-t, --tags, "Comma-separated tags") and the array-typed MCP inputs, so the two CLIs cannot disagree about the same muscle memory. Rejection would have been defensible in isolation but would make one habit correct in one CLI and an error in the other. Empty/separator-only values are the case that is rejected, at exit 1, so-t ""from an empty shell expansion cannot silently store nothing.Blast radius
31 other commits merged since the
0.2.91publish are also unshipped and go out with this — the request-boundary guard, the platform-agnostic redaction fix,ok_untagtruthful removal, and the generated-artifact checks.Evidence
verify:generated: all 6 bundles rebuild byte-identically, exit 0 on a clean tree.bin/knowledge.jsandbin/knowledge-mcp.jsare byte-identical to their predecessors after reverting0.2.92→0.2.91. Sizes unchanged (1176640, 1630596).bun bin/knowledge.js --version→@hasna/knowledge 0.2.92, and the rebuilt bundle still stores all five tags.nproc=20): unmodifiedorigin/mainat load 41 → 358 pass / 2 skip / 10 fail; this branch at load 18 → 360 pass / 2 skip / 8 fail. Every failure istimed out after 5000ms, the known hardcoded-per-test-timeout defect (tracked separately). Fewer failures after a version-only diff, tracking load rather than the change — the diff cannot affect test outcomes.bin/knowledge.jsas binary-to-git and therefore unscanned; reviewed by hand with a forced-text credential scan of the bundle diff (clean) plus the byte-level version-string-only proof above.Not in this PR
Publishing and the fleet install are the dispatching seat's step, tracked under
2db5e98d.Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.