Skip to content

Merge eql_v3 into main for the 3.0.0 release#314

Open
tobyhede wants to merge 634 commits into
mainfrom
eql_v3
Open

Merge eql_v3 into main for the 3.0.0 release#314
tobyhede wants to merge 634 commits into
mainfrom
eql_v3

Conversation

@tobyhede

@tobyhede tobyhede commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Merges the eql_v3 release line into main for the EQL 3.0.0 GA release. (Originally opened as the long-running v3 integration tracking PR; description updated now that the branch is release-ready.)

Linear: CIP-3465

What this brings to main

  • The self-contained eql_v3 / eql_v3_internal surface — the eql_v2 schema, its database-side config management, and the multi-variant build were removed in 3.0.0; release/cipherstash-encrypt.sql is now a single self-contained installer built from src/v3 alone
  • The generated scalar encrypted-domain families (integer, smallint, bigint, date, timestamp, numeric, text, boolean, real, double) driven by the eql-domains::CATALOG + eql-codegen pipeline, with committed drift-gated SQL under src/v3/scalars/
  • The hand-written encrypted-JSONB (SteVec) surface under src/v3/jsonb/
  • Rust (eql-bindings) and TypeScript (@cipherstash/eql) binding packages generated from the same catalog, both bundling the SQL installer
  • The Changesets-based lockstep release flow (release.yml, publish-only release-plz.yml), validated end-to-end by the 3.0.0-alpha.x prereleases cut from this branch

Merge conflict note

