Skip to content

Commit 3669ca3

Browse files
committed
ci(eql): stop encryption checks on failure
The workflow's custom bash shell omits errexit, so a successful final command could hide an earlier failure. Enable fail-fast behavior in both new checks and document the internal test crate in the repository map and security scope. Refs #971
1 parent 4539acb commit 3669ca3

3 files changed

Lines changed: 8 additions & 1 deletion

File tree

‎.github/workflows/test-eql.yml‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,7 @@ jobs:
568568
PGPASSWORD: postgres
569569
EQL_TEST_DATABASE_URL: "host=localhost port=7433 user=postgres password=postgres dbname=postgres"
570570
run: |
571+
set -euo pipefail
571572
cargo test --locked -p eql-bindings --features stack-encrypt
572573
cargo test --locked -p eql-encryption-tests
573574
cargo clippy --locked -p eql-bindings -p eql-encryption-tests --all-features --all-targets -- -D warnings
@@ -576,6 +577,7 @@ jobs:
576577
577578
- name: Compile Rust text equality for WASI without HTTP
578579
run: |
580+
set -euo pipefail
579581
rustup target add wasm32-wasip1
580582
cargo check --locked -p eql-bindings --features stack-encrypt --target wasm32-wasip1
581583

‎AGENTS.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ If these variables are missing, tests that require live encryption will fail or
8383
- `packages/utils`: Shared config (`utils/config`) and logger (`utils/logger`)
8484
- `packages/bench`: Performance / index-engagement benchmarks (private, not published)
8585
- `packages/protect-ffi`: Native FFI bindings to the CipherStash Client SDK (`@cipherstash/protect-ffi`) — the Rust core that `packages/stack` encrypts and decrypts through, absorbed from `cipherstash/protectjs-ffi`. Contains a **nested Cargo workspace** (`crates/`) and six per-platform binary packages under `platforms/*`, each published as `@cipherstash/protect-ffi-<platform>` and linked here via `workspace:*`. Also holds the repo's live FFI integration suite at `integration-tests/` — a private workspace member (`@cipherstash/ffi-integration-tests`) enrolled by its own literal entry in `pnpm-workspace.yaml`, needing Docker and credentials, and deliberately carrying **no `test` script** so `pnpm test` cannot reach it. See the "Working on protect-ffi" notes below before touching it — its default `test` and `build` are deliberately Rust-free.
86-
- `packages/eql`: The Encrypt Query Language subtree — the SQL bundle that stores and queries encrypted payloads — absorbed from `cipherstash/encrypt-query-language`. **The directory is the subtree root, not the package.** It was imported at a *verbatim prefix* so its repo-root-relative paths (mise tasks, `Doxyfile`, `sync-generated.mjs`) keep resolving, which puts the npm package `@cipherstash/eql` two levels down at `packages/eql/packages/eql` — the same shape as `packages/protect-ffi/platforms/*`, and enrolled the same way, by an explicit `packages/eql/packages/*` glob in `pnpm-workspace.yaml`. The subtree root deliberately carries no `package.json`. Also contains a **nested Cargo workspace** at `packages/eql/crates/` (`eql-bindings`, published in lockstep with the npm package, plus `eql-domains` / `eql-codegen` / `eql-tests-macros`, which are not), a SQLx test crate at `packages/eql/tests/sqlx`, an ~900-line `mise.toml` task surface, its own `AGENTS.md`, and `docs/`. See the "Working on EQL" notes below before touching it.
86+
- `packages/eql`: The Encrypt Query Language subtree — the SQL bundle that stores and queries encrypted payloads — absorbed from `cipherstash/encrypt-query-language`. **The directory is the subtree root, not the package.** It was imported at a *verbatim prefix* so its repo-root-relative paths (mise tasks, `Doxyfile`, `sync-generated.mjs`) keep resolving, which puts the npm package `@cipherstash/eql` two levels down at `packages/eql/packages/eql` — the same shape as `packages/protect-ffi/platforms/*`, and enrolled the same way, by an explicit `packages/eql/packages/*` glob in `pnpm-workspace.yaml`. The subtree root deliberately carries no `package.json`. Also contains a **nested Cargo workspace** at `packages/eql/crates/` (`eql-bindings`, published in lockstep with the npm package, plus `eql-domains` / `eql-codegen` / `eql-tests-macros`, which are not), a SQLx test crate at `packages/eql/tests/sqlx`, an unpublished encryption test crate at `packages/eql/tests/encryption` (real encryption with a fake key source, plus optional PostgreSQL coverage), an ~900-line `mise.toml` task surface, its own `AGENTS.md`, and `docs/`. See the "Working on EQL" notes below before touching it.
8787
**Repository ownership:** EQL now lives in `cipherstash/stack`. File and update
8888
EQL issues in this repository, never in the historical
8989
`cipherstash/encrypt-query-language` repository. Old upstream issue and PR

‎SECURITY.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ This repository also carries the source of the **`eql-bindings`** Rust crate
2626
lockstep with `@cipherstash/eql`. It is in scope for security reports on the
2727
same terms as the npm packages above.
2828

29+
The `eql-encryption-tests` Rust crate (`packages/eql/tests/encryption`) is
30+
an unpublished test harness for these bindings. It uses real encryption with
31+
a fake key source and an optional disposable PostgreSQL database; it adds no
32+
published package or production service.
33+
2934
> **Note on publishing.** `@cipherstash/eql` and the `eql-bindings` crate are
3035
> developed here but are *published* from `cipherstash/encrypt-query-language`
3136
> until the Phase 5 cutover in

0 commit comments

Comments
 (0)