Skip to content

chore!: remove the legacy @cipherstash/drizzle package#667

Merged
coderdan merged 3 commits into
mainfrom
chore/remove-legacy-drizzle-package
Jul 16, 2026
Merged

chore!: remove the legacy @cipherstash/drizzle package#667
coderdan merged 3 commits into
mainfrom
chore/remove-legacy-drizzle-package

Conversation

@coderdan

@coderdan coderdan commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Why

@cipherstash/protect is sunsetting at Stack 1.0 (confirmed), and @cipherstash/drizzle is its Drizzle integration — a ~645-line-diverged fork of what became @cipherstash/stack-drizzle, in maintenance-by-attrition since the adapter split. Keeping it on the release train has two live costs:

  1. Every rc republishes known-buggy code unreviewed3.0.4-rc.1 just shipped with perf: legacy @cipherstash/drizzle has the same bare-equality bug as @cipherstash/stack/drizzle #426 (bare-equality bypasses hmac functional indexes) still open against it.
  2. Name hazard at 1.0npm install @cipherstash/drizzle looks like the obvious command, works, and silently binds new users (and LLM assistants) to the predecessor SDK. It currently out-downloads its successor (~341/wk vs ~204/wk for stack-drizzle). Same stale-package hazard class as npm dist-tags deliver broken/stale packages: adapters' latest=0.0.0, stack latest=0.19.0; stash init installs unpinned #661, which the skilltester evals demonstrated end-to-end.

What

  • Delete packages/drizzle. Git history is the maintenance branch if an already-published version ever needs an emergency patch; npm keeps 3.0.3 installable forever.
  • Changesets pre-release state kept consistent — removed its pre.json initialVersions + consumed-changeset entries and deleted the pending changeset that only targeted it; pnpm changeset status verified clean, so the rc.2 Version Packages run won't trip on a missing package.
  • CI/workflows — removed the two tests.yml .env scaffold steps, the Bun test-loop entry, and the rebuild-docs.yml tag trigger (the @cipherstash/protect@* trigger stays while protect is still published).
  • e2e — dropped the unused workspace:* dep; lockfile regenerated.
  • Meta files honest (per AGENTS.md rule 7) — AGENTS.md Repository Layout and the SECURITY.md package table updated.
  • Deprecation stated where users readskills/stash-drizzle/SKILL.md and the @cipherstash/stack-drizzle README now say the legacy package is deprecated and not to install it. Changeset: stash + @cipherstash/stack-drizzle patch (both ship these docs).

Verified

  • pnpm install clean; pnpm changeset status resolves (stash, stack-drizzle + internal-dep patches); @cipherstash/stack-drizzle builds.
  • pnpm run code:check reports 4 pre-existing errors on main (in examples/prisma / e2e/tests, all biome-FIXABLE) — reproduced identically with this diff stashed, so not from this PR; flagging for a separate quick fix.

After merge (registry ops, npm owner)

npm deprecate @cipherstash/drizzle "Deprecated: @cipherstash/protect is sunsetting at Stack 1.0. Use @cipherstash/stack-drizzle with @cipherstash/stack."

https://claude.ai/code/session_01MxTTPaPP16m6br7Hoab94w

Summary by CodeRabbit

  • Deprecation
    • Retired the legacy @cipherstash/drizzle package and its migration CLI.
    • Existing published versions remain available from npm, with deprecation guidance.
  • Documentation
    • Updated setup guidance to use @cipherstash/stack-drizzle/v3 for new projects.
    • Clarified that the legacy integration is no longer maintained and should not be used for new development.
  • Maintenance
    • Removed legacy package references from supported-package listings, testing, and documentation rebuild workflows.

