Repository navigation
feat: evidence policy, strict comparator, Snowflake recorder and append-only guard - #3
Merged
Merged
Conversation
kvlonge
added a commit
that referenced
this pull request
Nov 4, 2026
A page that defines one name several times (per cloud, per stage kind, per authentication method) kept only its last definition. Each variant is now its own definition, named by the page qualifier when the page gives one, e.g. "cloudProviderParams (for Amazon S3)", else "#2", "#3", so every id stays <source>::<name>. A form's uses lists every variant of a name its grammar refers to. Only ddl, dml and security_admin change; no form grammar changes.
kvlonge
added a commit
that referenced
this pull request
Nov 4, 2026
…ons, four readings Obligation builder (scripts/syntax_obligations/_helpers/derive.py): - A keyword or parenthesis that occurs more than once in one production and branch now gets a missing-keyword negative for each occurrence (the later ones targeted "#2", "#3"...). Before, only the first occurrence was tested, for example SNAPSHOT in ALTER SNAPSHOT SET ... ADD SNAPSHOT. - A repeated list option such as [ , ... ] now counts as an independent option for interaction_all_options, so [ DISTINCT ] <expr> [ , ... ] gets the row. Readings: SYSTEM$CLUSTERING_DEPTH and _RATIO take the column list as optional; LAST_DAY takes the date part quoted or unquoted; WAREHOUSE_METERING_HISTORY gains a production with its named arguments in reverse order. Two new interaction cases repeat SQL Snowflake already rejected (MINHASH ( v1 , DISTINCT 1 , 1 ) and ALTER DYNAMIC TABLE ... ADD SEARCH OPTIMIZATION ON EQUALITY ( v1 ) , EQUALITY ( v1 ) EQUALITY); both are observed under D113.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
CHI-832. Recorded warehouse results are the only arbiter of whether a conversion is correct, so recording, replay and the integrity controls have to exist before any rule does.
Changes
sqlquack-policy: the single, schema-validatedsqlquack.toml, covering comparator settings, type equalities, required edge-case tags per category, and known divergences with strict/default modes.sqlquack-compare: a strict comparator (exact decimals, zero-ULP floats, NULL equal only to NULL, declared type equalities).sqlquack-evidence: cases, content hashes,pending, DuckDB 2.0 replay,verifyandaudit.recorder/: a small Python tool on the official Snowflake connector that writes Arrow results unchanged. It batches cases, reruns a batch case by case when Snowflake wraps a statement error, and stores only a hash of the query ID and no warehouse error messages. It never runs in CI.make check-ciand CI: existing results can't change, and new results must come from the recorder.Verification
make check-ci,make testand the hygiene scan pass.verifyreports 9 refused (no rules yet) and 0 failed. The evidence guard passes on 17 added files.