Merge pull request 'feat: canonical validation wording, baseline proof, and closure gate (Closes #529)' (#598) from feat/issue-529-canonical-validation-wording into master

This commit was merged in pull request #598.
This commit is contained in:
2026-07-09 17:30:52 -05:00
8 changed files with 651 additions and 1 deletions
+23
View File
@@ -6321,6 +6321,7 @@ def gitea_close_issue(
host: str | None = None,
org: str | None = None,
repo: str | None = None,
closure_report: str | None = None,
) -> dict:
"""Close an issue by setting its state to 'closed'.
@@ -6330,6 +6331,9 @@ def gitea_close_issue(
host: Override the Gitea host.
org: Override the owner/organization.
repo: Override the repository name.
closure_report: Optional validation/closure summary. When it claims a
non-zero test-suite exit is an "expected pre-existing"/baseline
failure without pre-merge proof, the close fails closed (#529).
Returns:
dict with 'success' boolean and 'message'.
@@ -6339,6 +6343,25 @@ def gitea_close_issue(
if blocked:
return blocked
verify_preflight_purity(remote, task="close_issue")
# #529: block closure that buries an unproven non-zero suite exit as an
# "expected pre-existing failure". Skipped when no closure report is given.
from controller_closure_baseline_proof import (
assess_controller_closure_baseline_proof,
)
closure_gate = assess_controller_closure_baseline_proof(closure_report)
if closure_gate["block"]:
return {
"success": False,
"blocked": True,
"message": (
f"Issue #{issue_number} close blocked (#529): closure report "
"claims an expected pre-existing/baseline failure without "
"pre-merge proof."
),
"reasons": closure_gate["reasons"],
"safe_next_action": closure_gate["safe_next_action"],
}
h, o, r = _resolve(remote, host, org, repo)
auth = _auth(h)
url = f"{repo_api_url(h, o, r)}/issues/{issue_number}"