.github/workflows/release-plz.yml is an add/add conflict: main carries a registration-only dispatch stub (#383) whose own commit message says to replace it with the full workflow when eql_v3 merges. Resolve by taking the eql_v3 side (the full publish workflow).

After merge

  • Push to main triggers release.yml (classifies as no-op — not a chore(release): marker commit; finals are owned by the changesets Version PR flow), release-plz.yml (no-op — the committed crate version is already published), and bench-eql.yml
  • 3.0.0 GA is then cut from main by merging the changesets "Version Packages" PR per docs/development/releasing.md

@coderabbitai

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 863 files, which is 713 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 0715736f-ab0a-4ccb-b919-485c4d767471

📥 Commits

Reviewing files that changed from the base of the PR and between 3c55825 and 275c582.

⛔ Files ignored due to path filters (196)
  • Cargo.lock is excluded by !**/*.lock
  • packages/eql/src/generated/release-manifest.ts is excluded by !**/generated/**
  • packages/eql/src/generated/schema-manifest.ts is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/bigint.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/bigint_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/bigint_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/bigint_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/bigint_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/boolean.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/date.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/date_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/date_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/date_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/date_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/double.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/double_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/double_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/double_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/double_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/integer.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/integer_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/integer_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/integer_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/integer_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/json.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/jsonb_entry.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/numeric.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/numeric_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/numeric_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/numeric_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/numeric_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_bigint_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_bigint_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_bigint_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_bigint_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_date_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_date_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_date_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_date_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_double_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_double_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_double_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_double_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_integer_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_integer_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_integer_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_integer_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_jsonb.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_numeric_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_numeric_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_numeric_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_numeric_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_real_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_real_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_real_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_real_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_smallint_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_smallint_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_smallint_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_smallint_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_text_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_text_match.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_text_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_text_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_text_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_text_search.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_timestamp_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_timestamp_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_timestamp_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/query_timestamp_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/real.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/real_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/real_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/real_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/real_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/smallint.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/smallint_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/smallint_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/smallint_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/smallint_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/text.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/text_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/text_match.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/text_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/text_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/text_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/text_search.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/timestamp.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/timestamp_eq.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/timestamp_ord.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/timestamp_ord_ope.json is excluded by !**/generated/**
  • packages/eql/src/generated/schema/v3/timestamp_ord_ore.json is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Bigint.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/BigintEq.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/BigintEqQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/BigintOrd.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/BigintOrdOpe.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/BigintOrdOpeQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/BigintOrdOre.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/BigintOrdOreQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/BigintOrdQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/BloomFilter.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Boolean.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Ciphertext.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Date.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DateEq.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DateEqQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DateOrd.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DateOrdOpe.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DateOrdOpeQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DateOrdOre.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DateOrdOreQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DateOrdQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Double.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DoubleEq.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DoubleEqQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DoubleOrd.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DoubleOrdOpe.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DoubleOrdOpeQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DoubleOrdOre.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DoubleOrdOreQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/DoubleOrdQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Hmac256.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Identifier.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Integer.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/IntegerEq.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/IntegerEqQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/IntegerOrd.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/IntegerOrdOpe.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/IntegerOrdOpeQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/IntegerOrdOre.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/IntegerOrdOreQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/IntegerOrdQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Numeric.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/NumericEq.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/NumericEqQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/NumericOrd.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/NumericOrdOpe.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/NumericOrdOpeQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/NumericOrdOre.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/NumericOrdOreQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/NumericOrdQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/OpeCllw.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/OreBlock256.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/OreCllw.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Real.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/RealEq.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/RealEqQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/RealOrd.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/RealOrdOpe.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/RealOrdOpeQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/RealOrdOre.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/RealOrdOreQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/RealOrdQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SchemaVersion.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Selector.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Smallint.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SmallintEq.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SmallintEqQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SmallintOrd.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SmallintOrdOpe.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SmallintOrdOpeQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SmallintOrdOre.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SmallintOrdOreQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SmallintOrdQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SteVecDocument.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SteVecEntry.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SteVecForm.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SteVecQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SteVecQueryEntry.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/SteVecTerm.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Text.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TextEq.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TextEqQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TextMatch.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TextMatchQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TextOrd.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TextOrdOpe.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TextOrdOpeQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TextOrdOre.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TextOrdOreQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TextOrdQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TextSearch.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TextSearchQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/Timestamp.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TimestampEq.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TimestampEqQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TimestampOrd.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TimestampOrdOpe.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TimestampOrdOpeQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TimestampOrdOre.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TimestampOrdOreQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/TimestampOrdQuery.ts is excluded by !**/generated/**
  • packages/eql/src/generated/v3/index.ts is excluded by !**/generated/**
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • tests/sqlx/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (863)
  • .changeset/README.md
  • .changeset/config.json
  • .changeset/eql-239-2.md
  • .changeset/eql-239-3.md
  • .changeset/eql-239.md
  • .changeset/eql-241-2.md
  • .changeset/eql-241.md
  • .changeset/eql-243.md
  • .changeset/eql-252.md
  • .changeset/eql-253.md
  • .changeset/eql-255.md
  • .changeset/eql-256.md
  • .changeset/eql-257.md
  • .changeset/eql-260.md
  • .changeset/eql-262.md
  • .changeset/eql-267-2.md
  • .changeset/eql-267.md
  • .changeset/eql-293.md
  • .changeset/eql-295.md
  • .changeset/eql-299.md
  • .changeset/eql-307.md
  • .changeset/eql-336.md
  • .changeset/eql-340-2.md
  • .changeset/eql-340.md
  • .changeset/eql-341.md
  • .changeset/eql-3442.md
  • .changeset/eql-349.md
  • .changeset/eql-350.md
  • .changeset/eql-353.md
  • .changeset/eql-354.md
  • .changeset/eql-373.md
  • .changeset/eql-375.md
  • .changeset/eql-377.md
  • .changeset/eql-internal-schema.md
  • .changeset/eql-language-binding-releases.md
  • .changeset/eql-lints-schema-placement.md
  • .changeset/eql-sole-installer.md
  • .changeset/eql-v2-removed.md
  • .changeset/eql-version-fn.md
  • .changeset/npm-latest-pre-ga.md
  • .changeset/pre.json
  • .gitattributes
  • .github/ISSUE_TEMPLATE/docs-feedback.yml
  • .github/actionlint.yaml
  • .github/workflows/README.md
  • .github/workflows/_build-docs.yml
  • .github/workflows/_build-sql.yml
  • .github/workflows/bench-eql.yml
  • .github/workflows/lint-release.yml
  • .github/workflows/macro-expand-eql.yml
  • .github/workflows/rebuild-docs.yml
  • .github/workflows/release-eql.yml
  • .github/workflows/release-plz.yml
  • .github/workflows/release-postgres-eql-image.yml
  • .github/workflows/release.yml
  • .github/workflows/test-eql.yml
  • .gitignore
  • .npmrc
  • CHANGELOG.md
  • CLAUDE.md
  • CODE_OF_CONDUCT.md
  • Cargo.toml
  • DEVELOPMENT.md
  • Doxyfile
  • README.md
  • SECURITY.md
  • SUPABASE.md
  • cliff.toml
  • crates/eql-bindings/.gitignore
  • crates/eql-bindings/CHANGELOG.md
  • crates/eql-bindings/Cargo.toml
  • crates/eql-bindings/README.md
  • crates/eql-bindings/bindings/v3/Bigint.ts
  • crates/eql-bindings/bindings/v3/BigintEq.ts
  • crates/eql-bindings/bindings/v3/BigintEqQuery.ts
  • crates/eql-bindings/bindings/v3/BigintOrd.ts
  • crates/eql-bindings/bindings/v3/BigintOrdOpe.ts
  • crates/eql-bindings/bindings/v3/BigintOrdOpeQuery.ts
  • crates/eql-bindings/bindings/v3/BigintOrdOre.ts
  • crates/eql-bindings/bindings/v3/BigintOrdOreQuery.ts
  • crates/eql-bindings/bindings/v3/BigintOrdQuery.ts
  • crates/eql-bindings/bindings/v3/BloomFilter.ts
  • crates/eql-bindings/bindings/v3/Boolean.ts
  • crates/eql-bindings/bindings/v3/Ciphertext.ts
  • crates/eql-bindings/bindings/v3/Date.ts
  • crates/eql-bindings/bindings/v3/DateEq.ts
  • crates/eql-bindings/bindings/v3/DateEqQuery.ts
  • crates/eql-bindings/bindings/v3/DateOrd.ts
  • crates/eql-bindings/bindings/v3/DateOrdOpe.ts
  • crates/eql-bindings/bindings/v3/DateOrdOpeQuery.ts
  • crates/eql-bindings/bindings/v3/DateOrdOre.ts
  • crates/eql-bindings/bindings/v3/DateOrdOreQuery.ts
  • crates/eql-bindings/bindings/v3/DateOrdQuery.ts
  • crates/eql-bindings/bindings/v3/Double.ts
  • crates/eql-bindings/bindings/v3/DoubleEq.ts
  • crates/eql-bindings/bindings/v3/DoubleEqQuery.ts
  • crates/eql-bindings/bindings/v3/DoubleOrd.ts
  • crates/eql-bindings/bindings/v3/DoubleOrdOpe.ts
  • crates/eql-bindings/bindings/v3/DoubleOrdOpeQuery.ts
  • crates/eql-bindings/bindings/v3/DoubleOrdOre.ts
  • crates/eql-bindings/bindings/v3/DoubleOrdOreQuery.ts
  • crates/eql-bindings/bindings/v3/DoubleOrdQuery.ts
  • crates/eql-bindings/bindings/v3/Hmac256.ts
  • crates/eql-bindings/bindings/v3/Identifier.ts
  • crates/eql-bindings/bindings/v3/Integer.ts
  • crates/eql-bindings/bindings/v3/IntegerEq.ts
  • crates/eql-bindings/bindings/v3/IntegerEqQuery.ts
  • crates/eql-bindings/bindings/v3/IntegerOrd.ts
  • crates/eql-bindings/bindings/v3/IntegerOrdOpe.ts
  • crates/eql-bindings/bindings/v3/IntegerOrdOpeQuery.ts
  • crates/eql-bindings/bindings/v3/IntegerOrdOre.ts
  • crates/eql-bindings/bindings/v3/IntegerOrdOreQuery.ts
  • crates/eql-bindings/bindings/v3/IntegerOrdQuery.ts
  • crates/eql-bindings/bindings/v3/Numeric.ts
  • crates/eql-bindings/bindings/v3/NumericEq.ts
  • crates/eql-bindings/bindings/v3/NumericEqQuery.ts
  • crates/eql-bindings/bindings/v3/NumericOrd.ts
  • crates/eql-bindings/bindings/v3/NumericOrdOpe.ts
  • crates/eql-bindings/bindings/v3/NumericOrdOpeQuery.ts
  • crates/eql-bindings/bindings/v3/NumericOrdOre.ts
  • crates/eql-bindings/bindings/v3/NumericOrdOreQuery.ts
  • crates/eql-bindings/bindings/v3/NumericOrdQuery.ts
  • crates/eql-bindings/bindings/v3/OpeCllw.ts
  • crates/eql-bindings/bindings/v3/OreBlock256.ts
  • crates/eql-bindings/bindings/v3/OreCllw.ts
  • crates/eql-bindings/bindings/v3/Real.ts
  • crates/eql-bindings/bindings/v3/RealEq.ts
  • crates/eql-bindings/bindings/v3/RealEqQuery.ts
  • crates/eql-bindings/bindings/v3/RealOrd.ts
  • crates/eql-bindings/bindings/v3/RealOrdOpe.ts
  • crates/eql-bindings/bindings/v3/RealOrdOpeQuery.ts
  • crates/eql-bindings/bindings/v3/RealOrdOre.ts
  • crates/eql-bindings/bindings/v3/RealOrdOreQuery.ts
  • crates/eql-bindings/bindings/v3/RealOrdQuery.ts
  • crates/eql-bindings/bindings/v3/SchemaVersion.ts
  • crates/eql-bindings/bindings/v3/Selector.ts
  • crates/eql-bindings/bindings/v3/Smallint.ts
  • crates/eql-bindings/bindings/v3/SmallintEq.ts
  • crates/eql-bindings/bindings/v3/SmallintEqQuery.ts
  • crates/eql-bindings/bindings/v3/SmallintOrd.ts
  • crates/eql-bindings/bindings/v3/SmallintOrdOpe.ts
  • crates/eql-bindings/bindings/v3/SmallintOrdOpeQuery.ts
  • crates/eql-bindings/bindings/v3/SmallintOrdOre.ts
  • crates/eql-bindings/bindings/v3/SmallintOrdOreQuery.ts
  • crates/eql-bindings/bindings/v3/SmallintOrdQuery.ts
  • crates/eql-bindings/bindings/v3/SteVecDocument.ts
  • crates/eql-bindings/bindings/v3/SteVecEntry.ts
  • crates/eql-bindings/bindings/v3/SteVecForm.ts
  • crates/eql-bindings/bindings/v3/SteVecQuery.ts
  • crates/eql-bindings/bindings/v3/SteVecQueryEntry.ts
  • crates/eql-bindings/bindings/v3/SteVecTerm.ts
  • crates/eql-bindings/bindings/v3/Text.ts
  • crates/eql-bindings/bindings/v3/TextEq.ts
  • crates/eql-bindings/bindings/v3/TextEqQuery.ts
  • crates/eql-bindings/bindings/v3/TextMatch.ts
  • crates/eql-bindings/bindings/v3/TextMatchQuery.ts
  • crates/eql-bindings/bindings/v3/TextOrd.ts
  • crates/eql-bindings/bindings/v3/TextOrdOpe.ts
  • crates/eql-bindings/bindings/v3/TextOrdOpeQuery.ts
  • crates/eql-bindings/bindings/v3/TextOrdOre.ts
  • crates/eql-bindings/bindings/v3/TextOrdOreQuery.ts
  • crates/eql-bindings/bindings/v3/TextOrdQuery.ts
  • crates/eql-bindings/bindings/v3/TextSearch.ts
  • crates/eql-bindings/bindings/v3/TextSearchQuery.ts
  • crates/eql-bindings/bindings/v3/Timestamp.ts
  • crates/eql-bindings/bindings/v3/TimestampEq.ts
  • crates/eql-bindings/bindings/v3/TimestampEqQuery.ts
  • crates/eql-bindings/bindings/v3/TimestampOrd.ts
  • crates/eql-bindings/bindings/v3/TimestampOrdOpe.ts
  • crates/eql-bindings/bindings/v3/TimestampOrdOpeQuery.ts
  • crates/eql-bindings/bindings/v3/TimestampOrdOre.ts
  • crates/eql-bindings/bindings/v3/TimestampOrdOreQuery.ts
  • crates/eql-bindings/bindings/v3/TimestampOrdQuery.ts
  • crates/eql-bindings/schema/v3/bigint.json
  • crates/eql-bindings/schema/v3/bigint_eq.json
  • crates/eql-bindings/schema/v3/bigint_ord.json
  • crates/eql-bindings/schema/v3/bigint_ord_ope.json
  • crates/eql-bindings/schema/v3/bigint_ord_ore.json
  • crates/eql-bindings/schema/v3/boolean.json
  • crates/eql-bindings/schema/v3/date.json
  • crates/eql-bindings/schema/v3/date_eq.json
  • crates/eql-bindings/schema/v3/date_ord.json
  • crates/eql-bindings/schema/v3/date_ord_ope.json
  • crates/eql-bindings/schema/v3/date_ord_ore.json
  • crates/eql-bindings/schema/v3/double.json
  • crates/eql-bindings/schema/v3/double_eq.json
  • crates/eql-bindings/schema/v3/double_ord.json
  • crates/eql-bindings/schema/v3/double_ord_ope.json
  • crates/eql-bindings/schema/v3/double_ord_ore.json
  • crates/eql-bindings/schema/v3/integer.json
  • crates/eql-bindings/schema/v3/integer_eq.json
  • crates/eql-bindings/schema/v3/integer_ord.json
  • crates/eql-bindings/schema/v3/integer_ord_ope.json
  • crates/eql-bindings/schema/v3/integer_ord_ore.json
  • crates/eql-bindings/schema/v3/json.json
  • crates/eql-bindings/schema/v3/jsonb_entry.json
  • crates/eql-bindings/schema/v3/numeric.json
  • crates/eql-bindings/schema/v3/numeric_eq.json
  • crates/eql-bindings/schema/v3/numeric_ord.json
  • crates/eql-bindings/schema/v3/numeric_ord_ope.json
  • crates/eql-bindings/schema/v3/numeric_ord_ore.json
  • crates/eql-bindings/schema/v3/query_bigint_eq.json
  • crates/eql-bindings/schema/v3/query_bigint_ord.json
  • crates/eql-bindings/schema/v3/query_bigint_ord_ope.json
  • crates/eql-bindings/schema/v3/query_bigint_ord_ore.json
  • crates/eql-bindings/schema/v3/query_date_eq.json
  • crates/eql-bindings/schema/v3/query_date_ord.json
  • crates/eql-bindings/schema/v3/query_date_ord_ope.json
  • crates/eql-bindings/schema/v3/query_date_ord_ore.json
  • crates/eql-bindings/schema/v3/query_double_eq.json
  • crates/eql-bindings/schema/v3/query_double_ord.json
  • crates/eql-bindings/schema/v3/query_double_ord_ope.json
  • crates/eql-bindings/schema/v3/query_double_ord_ore.json
  • crates/eql-bindings/schema/v3/query_integer_eq.json
  • crates/eql-bindings/schema/v3/query_integer_ord.json
  • crates/eql-bindings/schema/v3/query_integer_ord_ope.json
  • crates/eql-bindings/schema/v3/query_integer_ord_ore.json
  • crates/eql-bindings/schema/v3/query_jsonb.json
  • crates/eql-bindings/schema/v3/query_numeric_eq.json
  • crates/eql-bindings/schema/v3/query_numeric_ord.json
  • crates/eql-bindings/schema/v3/query_numeric_ord_ope.json
  • crates/eql-bindings/schema/v3/query_numeric_ord_ore.json
  • crates/eql-bindings/schema/v3/query_real_eq.json
  • crates/eql-bindings/schema/v3/query_real_ord.json
  • crates/eql-bindings/schema/v3/query_real_ord_ope.json
  • crates/eql-bindings/schema/v3/query_real_ord_ore.json
  • crates/eql-bindings/schema/v3/query_smallint_eq.json
  • crates/eql-bindings/schema/v3/query_smallint_ord.json
  • crates/eql-bindings/schema/v3/query_smallint_ord_ope.json
  • crates/eql-bindings/schema/v3/query_smallint_ord_ore.json
  • crates/eql-bindings/schema/v3/query_text_eq.json
  • crates/eql-bindings/schema/v3/query_text_match.json
  • crates/eql-bindings/schema/v3/query_text_ord.json
  • crates/eql-bindings/schema/v3/query_text_ord_ope.json
  • crates/eql-bindings/schema/v3/query_text_ord_ore.json
  • crates/eql-bindings/schema/v3/query_text_search.json
  • crates/eql-bindings/schema/v3/query_timestamp_eq.json
  • crates/eql-bindings/schema/v3/query_timestamp_ord.json
  • crates/eql-bindings/schema/v3/query_timestamp_ord_ope.json
  • crates/eql-bindings/schema/v3/query_timestamp_ord_ore.json
  • crates/eql-bindings/schema/v3/real.json
  • crates/eql-bindings/schema/v3/real_eq.json
  • crates/eql-bindings/schema/v3/real_ord.json
  • crates/eql-bindings/schema/v3/real_ord_ope.json
  • crates/eql-bindings/schema/v3/real_ord_ore.json
  • crates/eql-bindings/schema/v3/smallint.json
  • crates/eql-bindings/schema/v3/smallint_eq.json
  • crates/eql-bindings/schema/v3/smallint_ord.json
  • crates/eql-bindings/schema/v3/smallint_ord_ope.json
  • crates/eql-bindings/schema/v3/smallint_ord_ore.json
  • crates/eql-bindings/schema/v3/text.json
  • crates/eql-bindings/schema/v3/text_eq.json
  • crates/eql-bindings/schema/v3/text_match.json
  • crates/eql-bindings/schema/v3/text_ord.json
  • crates/eql-bindings/schema/v3/text_ord_ope.json
  • crates/eql-bindings/schema/v3/text_ord_ore.json
  • crates/eql-bindings/schema/v3/text_search.json
  • crates/eql-bindings/schema/v3/timestamp.json
  • crates/eql-bindings/schema/v3/timestamp_eq.json
  • crates/eql-bindings/schema/v3/timestamp_ord.json
  • crates/eql-bindings/schema/v3/timestamp_ord_ope.json
  • crates/eql-bindings/schema/v3/timestamp_ord_ore.json
  • crates/eql-bindings/sql/cipherstash-encrypt-uninstall.sql
  • crates/eql-bindings/sql/cipherstash-encrypt.sql
  • crates/eql-bindings/sql/release-manifest.json
  • crates/eql-bindings/src/from_v2/error.rs
  • crates/eql-bindings/src/from_v2/mod.rs
  • crates/eql-bindings/src/from_v2/target.rs
  • crates/eql-bindings/src/lib.rs
  • crates/eql-bindings/src/sql.rs
  • crates/eql-bindings/src/v3/bigint.rs
  • crates/eql-bindings/src/v3/boolean.rs
  • crates/eql-bindings/src/v3/date.rs
  • crates/eql-bindings/src/v3/domain_type.rs
  • crates/eql-bindings/src/v3/double.rs
  • crates/eql-bindings/src/v3/integer.rs
  • crates/eql-bindings/src/v3/inventory.rs
  • crates/eql-bindings/src/v3/jsonb.rs
  • crates/eql-bindings/src/v3/mod.rs
  • crates/eql-bindings/src/v3/numeric.rs
  • crates/eql-bindings/src/v3/payload.rs
  • crates/eql-bindings/src/v3/query_payload.rs
  • crates/eql-bindings/src/v3/real.rs
  • crates/eql-bindings/src/v3/smallint.rs
  • crates/eql-bindings/src/v3/terms.rs
  • crates/eql-bindings/src/v3/text.rs
  • crates/eql-bindings/src/v3/timestamp.rs
  • crates/eql-bindings/tests/catalog_parity.rs
  • crates/eql-bindings/tests/domain_payload.rs
  • crates/eql-bindings/tests/export.rs
  • crates/eql-bindings/tests/from_v2.rs
  • crates/eql-bindings/tests/mod_pins_catalog.rs
  • crates/eql-bindings/tests/query_payload.rs
  • crates/eql-bindings/tests/ts_property_order.rs
  • crates/eql-bindings/tests/v3_conformance.rs
  • crates/eql-codegen/Cargo.toml
  • crates/eql-codegen/src/bindings.rs
  • crates/eql-codegen/src/consts.rs
  • crates/eql-codegen/src/context.rs
  • crates/eql-codegen/src/dump.rs
  • crates/eql-codegen/src/generate.rs
  • crates/eql-codegen/src/lib.rs
  • crates/eql-codegen/src/main.rs
  • crates/eql-codegen/src/operator_surface.rs
  • crates/eql-codegen/src/writer.rs
  • crates/eql-codegen/templates/aggregates.sql.j2
  • crates/eql-codegen/templates/functions.sql.j2
  • crates/eql-codegen/templates/functions/extractor.sql.j2
  • crates/eql-codegen/templates/functions/unsupported.sql.j2
  • crates/eql-codegen/templates/functions/wrapper.sql.j2
  • crates/eql-codegen/templates/operators.sql.j2
  • crates/eql-codegen/templates/query_types.sql.j2
  • crates/eql-codegen/templates/types.sql.j2
  • crates/eql-codegen/tests/bindings_parity.rs
  • crates/eql-codegen/tests/cli.rs
  • crates/eql-codegen/tests/parity.rs
  • crates/eql-domains/Cargo.toml
  • crates/eql-domains/src/fixtures/fixture.rs
  • crates/eql-domains/src/fixtures/kind.rs
  • crates/eql-domains/src/fixtures/mod.rs
  • crates/eql-domains/src/fixtures/record.rs
  • crates/eql-domains/src/fixtures/values.rs
  • crates/eql-domains/src/lib.rs
  • crates/eql-domains/src/proptest_invariants.rs
  • crates/eql-domains/src/spec.rs
  • crates/eql-domains/src/term.rs
  • crates/eql-domains/src/tests.rs
  • crates/eql-tests-macros/Cargo.toml
  • crates/eql-tests-macros/src/lib.rs
  • dbdev/README.md
  • dbdev/README.md
  • docker/README.md
  • docs/README.md
  • docs/concepts/WHY.md
  • docs/development/2026-07-04-release-tasks-design.md
  • docs/development/2026-07-04-release-tasks-implementation-plan.md
  • docs/development/documentation-blockers.md
  • docs/development/documentation-inventory.md
  • docs/development/documentation-questions.md
  • docs/development/reference-sync-notes.md
  • docs/development/reference-sync-rules.md
  • docs/development/releasing.md
  • docs/development/sql-documentation-standards.md
  • docs/development/sql-documentation-templates.md
  • docs/development/sql-documentation.md
  • docs/plans/add-doxygen-sql-comments-plan.md
  • docs/reference/PAYLOAD.md
  • docs/reference/adding-a-scalar-encrypted-domain-type.md
  • docs/reference/catalog-driven-architecture.md
  • docs/reference/database-indexes.md
  • docs/reference/eql-functions.md
  • docs/reference/index-config.md
  • docs/reference/json-support.md
  • docs/reference/permissions.md
  • docs/reference/query-performance.md
  • docs/reference/schema/eql-payload-v2.3.schema.json
  • docs/reference/sql-support.md
  • docs/tutorials/proxy-configuration.md
  • docs/upgrading/v2.3.md
  • docs/upgrading/v3.0.md
  • mise.toml
  • package.json
  • packages/eql/CHANGELOG.md
  • packages/eql/README.md
  • packages/eql/package.json
  • packages/eql/scripts/copy-assets.mjs
  • packages/eql/scripts/npm-publish.mjs
  • packages/eql/scripts/sync-generated.mjs
  • packages/eql/scripts/verify-release-assets.mjs
  • packages/eql/sql/cipherstash-encrypt-uninstall.sql
  • packages/eql/sql/cipherstash-encrypt.sql
  • packages/eql/sql/release-manifest.json
  • packages/eql/src/index.test.ts
  • packages/eql/src/index.ts
  • packages/eql/src/schema.ts
  • packages/eql/src/sql.test.ts
  • packages/eql/src/sql.ts
  • packages/eql/tsconfig.json
  • packages/eql/tsup.config.ts
  • pnpm-workspace.yaml
  • release-plz.toml
  • scripts/lint-no-workflow-caching.mjs
  • scripts/lint-no-workflow-caching.test.mjs
  • scripts/sync-lockstep-versions.mjs
  • scripts/sync-lockstep-versions.test.mjs
  • scripts/vitest.config.mjs
  • src/bloom_filter/functions.sql
  • src/bloom_filter/types.sql
  • src/common.sql
  • src/config/constraints.sql
  • src/config/functions.sql
  • src/config/functions_private.sql
  • src/config/indexes.sql
  • src/config/tables.sql
  • src/config/types.sql
  • src/encrypted/aggregates.sql
  • src/encrypted/casts.sql
  • src/encrypted/compare.sql
  • src/encrypted/constraints.sql
  • src/encrypted/functions.sql
  • src/encrypted/hash.sql
  • src/encrypted/types.sql
  • src/encryptindex/functions.sql
  • src/hmac_256/compare.sql
  • src/hmac_256/functions.sql
  • src/hmac_256/types.sql
  • src/jsonb/functions.sql
  • src/lint/lints.sql
  • src/operators/->.sql
  • src/operators/->>.sql
  • src/operators/<.sql
  • src/operators/<=.sql
  • src/operators/<>.sql
  • src/operators/<@.sql
  • src/operators/=.sql
  • src/operators/>.sql
  • src/operators/>=.sql
  • src/operators/@>.sql
  • src/operators/compare.sql
  • src/operators/hash_operator_class.sql
  • src/operators/operator_class.sql
  • src/operators/order_by.sql
  • src/operators/sort.sql
  • src/operators/ste_vec_entry.sql
  • src/operators/~~.sql
  • src/ore_block_u64_8_256/casts.sql
  • src/ore_block_u64_8_256/compare.sql
  • src/ore_block_u64_8_256/functions.sql
  • src/ore_block_u64_8_256/operator_class.sql
  • src/ore_block_u64_8_256/operators.sql
  • src/ore_block_u64_8_256/types.sql
  • src/ore_cllw/functions.sql
  • src/ore_cllw/operator_class.sql
  • src/ore_cllw/operators.sql
  • src/ore_cllw/types.sql
  • src/schema.sql
  • src/ste_vec/eq_term.sql
  • src/ste_vec/functions.sql
  • src/ste_vec/types.sql
  • src/v3/common.sql
  • src/v3/crypto.sql
  • src/v3/jsonb/aggregates.sql
  • src/v3/jsonb/blockers.sql
  • src/v3/jsonb/functions.sql
  • src/v3/jsonb/operators.sql
  • src/v3/jsonb/types.sql
  • src/v3/lint/lints.sql
  • src/v3/scalars/bigint/bigint_eq_functions.sql
  • src/v3/scalars/bigint/bigint_eq_operators.sql
  • src/v3/scalars/bigint/bigint_functions.sql
  • src/v3/scalars/bigint/bigint_operators.sql
  • src/v3/scalars/bigint/bigint_ord_aggregates.sql
  • src/v3/scalars/bigint/bigint_ord_functions.sql
  • src/v3/scalars/bigint/bigint_ord_ope_aggregates.sql
  • src/v3/scalars/bigint/bigint_ord_ope_functions.sql
  • src/v3/scalars/bigint/bigint_ord_ope_operators.sql
  • src/v3/scalars/bigint/bigint_ord_operators.sql
  • src/v3/scalars/bigint/bigint_ord_ore_aggregates.sql
  • src/v3/scalars/bigint/bigint_ord_ore_functions.sql
  • src/v3/scalars/bigint/bigint_ord_ore_operators.sql
  • src/v3/scalars/bigint/bigint_types.sql
  • src/v3/scalars/bigint/query_bigint_eq_functions.sql
  • src/v3/scalars/bigint/query_bigint_eq_operators.sql
  • src/v3/scalars/bigint/query_bigint_ord_functions.sql
  • src/v3/scalars/bigint/query_bigint_ord_ope_functions.sql
  • src/v3/scalars/bigint/query_bigint_ord_ope_operators.sql
  • src/v3/scalars/bigint/query_bigint_ord_operators.sql
  • src/v3/scalars/bigint/query_bigint_ord_ore_functions.sql
  • src/v3/scalars/bigint/query_bigint_ord_ore_operators.sql
  • src/v3/scalars/bigint/query_bigint_types.sql
  • src/v3/scalars/boolean/boolean_functions.sql
  • src/v3/scalars/boolean/boolean_operators.sql
  • src/v3/scalars/boolean/boolean_types.sql
  • src/v3/scalars/date/date_eq_functions.sql
  • src/v3/scalars/date/date_eq_operators.sql
  • src/v3/scalars/date/date_functions.sql
  • src/v3/scalars/date/date_operators.sql
  • src/v3/scalars/date/date_ord_aggregates.sql
  • src/v3/scalars/date/date_ord_functions.sql
  • src/v3/scalars/date/date_ord_ope_aggregates.sql
  • src/v3/scalars/date/date_ord_ope_functions.sql
  • src/v3/scalars/date/date_ord_ope_operators.sql
  • src/v3/scalars/date/date_ord_operators.sql
  • src/v3/scalars/date/date_ord_ore_aggregates.sql
  • src/v3/scalars/date/date_ord_ore_functions.sql
  • src/v3/scalars/date/date_ord_ore_operators.sql
  • src/v3/scalars/date/date_types.sql
  • src/v3/scalars/date/query_date_eq_functions.sql
  • src/v3/scalars/date/query_date_eq_operators.sql
  • src/v3/scalars/date/query_date_ord_functions.sql
  • src/v3/scalars/date/query_date_ord_ope_functions.sql
  • src/v3/scalars/date/query_date_ord_ope_operators.sql
  • src/v3/scalars/date/query_date_ord_operators.sql
  • src/v3/scalars/date/query_date_ord_ore_functions.sql
  • src/v3/scalars/date/query_date_ord_ore_operators.sql
  • src/v3/scalars/date/query_date_types.sql
  • src/v3/scalars/double/double_eq_functions.sql
  • src/v3/scalars/double/double_eq_operators.sql
  • src/v3/scalars/double/double_functions.sql
  • src/v3/scalars/double/double_operators.sql
  • src/v3/scalars/double/double_ord_aggregates.sql
  • src/v3/scalars/double/double_ord_functions.sql
  • src/v3/scalars/double/double_ord_ope_aggregates.sql
  • src/v3/scalars/double/double_ord_ope_functions.sql
  • src/v3/scalars/double/double_ord_ope_operators.sql
  • src/v3/scalars/double/double_ord_operators.sql
  • src/v3/scalars/double/double_ord_ore_aggregates.sql
  • src/v3/scalars/double/double_ord_ore_functions.sql
  • src/v3/scalars/double/double_ord_ore_operators.sql
  • src/v3/scalars/double/double_types.sql
  • src/v3/scalars/double/query_double_eq_functions.sql
  • src/v3/scalars/double/query_double_eq_operators.sql
  • src/v3/scalars/double/query_double_ord_functions.sql
  • src/v3/scalars/double/query_double_ord_ope_functions.sql
  • src/v3/scalars/double/query_double_ord_ope_operators.sql
  • src/v3/scalars/double/query_double_ord_operators.sql
  • src/v3/scalars/double/query_double_ord_ore_functions.sql
  • src/v3/scalars/double/query_double_ord_ore_operators.sql
  • src/v3/scalars/double/query_double_types.sql
  • src/v3/scalars/functions.sql
  • src/v3/scalars/integer/integer_eq_functions.sql
  • src/v3/scalars/integer/integer_eq_operators.sql
  • src/v3/scalars/integer/integer_functions.sql
  • src/v3/scalars/integer/integer_operators.sql
  • src/v3/scalars/integer/integer_ord_aggregates.sql
  • src/v3/scalars/integer/integer_ord_functions.sql
  • src/v3/scalars/integer/integer_ord_ope_aggregates.sql
  • src/v3/scalars/integer/integer_ord_ope_functions.sql
  • src/v3/scalars/integer/integer_ord_ope_operators.sql
  • src/v3/scalars/integer/integer_ord_operators.sql
  • src/v3/scalars/integer/integer_ord_ore_aggregates.sql
  • src/v3/scalars/integer/integer_ord_ore_functions.sql
  • src/v3/scalars/integer/integer_ord_ore_operators.sql
  • src/v3/scalars/integer/integer_types.sql
  • src/v3/scalars/integer/query_integer_eq_functions.sql
  • src/v3/scalars/integer/query_integer_eq_operators.sql
  • src/v3/scalars/integer/query_integer_ord_functions.sql
  • src/v3/scalars/integer/query_integer_ord_ope_functions.sql
  • src/v3/scalars/integer/query_integer_ord_ope_operators.sql
  • src/v3/scalars/integer/query_integer_ord_operators.sql
  • src/v3/scalars/integer/query_integer_ord_ore_functions.sql
  • src/v3/scalars/integer/query_integer_ord_ore_operators.sql
  • src/v3/scalars/integer/query_integer_types.sql
  • src/v3/scalars/numeric/numeric_eq_functions.sql
  • src/v3/scalars/numeric/numeric_eq_operators.sql
  • src/v3/scalars/numeric/numeric_functions.sql
  • src/v3/scalars/numeric/numeric_operators.sql
  • src/v3/scalars/numeric/numeric_ord_aggregates.sql
  • src/v3/scalars/numeric/numeric_ord_functions.sql
  • src/v3/scalars/numeric/numeric_ord_ope_aggregates.sql
  • src/v3/scalars/numeric/numeric_ord_ope_functions.sql
  • src/v3/scalars/numeric/numeric_ord_ope_operators.sql
  • src/v3/scalars/numeric/numeric_ord_operators.sql
  • src/v3/scalars/numeric/numeric_ord_ore_aggregates.sql
  • src/v3/scalars/numeric/numeric_ord_ore_functions.sql
  • src/v3/scalars/numeric/numeric_ord_ore_operators.sql
  • src/v3/scalars/numeric/numeric_types.sql
  • src/v3/scalars/numeric/query_numeric_eq_functions.sql
  • src/v3/scalars/numeric/query_numeric_eq_operators.sql
  • src/v3/scalars/numeric/query_numeric_ord_functions.sql
  • src/v3/scalars/numeric/query_numeric_ord_ope_functions.sql
  • src/v3/scalars/numeric/query_numeric_ord_ope_operators.sql
  • src/v3/scalars/numeric/query_numeric_ord_operators.sql
  • src/v3/scalars/numeric/query_numeric_ord_ore_functions.sql
  • src/v3/scalars/numeric/query_numeric_ord_ore_operators.sql
  • src/v3/scalars/numeric/query_numeric_types.sql
  • src/v3/scalars/real/query_real_eq_functions.sql
  • src/v3/scalars/real/query_real_eq_operators.sql
  • src/v3/scalars/real/query_real_ord_functions.sql
  • src/v3/scalars/real/query_real_ord_ope_functions.sql
  • src/v3/scalars/real/query_real_ord_ope_operators.sql
  • src/v3/scalars/real/query_real_ord_operators.sql
  • src/v3/scalars/real/query_real_ord_ore_functions.sql
  • src/v3/scalars/real/query_real_ord_ore_operators.sql
  • src/v3/scalars/real/query_real_types.sql
  • src/v3/scalars/real/real_eq_functions.sql
  • src/v3/scalars/real/real_eq_operators.sql
  • src/v3/scalars/real/real_functions.sql
  • src/v3/scalars/real/real_operators.sql
  • src/v3/scalars/real/real_ord_aggregates.sql
  • src/v3/scalars/real/real_ord_functions.sql
  • src/v3/scalars/real/real_ord_ope_aggregates.sql
  • src/v3/scalars/real/real_ord_ope_functions.sql
  • src/v3/scalars/real/real_ord_ope_operators.sql
  • src/v3/scalars/real/real_ord_operators.sql
  • src/v3/scalars/real/real_ord_ore_aggregates.sql
  • src/v3/scalars/real/real_ord_ore_functions.sql
  • src/v3/scalars/real/real_ord_ore_operators.sql
  • src/v3/scalars/real/real_types.sql
  • src/v3/scalars/smallint/query_smallint_eq_functions.sql
  • src/v3/scalars/smallint/query_smallint_eq_operators.sql
  • src/v3/scalars/smallint/query_smallint_ord_functions.sql
  • src/v3/scalars/smallint/query_smallint_ord_ope_functions.sql
  • src/v3/scalars/smallint/query_smallint_ord_ope_operators.sql
  • src/v3/scalars/smallint/query_smallint_ord_operators.sql
  • src/v3/scalars/smallint/query_smallint_ord_ore_functions.sql
  • src/v3/scalars/smallint/query_smallint_ord_ore_operators.sql
  • src/v3/scalars/smallint/query_smallint_types.sql
  • src/v3/scalars/smallint/smallint_eq_functions.sql
  • src/v3/scalars/smallint/smallint_eq_operators.sql
  • src/v3/scalars/smallint/smallint_functions.sql
  • src/v3/scalars/smallint/smallint_operators.sql
  • src/v3/scalars/smallint/smallint_ord_aggregates.sql
  • src/v3/scalars/smallint/smallint_ord_functions.sql
  • src/v3/scalars/smallint/smallint_ord_ope_aggregates.sql
  • src/v3/scalars/smallint/smallint_ord_ope_functions.sql
  • src/v3/scalars/smallint/smallint_ord_ope_operators.sql
  • src/v3/scalars/smallint/smallint_ord_operators.sql
  • src/v3/scalars/smallint/smallint_ord_ore_aggregates.sql
  • src/v3/scalars/smallint/smallint_ord_ore_functions.sql
  • src/v3/scalars/smallint/smallint_ord_ore_operators.sql
  • src/v3/scalars/smallint/smallint_types.sql
  • src/v3/scalars/text/query_text_eq_functions.sql
  • src/v3/scalars/text/query_text_eq_operators.sql
  • src/v3/scalars/text/query_text_match_functions.sql
  • src/v3/scalars/text/query_text_match_operators.sql
  • src/v3/scalars/text/query_text_ord_functions.sql
  • src/v3/scalars/text/query_text_ord_ope_functions.sql
  • src/v3/scalars/text/query_text_ord_ope_operators.sql
  • src/v3/scalars/text/query_text_ord_operators.sql
  • src/v3/scalars/text/query_text_ord_ore_functions.sql
  • src/v3/scalars/text/query_text_ord_ore_operators.sql
  • src/v3/scalars/text/query_text_search_functions.sql
  • src/v3/scalars/text/query_text_search_operators.sql
  • src/v3/scalars/text/query_text_types.sql
  • src/v3/scalars/text/text_eq_functions.sql
  • src/v3/scalars/text/text_eq_operators.sql
  • src/v3/scalars/text/text_functions.sql
  • src/v3/scalars/text/text_match_functions.sql
  • src/v3/scalars/text/text_match_operators.sql
  • src/v3/scalars/text/text_operators.sql
  • src/v3/scalars/text/text_ord_aggregates.sql
  • src/v3/scalars/text/text_ord_functions.sql
  • src/v3/scalars/text/text_ord_ope_aggregates.sql
  • src/v3/scalars/text/text_ord_ope_functions.sql
  • src/v3/scalars/text/text_ord_ope_operators.sql
  • src/v3/scalars/text/text_ord_operators.sql
  • src/v3/scalars/text/text_ord_ore_aggregates.sql
  • src/v3/scalars/text/text_ord_ore_functions.sql
  • src/v3/scalars/text/text_ord_ore_operators.sql
  • src/v3/scalars/text/text_search_aggregates.sql
  • src/v3/scalars/text/text_search_functions.sql
  • src/v3/scalars/text/text_search_operators.sql
  • src/v3/scalars/text/text_types.sql
  • src/v3/scalars/timestamp/query_timestamp_eq_functions.sql
  • src/v3/scalars/timestamp/query_timestamp_eq_operators.sql
  • src/v3/scalars/timestamp/query_timestamp_ord_functions.sql
  • src/v3/scalars/timestamp/query_timestamp_ord_ope_functions.sql
  • src/v3/scalars/timestamp/query_timestamp_ord_ope_operators.sql
  • src/v3/scalars/timestamp/query_timestamp_ord_operators.sql
  • src/v3/scalars/timestamp/query_timestamp_ord_ore_functions.sql
  • src/v3/scalars/timestamp/query_timestamp_ord_ore_operators.sql
  • src/v3/scalars/timestamp/query_timestamp_types.sql
  • src/v3/scalars/timestamp/timestamp_eq_functions.sql
  • src/v3/scalars/timestamp/timestamp_eq_operators.sql
  • src/v3/scalars/timestamp/timestamp_functions.sql
  • src/v3/scalars/timestamp/timestamp_operators.sql
  • src/v3/scalars/timestamp/timestamp_ord_aggregates.sql
  • src/v3/scalars/timestamp/timestamp_ord_functions.sql
  • src/v3/scalars/timestamp/timestamp_ord_ope_aggregates.sql
  • src/v3/scalars/timestamp/timestamp_ord_ope_functions.sql
  • src/v3/scalars/timestamp/timestamp_ord_ope_operators.sql
  • src/v3/scalars/timestamp/timestamp_ord_operators.sql
  • src/v3/scalars/timestamp/timestamp_ord_ore_aggregates.sql
  • src/v3/scalars/timestamp/timestamp_ord_ore_functions.sql
  • src/v3/scalars/timestamp/timestamp_ord_ore_operators.sql
  • src/v3/scalars/timestamp/timestamp_types.sql
  • src/v3/schema.sql
  • src/v3/sem/bloom_filter/functions.sql
  • src/v3/sem/bloom_filter/types.sql
  • src/v3/sem/hmac_256/functions.sql
  • src/v3/sem/hmac_256/types.sql
  • src/v3/sem/ope_cllw/functions.sql
  • src/v3/sem/ope_cllw/types.sql
  • src/v3/sem/ore_block_256/functions.sql
  • src/v3/sem/ore_block_256/operator_class.sql
  • src/v3/sem/ore_block_256/operators.sql
  • src/v3/sem/ore_block_256/types.sql
  • src/v3/sem/ore_cllw/functions.sql
  • src/v3/sem/ore_cllw/operator_class.sql
  • src/v3/sem/ore_cllw/operators.sql
  • src/v3/sem/ore_cllw/types.sql
  • src/v3/version.template
  • src/version.template
  • tasks/build.sh
  • tasks/codegen-parity.sh
  • tasks/docs/doxygen-filter.sh
  • tasks/docs/generate.sh
  • tasks/docs/generate/json.sh
  • tasks/docs/generate/test_xml_to_json.py
  • tasks/docs/generate/test_xml_to_markdown.py
  • tasks/docs/generate/xml-to-json.py
  • tasks/docs/generate/xml-to-markdown.py
  • tasks/docs/package.sh
  • tasks/docs/validate.sh
  • tasks/docs/validate/coverage.sh
  • tasks/docs/validate/documented-sql.sh
  • tasks/docs/validate/required-tags.sh
  • tasks/docs/validate/source.sh
  • tasks/fixtures.toml
  • tasks/githooks/pre-commit
  • tasks/pin_search_path.sql
  • tasks/pin_search_path_v3.sql
  • tasks/release/prepare-bindings-assets.sh
  • tasks/release/prepare-bindings-assets.test.sh
  • tasks/reset.sql
  • tasks/schemas-parity.sh
  • tasks/test.sh
  • tasks/test/bench.sh
  • tasks/test/clean_install_v3.sh
  • tasks/test/docs_v3_grep.sh
  • tasks/test/self_contained_v3.sh
  • tasks/test/splinter.sh
  • tasks/test/sqlx-archive.sh
  • tasks/test/sqlx-partition.sh
  • tasks/test/stub-fixtures.sh
  • tasks/uninstall-protect.sql
  • tasks/uninstall-v3.sql
  • tasks/uninstall.sql
  • tests/ORE_FIXTURES.md
  • tests/docker-compose.yml
  • tests/ore.sql
  • tests/ore_text.sql
  • tests/sqlx/Cargo.toml
  • tests/sqlx/README.md
  • tests/sqlx/fixtures/FIXTURE_SCHEMA.md
  • tests/sqlx/fixtures/aggregate_minmax_data.sql
  • tests/sqlx/fixtures/array_data.sql
  • tests/sqlx/fixtures/bench_data.sql
  • tests/sqlx/fixtures/bench_setup.sql
  • tests/sqlx/fixtures/config_tables.sql
  • tests/sqlx/fixtures/constraint_tables.sql
  • tests/sqlx/fixtures/drop_operator_classes.sql
  • tests/sqlx/fixtures/encrypted_json.sql
  • tests/sqlx/fixtures/encryptindex_tables.sql
  • tests/sqlx/fixtures/like_data.sql
  • tests/sqlx/fixtures/order_by_null_data.sql
  • tests/sqlx/migrations/002_install_ore_data.sql
  • tests/sqlx/migrations/003_install_ste_vec_data.sql
  • tests/sqlx/migrations/004_install_test_helpers.sql
  • tests/sqlx/migrations/005_install_ste_vec_vast_data.sql
  • tests/sqlx/migrations/006_install_ore_text_data.sql
  • tests/sqlx/migrations/007_install_bench_data.sql
  • tests/sqlx/migrations/README.md
  • tests/sqlx/snapshots/README.md
  • tests/sqlx/snapshots/boolean_expanded.rs
  • tests/sqlx/snapshots/eql_v3_public_surface.txt
  • tests/sqlx/snapshots/integer_expanded.rs
  • tests/sqlx/snapshots/matrix_jsonb_entry_tests.txt
  • tests/sqlx/snapshots/matrix_tests.txt
  • tests/sqlx/snapshots/matrix_tests_eq_only.txt
  • tests/sqlx/snapshots/matrix_tests_storage_only.txt
  • tests/sqlx/snapshots/matrix_tests_text.txt
  • tests/sqlx/snapshots/ope_tests.txt
  • tests/sqlx/snapshots/text_expanded.rs
  • tests/sqlx/snapshots/v3_jsonb_tests.txt
  • tests/sqlx/src/assertions.rs
  • tests/sqlx/src/fixtures/cipherstash.rs
  • tests/sqlx/src/fixtures/driver.rs
  • tests/sqlx/src/fixtures/eql_doubles.rs
  • tests/sqlx/src/fixtures/eql_plaintext.rs
  • tests/sqlx/src/fixtures/index_kind.rs
  • tests/sqlx/src/fixtures/mod.rs
  • tests/sqlx/src/fixtures/scalar_fixture.rs
  • tests/sqlx/src/fixtures/spec.rs
  • tests/sqlx/src/fixtures/v3_convert.rs
  • tests/sqlx/src/fixtures/v3_doc_integer.rs
  • tests/sqlx/src/fixtures/v3_numeric_collision.rs
  • tests/sqlx/src/fixtures/v3_ste_vec.rs
  • tests/sqlx/src/fixtures/v3_text_empty.rs
  • tests/sqlx/src/fixtures/validation.rs
  • tests/sqlx/src/helpers.rs
  • tests/sqlx/src/index_types.rs
  • tests/sqlx/src/jsonb_entry.rs
  • tests/sqlx/src/lib.rs
  • tests/sqlx/src/matrix.rs
  • tests/sqlx/src/property.rs
  • tests/sqlx/src/scalar_domains.rs
  • tests/sqlx/src/scalar_types.rs
  • tests/sqlx/src/selectors.rs
  • tests/sqlx/tests/aggregate_tests.rs
  • tests/sqlx/tests/bench_data_tests.rs
  • tests/sqlx/tests/bench_plan_tests.rs
  • tests/sqlx/tests/bench_regression_tests.rs
  • tests/sqlx/tests/build_validation_tests.rs
  • tests/sqlx/tests/comparison_tests.rs
  • tests/sqlx/tests/config_tests.rs
  • tests/sqlx/tests/constraint_tests.rs
  • tests/sqlx/tests/containment_tests.rs
  • tests/sqlx/tests/containment_with_index_tests.rs
  • tests/sqlx/tests/encrypted_domain.rs
  • tests/sqlx/tests/encrypted_domain/constraints.rs
  • tests/sqlx/tests/encrypted_domain/family/inlinability.rs
  • tests/sqlx/tests/encrypted_domain/family/jsonb_check.rs
  • tests/sqlx/tests/encrypted_domain/family/jsonb_operator_surface.rs
  • tests/sqlx/tests/encrypted_domain/family/mod.rs
  • tests/sqlx/tests/encrypted_domain/family/mutations.rs
  • tests/sqlx/tests/encrypted_domain/family/sem.rs
  • tests/sqlx/tests/encrypted_domain/family/support.rs
  • tests/sqlx/tests/encrypted_domain/float_special.rs
  • tests/sqlx/tests/encrypted_domain/jsonb_entry.rs
  • tests/sqlx/tests/encrypted_domain/ope/bigint_ord_ope.rs
  • tests/sqlx/tests/encrypted_domain/ope/date_ord_ope.rs
  • tests/sqlx/tests/encrypted_domain/ope/double_ord_ope.rs
  • tests/sqlx/tests/encrypted_domain/ope/integer_ord_ope.rs
  • tests/sqlx/tests/encrypted_domain/ope/numeric_ord_ope.rs
  • tests/sqlx/tests/encrypted_domain/ope/real_ord_ope.rs
  • tests/sqlx/tests/encrypted_domain/ope/smallint_ord_ope.rs
  • tests/sqlx/tests/encrypted_domain/ope/support.rs
  • tests/sqlx/tests/encrypted_domain/ope/text_ord_ope.rs
  • tests/sqlx/tests/encrypted_domain/ope/timestamp_ord_ope.rs
  • tests/sqlx/tests/encrypted_domain/property/README.md
  • tests/sqlx/tests/encrypted_domain/property/cross_ciphertext.rs
  • tests/sqlx/tests/encrypted_domain/property/e2e_oracle.rs
  • tests/sqlx/tests/encrypted_domain/property/edge_cases.rs
  • tests/sqlx/tests/encrypted_domain/property/fixture_oracle.rs
  • tests/sqlx/tests/encrypted_domain/property/match_smoke.rs
  • tests/sqlx/tests/encrypted_domain/property/mod.rs
  • tests/sqlx/tests/encrypted_domain/scalars/mod.rs
  • tests/sqlx/tests/encrypted_domain/signed.rs
  • tests/sqlx/tests/encrypted_domain/text/text_match.rs
  • tests/sqlx/tests/encrypted_domain/text/text_smoke.rs
  • tests/sqlx/tests/encryptindex_tests.rs
  • tests/sqlx/tests/eq_term_tests.rs
  • tests/sqlx/tests/eql_v3_integer_fixture_tests.rs
  • tests/sqlx/tests/equality_tests.rs
  • tests/sqlx/tests/generate_all_fixtures.rs
  • tests/sqlx/tests/hash_operator_tests.rs
  • tests/sqlx/tests/index_compare_tests.rs
  • tests/sqlx/tests/inequality_tests.rs
  • tests/sqlx/tests/jsonb_containment_uses_index_tests.rs
  • tests/sqlx/tests/jsonb_path_operators_tests.rs
  • tests/sqlx/tests/jsonb_path_query_inlining_tests.rs
  • tests/sqlx/tests/jsonb_tests.rs
  • tests/sqlx/tests/like_operator_tests.rs
  • tests/sqlx/tests/lint_tests.rs
  • tests/sqlx/tests/operator_class_tests.rs
  • tests/sqlx/tests/operator_compare_tests.rs
  • tests/sqlx/tests/order_by_no_opclass_tests.rs
  • tests/sqlx/tests/order_by_sort_tests.rs
  • tests/sqlx/tests/order_by_tests.rs
  • tests/sqlx/tests/order_by_using_operator_tests.rs
  • tests/sqlx/tests/ore_block_comparator_tests.rs
  • tests/sqlx/tests/ore_cllw_opclass_tests.rs
  • tests/sqlx/tests/ore_cllw_v3_opclass_tests.rs
  • tests/sqlx/tests/ore_comparison_tests.rs
  • tests/sqlx/tests/ore_equality_tests.rs
  • tests/sqlx/tests/ore_text_operator_tests.rs
  • tests/sqlx/tests/ore_text_order_tests.rs
  • tests/sqlx/tests/payload_schema_tests.rs
  • tests/sqlx/tests/specialized_tests.rs
  • tests/sqlx/tests/test_helpers_test.rs
  • tests/sqlx/tests/v3_jsonb_bindings_tests.rs
  • tests/sqlx/tests/v3_jsonb_operator_surface_tests.rs
  • tests/sqlx/tests/v3_jsonb_tests.rs
  • tests/sqlx/tests/v3_operator_equivalents_tests.rs
  • tests/sqlx/tests/v3_privilege_tests.rs
  • tests/sqlx/tests/v3_public_surface_tests.rs
  • tests/sqlx/tests/v3_scalar_query_operand_tests.rs
  • tests/sqlx/tests/v3_text_empty_constraint_tests.rs
  • tests/sqlx/tests/v3_uninstall_tests.rs
  • tests/ste_vec.sql
  • tests/test_helpers.sql

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch eql_v3

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

tobyhede added 29 commits June 29, 2026 17:02
The term->binding-newtype mapping (Hm->Hmac256, Ore->OreBlock256,
Bloom->BloomFilter) is wire-contract data, so it lives on Term beside
json_key/ctor/extractor (unit-tested). payload_terms returns the distinct
field-bearing terms in wire order. PR 4's bindings emitter matches on these
instead of a &str round-trip, keeping it exhaustive at compile time.
render_family_bindings renders each DomainFamily to its struct set + three-
method DomainType impls (schema -> schemars::Schema, 1.x), with pinned
envelope-then-term field order (Term::payload_terms, matching on the enum), the
canonical derive/ts/serde attributes, a precise term-newtype import set, and one
catalog-derived struct doc line (no field docs).
render_inventory_rs generates all() in CATALOG order (entries via super::),
replacing the hand-maintained inventory. mod.rs stays hand-written (module doc
+ pub mod decls + re-exports).
generate_bindings writes one <family>.rs per catalog family + inventory.rs under
crates/eql-bindings/src/v3 (GeneratedKind::Rust ownership). Exposed as
`eql-codegen bindings`; the default no-arg run stays SQL-only so build /
codegen:parity are unaffected.
One Rust payload struct per eql_v3 SQL domain, generated by eql-codegen from
eql-domains::CATALOG, with ts-rs/schemars deriving the committed TypeScript and
JSON Schema. Each struct carries a catalog-derived doc — a summary line plus the
supported operators and required payload keys (capability label,
Term::operators_for_terms, ENVELOPE_KEYS ++ Term::term_json_keys); the keys list
surfaces structural distinctions such as text's dual-term ordered domains
(hm + ob) versus the integer ordered domains (ob). No per-field docs: per-term
semantics live on the shared term newtypes and non-derivable per-family caveats
in mod.rs. mise run types:generate regenerates Rust then TS/JSON; types:check is
the committed-reference drift gate.
…ndings

Byte-parity and determinism gates for the committed Rust bindings, TS property-
order pin, catalog/inventory parity, mod.rs pub-mod pin, and a bindings CLI
smoke test — so a stale or hand-edited generated file, a dropped domain, or a
reordered payload fails CI.
Document in CLAUDE.md and the adding-a-scalar reference that the Rust payload
bindings (and downstream TS/JSON via ts-rs/schemars) are catalog-generated, that
generated structs carry a catalog-derived struct doc (summary + operators +
required keys, no per-field docs), schemars emits JSON Schema 2020-12,
non-derivable caveats live in mod.rs, and types:check is the drift gate.
…ial writes

Replace the clean-then-write model (which could leave artifacts
deleted-but-not-rewritten on a render panic or IO error) with a uniform,
crash-safe render-all → preflight → write-all → delete-orphans discipline
across both the SQL surface and the committed Rust bindings.

- writer.rs: write_generated_file now stages to a sibling temp file and
  atomically renames it into place (no truncated/half-written files; temp
  removed on failure). Add remove_generated_orphans + normalized_set for
  marker-aware deletion that skips just-written files.
- generate.rs: add render_type (render to memory first, so a render panic
  aborts before any fs mutation). generate_type is render→preflight→write→
  delete-orphans. generate_all sweeps every src/v3/scalars/* dir for orphans
  after writing, absorbing build.sh's catalog-removed-type cleanup safely.
  Add clean_all.
- bindings.rs: generate_bindings switched to write-then-delete-orphans so
  committed source is never deleted before writes succeed (output unchanged).
- main.rs: new `clean` subcommand; EQL_CODEGEN_OUT_ROOT output-root override.
- tasks/build.sh: drop the marker-blind `find -delete` pre-sweep; rely on
  codegen's marker-aware orphan removal.
- tasks/codegen-parity.sh: generate into a temp tree (EQL_CODEGEN_OUT_ROOT)
  and diff against it, so a parity run never mutates the live src/v3/scalars.
- Reword ~58 misleading "committed" references to generated/gitignored
  fixtures across tests/ and docs (genuinely-committed reference goldens keep
  the word).
- Add 6 crash-safety tests (atomic write, no destructive-first window,
  marker-aware orphan pruning, orphan type-dir cleanup).
- docs/reference/catalog-driven-architecture.md: document the new model.

Closes #328.
…ning

Resolve 7 verified review findings; 1 finding (artifact counts) was a
false positive and left unchanged.

- main.rs: route bindings subcommand through out_root() so
  EQL_CODEGEN_OUT_ROOT redirection works; restores test isolation
- ts_property_order.rs: honor TS_RS_EXPORT_DIR when resolving the TS
  file, falling back to bindings/v3, so the test validates freshly
  generated output
- generate.rs: use DirEntry::file_type()?.is_dir() (no symlink follow)
  in the orphan-sweep scan in generate_all and clean_all, preventing
  cleanup traversal outside out_root
- writer.rs: add process id to staged temp file names to avoid
  cross-process collisions; use symlink_metadata() in the ownership
  preflight to detect pre-existing dangling symlinks
- cli.rs: assert bindings codegen honors the out-root override
- docs: add language tag to scalars tree fence; correct struct-doc
  description to two lines (summary + operators/required-keys)

Adds regression tests for the symlink-traversal and dangling-symlink
cases (red->green confirmed).
…codegen

feat(codegen): catalog-driven Rust payload bindings (PR 4)
The catalog-driven-architecture reference doc described the
test:self_contained_v3 gate using the literal 'eql_v2.*' token, which the
docs_v3_grep gate (intentionally inverted-scope) flags in any user-facing
reference doc. Reword to 'legacy v2-schema symbols' — same meaning, no
literal eql_v2 token.
fix(eql-codegen): harden artifact regeneration + review follow-up (PR 4, #328)
Remove the completed-effort reference-sync cluster (documentation-blockers,
documentation-questions, reference-sync-notes, reference-sync-rules) — empty
stubs and their rules doc, self-referential with no live consumer.

Merge sql-documentation-standards + sql-documentation-templates into a single
docs/development/sql-documentation.md, cross-linked to CLAUDE.md as the source
of truth, and drop the dead Operator Class / Composite Type templates that
contradict the v3 jsonb-domain footgun rules.

Update the stale reference-sync example in docs_v3_grep.sh's comment.
Verification pass over docs/reference/adding-a-scalar-encrypted-domain-type.md
found several stale or wrong claims; fix them all:

- Drop the stale 'codegen gates the PostgreSQL test matrix' claim (sections 4
  and 6); the gate was removed (test job needs only changes/setup/build-archive).
- Fix filename tasks/pin_search_path.sql -> pin_search_path_v3.sql (5 refs).
- Fix non-compiling example int_values!(.., INT4) -> INT4_FIXTURES.
- Rewrite section 6 stage-4 to match generate_type:
  ensure_generated_paths_writable -> write_generated_file ->
  remove_generated_orphans (no clean_generated_files in that path).
- Correct text domain count (five -> six) and 'operators' vs 'CREATE OPERATOR
  statements' wording; intro reference range 5-7 -> 5-8.
- Misc precision nits: text pivots (only mid_pivot overridden), SignedScalar
  also for timestamptz, binding output paths, int_values! location, splinter
  constructors/comparators label, self-containment gate pointer.
docs: prune obsolete process docs, consolidate SQL doc guidance, fix scalar-domain reference
…ting

Un-ignore src/v3/scalars/<T>/*_{types,functions,operators,aggregates}.sql and
commit them in place, retiring the byte-identical tests/codegen/reference/
goldens. Both generated targets (SQL + Rust bindings) are now handled the same
way: committed in place, drift-gated by regenerate-and-`git diff`.

- .gitignore: drop the four generated-SQL globs (functions.sql / *_extensions.sql
  stay committed as before).
- .gitattributes: mark the committed surface linguist-generated; drop the dead
  golden rule.
- codegen:parity: rewrite as regenerate-in-place + `git diff --exit-code` +
  untracked check (mirrors types:check for the bindings); delete
  tests/codegen/reference/.
- parity tests: repoint at the committed src/v3/scalars/ tree
  (committed_scalar_dirs_match_catalog_tokens,
  every_generated_sql_file_starts_with_marker); drop the redundant
  byte-comparison tests now covered by the git-diff gate.
- install-hooks + tasks/githooks/pre-commit: run codegen:parity + types:check
  locally when a commit touches the catalog/generator/generated surfaces,
  closing the local-staleness gap for both targets.
- docs: CLAUDE.md, DEVELOPMENT.md, docs/reference/* updated to the
  committed-in-place model.

No user-facing change: release/cipherstash-encrypt.sql is byte-identical, so no
CHANGELOG entry.
- pre-commit hook: include staged deletions (-diff-filter=ACMRD) so the
  local drift gate also fires when a generated file is removed
- docs: correct "CI reverts drift" -> "CI fails on drift" in CLAUDE.md and
  DEVELOPMENT.md; the gate fails on diff, it does not revert
The drift gate (and the sibling types:check) regenerates the generated
surface in the working tree before diffing, rather than into a temp tree.
Make that side effect explicit in the script header comment and both task
descriptions so a developer running the gate ad hoc isn't surprised that it
overwrites src/v3/scalars (as mise run build already does on every build).
chore: commit generated SQL surface in place; unify drift gating (eql_v3 / 3.0.0)
tobyhede and others added 27 commits July 8, 2026 14:41
…ety, creds)

- F1: pass inputs.identity via env instead of interpolating into run bodies
  (command-injection fix across the version-check, prepare, and tag steps)
- F2: make npm publish and tag creation idempotent for retry-safety
- F3: checkout with persist-credentials: false; authenticate the tag push
  explicitly via extraheader to the repo URL
- F4: mkdir -p before writing the generated release manifest
- add .github/scripts/release-typescript-workflow.test.sh regression guard
  and wire it into lint-release.yml
Changesets owns @cipherstash/eql's version V (alpha pre-mode); scripts/sync-lockstep-versions.mjs derives the crate + bundled-SQL versions from V via the root 'version' script. prepare-bindings-assets accepts stable X.Y.Z too.
…sh-only

release.yml is the changesets-driven entry point (Version PR via version:, npm publish via publish:, then SQL+docs release at V). release-plz.yml drops its release-pr job — changesets owns versioning; it publishes the committed Cargo.toml V on push to main.
Collapse the release surface onto the unified release.yml (production from
main via changesets; alpha/prerelease from eql_v3 via a chore(release):
commit). Remove the parallel machinery and roll the remaining release
artifacts into the one workflow.

- Remove the legacy alpha coordinator: release-alpha.yml, release-typescript.yml,
  the .github/scripts helpers (derive-identity, release-alpha-resolve,
  release-alpha-pin-bindings, release-alpha-verify-commit-signature,
  release-typescript-workflow guard) and their tests, and the tasks/release/*
  wrappers (all/eql/bindings/rust/typescript/resolve-alpha/pin-bindings).
- Remove release-eql.yml: the old manual final-release path. release.yml now
  builds + attaches the SQL + docs release itself; a GITHUB_TOKEN-created
  release never triggered its on: release fan-out, and changesets manages the
  changelog (its verify-changelog gate is obsolete).
- Restore the Multitudes production-deploy notification into the automated
  path: re-gate the _build-sql.yml step to fire on release.yml's non-prerelease
  SQL release (the old event_name == 'release' gate never matched under push).
- Roll the Postgres+EQL image build into release.yml: a build-image job
  dispatches release-postgres-eql-image.yml on production finals
  (update_floating_tags=true). Drop its dormant on: release trigger and the
  dead release-event branch; workflow_dispatch stays for manual/alpha images.
- Harden .changeset/config.json access to "public" (was "restricted"; inert for
  @cipherstash/eql today via publishConfig, but a footgun for future packages).
- Fix crates/eql-bindings/README.md (v3 envelope is v: 3, not v: 2) and align
  the release docs (CLAUDE.md, releasing-an-alpha.md, workflows/README.md,
  README badge, CHANGELOG) plus the lint-release gate to the single workflow.
- Mark the superseded 2026-07-04 coordinator design snapshots as historical.
Add docs/development/releasing.md — a single reference covering the whole
release architecture (one release.yml, both modes, four artifacts, one lockstep
version): production via changesets on main, prerelease/alpha on eql_v3, the
lockstep versioning mechanism (changesets -> sync-lockstep-versions.mjs ->
Cargo + bundled SQL), tag namespaces, the GITHUB_TOKEN inline-vs-dispatch model,
the changesets pre-mode footgun, and verify/smoke-test steps.

Delete docs/development/releasing-an-alpha.md: it was alpha-only and had gone
stale after the release.yml consolidation (referenced the deleted
verify-changelog job, server-side N derivation, and the coordinator). Repoint
CLAUDE.md, .changeset/README.md, and the superseded design-snapshot banners at
the new doc.
…elease tag

- Notify Multitudes (_build-sql.yml): add continue-on-error. It is the last
  step of build-sql and uses `curl --fail-with-body`; on the production path
  npm + SQL have already published upstream, so a Multitudes outage / empty
  token must not fail build-sql and skip build-docs / build-image.
- build-image (release.yml): dispatch release-postgres-eql-image.yml against
  the eql-<version> tag instead of the branch. build-sql (a `needs`) already
  created that tag at the release commit, so pinning to it builds the image
  from the exact released source even if the branch advanced since publish.
Way 2 is now canonical: contributors add a changeset (`.changeset/*.md`); Changesets
owns both the version bump and CHANGELOG.md generation. Retire the manual
`## [Unreleased]` promotion everywhere the docs still described it.

- CLAUDE.md "Release & changelog discipline": add a changeset (not a CHANGELOG.md
  entry); the entry is the changeset body; the bump type is the changeset
  frontmatter; "Cutting a release" is now the Changesets Version-PR flow.
- CHANGELOG.md preamble: state the file is Changesets-generated, not hand-edited.
- DEVELOPMENT.md "Releasing": replace the manual GitHub-release flow (and the
  stale release-eql.yml reference) with the release.yml + Changesets model.
- releasing.md: changelog section rewritten to the Changesets model; fix the
  prerelease changelog note.
- docs/upgrading/v3.0.md: drop the stale `[Unreleased]` phrasing.
Migrate the hand-written CHANGELOG.md `## [Unreleased]` block (the pending 3.0.0
notes) into 33 Changesets files, so Changesets — now the canonical owner —
generates the release section. De-duplicated in the process:

- dropped 6 exact duplicates and 7 stale pre-rename duplicates (the scalar types
  were renamed int4->integer, int2->smallint, int8->bigint, bool->boolean,
  float4->real, float8->double; both old- and new-name entries were present).
- bump per entry by nature: 4 major (eql_v2 removed, envelope v:3, eql_v3_internal
  move, sole installer), 24 minor, 5 patch -> aggregate resolves to 3.0.0.
- full dense prose + PR links preserved verbatim in each changeset body.

Remove the `[Unreleased]` block and its compare-URL link reference from
CHANGELOG.md; historical `## [2.x.y]` sections are untouched. `changeset status`
confirms a major bump for @cipherstash/eql.
Rebased onto eql_v3, which added the query-operand domain surface
(query_<name> in eql_v3, CIP-3432/3442), COMMENT ON DOMAIN, and the
conditional SEM opclass install. Reconcile the branch-local work:

- Regenerate eql-bindings + @cipherstash/eql bindings from the updated
  catalog (adds the query_<T> schemas/types; jsonb_query -> query_jsonb).
- Convert base's four new CHANGELOG [Unreleased] entries (#377, #373,
  CIP-3442, #375) into changesets and remove the reconstructed
  [Unreleased] block (Changesets owns the changelog).
types:check / typescript:generate / typescript:check invoked
'pnpm --filter @cipherstash/eql sync:generated', but the contexts that run
them — test-eql.yml's Rust workspace crates job and the pre-commit hook —
provision mise tools only, so CI failed with 'pnpm: command not found'
(exit 127).

sync-generated.mjs uses node builtins exclusively; it needs neither pnpm's
workspace resolution nor node_modules. Invoke it with node directly and add
node to mise [tools] so every mise-run context has it. pnpm remains a
package-workflow concern (lint-release.yml and release.yml set it up
explicitly).
…terministic no-op, not a conflict to resolve
…ning, cache lint coverage

Addresses the remaining items from the changes-requested review
(#374 (review)):

- DEV-placeholder publish guards (finding 6): release-plz.yml refuses to
  publish when the committed crates/eql-bindings/sql bundle wasn't prepared
  for the crate's version (enforced only when the version isn't already on
  crates.io, so routine no-op runs still pass); the npm package gains a
  prepublishOnly gate (scripts/verify-release-assets.mjs) that covers BOTH
  publish paths — changeset publish (production) and npm-publish.mjs
  (prerelease) shell out to npm publish, which runs it.
- Prerelease marker (finding 7): classify accepts exactly 'chore(release):'
  (a bare 'release:' doc commit can no longer trigger a publish) and
  short-circuits to skip when the identity's eql-typescript-v tag already
  exists.
- One-identity-one-commit (finding 8): prerelease-publish-rust dispatches
  release-plz.yml against the eql-<V> tag (same pattern as build-image), not
  the branch, so the crate publishes from the exact release commit.
- Supply chain (findings 9/10): npm pinned to an exact version in both
  publish jobs; mise-action cache disabled in release.yml and release-plz.yml
  and the no-workflow-caching lint extended to cover jdx/mise-action (with
  release-plz.yml added to its default file set, plus test cases).
- Changelog ownership (finding 5): CHANGELOG.md header, CLAUDE.md, and
  releasing.md now say what is true — Changesets maintains
  packages/eql/CHANGELOG.md (the lockstep release changelog); the root file
  is the frozen pre-3.0 archive.
- Access-model note (finding 12): releasing.md documents that prerelease
  publishes are gated by eql_v3 push access + branch protection.
- Tests (coverage finding): bumpCargoPackageVersion extracted from
  sync-lockstep-versions.mjs, now section-anchored (can never rewrite a
  column-0 version line outside [package]) with vitest coverage;
  prepare-bindings-assets.test.sh covers the version-validation gate (wired
  into lint-release.yml).
- Nits: no defaults.run.shell 'bash {0}' override in release.yml /
  release-plz.yml (GitHub's default bash is -eo pipefail); unused repoRoot
  dropped from copy-assets.mjs.
feat(release): publish EQL v3 language bindings (Rust + TypeScript) with bundled SQL
Lockstep prerelease pin via 'pnpm run version' (changesets pre-mode):
package.json, Cargo.toml, and the bundled exact-version SQL assets all
carry 3.0.0-alpha.3. Pushing this marker commit to eql_v3 triggers
release.yml's prerelease path: SQL + docs GitHub release (eql-3.0.0-alpha.3),
npm publish (@cipherstash/eql, dist-tag alpha, tag eql-typescript-v3.0.0-alpha.3),
and the dispatched crate publish (eql-bindings-v3.0.0-alpha.3).
First attempt (b5c586f) failed on two jobs:
- prerelease-publish-rust: 'gh workflow run' resolves the workflow via a
  local git repo, and the job has no checkout — fixed with --repo.
- prerelease-publish-npm: ENEEDAUTH — npm Trusted Publishing is not yet
  configured for @cipherstash/eql + release.yml on npmjs.com (alpha.2 was
  published manually). Needs the npmjs-side publisher config; will fail
  again on this retry, which is fine: the eql-typescript tag is only
  created after a successful npm publish, so classify keeps allowing
  retries for this identity until npm lands.

The marker subject re-triggers the prerelease path for 3.0.0-alpha.3:
build-sql/docs update the existing eql-3.0.0-alpha.3 release in place
(action-gh-release updates by tag), and the fixed dispatch publishes the
crate from the eql-3.0.0-alpha.3 tag.
…red)

npm and crates.io OIDC trusted publishers are now configured
(@cipherstash/eql -> release.yml; eql-bindings -> release-plz.yml) and
release-plz.yml is registered on the default branch (PR #383). This
marker retry completes the two package legs: the eql-typescript tag
doesn't exist yet so classify proceeds; SQL/docs update in place.
…ranch dispatch)

Second retry failed on both package legs for new reasons:

- npm ENEEDAUTH persisted despite trusted publishing being configured:
  mise-action runs after the 'upgrade npm' step and prepends mise's node
  (from [tools]) to PATH — its bundled npm 10.x has no OIDC trusted
  publishing, so the upgraded npm 11.5.1 never ran. The upgrade step now
  runs AFTER mise-action in both publish jobs.

- release-plz errored 'cannot determine current branch': dispatching
  against the eql-<V> tag gives it a detached HEAD, which it refuses.
  prerelease-publish-rust now pins a release/eql-<V> branch at the
  release commit and dispatches against that — same exact-commit
  guarantee, real branch for release-plz.

classify proceeds for 3.0.0-alpha.3 (the eql-typescript tag is still
uncreated); SQL/docs update in place.
npm publish and the crate publish both succeeded on the previous retry
(@cipherstash/eql@3.0.0-alpha.3 with provenance; eql-bindings@3.0.0-alpha.3
via crates.io trusted publishing). The only remaining failure was the
eql-typescript tag push: with persist-credentials: false the git
extraheader hack didn't authenticate ('could not read Username'). Create
the tag ref via 'gh api' instead.

This retry converges: npm publish skips (already published), the tag is
created, release-plz no-ops (version already on crates.io).
Until the 3.0.0 final ships, the alphas are the package's only release
line, so a bare 'npm install @cipherstash/eql' should resolve to the
newest alpha rather than whichever version last happened to hold latest
(alpha.2 had it from a manual publish while alpha.3 sat under the alpha
tag). PRE_GA_LATEST in npm-publish.mjs flips the policy back to channel
dist-tags after GA. Policy per James, 2026-07-08.
…warning

Doxygen auto-links the bare word `text` (it collides with a documented
symbol) into a cross-reference — even inside inline code. In the jsonb
selector operator's @warning, `` `col -> 'sel'::text` `` became
`<computeroutput>col -> 'sel'<ref>text</ref></computeroutput>`: a link
nested inside inline code. Rendered to Markdown that surfaces as an
unbalanced `<tt>`, which fails the downstream MDX/docs build
(cipherstash/docs was broken by eql-3.0.0-alpha.3's API.md at line 2153,
`Expected a closing tag for <tt>`). It also drops the `::`, so the cast
read as `'sel'text`.

Prefix the two `text` occurrences with Doxygen's `%` no-autolink marker
(`::%text`, `-> %text`). Verified with doxygen: the nested <ref> is gone
and `col -> 'sel'::text` now renders as clean, balanced inline code.
…arse

fix(docs): skip name-dropped CREATE FUNCTION mis-parses
…tolink

fix(docs): suppress Doxygen auto-linking of `text` in jsonb selector @warning
@freshtonic freshtonic changed the title EQL v3 Merge eql_v3 into main for the 3.0.0 release Jul 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants