You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2026/10/21 13:03:09 UTC

(shardingsphere) branch master updated: Refine review-pr qualified negative reporting (#40319)

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 e37ce2d64e9 Refine review-pr qualified negative reporting (#40319)
e37ce2d64e9 is described below

commit e37ce2d64e99f151cc33f9702725496a82b6b65b
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Wed Oct 21 21:03:02 2026 +0800

    Refine review-pr qualified negative reporting (#40319)
---
 .codex/harness/agents/cases.toml                   | 46 ++++++++++++++++++++--
 .codex/skills/review-pr/SKILL.md                   | 31 +++++++++------
 .../review-pr/references/review-coordination.md    |  6 ++-
 3 files changed, 67 insertions(+), 16 deletions(-)

diff --git a/.codex/harness/agents/cases.toml b/.codex/harness/agents/cases.toml
index 10178e95912..0ba06bce19f 100644
--- a/.codex/harness/agents/cases.toml
+++ b/.codex/harness/agents/cases.toml
@@ -2656,7 +2656,7 @@ phase = "review-pr mandatory style verification"
 ordinary_loop = true
 profile = "review-pr"
 semantic_policy_assertions = true
-prompt = "Checkstyle and Spotless passed for public PR head `aaa111`. The PR then added a commit, and the latest authoritative head is now `bbb222`; the accurate new candidate is available and the remaining review found no issue. Complete the Code Correctness Review without querying CI, editing, or changing Git or remote state."
+prompt = "Checkstyle and Spotless passed for public PR head `aaa111`. The PR then added a commit, and the latest authoritative head is now `bbb222`; the accurate new candidate is available and the remaining review found no issue. The new commit changed Java files governed by both tools, invalidating their earlier passing results for those inputs; neither check has run on the changed inputs. The current decision point is running the invalidated style checks. Subsequent review completion a [...]
 decision = "proceed"
 required_actions = ["inspect_local", "run_local_checks"]
 allowed_actions = ["inspect_local", "run_local_checks", "wrap_high_output"]
@@ -4501,7 +4501,7 @@ required_summary_terms = ["A=obtain-one-fresh-assessment", "A_verdict=no-formal-
 forbidden_summary_terms = ["A=stop-not-converged", "A_verdict=review-incomplete", "B=review-incomplete", "C=mergeable", "D=claim-completed-dual-review", "E=obtain-seventh-assessment", "E_verdict=review-incomplete", "F=stop-not-converged", "G=count-coordinator-and-checks"]
 critical = true
 policy_binding_profile = "review-pr"
-policy_assertions = [{source = "review-pr-coordination", statements = ["Permit at most six complete independent assessments in at most five stages for one unchanged review basis: two in the first stage and one in each subsequent stage.", "Coordinator result reviews, evidence checks and verification reports do not count toward this limit.", "If confirmation remains unfinished, verify available evidence and obtain only one fresh independent complete assessment at a time while fewer than si [...]
+policy_assertions = [{source = "review-pr-coordination", statements = ["Permit at most six complete independent assessments in at most five stages for one unchanged review basis: two in the first stage and one in each subsequent stage.", "Coordinator result reviews, evidence checks and verification reports do not count toward this limit.", "If confirmation remains unfinished, verify available evidence and obtain only one fresh independent complete assessment at a time while fewer than si [...]
 
 [[cases]]
 id = "review_confirmation_requires_fresh_adjacent_agreement"
@@ -4521,7 +4521,7 @@ required_summary_terms = ["A=complete", "B=complete", "C=continue", "D=complete"
 forbidden_summary_terms = ["A=continue", "B=require-identical-reports", "C=complete-on-stable-adjudication", "D=require-another-report", "E=require-stable-classification", "F=continue-on-metadata-change", "G=publish-completed-result"]
 critical = true
 policy_binding_profile = "review-pr"
-policy_assertions = [{source = "review-pr-coordination", statements = ["Permit at most six complete independent assessments in at most five stages for one unchanged review basis: two in the first stage and one in each subsequent stage.", "Confirm the overall assessment as soon as complete current-basis coverage and required verification are established, every known candidate has an evidence-based disposition, the supporting evidence and counter-evidence are sufficient, and no unresolved  [...]
+policy_assertions = [{source = "review-pr-coordination", statements = ["Permit at most six complete independent assessments in at most five stages for one unchanged review basis: two in the first stage and one in each subsequent stage.", "Confirm the overall assessment as soon as complete current-basis coverage and required verification are established, every known candidate has an evidence-based disposition, the supporting evidence and counter-evidence are sufficient, and no unresolved  [...]
 
 [[cases]]
 id = "review_confirmation_restarts_after_basis_change"
@@ -4543,6 +4543,46 @@ critical = true
 policy_binding_profile = "review-pr"
 policy_assertions = [{source = "review-pr-coordination", statements = ["A changed effective candidate, requirement, rule version or outcome-sensitive external fact invalidates the affected prior assessments; never combine results from different bases to pass this gate.", "Start fresh confirmation on the changed basis while retaining the original task baseline, attributed scope, historical candidates and original assessments.", "Obtain a new initial pair on the changed basis; earlier basi [...]
 
+[[cases]]
+id = "review_proven_blocker_without_session_confirmation"
+group = "review-pr independent review coordination"
+description = "Publishes a qualified negative review from immutable current-candidate proof when bookkeeping cannot finish."
+phase = "read-only qualified negative publication"
+ordinary_loop = false
+profile = "review-pr"
+semantic_policy_assertions = true
+prompt = "Produce the final copy-ready English Formal Review report using only these synthetic facts; do not inspect files, run commands or edit anything. Candidate C1 has an authoritative two-file inventory, Foo.java and Bar.java, and the accepted contract requires Foo to return one result for a supported nonempty input. Immutable current-candidate source and an execution record show entry -> Foo computation -> consumer returning zero instead. The coordinator has verified candidate iden [...]
+decision = "proceed"
+required_actions = []
+allowed_actions = []
+forbidden_actions = ["inspect_local", "edit_code", "edit_non_code", "run_local_checks", "run_pre_handoff_review", "propose_commit_message", "mutate_git", "mutate_remote"]
+required_reasons = ["read_only_request"]
+required_summary_terms = ["```markdown", "### Result", "Review Result: Not Mergeable", "Feedback Mode: Change Request", "Review Status: Not Converged", "Confirmed Blocking Issues: 1", "### Blocking Issues", "Evidence", "Impact", "Required Change", "### Coverage", "Foo", "Bar"]
+forbidden_summary_terms = ["Review Result: Mergeable", "Review Result: Review Incomplete", "Task Status: Completed"]
+critical = true
+policy_binding_profile = "review-pr"
+policy_assertions = [{source = "review-pr", statements = ["In Formal Review Mode, when a concrete failure prevents completing the required review or the current basis reaches its confirmation limit, automatically publish `Not Mergeable` if at least one current-candidate finding passes the Finding Proof Gate and substantive coordinator review.", "The coordinator must verify candidate identity, source versions, the full failing path and strongest counter-evidence; unresolved facts or diffe [...]
+
+[[cases]]
+id = "review_negative_result_requires_current_proof"
+group = "review-pr independent review coordination"
+description = "Separates proved negative conclusions from disagreement, stale evidence, unresolved challenges and early stopping."
+phase = "read-only negative result boundary assessment"
+ordinary_loop = false
+profile = "review-pr"
+semantic_policy_assertions = true
+prompt = "Answer this self-contained read-only policy question using only the supplied facts and bound rules; do not inspect files, run commands, edit anything or produce a Formal Review report. The states below are independent. A: three pairs have exhausted the unchanged-basis confirmation limit. One current code blocker satisfies all five Finding Proof Gate conditions and coordinator verification; differences concern only another finding and cannot invalidate the blocker. Choose A=not- [...]
+decision = "proceed"
+required_actions = []
+allowed_actions = []
+forbidden_actions = ["inspect_local", "edit_code", "edit_non_code", "run_local_checks", "run_pre_handoff_review", "propose_commit_message", "mutate_git", "mutate_remote"]
+required_reasons = ["read_only_request"]
+required_summary_terms = ["A=not-mergeable-with-not-converged", "B=no-formal-result", "C=no-formal-result", "D=continue-proof", "E=mergeable", "F=needs-discussion", "G=continue-review"]
+forbidden_summary_terms = ["A=no-formal-result", "B=not-mergeable", "C=reuse-old-blocker", "D=not-mergeable", "E=not-converged", "F=code-change-request", "G=stop-at-first-blocker"]
+critical = true
+policy_binding_profile = "review-pr"
+policy_assertions = [{source = "review-pr", statements = ["In Formal Review Mode, when a concrete failure prevents completing the required review or the current basis reaches its confirmation limit, automatically publish `Not Mergeable` if at least one current-candidate finding passes the Finding Proof Gate and substantive coordinator review.", "The coordinator must verify candidate identity, source versions, the full failing path and strongest counter-evidence; unresolved facts or diffe [...]
+
 [[cases]]
 id = "review_confirmation_shares_read_only_and_coding_route"
 group = "review-pr independent review coordination"
diff --git a/.codex/skills/review-pr/SKILL.md b/.codex/skills/review-pr/SKILL.md
index b63796d27e3..5e21e01578f 100644
--- a/.codex/skills/review-pr/SKILL.md
+++ b/.codex/skills/review-pr/SKILL.md
@@ -79,10 +79,9 @@ unchanged basis.
 5. Treat every concern as a candidate until it passes the Finding Proof Gate.
 6. Do not turn uncertainty, inaccessible evidence, tool failure, skipped
    verification, or uninspected counter-evidence into a blocker.
-7. In Formal Review, do not select a verdict, stop at the first blocker, or publish findings before the Completion Gate.
-   Consolidate findings by independent fix boundary and return the complete
-   current-head set once. Only an explicit request for status, narrow review, or
-   early high-risk blockers authorizes a partial result.
+7. In Formal Review, complete the required review and do not stop at the first blocker.
+   Consolidate findings by independent fix boundary and return the complete current-head set once after the Completion Gate.
+   Before that gate, publish only an explicitly requested status, narrow review or early high-risk blocker, or the qualified negative result defined in the Formal Decision Contract.
 8. Follow `AGENTS.md` for repository authority, evidence, scope, safety, and sensitive data, and follow the applicable canonical references below for implementation, testing, contract, non-regression, and verification criteria.
 
 ## Repository Code Policy References
@@ -138,7 +137,7 @@ Map the gate result before applying the remaining Formal Decision Contract.
 - If Checkstyle or Spotless fails on an applicable PR-impact file, return `Not Mergeable` with `Feedback Mode: Change Request`.
 - A style-check failure result must include `Feedback Mode: Change Request` and the blocking-issue count in `### Result`, then identify each failed check and affected PR-impact file in `### Blocking Issues`.
 - A style-check failure result must also include `### Coverage` with the effective candidate SHA, authoritative files accounted for, failed command, exit code, and affected PR-impact file.
-- If environment, dependency, candidate-materialization, tool, or coverage-proof failure leaves any applicable PR-impact file unverified, return `Review Incomplete`.
+- If environment, dependency, candidate-materialization, tool, or coverage-proof failure leaves any applicable PR-impact file unverified, apply the Formal Decision Contract's qualified negative rule; otherwise return `Review Incomplete`.
 - If a module-scoped command fails only on unchanged files, narrow the check reliably or compare the base and effective candidate before attribution; do not classify the PR from that module failure alone.
 - If a check has no applicable PR-impact file, record `Not Applicable` and the repository-configuration basis in `### Coverage`.
 - Only successful current-candidate evidence for both checks, or an explicit not-applicable determination for either check, permits the remaining Formal Decision Contract to select `Mergeable`.
@@ -200,7 +199,7 @@ All three discovery lenses may share the same current source material, but each
 9. Run a convergence pass across the complete candidate and its affected behavior and contracts, including the latest delta.
    If it finds a new independent candidate, return to step 6; otherwise freeze the assessment after the Completion Gate.
 
-If an outcome-sensitive decisive fact passes the Review Incomplete Proof Gate, return the mode-appropriate incomplete result.
+If an outcome-sensitive decisive fact passes the Review Incomplete Proof Gate, apply the Formal Decision Contract to the proven findings and remaining gap.
 Otherwise continue the review or request a split; do not produce a complete verdict from a partial review.
 
 ## Completion Gate and Scripts
@@ -247,16 +246,23 @@ Sources use `rule`, `requirement` or `evidence` roles; `--anchors` takes an anch
 
 Use `base` for original content and `candidate` for effective content; text blocks need an anchor overlapping their changed lines, whole-object binary, mode or rename changes omit the line bounds, and `source` anchors require the declared source's matching origin and path.
 
-If the gate cannot pass because a gap satisfies the Review Incomplete Proof Gate, return `Review Incomplete` in Formal Review and state the incomplete evidence without a formal verdict in a discussion reply.
+If the gate cannot pass because a gap satisfies the Review Incomplete Proof Gate, apply the Formal Decision Contract's qualified negative rule before selecting the incomplete result.
+When no qualified negative result applies, return `Review Incomplete` in Formal Review and state the incomplete evidence without a formal verdict in a discussion reply.
 When confirmed blockers coexist with a proven gap that could hide more blockers, list them as confirmed partial facts but do not present them as the complete change-request set.
 
 ## Formal Decision Contract
 
-Map the canonical assessment to Formal Review only after the Completion Gate
-evaluation and Independent Review Coordination:
+In Formal Review Mode, when a concrete failure prevents completing the required review or the current basis reaches its confirmation limit, automatically publish `Not Mergeable` if at least one current-candidate finding passes the Finding Proof Gate and substantive coordinator review.
+The coordinator must verify candidate identity, source versions, the full failing path and strongest counter-evidence; unresolved facts or differences must not be capable of invalidating that finding.
+This qualified negative result also applies when local Git objects, ledgers or session validation are unavailable but admissible immutable evidence independently proves the finding.
+Use the existing feedback-mode rules for the proven findings, including `Needs Discussion` for an evidenced required maintainer decision.
+A candidate, disputed, withdrawn or stale finding, a tool failure, or non-convergence alone cannot justify this result.
+The exception permits a qualified negative report while full coverage or confirmation remains unfinished; it does not permit `Mergeable`, an exhaustive finding-set claim, a successful ledger or session-validation claim, or coding-task completion.
 
-1. If the gate fails because a gap satisfies the Review Incomplete Proof Gate, use `Review Incomplete`, even when some blockers are already confirmed.
-2. If the Mandatory Style Verification Gate is incomplete for any applicable PR-impact file, use `Review Incomplete`, even when some blockers are already confirmed.
+For a complete result, evaluate the Completion Gate and Independent Review Coordination, then apply the following mapping:
+
+1. If the gate fails because a gap satisfies the Review Incomplete Proof Gate and no qualified negative result applies, use `Review Incomplete`.
+2. If the Mandatory Style Verification Gate is incomplete for any applicable PR-impact file and no qualified negative result applies, use `Review Incomplete`.
 3. If Checkstyle or Spotless fails on an applicable PR-impact file, use `Not Mergeable` with `Feedback Mode: Change Request`.
 4. If admissible evidence disproves the problem model, expected behavior, ownership, protocol or SQL semantics, compatibility assumption, accepted project commitment, or solution direction, or establishes that a new project commitment still requires a maintainer decision, use `Not Mergeable` with `Feedback Mode: Needs Discussion`.
 5. If at least one candidate passes the Finding Proof Gate, use `Not Mergeable`
@@ -306,6 +312,9 @@ Use this format for both public-PR and local-candidate reviews.
 - `Not Mergeable`: `### Result` with exactly one `Review Result: Not Mergeable` line, one `Feedback Mode`, a `Blocking Issues: N` line, and a concise reason; `### Blocking Issues`; `### Coverage`.
 - `Review Incomplete`: `### Result` with exactly one `Review Result: Review Incomplete` line and a concise reason; `### Confirmed Issues` when any are already proven; `### Verified Facts`; `### Required Evidence`; `### Coverage`.
 
+For a qualified negative result, use the `Not Mergeable` structure with `Review Status: Not Converged` and `Confirmed Blocking Issues: N` in place of `Blocking Issues: N`.
+State that the findings are a confirmed subset, and report the actual completed and unreviewed coverage, unresolved differences, failed or unavailable checks, and the reason confirmation could not finish.
+
 For each blocking issue include:
 
 - `Evidence`: current public or sanitized verification anchor.
diff --git a/.codex/skills/review-pr/references/review-coordination.md b/.codex/skills/review-pr/references/review-coordination.md
index 9f810a28560..a1bca4edfd8 100644
--- a/.codex/skills/review-pr/references/review-coordination.md
+++ b/.codex/skills/review-pr/references/review-coordination.md
@@ -68,7 +68,8 @@ A newly proved finding or an evidence-based change in status, classification, di
 The coordinator must retain and compare prior adjudications even though fresh reviewers must not receive them.
 Do not select an arbitrary matching subset of reports or impose an unagreed stage or time limit.
 Do not extend the six-assessment limit without explicit user authorization.
-If confirmation remains unfinished after six assessments or a concrete failure prevents continuing confirmation, report `Review Status: Not Converged`, that reason, the confirmed facts and unresolved differences without a formal `Review Result` line or a mergeability conclusion.
+If confirmation remains unfinished after six assessments or a concrete failure prevents continuing confirmation, report `Review Status: Not Converged`, the reason, confirmed facts and unresolved differences, and apply the main Skill's qualified negative rule.
+When no current blocker satisfies that rule, omit a formal `Review Result` line or mergeability conclusion unless the Review Incomplete Proof Gate establishes an incomplete result.
 Disagreement, exhausted review attempts or an unavailable isolation mechanism do not satisfy the Review Incomplete Proof Gate.
 
 When authoritative scope cannot be established, preserve the Review Incomplete Proof Gate's missing-scope evidence route and state explicitly that complete independent code reviews could not start.
@@ -102,7 +103,8 @@ Individual reports may differ from that final adjudication only with recorded ev
 Before publishing a completed Formal Review result or an overall readiness conclusion in a discussion reply, run `scripts/review_ledger.py validate-session --session <JSON>` after the coordinator's substantive result review.
 The command is read-only and validates records, references and evidence freshness; it neither launches reviewers nor proves their isolation or semantic correctness.
 If session validation fails, inspect the exact failure and correct only an unsupported record or missing evidence; never rewrite an original assessment or change issue mappings merely to obtain a pass.
-Only the coordinator emits the final report under the Output Contract after validation succeeds.
+Only the coordinator emits the final report under the Output Contract.
+Complete confirmation requires successful session validation; when it cannot finish, follow the main Skill's qualified negative rule without claiming validation succeeded.
 
 ## Review-Material Lifecycle