Conversation
rumcodecs set out to answer whether numcodecs.js could be reimplemented in Rust/WASM without breaking its API or its byte formats. It could, and that is the whole of what the experiment had to say. Retire it rather than leave a maintained-looking package that nobody is maintaining. README gets a warning callout above the usage docs, so the notice lands before a reader starts integrating rather than after, and points at numcodecs.js as the replacement. Contributing now says issues and pull requests are not being reviewed and that forking is the way forward. The CI badges are dropped because they go blank the moment the workflows are disabled or the repo is archived. package.json carries the same message where npm renders it: a marked-up description, retired/deprecated/unmaintained keywords, and a `deprecated` field. That field is not what makes `npm install` warn — that flag is registry state set by `npm deprecate` — but it keeps the intent in version control instead of somewhere someone has to remember to reapply. Version bumps to 0.1.2 so any of this can reach the registry at all; 0.1.1 is already published. The notice spans two files that drift independently, so test/index.test.ts now pins them together: package.json must carry a non-empty deprecation naming the replacement, and the README callout must exist, say retired, link the same replacement, and sit above the quick start. The callout is delimited by where the blockquote ends rather than by a fixed trailing string, since a moved anchor would leave indexOf returning -1, slice(0, -1) handing back nearly the whole README, and the link assertion passing on a link nowhere near the callout. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 42 minutes Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
Comment |
rumcodecs set out to answer one question: could numcodecs.js be reimplemented in Rust/WASM without breaking its API or its byte formats? It could — the interop fixtures decode, the compat suite passes — and that is the whole of what the experiment had to say. This retires it rather than leaving a maintained-looking package that nobody is maintaining.
What changed
README.md— a[!WARNING]callout above the usage docs stating the project is retired, unmaintained, and that numcodecs.js is the replacement. Placement is deliberate: below the codec table or the quick start, the reader has already started integrating. Contributing now says issues and PRs are not being reviewed and that forking under MIT is the way forward, keeping the AGENTS.md and Code of Conduct links. The two CI badges are dropped — they go blank the moment the workflows are disabled or the repo is archived.package.json— the same message where npm renders it:descriptionprefixed[RETIRED — experiment, unmaintained](this is what shows in npm search results),retired/deprecated/unmaintainedkeywords, and adeprecatedfield. Version bumps0.1.1→0.1.2because the npm package page only re-renders on publish, so without a new version none of this reaches the registry at all.test/index.test.ts— aretirement noticeblock, 7 tests, suite 52 → 59.Why the tests
The notice lives in two files that drift independently. A routine
npm versionbump or a docs edit drops one side, and the result is a package that says retired in one place and maintained in the other — which nobody notices until it is published.test/index.test.tsalready readpackage.jsonto guard export-map drift, so the assertions live alongside that existing check:deprecatednon-empty and naming the replacement, description and keywords marked retired, and the README callout present, saying retired, linking the same replacement, and sitting above the quick start.Each assertion was mutation-tested rather than accepted on green. Stripping the package.json markers fails 4; deleting the callout fails 2; moving it below the quick start fails 1. Two early versions passed under mutation and were rewritten — a whole-file
numcodecs.jsmatch (the name appears throughout the prose below) and then a bare-name match inside the callout (it appears in the callout's own first sentence). Both are now one scoped match on the full markdown link.Implementation detail worth flagging
The callout is delimited by where the blockquote ends, not by a fixed trailing string. Slicing to a literal degrades silently:
indexOfreturns-1when the anchor moves,slice(0, -1)then hands back nearly the whole README, and "the link is inside the callout" starts passing on a link nowhere near it — reopening the exact hole the test exists to close. There is a mutation covering that case specifically.Not done here — needs registry credentials
npm deprecate "@fideus-labs/rumcodecs@*" "..."is what actually makesnpm installprint a warning. Thedeprecatedfield inpackage.jsonis not a substitute — that flag is registry state, and it is also the only way to cover the already-published 0.1.0 and 0.1.1. The field is kept anyway so the intent survives in version control rather than living only as registry state someone has to remember to reapply.v0.1.2triggers.github/workflows/release.yml.Verification
Full suite 59/59 across 8 files,
pnpm checkclean (vp check --fixrelocated thedeprecatedkey to canonical position).pkg/was unbuilt in this worktree, sobuild:wasm:nodewas run to exercise the WASM-backed suites rather than reporting around them.coderabbit reviewcould not run —rate_limit, org usage spending cap exceeded, unchanged on retry — so the review was done manually. It caught four defects in the original draft: a comment falsely claimingpackage.jsontriggers npm install warnings, the silent-pass slice above, a redundant regex alternation, and a README line asserting the package "is marked deprecated" beforenpm deprecatehad run.AGENTS.mdstill describes the project in the present tense and is left unchanged.🤖 Generated with Claude Code