Skip to content
This repository was archived by the owner on Aug 7, 2026. It is now read-only.

Retire rumcodecs: mark the experiment closed in the README and on npm - #2

Merged
thewtex merged 1 commit into
mainfrom
retire
Aug 7, 2026
Merged

Retire rumcodecs: mark the experiment closed in the README and on npm#2
thewtex merged 1 commit into
mainfrom
retire

Conversation

@thewtex

@thewtex thewtex commented Aug 7, 2026

Copy link
Copy Markdown
Member

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: description prefixed [RETIRED — experiment, unmaintained] (this is what shows in npm search results), retired/deprecated/unmaintained keywords, and a deprecated field. Version bumps 0.1.10.1.2 because 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 — a retirement notice block, 7 tests, suite 52 → 59.

Why the tests

The notice lives in two files that drift independently. A routine npm version bump 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.ts already read package.json to guard export-map drift, so the assertions live alongside that existing check: deprecated non-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.js match (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: indexOf returns -1 when 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 makes npm install print a warning. The deprecated field in package.json is 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.
  • Publishing 0.1.2 — tagging v0.1.2 triggers .github/workflows/release.yml.

Verification

Full suite 59/59 across 8 files, pnpm check clean (vp check --fix relocated the deprecated key to canonical position). pkg/ was unbuilt in this worktree, so build:wasm:node was run to exercise the WASM-backed suites rather than reporting around them.

coderabbit review could 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 claiming package.json triggers npm install warnings, the silent-pass slice above, a redundant regex alternation, and a README line asserting the package "is marked deprecated" before npm deprecate had run.

AGENTS.md still describes the project in the present tense and is left unchanged.

🤖 Generated with Claude Code

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>
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5713aab8-5d72-417c-b0a3-20ee28a39ff6

📥 Commits

Reviewing files that changed from the base of the PR and between 19342e5 and 48d2d6b.

📒 Files selected for processing (3)
  • README.md
  • package.json
  • test/index.test.ts

Comment @coderabbitai help to get the list of available commands.

@thewtex thewtex changed the title chore: retire the project Retire rumcodecs: mark the experiment closed in the README and on npm Aug 7, 2026
@thewtex
thewtex merged commit 7a0701c into main Aug 7, 2026
5 checks passed
@thewtex
thewtex deleted the retire branch August 7, 2026 16:12
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant