You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
@cipherstash/eql 4.0: ship the v3 and v4 bundles together and move Stack Encrypt's targets to v4 #1142
@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
Stack Encrypt's only producible type, TextEq, still writes eql_v3_*
domains: the eql_v3TextEq and TextEqQuery structs derive Stack
Encrypt's EncryptFrom (and TextEq its DecryptInto) under eql-bindings' stack-encrypt feature. Stack Encrypt's output is not
byte-for-byte compatible with cipherstash-client's, so those derives
claim a v3 compatibility that doesn't exist.
The new kinds have no EQL target.
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
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.
In eql-codegen, eql-domains and eql-bindings:
generate v4 targets;
derive Stack Encrypt's traits (EncryptFrom, DecryptInto) on v4
structs only. Move TextEq and TextEqQuery to v4, and remove both
derives from every eql_v3_* struct. A test asserts that no v3 struct
implements either trait;
delete the Stack Encrypt targets on eql_v3_* domains and their
"producer profile" reason strings;
Background
@cipherstash/eqlships EQL's SQL bundle, along with theeql-bindingscrate, the docs and the
postgres-eqlimage, all at one version. After #1141 thebuild produces two bundles from one source.
Problem
TextEq, still writeseql_v3_*domains: the
eql_v3TextEqandTextEqQuerystructs derive StackEncrypt's
EncryptFrom(andTextEqitsDecryptInto) undereql-bindings'stack-encryptfeature. Stack Encrypt's output is notbyte-for-byte compatible with cipherstash-client's, so those derives
claim a v3 compatibility that doesn't exist.
mainand patching v3 from a branch would need amaintenance release path that doesn't exist. And
npm-publish.mjsputsevery stable release on
latest, so a 3.x patch would movelatestbackwards.
Proposal
@cipherstash/eql4.0 with both bundles, and an exports entry foreach. A SQL fix lands in both in one release. "4.0" means v4 is available,
not that v3 is gone.
eql-codegen,eql-domainsandeql-bindings:EncryptFrom,DecryptInto) on v4structs only. Move
TextEqandTextEqQueryto v4, and remove bothderives from every
eql_v3_*struct. A test asserts that no v3 structimplements either trait;
eql_v3_*domains and their"producer profile" reason strings;
"v": 4;stack-encrypt:1:ciphertext prefix.encrypt/eql/eql_gen.go.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.
@cipherstash/eqlmajor 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).