@cipherstash/protect is sunsetting at Stack 1.0, and this package — its
Drizzle integration, a ~645-line-diverged fork of what became
@cipherstash/stack-drizzle — has been in maintenance-by-attrition since the
adapter split. Keeping it on the release train meant republishing known-buggy
code every rc (#426 rides along unreviewed at 3.0.4-rc.1) and, worse, leaving
a plausible-looking `npm install @cipherstash/drizzle` that silently binds new
users (and LLM assistants) to the predecessor SDK at exactly the moment 1.0
makes @cipherstash/stack-drizzle the real name — the same stale-package hazard
class as #661.

Removal scope:
- delete packages/drizzle (git history preserves the source for emergency
  maintenance of already-published versions; npm keeps 3.0.3 installable)
- drop it from the changesets pre-release state (pre.json initialVersions +
  consumed-changeset entry) and delete the pending changeset that only
  targeted it, so `changeset version` keeps working
- remove its CI steps (tests.yml .env scaffolds ×2, Bun test-loop entry), the
  rebuild-docs tag trigger, and the e2e workspace dep
- keep the meta files honest (AGENTS.md layout, SECURITY.md package table)
- state the deprecation explicitly in the stash-drizzle skill and the
  stack-drizzle README so nobody installs the legacy package by mistake

npm-side deprecation (`npm deprecate @cipherstash/drizzle ...`) is a registry
operation done separately by an owner.

Claude-Session: https://claude.ai/code/session_01MxTTPaPP16m6br7Hoab94w
@coderdan
coderdan requested a review from a team as a code owner July 16, 2026 05:54
@changeset-bot

changeset-bot Bot commented Jul 16, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: c6915f0

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 5 packages
Name Type
stash Patch
@cipherstash/stack-drizzle Patch
@cipherstash/basic-example Patch
@cipherstash/e2e Patch
@cipherstash/bench Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d5c440d6-43f3-47c9-84c3-f67137d22136

📥 Commits

Reviewing files that changed from the base of the PR and between 760ba20 and c6915f0.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (36)
  • .changeset/drizzle-legacy-readme-pointer.md
  • .changeset/pre.json
  • .changeset/remove-legacy-drizzle-package.md
  • .github/workflows/rebuild-docs.yml
  • .github/workflows/tests.yml
  • AGENTS.md
  • SECURITY.md
  • e2e/package.json
  • e2e/tests/package-managers.e2e.test.ts
  • packages/drizzle/.npmignore
  • packages/drizzle/CHANGELOG.md
  • packages/drizzle/GENERATE_EQL_MIGRATION_CLI.md
  • packages/drizzle/README.md
  • packages/drizzle/__tests__/drizzle.test.ts
  • packages/drizzle/__tests__/fixtures/doc-seed-data.ts
  • packages/drizzle/__tests__/fixtures/user-seed-data.ts
  • packages/drizzle/__tests__/integration-test-helpers.ts
  • packages/drizzle/__tests__/operators-jsonb.test.ts
  • packages/drizzle/__tests__/operators.test.ts
  • packages/drizzle/__tests__/schema-extraction.test.ts
  • packages/drizzle/__tests__/test-utils.ts
  • packages/drizzle/__tests__/utils/code-executor.test.ts
  • packages/drizzle/__tests__/utils/code-executor.ts
  • packages/drizzle/__tests__/utils/markdown-parser.test.ts
  • packages/drizzle/__tests__/utils/markdown-parser.ts
  • packages/drizzle/package.json
  • packages/drizzle/src/bin/generate-eql-migration.ts
  • packages/drizzle/src/bin/runner.ts
  • packages/drizzle/src/pg/index.ts
  • packages/drizzle/src/pg/operators.ts
  • packages/drizzle/src/pg/schema-extraction.ts
  • packages/drizzle/tsconfig.json
  • packages/drizzle/tsup.config.ts
  • packages/drizzle/vitest.config.ts
  • packages/stack-drizzle/README.md
  • skills/stash-drizzle/SKILL.md

📝 Walkthrough

Walkthrough

The legacy @cipherstash/drizzle package and its source, tests, build configuration, and documentation are removed. Release and CI references are cleaned up, while @cipherstash/stack-drizzle/v3 is documented as the replacement.

Changes

Legacy Drizzle retirement

Layer / File(s) Summary
Package removal and release wiring
packages/drizzle/*, .changeset/*, e2e/*, .github/workflows/*
Removes the legacy package implementation, tests, CLI, metadata, and documentation; removes its release-train entry, workspace dependency, executable coverage, environment setup, test execution, and documentation rebuild trigger.
Replacement guidance and repository metadata
packages/stack-drizzle/README.md, skills/stash-drizzle/SKILL.md, AGENTS.md, SECURITY.md
Marks the legacy package as deprecated and directs new projects to @cipherstash/stack-drizzle/v3; repository layout and supported-package listings no longer include the legacy package.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested reviewers: calvinbrewer, auxesis

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/remove-legacy-drizzle-package

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderdan
coderdan marked this pull request as draft July 16, 2026 05:56

@freshtonic freshtonic left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Easy review

@auxesis auxesis left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice one, thanks for cleaning this up @coderdan.

…e runner matrix

The package-managers suite iterates a BIN map that still listed
packages/drizzle's generate-eql-migration.js — removed with the package in the
previous commit, so its 4 per-pm help-text tests failed on Cannot find module.
Delete the map entry (the suite derives its tests from the map, so the tests
go with it).

Claude-Session: https://claude.ai/code/session_01MxTTPaPP16m6br7Hoab94w

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes the legacy @cipherstash/drizzle (Protect.js / EQL v2) package from the monorepo and release train to reduce maintenance cost and avoid the “wrong package name” hazard, while updating documentation, CI, e2e scaffolding, and Changesets/pre-release metadata to match.

Changes:

  • Deleted packages/drizzle (package sources, tests, bin, and docs) and removed its workspace dependency usage.
  • Updated user-facing guidance (stash-drizzle skill + @cipherstash/stack-drizzle README), plus meta/security docs, to steer users away from the legacy package.
  • Adjusted CI/workflows, e2e package deps, lockfile, and .changeset/pre.json to keep release/CI consistent after removal.

Reviewed changes

Copilot reviewed 34 out of 37 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
skills/stash-drizzle/SKILL.md Adds explicit deprecation guidance for the legacy Drizzle package.
SECURITY.md Removes legacy package from “Supported Packages” list.
pnpm-lock.yaml Regenerates lockfile after removing the workspace package and deps.
packages/stack-drizzle/README.md Adds deprecation guidance to prevent installing the legacy package.
packages/drizzle/vitest.config.ts Deleted as part of removing the legacy package.
packages/drizzle/tsup.config.ts Deleted as part of removing the legacy package.
packages/drizzle/tsconfig.json Deleted as part of removing the legacy package.
packages/drizzle/src/pg/schema-extraction.ts Deleted legacy schema extraction implementation.
packages/drizzle/src/pg/operators.ts Deleted legacy Protect-aware Drizzle operators implementation.
packages/drizzle/src/pg/index.ts Deleted legacy Drizzle integration entrypoint.
packages/drizzle/src/bin/runner.ts Deleted legacy CLI runner-detection helper.
packages/drizzle/src/bin/generate-eql-migration.ts Deleted legacy generate-eql-migration bin implementation.
packages/drizzle/README.md Deleted legacy package README.
packages/drizzle/package.json Deleted legacy package manifest / publish config.
packages/drizzle/GENERATE_EQL_MIGRATION_CLI.md Deleted legacy CLI docs.
packages/drizzle/CHANGELOG.md Deleted legacy package changelog.
packages/drizzle/.npmignore Deleted legacy npmignore.
packages/drizzle/tests/utils/markdown-parser.ts Deleted legacy package test utility.
packages/drizzle/tests/utils/markdown-parser.test.ts Deleted legacy package tests.
packages/drizzle/tests/utils/code-executor.ts Deleted legacy package test utility.
packages/drizzle/tests/utils/code-executor.test.ts Deleted legacy package tests.
packages/drizzle/tests/test-utils.ts Deleted legacy package tests helpers.
packages/drizzle/tests/schema-extraction.test.ts Deleted legacy schema extraction tests.
packages/drizzle/tests/operators.test.ts Deleted legacy operators tests.
packages/drizzle/tests/operators-jsonb.test.ts Deleted legacy JSONB operator tests.
packages/drizzle/tests/integration-test-helpers.ts Deleted legacy integration test helpers.
packages/drizzle/tests/fixtures/user-seed-data.ts Deleted legacy fixture data.
packages/drizzle/tests/fixtures/doc-seed-data.ts Deleted legacy fixture data.
packages/drizzle/tests/drizzle.test.ts Deleted legacy DB integration test suite.
e2e/tests/package-managers.e2e.test.ts Removes references to the deleted legacy generate-eql-migration bin.
e2e/package.json Drops workspace dependency on @cipherstash/drizzle.
AGENTS.md Updates repo layout to remove packages/drizzle.
.github/workflows/tests.yml Removes packages/drizzle env scaffolding and Bun test-loop entry.
.github/workflows/rebuild-docs.yml Removes tag trigger for @cipherstash/drizzle@*.
.changeset/remove-legacy-drizzle-package.md Adds a Changeset documenting removal/deprecation guidance updates.
.changeset/pre.json Removes @cipherstash/drizzle pre-release metadata/consumed entry.
.changeset/drizzle-legacy-readme-pointer.md Deletes a pending changeset that only targeted the removed package.
Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread skills/stash-drizzle/SKILL.md
Comment thread packages/stack-drizzle/README.md Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@coderdan
coderdan marked this pull request as ready for review July 16, 2026 06:47
@coderdan
coderdan merged commit 21e60e9 into main Jul 16, 2026
12 of 13 checks passed
@coderdan
coderdan deleted the chore/remove-legacy-drizzle-package branch July 16, 2026 06: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.

4 participants