test(gq): add the GQ logic test harness, corpus, and fix-regression gate - #596
Open
azimafroozeh wants to merge 5 commits into
Open
test(gq): add the GQ logic test harness, corpus, and fix-regression gate#596azimafroozeh wants to merge 5 commits into
azimafroozeh wants to merge 5 commits into
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
azimafroozeh
force-pushed
the
gq-logic-tests
branch
from
September 1, 2026 16:28
7670bb7 to
a7d7557
Compare
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.
What & why
Implements RFC 0045 (GQ logic tests, #584): a query-level regression becomes one small text file instead of a Rust test, and issue-closing PRs are held to carrying one.
crates/omnigraph/tests/gq_logic_tests.rswalkstests/gq_logic_tests/*.gqt: one self-contained case per file (issue anchor andred_on:provenance, then schema, seed, and query / mutate / restart steps with per-step params and expect).unordered(multiset),ordered,error: <substring>,affected: nodes=<N> edges=<M>; number normalization never routes integers through f64.OMNIGRAPH_GQ_BLESS=1rewrites a failing case's expect rows in place;OMNIGRAPH_GQ_LOGIC_TESTS=<substring>filters cases by file name.gq-logic-tests.yml:GQ Logic Testsruns the target pre-merge (the workspace job keeps covering it post-merge), andFix Regression Gate(scripts/check-fix-regression.py) holds every issue the body closes by keyword to a matchingissue_Ntest or.gqtcase in the diff, waivable per PR with theno-reprolabel.#[ignore]messages open with their species.The nightly heavy-repro job stays deferred until its first
tests/repro_issue_*.rsmember lands (the job fails on an empty glob by design).Backing issue / RFC
docs/rfcs/0045-gq-logic-tests.md(docs(rfc): add RFC 0043, GQ logic tests #584). docs(rfc): add RFC 0043, GQ logic tests #584 merges first; itsimplementation:flip rides that branch.Checklist
src/changes)testing.md,ci.md,branch-protection.md, AGENTS.md)Local verification
cargo test -p omnigraph-engine --test gq_logic_tests— 84/84cargo clippy -p omnigraph-engine --all-targets -- -D warnings -W clippy::dbg_macro,cargo fmt --all— cleanscripts/check-fix-regression.py --self-test— ok; plus three scenario runs against this branch's own diff: closing performance: bm25/rrf ranked read + a join materializes the joined column corpus-wide → Arrow 2 GB offset overflow at ~700k+ rows #563 passes (the corpus matches), closing an issue with no test exits 1, theno-reprolabel waivesscripts/check-docs.py,scripts/check-agents-md.sh,scripts/check-workflow-action-pins.py— all OKcargo test --workspace— not run locally (nosrc/changes); CI covers itNotes for reviewers
with_traversal_modepin.no-reprolabel, then runscripts/apply-branch-protection.sh(running it earlier leaves open PRs pending on contexts they cannot receive; both new checks already report on this PR).fixes #N,fixes: #N, andfixes:#N(leading zeros normalized); URL, cross-repo,GH-N, and no-spacefixes#Nclosings pass unexamined and stay review's job.edited/labeled/unlabeledPR types re-run the gate when a body edit or the label changes its answer; the test job re-runs on them too (accepted cost).save-if: push), so per-PR caches cannot evict main's.Greptile Summary
The PR adds a query-level logic-test harness and corpus, then integrates it with pull-request regression enforcement.
.gqtparser, runner, result normalization, blessing workflow, and initial regression cases.Confidence Score: 5/5
The PR appears safe to merge.
No blocking failure remains.
Important Files Changed
.gqtcases and Rust test definitions; the previously reported broad text-match bypass has been addressed within the script's documented boundary.Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart LR PR[Pull request] --> Tests[GQ Logic Tests] PR --> Gate[Fix Regression Gate] Corpus[Changed .gqt and Rust tests] --> Gate Body[Closing keywords in PR body] --> Gate Tests --> Protection[Required branch checks] Gate --> ProtectionReviews (2): Last reviewed commit: "test(gq): tighten the fix-regression gat..." | Re-trigger Greptile