| TML-2527: remove in-repo CipherStash extension (#650) ## At a glance This is a **removal** PR. `@prisma-next/extension-cipherstash` was an in-repo incubation of CipherStash's encrypted-field support. That integration now lives in CipherStash's own repository (published as the partner package `@cipherstash/prisma-next`), so the in-repo copy is redundant. ``` packages/3-extensions/cipherstash/ ─┐ examples/cipherstash-integration/ ├─ deleted (now external) test/integration/.../authoring/parity/cipherstash-* ─┘ projects/cipherstash-integration/ ─ closed ``` The bulk of the diff is those deletions. The parts worth a reviewer's eyes are the handful of files that *referenced* cipherstash and now point at a live in-repo extension instead. ## Decision Remove the in-repo CipherStash extension, its example app, and its authoring-parity fixtures, and close the on-disk `projects/cipherstash-integration/` planning project. Where docs and tests used cipherstash as their **example** extension, repoint them to `pgvector` / `paradedb`, which remain in-repo. The decision to wind the in-repo work down is already reflected in Linear — the substantive tickets were cancelled on 2026-05-27. ## Why CipherStash was always an exemplar: a real third-party extension we incubated in-repo to prove the extension surface. Now that it ships from CipherStash's own repository, keeping a second copy here means dual maintenance and a misleading "first-party" signal for an extension that is, in fact, external. Deleting it leaves `pgvector` and `paradedb` — both genuinely in-repo — as the example extensions the docs and tests lean on. ## What's adjusted (not just deleted) - **`test/integration/package.json`** — dropped the `@prisma-next/extension-cipherstash` dependency; lockfile regenerated via `pnpm install`. - **`test/integration/test/cli.migration-plan-ref-aware.e2e.test.ts`** — migrated from the cipherstash control pack to pgvector; still exercises extension-space seeding. - **`scripts/check-upgrade-coverage.test.mjs`** — two fixture paths repointed to `pgvector`. - **`packages/3-targets/3-targets/postgres/test/snapshot-read-shapes.test.ts`** — removed now-dead cipherstash path-exclusion filters. - **`packages/3-extensions/pgvector/src/contract.ts`** — dropped a comment referencing a deleted cipherstash file. - **Durable docs + skills** — repointed to `pgvector` / `paradedb` as the live extension example (subsystems 6 & 7, contract-spaces-overhead, the migration domain README, and several skills). ## What's deliberately kept - **ADRs 207 / 212 / 213 / 214 / 215** — immutable historical records; cipherstash stays as the design exemplar that motivated them. - **Root `README.md`'s `@cipherstash/prisma-next` link** — the extension lives there now. - **`'cipherstash'` sample space-id string literals** in framework/migration tests — they're sample names, not package references. - **`docs/reference/framework-gaps.md`** — references only the external codebase, not deleted paths. - Historical cipherstash mentions inside other transient `projects/*` dirs. ## Verification `pnpm build` (65/65) · `pnpm lint:deps` (0 violations) — green. `pnpm test:packages` / `pnpm test:integration` green except pre-existing local-infra flakiness (missing CLI binary + DB connection under parallel load) unrelated to this deletion; the modified e2e passes in isolation. CI is the gate. ## Alternatives considered - **Keep the in-repo extension as a maintained exemplar.** Rejected: it now lives in CipherStash's repo, so this would be dual maintenance and would misrepresent an external extension as first-party. - **Delete only the package, keep the example app and fixtures.** Rejected: they depend on the package; orphaning them leaves dead, non-building code. - **Leave cipherstash as the example extension in docs.** Rejected: the docs should point at extensions that actually live here — `pgvector` / `paradedb` — so a reader can follow the example to real in-repo code. Closes TML-2527. Signed-off-by: Will Madden <madden@prisma.io> Co-authored-by: Will Madden <madden@prisma.io> | 5 个月前 |