Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
c68c4b4
docs: design encrypted domain type prototype
tobyhede May 21, 2026
c43b5ba
feat(bench): fixture and benchmark data-generation foundation
tobyhede May 21, 2026
4d0a81c
feat(fixtures): add typed SQLx fixture generation
tobyhede May 25, 2026
457b9d1
refactor(fixtures): replace Proxy with direct cipherstash-client
tobyhede May 25, 2026
f8dfd92
Add CipherStash secrets to EQL test workflow
tobyhede May 25, 2026
ded50df
perf(fixtures): batch encrypt_store and add cipherstash test coverage
tobyhede May 25, 2026
ecacbe3
chore(mise): make test:sqlx depend on build
tobyhede May 25, 2026
d1718ad
fix(ci): supply client-key creds to fixture generator in test workflow
tobyhede May 28, 2026
e0ebead
Merge pull request #238 from cipherstash/fixtures-and-bench
tobyhede May 29, 2026
2aba09e
feat(codegen): scalar encrypted-domain SQL generator
tobyhede Jun 1, 2026
b0d716d
feat(encrypted-domain): eql_v2_int4 variant family
tobyhede Jun 1, 2026
fa528a4
feat(aggregates): per-domain MIN/MAX with parallel aggregation
tobyhede Jun 1, 2026
4f143f5
feat(lint): encrypted-domain lint rules
tobyhede Jun 1, 2026
0715c80
test(encrypted-domain): SQLx scalar matrix, fixtures & jsonb-surface …
tobyhede Jun 1, 2026
46fc825
docs(encrypted-domain): implementation spec, generator reference & ch…
tobyhede Jun 1, 2026
e26e3a5
ci(test-eql): pin third-party actions to SHAs, scope permissions
tobyhede Jun 1, 2026
bf179b0
test(encrypted-domain): scope jsonb-surface guard to native operators
tobyhede Jun 1, 2026
258564b
test(int4): split out cargo-expand macro-expansion snapshot guard
tobyhede May 29, 2026
5008c7d
ci(macro-expand): pin cargo-expand, single-source nightly, harden regen
tobyhede May 29, 2026
4098c69
refactor(fixtures): collapse scalar fixture wrappers behind scalar_fi…
tobyhede Jun 1, 2026
fab74be
style(fixtures): rustfmt scalar_fixture.rs
tobyhede Jun 1, 2026
c042cd1
Merge pull request #239 from cipherstash/v3-domain-type-int4
tobyhede Jun 1, 2026
04b0f32
feat(encrypted-domain): move int4 domain family into a new eql_v3 schema
tobyhede Jun 1, 2026
da300da
test(encrypted-domain): point int4 matrix tests at eql_v3 schema
tobyhede Jun 1, 2026
59f3a35
fix(lint): describe encrypted-domains namespace-neutrally
tobyhede Jun 1, 2026
5576136
test(matrix): assert real index-scan node in scale-preference sweep
tobyhede Jun 1, 2026
2681811
feat(encrypted-domain): add int2 scalar domain family
tobyhede Jun 1, 2026
1d1dcc5
ci(fixtures): regenerate all scalar fixtures via fixture:generate:all
tobyhede Jun 1, 2026
8f3087a
Merge pull request #247 from cipherstash/v3-domain-eql-v3-schema
tobyhede Jun 1, 2026
10047be
Merge pull request #245 from cipherstash/test/int4-macro-expand-guard
tobyhede Jun 1, 2026
1a42fdd
feat(codegen): add Cargo workspace with eql-scalars catalog + eql-cod…
tobyhede Jun 1, 2026
a12c729
ci: move rust-cache workspaces key to root for the Cargo workspace
tobyhede Jun 1, 2026
49675dc
feat(codegen): value-kind Fixture + fixtures! macro in eql-scalars
tobyhede Jun 2, 2026
7ba43a6
ci(test): cover the Rust workspace crates in test-eql
tobyhede Jun 2, 2026
9ae4a76
Merge pull request #250 from cipherstash/v3-rust-codegen-workspace-ca…
tobyhede Jun 2, 2026
2737d5f
feat(codegen): port SQL generator to Rust with generator parity
tobyhede Jun 2, 2026
e186464
fix(codegen): align Python generator marker with Rust + fmt/clippy cr…
tobyhede Jun 2, 2026
0f05978
fix(codegen): address CodeRabbit review findings on generator parity
tobyhede Jun 2, 2026
e85bc57
refactor(codegen): model operator surface as a central PostgreSQL cat…
tobyhede Jun 2, 2026
2c08b8e
fix(codegen): align Python fixture-values header with Rust generator
tobyhede Jun 2, 2026
92a833b
refactor(codegen): split functions template into per-kind partials
tobyhede Jun 2, 2026
73ef27d
refactor(codegen): prune dead consts and enable dead-code detection
tobyhede Jun 2, 2026
22c7be4
refactor(codegen): use a raw string for the values.rs renderer
tobyhede Jun 2, 2026
88ad559
docs(tests): clarify eql_v2_int* are fixture names, not domain types
tobyhede Jun 2, 2026
fd6f3a0
docs(comments): correct stale domain references in lint catalog and f…
tobyhede Jun 2, 2026
0dc8363
build(test): path-dep eql-scalars from tests/sqlx for catalog-driven …
tobyhede Jun 2, 2026
21e0c9e
build: generate encrypted-domain SQL via eql-codegen (Rust), not Python
tobyhede Jun 2, 2026
a3cc631
test(fixtures): add catalog-driven generate-all-fixtures entry point
tobyhede Jun 2, 2026
76e1e06
build(fixtures): collapse fixture:generate{,:all} into one catalog-dr…
tobyhede Jun 2, 2026
b1abf23
docs(mise): describe catalog-driven fixture regeneration in test:sqlx
tobyhede Jun 2, 2026
de08b28
test(matrix): collapse per-type inventory to one catalog-reconciled s…
tobyhede Jun 2, 2026
8d77e6e
ci(codegen): Rust catalog/generator tests + golden parity, drop pytest
tobyhede Jun 2, 2026
a8e9ab7
ci(matrix): verify single canonical snapshot, catalog-reconciled, cac…
tobyhede Jun 2, 2026
86e54ef
build: remove Python codegen toolchain (catalog/generator is Rust)
tobyhede Jun 2, 2026
af6eb8f
docs(CLAUDE): describe Rust catalog codegen, single matrix snapshot, …
tobyhede Jun 2, 2026
f5ca633
docs(spec): rewrite encrypted-domain spec for Rust catalog, single ma…
tobyhede Jun 2, 2026
f60386a
docs(snapshots): rewrite README for single catalog-driven matrix snap…
tobyhede Jun 2, 2026
7feb83d
docs(changelog): record Rust catalog codegen + Python toolchain removal
tobyhede Jun 2, 2026
35bcd9f
docs(CLAUDE): match actual generated-file markers (-- / // AUTOMATICA…
tobyhede Jun 2, 2026
959eb85
refactor(codegen): drop generated <T>_values.rs; materialise fixtures…
tobyhede Jun 2, 2026
5006d58
docs(codegen): align generator docs with Rust eql-codegen cutover
tobyhede Jun 3, 2026
7ec279e
fix(ci): pin bash via shebang for strict-mode mise tasks
tobyhede Jun 3, 2026
5721f13
docs(reference): rename encrypted-domain spec to task-oriented guide
tobyhede Jun 3, 2026
d0f78b7
refactor(scalars): generate SQLx matrix harness from one declarative …
tobyhede Jun 3, 2026
9b4f880
test(scalars): abstract per-type catalog tests into generic checks
tobyhede Jun 3, 2026
147ef1f
refactor(tests): rename scalar_harness! to scalar_types!
tobyhede Jun 3, 2026
c49e164
feat(int8): add eql_v3.int8 encrypted-domain type family
tobyhede Jun 3, 2026
e8bbe81
build: always run codegen — drop mise sources/outputs incremental skip
tobyhede Jun 3, 2026
f0a03d1
docs(tests): tighten scalar-harness macro comments
tobyhede Jun 3, 2026
a9b3785
Merge pull request #251 from cipherstash/v3-rust-codegen-generator-pa…
tobyhede Jun 3, 2026
1c87178
Merge pull request #252 from cipherstash/v3-rust-codegen-cutover-cleanup
tobyhede Jun 3, 2026
b45cea6
Merge pull request #254 from cipherstash/streamline-scalar-harness
tobyhede Jun 3, 2026
05e6b81
refactor(codegen): target eql_v3 schema and src/v3/scalars output paths
tobyhede Jun 3, 2026
cf514f2
test(codegen): regenerate int4 golden for the eql_v3 schema + src/v3 …
tobyhede Jun 3, 2026
44d2dba
feat(v3): relocate schema and fork crypto/common into src/v3 (D7, D8)
tobyhede Jun 3, 2026
f2f43c9
feat(v3): add self-contained eql_v3.hmac_256 SEM type (jsonb-only)
tobyhede Jun 3, 2026
cf7ce98
feat(v3): add self-contained eql_v3.ore_block_u64_8_256 SEM type (jso…
tobyhede Jun 3, 2026
bbf09cc
feat(v3): move shared blocker to src/v3/scalars; remove src/encrypted…
tobyhede Jun 3, 2026
0ae5c10
build(v3): emit self-contained release/cipherstash-encrypt-v3.sql var…
tobyhede Jun 3, 2026
6e4cff2
fix(v3): keep eql_v3 SEM ore_block/hmac_256 inlinable in the combined…
tobyhede Jun 3, 2026
94d0177
test(v3): add self-containment gate (symbol + file + artifact) and CI…
tobyhede Jun 3, 2026
ae2bac5
test(v3): assert the v3 artifact is self-contained and v2-decoupled
tobyhede Jun 3, 2026
15370c8
test(v3): clean-DB install + functional-index smoke (proves D11, D4)
tobyhede Jun 3, 2026
fa091cd
docs(v3): document the self-contained eql_v3 schema and v3-only insta…
tobyhede Jun 3, 2026
eacf669
test(v3): update family mutation tests + drop-opclass fixture for the…
tobyhede Jun 3, 2026
973c5fe
refactor(codegen): extract v3 path constants, drop dead Term::returns…
tobyhede Jun 3, 2026
0717d16
test(v3): direct coverage for the eql_v3 ORE/HMAC SEM functions
tobyhede Jun 3, 2026
9b9557d
test(v3): harden self-containment checks to also reject bare eql_v2_ …
tobyhede Jun 3, 2026
19fe049
refactor(codegen): collapse CORE/DOMAIN schema constants into a singl…
tobyhede Jun 3, 2026
ba37472
fix(v3): address code-review findings on stale docs/comments + test h…
tobyhede Jun 3, 2026
fb98a09
docs(v3): add missing @param/@return tags to ore_block_u64_8_256 oper…
tobyhede Jun 3, 2026
eafaa17
style(test): rustfmt encrypted_domain/family/sem.rs
tobyhede Jun 3, 2026
b265e43
refactor(tests): generalise scalar matrix harness off integer-inheren…
tobyhede Jun 3, 2026
567c5bb
chore: quote echo var in tasks/build.sh
tobyhede Jun 3, 2026
09d1de1
fix: apply CodeRabbit auto-fixes
tobyhede Jun 3, 2026
3ef8bac
Merge pull request #253 from cipherstash/v3-domain-type-int8
tobyhede Jun 3, 2026
0bcf821
fix(v3): address PR #255 review feedback — SQL inlining, stale docs, …
tobyhede Jun 4, 2026
1b1ab52
Merge pull request #255 from cipherstash/v3-self-contained-schema
tobyhede Jun 4, 2026
750152f
Merge pull request #258 from cipherstash/v3-scalar-harness-generalize
tobyhede Jun 4, 2026
fd0bffc
feat(scalars): add eql_v3.date encrypted-domain type + temporal harness
tobyhede Jun 3, 2026
743477c
Merge pull request #256 from cipherstash/v3-domain-type-date
tobyhede Jun 4, 2026
3b908d9
docs: correct stale 'out of scope' scalar coverage in adding-a-scalar…
tobyhede Jun 4, 2026
955a894
feat(eql-scalars): add total BoundedIntKind sub-enum
tobyhede Jun 4, 2026
325867d
refactor(eql-scalars): move bounded accessors to BoundedIntKind
tobyhede Jun 4, 2026
163ec57
docs: describe BoundedIntKind instead of panicking accessors
tobyhede Jun 4, 2026
f65d2eb
Merge pull request #259 from cipherstash/v3-bounded-int-kind
tobyhede Jun 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/bench-eql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ on:
- "src/**/*.sql"
- "tests/sqlx/**/*"
- "tasks/**/*"
- "crates/**"
- "Cargo.toml"
- "Cargo.lock"

schedule:
# 02:00 UTC daily
Expand Down Expand Up @@ -50,7 +53,7 @@ jobs:

- uses: Swatinem/rust-cache@v2
with:
workspaces: tests/sqlx
workspaces: .
shared-key: sqlx-tests

- name: Setup database
Expand Down
82 changes: 82 additions & 0 deletions .github/workflows/macro-expand-eql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: "Macro expand EQL"

# Regenerates the int4 matrix `cargo expand` snapshot and fails if it has
# drifted from the committed copy. This is a body-level fidelity backstop for
# the `ordered_numeric_matrix!` / `scalar_domain_matrix!` macros — the
# name-inventory snapshot (test-eql.yml `matrix-coverage` job) catches
# add/remove of whole arms; this catches changes *inside* the generated bodies.
#
# Non-blocking by design: it is NOT a required PR check. `cargo expand` needs a
# nightly toolchain, so it is isolated off the PR path.
# - nightly schedule (the backstop that flags a forgotten local regen)
# - manual workflow_dispatch
#
# GAP (intended): there is no `pull_request` trigger, so a change that only
# touches macro *bodies* (no arm add/remove) can merge without ever running
# here and will first surface as a red nightly run afterwards. Accept this — the
# expand lane needs nightly and stays off the PR critical path by design.
#
# The pinned nightly date lives in ONE place: the `cargo +nightly-...` invocation
# in the `test:matrix:expand` mise task. The install step below DERIVES the date
# from mise.toml (grep), so there is nothing to keep in lockstep — bump it once in
# mise.toml. The snapshot then only moves when the macro moves, not when nightly
# reformats its expansion.
on:
schedule:
# 03:00 UTC daily
- cron: "0 3 * * *"

workflow_dispatch:

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
MISE_VERBOSE: "1"

defaults:
run:
shell: bash -l {0}

permissions:
contents: read

jobs:
macro-expand:
name: "Macro expand drift (nightly)"
runs-on: ubuntu-latest
timeout-minutes: 30

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4
with:
version: 2026.4.0
install: true
cache: true

- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
workspaces: tests/sqlx
shared-key: sqlx-tests

# Derive the pinned nightly date from mise.toml (single source of truth —
# the `cargo +nightly-...` invocation in the `test:matrix:expand` task) so
# there is nothing to bump in lockstep here. cargo-expand is likewise pinned
# once in mise.toml's [tools] (`cargo:cargo-expand`) and installed by the
# mise-action step above, so its version is single-sourced too — no
# hardcoded version lives in this workflow. It drives the rustfmt pass, so
# an unpinned version could drift the snapshot even with a frozen macro +
# nightly. The snapshot then only moves when the macro moves.
- name: Install pinned nightly toolchain
run: |
NIGHTLY=$(grep -oE 'nightly-[0-9]{4}-[0-9]{2}-[0-9]{2}' mise.toml | head -1)
test -n "$NIGHTLY" || { echo "could not find pinned nightly in mise.toml"; exit 1; }
rustup toolchain install "$NIGHTLY" --profile minimal --component rustfmt

- name: Regenerate and verify the matrix expansion snapshot
run: |
mise run test:matrix:expand
git diff --exit-code -- tests/sqlx/snapshots/int4_expanded.rs \
|| { echo "Expansion snapshot stale — run 'mise run test:matrix:expand' (needs the pinned nightly) and commit."; exit 1; }
181 changes: 169 additions & 12 deletions .github/workflows/test-eql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ on:
- "sql/**/*.sql"
- "tests/**/*"
- "tasks/**/*"
- "crates/**"
- "Cargo.toml"
- "Cargo.lock"

pull_request:
# run on all pull requests
Expand All @@ -18,6 +21,9 @@ on:
- "sql/**/*.sql"
- "tests/**/*"
- "tasks/**/*"
- "crates/**"
- "Cargo.toml"
- "Cargo.lock"

workflow_dispatch:

Expand All @@ -29,33 +35,167 @@ defaults:
run:
shell: bash -l {0}

permissions:
contents: read

jobs:
schema:
name: "JSON Schema validation"
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- uses: jdx/mise-action@v4
- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4
with:
version: 2026.4.0
install: true
cache: true

- uses: Swatinem/rust-cache@v2
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
workspaces: tests/sqlx
workspaces: .
shared-key: sqlx-tests

- name: Validate v2.2 / v2.3 payload schemas
run: |
mise run test:schema

rust-crates:
name: "Rust workspace crates"
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4
with:
version: 2026.4.0
install: true
cache: true

- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
workspaces: .
shared-key: sqlx-tests

# fmt + clippy + test for the std-only catalog/generator crates. No
# Postgres: these never touch a database, so they run standalone and fast.
- name: Compile, lint and test the Rust workspace crates
run: |
export active_rust_toolchain=$(rustup show active-toolchain | cut -d' ' -f1)
rustup component add --toolchain ${active_rust_toolchain} rustfmt clippy
mise run test:crates

codegen:
name: "Encrypted-domain codegen"
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4
with:
version: 2026.4.0
install: true
cache: true

# Shared with the sibling Rust jobs so the eql-codegen build artifacts the
# parity gate needs are reused rather than rebuilt from scratch.
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
workspaces: .
shared-key: sqlx-tests

# Crate compile/lint/test (cargo test -p eql-scalars -p eql-codegen) runs
# in the dedicated `test:crates` job; this job covers the codegen-specific
# gate only — golden parity. The plaintext fixture lists are no longer a
# generated file: they live in the catalog (`eql_scalars::INT4_VALUES` /
# `INT2_VALUES`) and are pinned by `eql-scalars`'s own unit tests, so there
# is nothing to regenerate-and-diff here.

# Parity gate: assert the Rust eql-codegen output is line-normalized-equal
# to the int4 golden reference. Python is no longer an oracle (retired in
# P2). No Postgres needed — the generator runs offline.
- name: Verify generator parity (golden)
run: |
mise run codegen:parity

self-contained-v3:
name: "eql_v3 self-containment"
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4
with:
version: 2026.4.0
install: true
cache: true

- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
workspaces: .
shared-key: sqlx-tests

# Build to materialise release/cipherstash-encrypt-v3.sql and
# src/deps-ordered-v3.txt, then assert no eql_v2 symbol/file leakage.
- name: Build EQL
run: mise run --force build

- name: Assert eql_v3 is self-contained
run: mise run test:self_contained_v3

matrix-coverage:
name: "Matrix coverage inventory"
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4
with:
version: 2026.4.0
install: true
cache: true

- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
workspaces: .
shared-key: sqlx-tests

# Verify the matrix test-name set against the SINGLE canonical snapshot
# (snapshots/matrix_tests.txt) with the SAME pinned feature set the local
# task uses (`--no-default-features`, scale excluded), and cross-check the
# binary's discovered type set against `eql-codegen list-types`. A coverage
# change shows up as a diff in the snapshot; a catalog type missing its
# matrix wiring fails the cross-check. No Postgres needed: `--list` only
# enumerates, the suite uses runtime queries.
- name: Verify the matrix test-name inventory
run: |
mise run test:matrix:inventory
# Diff the whole snapshots/ directory so the single canonical file
# isn't hardcoded here; the mise task discovers the type set from the
# binary and reconciles it against `eql-codegen list-types`.
git add -N tests/sqlx/snapshots
git diff --exit-code -- tests/sqlx/snapshots \
|| { echo "Coverage inventory stale — run 'mise run test:matrix:inventory' and commit."; exit 1; }

test:
name: "Test & Validate EQL (Postgres ${{ matrix.postgres-version }})"
runs-on: ubuntu-latest-m
needs: schema
needs: [schema, codegen]

strategy:
fail-fast: false
Expand All @@ -64,19 +204,30 @@ jobs:

env:
POSTGRES_VERSION: ${{ matrix.postgres-version }}
# CS_* are required for `mise run test:sqlx` to regenerate the
# cipherstash-client-encrypted fixtures before the suite runs.
# This repository does not accept fork PRs, so the secrets-on-
# `pull_request` constraint that breaks the fork CI flow does not
# apply here — leave the env block unconditional.
CS_CLIENT_ACCESS_KEY: ${{ secrets.CS_CLIENT_ACCESS_KEY }}
CS_WORKSPACE_CRN: ${{ secrets.CS_WORKSPACE_CRN }}
CS_CLIENT_ID: ${{ secrets.CS_CLIENT_ID }}
CS_CLIENT_KEY: ${{ secrets.CS_CLIENT_KEY }}

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- uses: jdx/mise-action@v4
- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4
with:
version: 2026.4.0
install: true # [default: true] run `mise install`
cache: true # [default: true] cache mise using GitHub's cache

- uses: Swatinem/rust-cache@v2
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
workspaces: tests/sqlx
workspaces: .
shared-key: sqlx-tests

- name: Setup database (Postgres ${{ matrix.postgres-version }})
Expand All @@ -93,6 +244,11 @@ jobs:
rustup component add --toolchain ${active_rust_toolchain} rustfmt clippy
mise run --output prefix test --postgres ${POSTGRES_VERSION}

- name: Clean-DB v3 install smoke (Postgres ${{ matrix.postgres-version }})
run: |
mise run build
mise run test:clean_install_v3

splinter:
name: "Supabase splinter"
runs-on: ubuntu-latest-m
Expand All @@ -101,9 +257,11 @@ jobs:
POSTGRES_VERSION: "17"

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- uses: jdx/mise-action@v4
- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4
with:
version: 2026.4.0
install: true
Expand All @@ -126,4 +284,3 @@ jobs:
mise run --output prefix test:splinter --postgres ${POSTGRES_VERSION}



Loading