This is an automated email from the ASF dual-hosted git repository.
terrymanu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new a1ce8109d06 Refine review-pr mergeability result handling (#38882)
a1ce8109d06 is described below
commit a1ce8109d06a8c7cf81615290d67e22bc5b6d041
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Jun 21 22:02:26 2026 +0800
Refine review-pr mergeability result handling (#38882)
* Update release notes
* Refine review-pr mergeability result handling
- add Review Incomplete as a first-class review result
- clarify CI evidence judgment and blocker evidence thresholds
- move SQL parser-specific review guidance into a scoped reference
- update review-pr agent metadata for tri-state review output
* Refine review-pr mergeability result handling
- add Review Incomplete as a first-class review result
- clarify CI evidence judgment and blocker evidence thresholds
- move SQL parser-specific review guidance into a scoped reference
- update review-pr agent metadata for tri-state review output
---
.codex/skills/review-pr/SKILL.md | 425 +++++++--------------
.codex/skills/review-pr/agents/openai.yaml | 6 +-
.../review-pr/references/sql-parser-review.md | 49 +++
3 files changed, 180 insertions(+), 300 deletions(-)
diff --git a/.codex/skills/review-pr/SKILL.md b/.codex/skills/review-pr/SKILL.md
index 18198bd5826..398b43bf052 100644
--- a/.codex/skills/review-pr/SKILL.md
+++ b/.codex/skills/review-pr/SKILL.md
@@ -5,6 +5,7 @@ description: >-
assess side effects and regression risks, and determine whether it can be
safely merged.
If not mergeable, produce committer-tone change requests, or
needs-discussion feedback when
the PR direction, root-cause model, or problem framing should be reopened
before implementation continues.
+ If review cannot be completed from available public evidence, produce a
Review Incomplete result without patch-level advice.
Supports targeted comparison across GitHub-visible review rounds when prior
PR comments or review threads exist.
Before final output, internally self-iterate the review until no new
actionable findings are discovered.
---
@@ -13,12 +14,15 @@ description: >-
## Objective
-- Make merge decisions for ShardingSphere PRs with a "root-cause-first,
evidence-first" approach.
-- Output a single merge decision:
- - `Merge Decision`: `Mergeable` / `Not Mergeable`
+- Review ShardingSphere PRs with a root-cause-first, evidence-first approach.
+- Output exactly one `Review Result`:
+ - `Mergeable`: public code, tests, documentation, and relevant verification
support merge readiness.
+ - `Not Mergeable`: public evidence confirms a blocker in the current PR
scope.
+ - `Review Incomplete`: the reviewer cannot make a reliable mergeability
judgment because required public facts are unavailable, inaccessible, or not
attributable.
- For `Not Mergeable`, choose exactly one feedback mode:
- - `Change Request`: the direction is valid but the current patch needs
implementation, test, scope, or evidence changes.
+ - `Change Request`: the direction is valid, but the patch needs
implementation, test, scope, compatibility, or evidence changes.
- `Needs Discussion`: public evidence shows the PR direction, root-cause
model, or problem framing must be reopened before implementation continues.
+- For `Review Incomplete`, do not output patch-level change requests. State
what was verified, what required public fact is missing, and what must be
checked next.
## Trigger Scenarios
@@ -39,81 +43,49 @@ Before applying the numbered review gates, enforce the
public evidence boundary:
and verify it against public artifacts before output.
1. Verify root-cause repair first; fallback logic, defaults, null checks,
try-catch blocks, or swallowed errors cannot substitute for root-cause repair.
-2. Output exactly one `Merge Decision`, and choose one `Feedback Mode` for
every `Not Mergeable` result.
-3. If evidence is insufficient, risk is unclear, validation is incomplete, or
any required hard gate fails, set `Merge Decision: Not Mergeable`.
-4. If public evidence shows a wrong root-cause model, problem framing,
expected behavior, ownership boundary, or solution direction, use `Feedback
Mode: Needs Discussion`.
+2. Output exactly one `Review Result`. Choose one `Feedback Mode` only when
the result is `Not Mergeable`.
+3. Do not convert reviewer uncertainty, tool failure, inaccessible GitHub
data, or missing local verification into a PR blocker. Use `Review Incomplete`
when required public facts cannot be checked or attributed.
+4. If public evidence confirms a wrong root-cause model, problem framing,
expected behavior, ownership boundary, or solution direction, use `Review
Result: Not Mergeable` with `Feedback Mode: Needs Discussion`.
5. Review only the latest PR code version, and use GitHub PR metadata plus
`/pulls/{number}/files` as the authoritative scope boundary.
-6. Do not use GitHub Actions, CI status, or check-run completion for the merge
decision unless explicitly requested.
-7. Use repository-declared formatting/style gates as the formatting authority.
-8. Treat substantive unrelated changes or substantive scope expansion as merge
blockers; ignore non-behavioral import-only, whitespace-only, formatter-only,
or IDE cleanup churn unless it hides behavior,
+6. Use repository-declared formatting/style gates as the formatting authority.
+7. Treat substantive unrelated changes or substantive scope expansion as
blockers; ignore non-behavioral import-only, whitespace-only, formatter-only,
or IDE cleanup churn unless it hides behavior,
fails declared gates, touches broad unrelated areas, or violates explicit
scope rules.
-9. Before considering `Mergeable`, apply all triggered hard gates and
specialized review gates, including semantic compatibility, counterexamples,
blast-radius/shared-layer ownership,
- SQL parser official-doc and dialect-family checks, linked-issue
completeness, implicit-state review, high-frequency `computeIfAbsent` review,
and local verification freshness.
-10. Before any final output, complete the `Anti-Drip Review Gate` and
`Self-Iteration Gate`; do not expose intermediate findings, and output one
consolidated review.
+8. Before considering `Mergeable`, apply all triggered hard gates and
specialized review gates, including semantic compatibility, counterexamples,
blast-radius/shared-layer ownership,
+ linked-issue completeness, implicit-state review, high-frequency
`computeIfAbsent` review, CI evidence judgment when relevant, and local
verification freshness.
+9. Before final output, complete the `Pre-Publication Finding Audit`; do not
expose intermediate findings, and output one consolidated review.
+
+## Evidence Sufficiency and CI Judgment
+
+- `Not Mergeable` requires confirmed public evidence in the reviewed scope. A
blocker must be supported by at least one of:
+ - code, diff, or contract evidence that proves a defect or scope violation;
+ - relevant test, CI, check-run, log, or reproduction evidence that proves
failure;
+ - a required core behavior validation gap after the reviewer has checked
available public facts;
+ - compatibility, API/SPI, protocol, data, security, lifecycle, dependency,
or distribution risk with a clear executable path;
+ - confirmed scope, ownership, documentation, release-note, or migration
impact that the PR must resolve.
+- `Review Incomplete` is required when mergeability depends on public facts
that are unavailable, inaccessible, stale, or not attributable to the PR.
+- `Review Incomplete` is not a soft approval and must not contain patch-level
code requests. If a code issue is already confirmed, use `Not Mergeable`.
+- CI success never replaces code review, root-cause review, scope review, or
test adequacy review.
+- Relevant CI failure means the PR cannot be `Mergeable`. If the failure is
attributable to the PR, use `Not Mergeable`; if attribution is unclear, use
`Review Incomplete`.
+- Inspect CI, check-runs, or workflow logs when the PR goal, linked issue,
author/user statement, generated artifact, native image, E2E, test-infra, or a
candidate blocker depends on runtime verification.
+- Do not wait for or query CI when code, docs, or static evidence is
sufficient for the current review result. State the reason in `Verification`
when CI was not reviewed.
## Mergeable Hard Gates
-Apply these gates before considering `Merge Decision: Mergeable`.
+Apply these gates before considering `Review Result: Mergeable`.
If a gate is not applicable to the PR, state the reason briefly in the review
evidence or details.
Do not turn speculative risks, personal style preferences, or out-of-scope
polish into merge blockers.
-1. Root Cause Gate:
- - The PR must repair the true trigger point or required propagation path,
not only the final error point.
- - Fallbacks, defaults, null checks, try-catch blocks, or swallowed errors
cannot substitute for root-cause repair.
- - If the root-cause chain cannot be proven fixed, set `Merge Decision: Not
Mergeable`.
-2. Linked Issue Completeness Gate:
- - Keep and apply the existing linked-issue completeness rules whenever the
PR claims to fix, close, resolve, or address an issue.
-3. Scope & Ownership Gate:
- - Substantive unrelated changes, substantive scope expansion, and broad
cleanup outside the PR goal block mergeability.
- - For pluggable features, dialects, rules, registry centers, or protocol
modules, the fix should stay in the owning module by default.
- - Shared modules may be changed only for generic contracts or hooks that
make sense for all affected owners.
- - Target-specific names, lifecycle concepts, protocol state, database
strings, or comments in shared code are blockers unless proven to be an
intentional generic contract.
-4. Regression & Side Effect Gate:
- - The PR must not leave unresolved functional degradation, compatibility,
performance, config, API/SPI, SQL dialect, feature-disabled path, or
adjacent-feature risks.
- - "No side effects" means no identified but unresolved or unvalidated
side-effect risk in the reviewed scope; do not require impossible exhaustive
proof.
-5. Test Adequacy Gate:
- - New or changed production code or behavior needs corresponding test
evidence.
- - Bug fixes should have regression tests for the reported symptom or
root-cause path.
- - New features should cover the main success path and important boundary,
disabled, or error paths.
- - Existing tests may satisfy this gate only when they clearly exercise the
changed behavior.
- - Judge tests by behavior and root-cause coverage, not by coverage-rate or
environment breadth alone.
- - High-cost environment, native-image, distributed-system, or end-to-end
validation blocks mergeability only when lower-level public-path tests and code
evidence cannot prove the root-cause repair,
- or when the current PR itself owns that environment integration behavior.
- - For narrow split PRs whose code path can be proven locally, environment
validation may be delegated to the umbrella PR or integration test scope; state
that boundary in `Review Details` instead of turning it into a blocker.
- - Do not require coverage-rate proof, and do not block mergeability solely
because a coverage report was not produced.
-6. Code Quality Gate:
- - Block only concrete maintainability problems, such as unclear
responsibility, duplicated logic, dead code, over-complex control flow, hidden
state, magic values, or hard-to-read temporary design.
- - Do not turn ordinary naming/style preferences or optional nits into
blockers unless they violate repository rules or create real maintenance risk.
-7. Architecture Gate:
- - Trigger a deeper architecture review when the PR touches shared modules,
public/shared APIs, SPI contracts, metadata, rule owners, dialect owners,
session/executor state, or lifecycle state.
- - The PR must preserve module ownership, explicit contracts, SPI/metadata
boundaries, and clear state models.
- - Broken layering, bypassed owner modules, target-specific semantics in
shared code, or implicit lifecycle states block mergeability.
-8. Release Note Gate:
- - Required when the PR introduces or changes user-visible behavior that
users, DBAs, operators, or application developers need to know for upgrade,
troubleshooting, configuration,
- migration, rollback, compatibility assessment, or meaningful release
awareness.
- - Usually not required for test-only changes, pure refactoring with no
behavior change, formatter/import/typo/comment-only changes,
- internal bug fixes that restore already documented behavior without new
user action, or CI/build changes that do not affect released artifacts,
supported platforms, dependencies,
- or user-visible build behavior.
- - For split or staging PRs, a release note may be deferred to the umbrella
PR when the umbrella PR owns the user-facing release story and the split PR is
not expected to ship independently.
- If deferring, verify and state the delegation reason; do not require
duplicate release-note entries that would only create low-signal changelog
noise.
- - If the split PR can be released independently and the fix has meaningful
user-facing impact, require the release note in the split PR.
- - Required release notes must update `RELEASE-NOTES.md` in the proper
category and describe the user-visible outcome, affected module or feature,
- and important compatibility, configuration, upgrade, or rollback impact
when applicable.
- - Release notes must be understandable to users, DBAs, operators, and
application developers, not only maintainers.
- - Missing, misleading, implementation-only, wrong-category, or over-claimed
release notes block mergeability only after the gate determines that a release
note is required for the current PR.
-9. User Documentation Impact Gate:
- - If users need documentation to correctly use, configure, upgrade,
troubleshoot, or understand the changed behavior, check the relevant user docs.
- - Missing required docs for user-facing configuration, DistSQL, SQL
support, API/SPI usage, Proxy/JDBC behavior, or upgrade flow block mergeability.
-10. Breaking Change / Migration Impact Gate:
- - If the PR changes default behavior, config keys, API/SPI contracts,
protocols, metadata storage, SQL semantics, or released artifacts,
- require explicit compatibility, migration, upgrade, and rollback evidence.
- - Unexplained breaking or migration impact blocks mergeability.
-11. Error Message / Diagnostics Quality Gate:
- - If the PR changes exceptions, error codes, logs, or diagnostic output,
the result must be accurate, actionable, and safe for users.
- - Diagnostics that hide the real failure, mislead users, regress
troubleshooting, or expose sensitive information block mergeability.
-12. Dependency / Distribution Impact Gate:
- - If dependency manifests, lockfiles, distribution packaging, native-image
metadata, LICENSE, NOTICE, or release artifacts change,
- check security, license, compatibility, packaging, and release impact
before considering `Mergeable`.
+1. Root cause: the PR repairs the true trigger point or required propagation
path, not only the final error point. Fallbacks, null checks, defaults,
try-catch blocks, or swallowed errors do not substitute for root-cause repair.
+2. Linked issue completeness: every claimed fixed/closed/addressed issue
requirement maps to code and validation, or unresolved scope becomes `Not
Mergeable` or `Review Incomplete` under the evidence rules.
+3. Scope and ownership: no substantive unrelated changes, scope expansion,
target-specific leakage into shared code, or ownership bypass remains.
+4. Regression and side effects: no unresolved functional degradation,
compatibility risk, performance risk, config/API/SPI risk, dialect risk,
feature-disabled path risk, or adjacent-feature risk remains.
+5. Test adequacy: changed behavior has meaningful direct or existing coverage
of the root-cause path and important boundaries. Do not require coverage-rate
proof; high-cost environment proof may be delegated only when lower-level
evidence proves the current PR path.
+6. Code quality: no concrete maintainability blocker remains, such as unclear
responsibility, duplicated logic, dead code, over-complex control flow, hidden
state, magic values, or hard-to-read temporary design.
+7. Architecture: shared modules, public/shared APIs, SPI contracts, metadata,
rule owners, dialect owners, session/executor state, and lifecycle state
preserve explicit ownership and contracts.
+8. Release note and user docs: required entries are present when users need
upgrade, troubleshooting, configuration, compatibility, migration, rollback, or
release-awareness guidance; low-signal entries are not required for
internal/test-only fixes.
+9. Breaking change and migration: default behavior, config keys, API/SPI
contracts, protocols, metadata storage, SQL semantics, and released artifacts
have clear compatibility, migration, upgrade, and rollback evidence when
touched.
+10. Diagnostics: changed errors, logs, or diagnostic output remain accurate,
actionable, and safe.
+11. Dependency and distribution: manifests, lockfiles, packaging, native-image
metadata, LICENSE, NOTICE, and release artifacts are checked for security,
license, compatibility, packaging, and release impact when touched.
## Not Mergeable Feedback Mode
@@ -132,8 +104,8 @@ Choose the feedback mode before writing the GitHub-facing
review:
- Review PR code, tests, behavior, compatibility, regression risk, and scope.
- For GitHub PRs, derive the reviewed file list from the latest PR head and
GitHub `/pulls/{number}/files`, then use local git only to reproduce and
inspect that scope.
-- Do not inspect or use GitHub Actions, CI status, or check-run completion for
the merge decision unless the user explicitly asks for CI review.
-- Do not treat CI pending, failing, or passing as a review finding by default;
final approvers and mergers handle that gate.
+- Do not base the review result solely on GitHub Actions, CI status, or
check-run completion.
+- Inspect CI when it is relevant under `Evidence Sufficiency and CI Judgment`;
otherwise do not wait for CI just for formality.
- Use the repository-declared formatting and style gates as authority. For
ShardingSphere, Spotless and Checkstyle are the formatting/style gates.
- Do not treat `git diff --check` as a blocker when it conflicts with
Spotless/Checkstyle behavior, unless the user explicitly asks for that check.
@@ -142,7 +114,7 @@ Choose the feedback mode before writing the GitHub-facing
review:
- Still include import-only, whitespace-only, and formatter-only files in
`Reviewed Scope` when GitHub `/pulls/{number}/files` includes them.
- `import-only` includes normal imports, static imports, import ordering,
import grouping, and unused-import cleanup when there is no production or test
behavior change.
- Do not report import-only, whitespace-only, or formatter-only changes as
`Issues`, `Unrelated Changes`, or rollback requests by default.
-- Do not set `Merge Decision: Not Mergeable` solely because of import
ordering, unused-import cleanup, whitespace normalization, or IDE/formatter
cleanup.
+- Do not set `Review Result: Not Mergeable` solely because of import ordering,
unused-import cleanup, whitespace normalization, or IDE/formatter cleanup.
- Mention them only when they are excessive, obscure the real diff, fail
Spotless/Checkstyle, touch many unrelated files, or conflict with an explicit
reviewer/user/repo scope rule.
## PR Diff Boundary Rule
@@ -175,18 +147,12 @@ For the GitHub-facing review body, cite or summarize only
public evidence from t
Local verification may support the review, but output only sanitized command
summaries, exit codes, and repository-relative paths.
Do not output local absolute paths, random temporary file or directory names,
private/internal/downstream identifiers, private chat content, prompt text, or
intermediate reasoning notes.
-CI status and check-runs are out of scope unless explicitly requested by the
user.
+CI status and check-runs are review evidence only when relevant under
`Evidence Sufficiency and CI Judgment`.
For SQL parser reviews:
-- Prefer the target database's official SQL reference/manual as first-class
evidence.
-- When the PR or your review comment mentions a concrete SQL syntax form, cite
the exact official doc page that supports that form.
-- If the official docs do not clearly support the syntax, do not infer support
from another dialect, secondary article, or parser implementation alone.
-- Build a dialect-family evidence set when parser logic changes:
- - Check repo conventions for trunk/branch relationships first.
- - If the touched dialect is a trunk parser, inspect affected branch dialect
parser files, tests, and doc paths.
- - If the touched dialect is a branch parser, inspect the trunk parser and
any sibling branch dialects that may share or copy the same logic.
-- Check ShardingSphere docs/examples/release notes when parser behavior
changes, especially if the PR alters supported syntax, unsupported syntax, or
dialect-specific examples.
+- If SQL grammar, visitors, parser tests, SQL syntax docs, dialect parser
behavior, or parser-generated baselines are touched, read
`references/sql-parser-review.md` before reviewing.
+- Apply the official-documentation, dialect-family, docs/example, and
parser-baseline rules from that reference.
Forbidden sources:
@@ -220,7 +186,7 @@ Rules:
- In the current reply, prioritize `Summary`, blocking issues, and minimum
next actions.
- If the PR is obviously too large (too many files or too much churn), suggest
splitting first.
-- If full review cannot be completed immediately, provide high-risk blockers
first to avoid blocking the delivery chain.
+- If full review cannot be completed immediately, provide only confirmed
high-risk blockers; use `Review Incomplete` when required public facts are
still missing.
## Quick Triage
@@ -236,28 +202,25 @@ Before deep review, answer the smallest set of questions
needed to choose review
Triage policy:
- Information complete: proceed with full review.
-- Missing evidence: mark as "not mergeable" and request minimum additional
info.
-- Wrong problem model, root-cause model, or direction: mark as "not
mergeable", use `Feedback Mode: Needs Discussion`, and recommend `type:
discussion`.
-- Any substantive off-topic/unrelated changes or substantive scope expansion:
mark as "not mergeable" and require rollback or scope narrowing.
+- Confirmed blocker: set `Review Result: Not Mergeable` and request the
minimum required change or discussion.
+- Required public facts unavailable, inaccessible, stale, or unattributable:
set `Review Result: Review Incomplete` and request only the facts needed to
complete the review.
+- Wrong problem model, root-cause model, or direction: set `Review Result: Not
Mergeable`, use `Feedback Mode: Needs Discussion`, and recommend `type:
discussion`.
+- Any substantive off-topic/unrelated changes or substantive scope expansion:
set `Review Result: Not Mergeable` and require rollback or scope narrowing.
Ignore non-behavioral import-only, whitespace-only, and formatter-only churn
for mergeability unless it meets the Non-Behavioral Churn Rule escalation
conditions.
- Change set too large: request split first, and provide only blocker-level
feedback for current version.
-## Minimum Additional Information List (Fixed Template)
+## Minimum Required Information
-When information gaps block mergeability, request at least:
+When information gaps prevent a reliable review result:
-- Recheck scope for the PR latest version (files/modules).
-- ShardingSphere version and runtime topology (JDBC/Proxy +
Standalone/Cluster).
-- Database type and version.
-- Minimal reproducible input (SQL/request/config snippet) with expected vs
actual behavior.
-- Key logs or stack traces.
-- Test evidence mapped one-to-one with fix points (new or adjusted tests).
-- Release note, user documentation, migration, or diagnostics evidence when
the PR has user-visible impact.
-- For SQL parser reviews: official documentation links/pages for the exact
syntax and version, plus any affected ShardingSphere doc paths or examples.
+- Request only facts required by the unresolved gate; do not ask for a fixed
checklist by default.
+- Do not ask the author for evidence the reviewer can obtain from public PR,
issue, code, CI, or workflow data.
+- Map every requested item to the unresolved review gate.
+- Common requests include latest changed-file scope, runtime topology,
database type/version, minimal reproducible input, key logs, targeted test
evidence, docs/release impact, or SQL parser official documentation.
## Review Workflow
-CI/check-run review is not part of this workflow unless explicitly requested;
do not query or report it by default.
+CI/check-run review is not a substitute for code review. Query and report CI
only when it is relevant under `Evidence Sufficiency and CI Judgment`.
1. Define target and boundary: restate PR goal, impacted modules, target
topology (JDBC or Proxy, Standalone or Cluster).
2. Root-cause and linked-issue modeling: reconstruct "trigger condition ->
failure path -> result" from issue and code path.
@@ -279,11 +242,7 @@ CI/check-run review is not part of this workflow unless
explicitly requested; do
- Compatibility: behavior/config/API-SPI/SQL dialect versions
- Regression: similar statements, adjacent features, exception branches
- For parser, binder, routing, and default-schema changes, explicitly
compare the new behavior against official dialect semantics and check whether
precedence or shadowing rules changed
- - For SQL parser changes, build the dialect-family map first using repo
conventions, then expand the review to related trunk / branch dialects that
reuse, share, or copy the touched parser logic
- - For SQL parser changes, verify every changed syntax form in the PR
against the target database's official documentation, and reject syntax support
that cannot be proven from official docs
- - For SQL parser review comments, ensure every suggested SQL syntax example
or recommended acceptance/rejection rule is also supported by the target
database's official documentation; do not suggest parser behavior that official
docs do not support
- - For each related dialect in the same parser family, decide whether the
same root cause exists, whether the PR also fixes it, and whether extra review
feedback is required; do not silently treat unreviewed related dialects as safe
- - Check ShardingSphere docs, examples, and release-note expectations for
parser behavior changes; if docs and parser behavior diverge, require
correction or explicit explanation
+ - For SQL parser changes, read and apply `references/sql-parser-review.md`
- If shared code is touched, build a blast-radius list of affected
dialects/features and review at least one non-target example against its
documented semantics
- If config flags or temporary properties exist on the touched path, review
both enabled and disabled states
- If exceptions, error codes, logs, or diagnostics changed, check that
users can understand and act on the new output and that no sensitive data is
exposed
@@ -296,7 +255,7 @@ CI/check-run review is not part of this workflow unless
explicitly requested; do
- If native-image, container, cluster, performance, or other expensive
environment validation is missing, decide whether the current PR truly owns
that integration proof,
or whether public-path tests plus code evidence are enough for this split
PR and the environment proof belongs to a broader umbrella PR.
- Do not require coverage-rate proof as part of this review.
- - For SQL parser family scans, check whether each related dialect with the
same root cause has direct validation or explicit evidence for non-applicability
+ - For SQL parser family scans, use `references/sql-parser-review.md` to
check validation or non-applicability evidence
- Distinguish fixture-assisted validation from production-path validation;
if tests bypass the real assembly chain,
metadata loader, SPI discovery path, or routing path, state that gap
explicitly and downgrade confidence
- If the PR adds multiple static metadata definitions, verify that
regression tests cover the originally reported objects one-to-one; do not infer
coverage from a single representative object unless the code path is truly
identical and that equivalence is stated
@@ -322,64 +281,43 @@ CI/check-run review is not part of this workflow unless
explicitly requested; do
11. Latest delta plus full-path review:
- When new commits arrive after previous feedback, review the latest delta
to classify newly introduced risk.
- Re-run full-path review on the latest PR head; do not conclude
mergeability only because earlier comments were fixed.
-12. Self-iteration gate: repeat internal review passes until the latest pass
finds no new actionable findings with an independent fix boundary.
-13. Merge decision: output `Merge Decision`.
+12. Pre-publication finding audit: verify every blocker against the evidence
threshold before output.
+13. Review result: output exactly one `Review Result`.
14. Generate feedback: follow the output template below.
-## Anti-Drip Review Gate
+## Pre-Publication Finding Audit
Before producing the final review, build and freeze an internal review
inventory for the latest PR head.
-Do not expose intermediate findings, draft issue lists, or candidate blockers
before the inventory is frozen, unless the user explicitly asks for status or
early high-risk blockers.
+Do not expose intermediate findings, draft issue lists, or candidate blockers
unless the user explicitly asks for status or early high-risk blockers.
The inventory must cover:
- Authoritative scope: latest head SHA, base ref/SHA, merge-base, local file
list, and GitHub `/pulls/{number}/files` match status when available.
-- Changed file categories: production, tests, docs, release notes,
build/config, distribution, generated/baseline resources, and non-behavioral
churn.
-- Entry points and execution paths changed by the PR.
-- New public production types and whether each has direct focused tests.
-- New or changed public/shared methods, constructors, fields, return values,
cache keys, and session/executor state.
-- Stateful registries, caches, session fields, handles, lifecycle
begin/use/free/release/error paths, and cleanup ownership.
-- Supported feature matrix: what the PR accepts, rejects, or leaves
unsupported; flag unsupported-but-accepted inputs.
-- Boundary cases: empty, null, invalid, stale, repeated, split/coalesced,
disabled, fallback, release/free, and error paths.
+- Changed file categories, entry points, execution paths, public/shared APIs,
stateful registries or lifecycle handles, tests, docs, release notes, generated
resources, dependencies, and distribution impact.
+- Boundary cases relevant to the change: empty, null, invalid, stale,
repeated, disabled, fallback, cleanup, release/free, and error paths.
- Latest-commit delta risks when previous public feedback or review rounds
exist.
-- Release note, user documentation, migration, diagnostics, dependency, and
distribution impact.
-
-For each candidate issue, record internally:
-
-- Evidence path and line.
-- Whether it is caused by this PR, pre-existing on base, exposed by this PR,
newly introduced by latest commits, or newly discovered but present in earlier
PR revisions.
-- The minimum independent fix boundary.
-- Whether it duplicates another candidate issue.
-- Whether it is a confirmed blocker, missing-evidence blocker, non-blocking
risk, or out-of-scope note.
-
-Deduplicate findings by independent fix boundary before output.
-A fix boundary is independent when it requires a different code owner,
lifecycle hook, protocol/model contract, validation boundary, or test contract
to close safely.
-Merge duplicate symptoms into one issue; split only when fixes are genuinely
independent.
-
-## Self-Iteration Gate
-
-Before producing the final review output, run an internal self-review loop on
the latest PR version:
-
-1. Build the current candidate findings from the frozen review inventory.
-2. Ask explicitly:
- "If I review this same latest PR again from a fresh critical perspective,
can I find any new actionable issue, unresolved risk, missing evidence, or
scope problem not already captured?"
-3. Re-run the review against the authoritative PR scope, focusing on:
- - Missed root-cause, problem-model, or feedback-mode gaps.
- - Missed side effects, regression paths, test adequacy gaps, cross-dialect
paths, feature-disabled paths, fallback paths, or boundary cases.
- - Missed ownership, implicit-state, unrelated-change, release note, user
documentation, migration, diagnostics, dependency, distribution,
output-template, or evidence gaps.
-4. Include at least one explicit adversarial pass that assumes the PR is
unsafe and actively searches for:
- - one cross-dialect or adjacent-feature regression path,
- - one config-disabled or feature-flag-off path,
- - one original symptom path that is only partially covered by tests.
- If any of these remain unresolved, set `Merge Decision: Not Mergeable`.
-5. Include at least one latest-delta pass when new commits were added after
previous public feedback, and one full-path pass on the latest PR head.
-6. If the self-review finds any new actionable issue with an independent fix
boundary, add it to the inventory, deduplicate it against existing findings,
- update the merge decision and next steps if needed, and repeat the loop.
-7. Do not reset the loop for duplicate symptoms, optional polish, speculative
risks outside the PR scope, or already captured issues.
-8. Stop only after one full adversarial pass finds no new actionable issue
with an independent fix boundary.
-9. If the inventory cannot be completed because public evidence is
unavailable, state the minimum missing evidence and set `Merge Decision: Not
Mergeable` rather than emitting a partial approval.
-10. Do not expose intermediate review rounds, draft decisions, raw inventory,
or self-review transcripts in GitHub-facing output.
-11. Produce one consolidated final review with exactly one `Merge Decision`.
+
+For each candidate finding, record internally:
+
+- Evidence type: code/diff, test/CI/log, linked issue, docs/spec, generated
artifact, or local verification.
+- Evidence path, line, command, CI run, or public anchor.
+- Whether the finding is caused by this PR, pre-existing on base, exposed by
this PR, newly introduced by latest commits, or newly discovered but present
earlier.
+- Minimum independent fix boundary and duplicate relationship.
+- Classification: confirmed blocker, review-incomplete gap, non-blocking
observation, or out-of-scope note.
+
+Before any candidate enters `### Issues`, verify:
+
+- The evidence type matches the claimed root cause and linked issue.
+- No public counter-evidence invalidates the claim.
+- Reviewer uncertainty, skipped local verification, unavailable tools, or
inaccessible GitHub data are not being converted into a PR blocker.
+- The requested action is necessary in the current PR scope.
+- The blocker satisfies `Evidence Sufficiency and CI Judgment`.
+
+Run an adversarial pass on the latest head that looks for missed root-cause
gaps, side effects, feature-disabled paths, adjacent-feature regressions,
ownership issues, release/doc impacts, and required verification gaps.
+If the pass finds any new actionable finding with an independent fix boundary,
add it to the inventory, deduplicate and classify it, update the review result
if needed, and repeat the pass.
+Stop only after one full adversarial pass finds no new actionable finding.
+If the inventory cannot be completed because required public evidence is
unavailable or unattributable, output `Review Result: Review Incomplete`.
+Produce one consolidated review with exactly one `Review Result`.
## Root-Cause Validation Checklist (Must Answer Each)
@@ -395,7 +333,8 @@ Before producing the final review output, run an internal
self-review loop on th
- Do the target database official docs and ShardingSphere docs/examples both
support the resulting parser behavior, or is a documentation mismatch still
open?
- Does the config-disabled or feature-flag-off path still behave correctly?
-If the root-cause chain cannot be fully proven fixed, set `Merge Decision: Not
Mergeable`.
+If public evidence proves the root-cause chain is not fixed, set `Review
Result: Not Mergeable`.
+If the root-cause chain depends on required public facts that are unavailable
or unattributable, set `Review Result: Review Incomplete`.
## Linked Issue Completeness Gate
@@ -411,11 +350,15 @@ Must answer:
- Are any issue requirements left as future work, partial support, unsupported
topology, or untested behavior?
- Does the PR title/body over-claim the fix compared with the actual
implementation scope?
- If the PR narrows the issue scope, is that limitation explicit, technically
justified, and accepted by maintainers or the issue context?
+- What evidence type would prove the issue's root cause still exists, such as
generated metadata, protocol trace, SQL parser official syntax, runtime log,
config output, or changed code path?
+- Does the review claim use that evidence type, or is it inferring from an
adjacent fact that does not prove the root cause?
- If the issue expectation, compatibility boundary, or ownership boundary is
itself contradicted or unresolved in public evidence,
should the PR pause implementation and reopen discussion before patch-level
requests continue?
-If the linked issue cannot be read, the issue scope is ambiguous, or any
required issue behavior is only partially fixed or unvalidated,
-set `Merge Decision: Not Mergeable` and list the minimum missing
implementation or evidence.
+If public evidence proves that a required issue behavior is only partially
fixed or unvalidated after reasonable public verification,
+set `Review Result: Not Mergeable` and list the minimum missing implementation
or evidence.
+If the linked issue cannot be read, issue scope is ambiguous, or required
public evidence is unavailable or unattributable,
+set `Review Result: Review Incomplete`.
If public issue or PR evidence shows the current implementation direction is
based on a wrong root-cause model or unresolved expected behavior,
use `Feedback Mode: Needs Discussion` instead of patch-level change requests.
@@ -437,7 +380,7 @@ Must answer:
- Could the same behavior be expressed with a non-null generic key, explicit
state object, clear enum, target-module-owned lifecycle API, or documented
absence-return contract?
- Do tests validate generic shared behavior separately from target dialect
activation?
-If target-specific semantics leak into shared code, or if implicit state is
used as a mode switch in new/changed shared APIs, set `Merge Decision: Not
Mergeable`.
+If target-specific semantics leak into shared code, or if implicit state is
used as a mode switch in new/changed shared APIs, set `Review Result: Not
Mergeable`.
## Risk Checklist (Must Cover)
@@ -456,7 +399,7 @@ If target-specific semantics leak into shared code, or if
implicit state is used
- Documentation risk: user-visible behavior changes without matching
official-doc support, ShardingSphere docs/examples, or release notes that are
valuable and required for the current PR.
- Migration risk: breaking behavior, config, API/SPI, protocol, metadata
storage, SQL semantic, distribution, or rollback impact without clear
user-facing guidance.
- Diagnostics risk: error messages, error codes, logs, or troubleshooting
output that is misleading, unactionable, regressed, or unsafe.
-- Operational risk: config migration complexity, gray-release and rollback
complexity.
+- Operational risk: config migration complexity, staged rollout and rollback
complexity.
- Supply-chain/distribution risk: vulnerabilities, licenses, transitive
dependency changes, packaging changes, native-image metadata, LICENSE, NOTICE,
or release artifact changes.
## Boundary Validation Review Guidance
@@ -518,143 +461,29 @@ When GitHub-visible previous-round feedback exists,
perform incremental comparis
## Output Structure
-### GitHub Review Markdown Requirements
-
-- Format every review as GitHub-flavored Markdown that can be pasted directly
into a PR comment or review body.
-- The GitHub-facing review body must not be wrapped in a code fence,
blockquote, XML/HTML container, or plain-text transcript.
-- Use the same natural language as the user request unless the user explicitly
asks for another language.
-- Use Markdown headings (`### Summary`, `### Issues`, etc.) with a blank line
before and after each heading.
-- Keep the GitHub Markdown structure unchanged regardless of output language.
-- Keep `Merge Decision: ...` as a bold bullet in `Summary`, and output exactly
one merge-decision line.
-- Keep stable review labels in English, such as `Merge Decision`, `Feedback
Mode`, `Reason`, `Expert Review Needed`, `Reviewed Scope`, `Not Reviewed
Scope`, and `Verification`,
- so they remain searchable and consistent.
-- Do not include internal self-iteration rounds, draft decisions, or
self-review transcripts in the GitHub-facing review body.
-- Keep `Reason` to one sentence or one short bullet; put proof in `Evidence`,
and put confirmed blockers plus missing required proof in `Issues`.
-- Use `Evidence` for facts found in the reviewed artifacts, such as code
paths, tests, documentation, compatibility checks, and root-cause proof.
-- Use `Verification` only for reviewer-run local commands and exit codes, or
why those commands were not run.
-- Use short unordered bullets under each heading; use bold inline labels such
as `Problem:`, `Impact:`, `Required Change:`, and `Discussion Needed:` for
issue details.
-- In `### Issues`, list every merge-blocking issue discovered in the reviewed
scope; do not imply that other unlisted blocking issues exist.
-- Use only `P0`, `P1`, or `P2` for issue severity: `P0` for security,
data-loss, metadata corruption, or broken core behavior; `P1` for confirmed
functional regressions,
- incomplete root-cause fixes, incompatible behavior, or high-risk side
effects; `P2` for lower-risk but still merge-blocking defects, missing targeted
validation, or required scope cleanup.
-- Omit optional nits from `### Issues` unless they are part of a
merge-blocking pattern.
-- If missing required evidence blocks mergeability, mention that in `Summary`
-> `Reason`, and include the detailed blocker in `### Issues`.
-- Only missing evidence that blocks mergeability belongs in `### Issues`;
non-blocking verification gaps belong in `Review Details` -> `Verification`.
-- Do not put blocking missing-evidence requests only in `Review Details`; that
section is for review scope and verification facts.
-- Omit `### Next Steps` unless it adds non-duplicative cross-issue sequencing,
verification commands, or minimum missing information.
-- Use repo-relative paths with line numbers for file evidence, for example
`infra/.../Foo.java:123`; do not use local absolute file paths in GitHub-facing
review text.
-- For non-file direction evidence, use public anchors such as `PR
description`, `linked issue`, `review thread`, or official documentation links.
-- Prefer bullets over tables. Use tables only for compact status summaries
that remain readable in GitHub's narrow review pane.
-- Keep command evidence in inline code or short fenced blocks; avoid long raw
JSON, full logs, or unrendered terminal transcripts.
-- Before final output, perform a formatting self-check on the inner
GitHub-facing review body:
- - The inner GitHub-facing review body is not wrapped in a code fence,
blockquote, XML/HTML container, or transcript.
- - The inner GitHub-facing review body contains the required `###` headings
for the selected decision template.
- - The inner GitHub-facing review body contains exactly one bold `Merge
Decision: ...` line.
- - File references are repo-relative paths with line numbers, and non-file
direction evidence uses public anchors.
- - Stable labels remain in English.
- - The inner GitHub-facing review body contains no non-public downstream
project names, private/internal repository names, customer-specific or
vendor-specific context,
- private chat content, prompt process, internal self-review notes,
local-only archive details, private migration background, or intermediate
discussion results.
- - Local verification evidence is sanitized: no local absolute paths, home
directories, random temporary file or directory names, tokens, private
addresses, or undisclosed vulnerability details.
-
-### Codex Chat Delivery
-
-- When returning the review in Codex chat for the user to copy, wrap the
GitHub-facing review body in a fenced `markdown` code block.
-- The fenced code block is only a chat delivery wrapper; it is not part of the
GitHub-facing review body.
-- Tell the user to copy only the content inside the fenced block.
-- Keep any copy instruction outside the fenced block, and keep it free of
non-public downstream, private/internal, customer-specific, vendor-specific,
- prompt-process, or intermediate-discussion details.
-- When posting directly to GitHub through an API or tool, submit only the
inner GitHub-facing review body and do not include the outer fence.
-- Apply the formatting self-check to the inner GitHub-facing review body, not
to the chat delivery wrapper.
-
-### A. Not Mergeable (Change Request)
-
-Use committer tone, gentle wording, no emojis; use this GitHub Markdown
skeleton for required sections:
-
-When required, add `- **Expert Review Needed:** ...` under `Summary`; omit
this bullet when no expert review is required.
-
-```markdown
-### Summary
-
-- **Merge Decision: Not Mergeable**
-- **Feedback Mode: Change Request**
-- **Reason:** ...
-
-### Issues
-
-- **[P0|P1|P2] Short issue title** (`path/to/File.java:123`)
- - **Problem:** ...
- - **Impact:** ...
- - **Required Change:** Please ...
-
-### Review Details
-
-- **Reviewed Scope:** ...
-- **Not Reviewed Scope:** ...
-- **Verification:** ...
-- **Release Note / User Docs:** ...
-```
-
-Optional sections for `Not Mergeable`; do not output optional headings with
placeholder text:
-
-- `### Positive Feedback`: insert after `Summary` only when there is a
genuinely correct direction-aligned change.
-- `### Unrelated Changes`: insert after `Issues` only when substantive
unrelated changes or substantive scope expansion exist, and explicitly ask for
rollback or scope narrowing.
-- `### Next Steps`: insert before `Review Details` only when it adds
non-duplicative cross-issue sequencing, verification commands, or minimum
missing information.
-- `### Multi-Round Comparison`: insert before `Review Details` only when
previous-round feedback exists in GitHub-visible PR comments, review threads,
or change requests.
-
-### B. Not Mergeable (Needs Discussion)
-
-Use this template when the current PR direction, root-cause model, problem
framing, expected behavior, or ownership boundary must be reopened before
implementation continues.
-Do not include patch-level `Required Change` bullets for the current
implementation direction.
-
-When required, add `- **Expert Review Needed:** ...` under `Summary`; omit
this bullet when no expert review is required.
-
-```markdown
-### Summary
-
-- **Merge Decision: Not Mergeable**
-- **Feedback Mode: Needs Discussion**
-- **Reason:** ...
+GitHub-facing review bodies must be GitHub Markdown, use the user's language
unless requested otherwise, and contain exactly one bold `Review Result: ...`
line under `### Summary`.
+Do not wrap GitHub-facing text in a code fence, blockquote, XML/HTML
container, or transcript.
+Use stable English labels: `Review Result`, `Feedback Mode`, `Reason`,
`Reviewed Scope`, `Not Reviewed Scope`, `Verification`, and `Release Note /
User Docs`.
+Use repo-relative file references with line numbers, public anchors for
non-file evidence, and sanitized verification summaries.
+Do not include internal drafts, self-review notes, private context, local
absolute paths, temp paths, tokens, or raw long logs.
-### Discussion Needed
+When returning a review in Codex chat for the user to copy, wrap only the
GitHub-facing body in a fenced `markdown` block.
+When posting directly through a tool, submit only the inner GitHub-facing body.
-- **Problem:** ...
-- **Impact:** ...
-- **Discussion Needed:** Please pause the current implementation direction and
confirm ...
-- **Suggested Label:** `type: discussion`
+Use these required structures:
-### Review Details
-
-- **Reviewed Scope:** ...
-- **Not Reviewed Scope:** ...
-- **Verification:** ...
-- **Release Note / User Docs:** ...
-```
+- `Mergeable`: `### Summary` with `Review Result` and `Reason`; `###
Evidence`; `### Review Details`.
+- `Not Mergeable`: `### Summary` with `Review Result`, exactly one `Feedback
Mode`, and `Reason`; `### Issues`; `### Review Details`.
+- `Review Incomplete`: `### Summary` with `Review Result` and `Reason`; `###
Incomplete Reason`; `### Verified Facts`; `### Required Evidence`; `### Review
Details`.
+- `Correction`: prepend `### Correction` with `Previous Finding`, `Current
Status` (`Retained`, `Withdrawn`, or `Changed to Review Incomplete`), and
`Reason`;
+ then output the applicable current result structure with exactly one bold
`Review Result` line under `### Summary`.
+For `Not Mergeable`, choose `Feedback Mode: Change Request` for patch-level
required changes or `Feedback Mode: Needs Discussion` when the current
direction, root-cause model, problem framing, expected behavior, or ownership
boundary must be reopened.
+Do not include patch-level `Required Change` bullets after choosing `Needs
Discussion`.
+Use `P0`, `P1`, or `P2` issue severity, and include `Problem`, `Impact`, and
either `Required Change` or `Discussion Needed`.
Use `status: need more info` instead of `type: discussion` only when missing
public evidence blocks root-cause or scope classification.
-
-### C. Mergeable
-
-Use this GitHub Markdown skeleton:
-
-When required, add `- **Expert Review Needed:** ...` under `Summary`; omit
this bullet when no expert review is required.
-
-```markdown
-### Summary
-
-- **Merge Decision: Mergeable**
-- **Reason:** ...
-
-### Evidence
-
-- Root-cause fix evidence.
-- Hard gate evidence covering scope/ownership, regression risk, tests, code
quality, architecture, and user-facing release/docs impact.
-
-### Review Details
-
-- **Reviewed Scope:** ...
-- **Not Reviewed Scope:** ...
-- **Verification:** Reviewer-run local verification and exit codes, or why
local verification was not run.
-- **Release Note / User Docs:** Required and verified, delegated to an
umbrella PR with reason, missing, not required with reason, or not reviewed.
-```
+Optional `Not Mergeable` sections are `Positive Feedback`, `Unrelated
Changes`, `Next Steps`, and `Multi-Round Comparison`; omit placeholder headings.
+`Review Incomplete` must not contain patch-level code suggestions. If evidence
already supports a concrete code change, use `Review Result: Not Mergeable`.
## Feedback Tone Guidelines
@@ -670,18 +499,20 @@ When required, add `- **Expert Review Needed:** ...`
under `Summary`; omit this
## Prohibited Items
-- Do not output `Mergeable` when evidence is insufficient or risks are unclear.
+- Do not output `Review Result: Mergeable` when evidence is insufficient,
risks are unclear, or relevant CI is failing.
+- Do not output `Review Result: Not Mergeable` for reviewer uncertainty,
inaccessible public facts, unavailable tools, or skipped local verification;
use `Review Incomplete` when those facts are required.
- Do not use "fallback logic passes tests" to replace proof of root-cause
repair.
- Do not treat fixture-injected or mocked-path tests as full end-to-end proof
without explicitly stating the gap.
-- Do not output `Mergeable` only because previous-round blockers were closed;
always do one fresh-pass semantic and regression scan on the latest head.
+- Do not output `Review Result: Mergeable` only because previous-round
blockers were closed; always do one fresh-pass semantic and regression scan on
the latest head.
- Do not ignore substantive unrelated changes.
- Do not reuse old conclusions after new commits are added without re-review.
- Do not include emojis in review feedback text.
-- Do not inspect or report GitHub Actions / CI status unless explicitly
requested.
+- Do not use CI success as the sole reason for `Mergeable`.
+- Do not ignore CI/check-run evidence when it is relevant under `Evidence
Sufficiency and CI Judgment`.
- Do not include non-public downstream project names, private/internal
repository names, customer-specific or vendor-specific context, private chats,
prompt process, internal archive details,
private migration background, intermediate discussion results, local
absolute paths, or unsanitized temporary file names in GitHub-facing review
output.
- Do not output patch-level `Required Change` requests after selecting
`Feedback Mode: Needs Discussion`.
-- Do not output `Mergeable` when a required hard gate remains unresolved,
including missing required test evidence, release notes, user docs, migration
guidance, or diagnostic quality evidence.
-- Do not output `Mergeable` for a shared-code change unless you have checked
at least one non-target dialect or feature that also uses the changed path.
-- Do not output `Mergeable` when local verification omitted `-am` on a
module-scoped Maven run and dependency freshness matters.
-- Do not output `Mergeable` when Proxy/JDBC DML/DQL high-frequency SQL paths
directly call `ConcurrentHashMap#computeIfAbsent` without a preceding `get`
miss check.
+- Do not output `Review Result: Mergeable` when a required hard gate remains
unresolved, including missing required test evidence, release notes, user docs,
migration guidance, or diagnostic quality evidence.
+- Do not output `Review Result: Mergeable` for a shared-code change unless you
have checked at least one non-target dialect or feature that also uses the
changed path.
+- Do not output `Review Result: Mergeable` when local verification omitted
`-am` on a module-scoped Maven run and dependency freshness matters.
+- Do not output `Review Result: Mergeable` when Proxy/JDBC DML/DQL
high-frequency SQL paths directly call `ConcurrentHashMap#computeIfAbsent`
without a preceding `get` miss check.
diff --git a/.codex/skills/review-pr/agents/openai.yaml
b/.codex/skills/review-pr/agents/openai.yaml
index 8704b7c5e31..68243ba55b1 100644
--- a/.codex/skills/review-pr/agents/openai.yaml
+++ b/.codex/skills/review-pr/agents/openai.yaml
@@ -20,6 +20,6 @@ interface:
short_description: "Root-cause-first merge review and discussion triage"
default_prompt: >-
Use $review-pr to check whether this ShardingSphere PR fixes the root
cause,
- assess design/performance/compatibility risks, produce a merge decision,
and
- output committer-style change requests or needs-discussion feedback in the
same
- language as the user.
+ assess design/performance/compatibility risks, produce a Mergeable,
+ Not Mergeable, or Review Incomplete result, and output committer-style
+ feedback in the same language as the user.
diff --git a/.codex/skills/review-pr/references/sql-parser-review.md
b/.codex/skills/review-pr/references/sql-parser-review.md
new file mode 100644
index 00000000000..022fa0918b1
--- /dev/null
+++ b/.codex/skills/review-pr/references/sql-parser-review.md
@@ -0,0 +1,49 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+# SQL Parser Review Reference
+
+Read this reference before reviewing PRs that touch SQL grammar, SQL visitor
classes, parser tests, SQL syntax docs, dialect parser behavior, or
parser-generated baseline resources.
+
+## Official Evidence
+
+- Prefer the target database's official SQL reference/manual as first-class
evidence.
+- When the PR or review comment mentions a concrete SQL syntax form, cite the
exact official documentation page that supports that form.
+- If official docs do not clearly support the syntax, do not infer support
from another dialect, secondary article, parser implementation, or AI-reposted
content alone.
+- Reject syntax support that cannot be proven from official documentation
unless the PR explicitly scopes it as ShardingSphere-specific behavior and
maintainers accept that scope.
+
+## Dialect Family
+
+- Build the dialect-family map from repository conventions before judging
parser scope.
+- If the touched dialect is a trunk parser, inspect affected branch dialect
parser files, tests, and docs.
+- If the touched dialect is a branch parser, inspect the trunk parser and
sibling branch dialects that may share or copy the same logic.
+- For each related dialect, decide whether the same root cause exists, whether
the PR fixes it, and whether validation or non-applicability evidence is
present.
+- Do not silently treat unreviewed related dialects as safe.
+
+## Review Questions
+
+- Does the PR preserve precedence, name resolution, and shadowing semantics
for adjacent valid cases?
+- Would same-name or shadowing cases now take a different path?
+- If shared parser code is touched, would another dialect now diverge from its
documented semantics?
+- Are accepted, rejected, and unsupported syntax boundaries explicit?
+- Do parser tests cover each affected dialect or explain why the dialect is
not affected?
+- Do ShardingSphere docs, examples, release notes, and generated baselines
remain consistent with the parser behavior?
+
+## Output Requirements
+
+- In `Reviewed Scope`, name the target dialect, related trunk or branch
dialects checked, official documentation pages used, and repo docs or examples
checked.
+- If syntax evidence is missing or contradicted, classify the result using the
main skill's evidence sufficiency rules instead of guessing.