Skip to content

@cipherstash/eql 4.0: ship the v3 and v4 bundles together and move Stack Encrypt's targets to v4 #1142

Description

@coderdan

Background

@cipherstash/eql ships EQL's SQL bundle, along with the eql-bindings
crate, the docs and the postgres-eql image, all at one version. After #1141 the
build produces two bundles from one source.

Problem

  1. Stack Encrypt's only producible type, TextEq, still writes eql_v3_*
    domains.
  2. The new kinds have no EQL target.
  3. Releasing v4 by bumping main and patching v3 from a branch would need a
    maintenance release path that doesn't exist. And npm-publish.mjs puts
    every stable release on latest, so a 3.x patch would move latest
    backwards.

Proposal

  1. Publish @cipherstash/eql 4.0 with both bundles, and an exports entry for
    each. A SQL fix lands in both in one release. "4.0" means v4 is available,
    not that v3 is gone.
  2. In eql-codegen, eql-domains and eql-bindings:
    • generate v4 targets;
    • move TextEq to v4;
    • delete the Stack Encrypt targets on eql_v3_* domains and their
      "producer profile" reason strings;
    • set the v4 payload's "v": 4;
    • keep the stack-encrypt:1: ciphertext prefix.
  3. Make the non-text families producible in v4 (stashgen refuses every number, date and boolean EQL type — produce them in EQL v4 using ADR-0002's encodings #1130).
  4. Regenerate Go's encrypt/eql/eql_gen.go.
  5. Write docs/upgrading/v4.0.md: v4 is the v3 SQL with Stack Encrypt terms,
    and a column moves from v3 to v4 by re-encrypting it.
  6. Add an @cipherstash/eql major changeset.

During the overlap with v3, cipherstash-client gets fixes only. New kinds and
domains are v4-only.

Needs #1140 on crates.io and #1141. Decided in ADR-0002 (#1139).

Metadata

Metadata

Assignees

No one assigned

    Labels

    SDKenhancementNew feature or requestrustPull requests that update Rust code

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions