feat(continuation): formalize continuation proofs for claim and push (closes #189)

Extend #188 continuation mode with issue claim status evidence,
force-with-lease push reporting, canonical secret sweep helper, and
composite final-report checks wired into assess_issue_selection_final_report.
This commit is contained in:
2026-07-06 11:54:40 -04:00
parent e441b81d3b
commit 1158594a20
3 changed files with 264 additions and 6 deletions
+137
View File
@@ -28,6 +28,9 @@ from review_proofs import ( # noqa: E402
assess_capability_proof,
assess_contradictory_no_pr_claim,
assess_continuation_mode_report,
assess_force_with_lease_push_report,
canonical_secret_sweep_report,
CANONICAL_SECRET_SWEEP_COMMAND,
assess_controller_handoff,
assess_edited_pr_inventory_coverage,
assess_empty_queue_report,
@@ -1761,6 +1764,7 @@ class TestIssueSelectionContinuation(unittest.TestCase):
"- Continuation mode: issue #182 continuation",
"- Existing PR: #186",
"- PR author: jcwalker3",
"- Issue claim status: status:in-progress",
"- Branch: feat/issue-182-controller-handoff",
f"- Old PR head: {self.OLD_SHA}",
f"- New PR head: {self.NEW_SHA}",
@@ -1773,6 +1777,8 @@ class TestIssueSelectionContinuation(unittest.TestCase):
continuation_proof={
"pr_number": 186,
"pr_author": "jcwalker3",
"issue_number": 182,
"issue_claim_status": "status:in-progress",
"branch": "feat/issue-182-controller-handoff",
"old_head_sha": self.OLD_SHA,
"new_head_sha": self.NEW_SHA,
@@ -1785,5 +1791,136 @@ class TestIssueSelectionContinuation(unittest.TestCase):
self.assertEqual(result["grade"], "A")
class TestContinuationModeProofs(unittest.TestCase):
"""Issue #189: formal continuation proofs beyond #188 selection wall."""
OLD_SHA = PINNED
NEW_SHA = OTHER
REMOTE_OLD = "601c608c00000000000000000000000000000000"
LEASE_SHA = "45c5cac2bc49dd112766ea218b18a71e9c5f8e99"
PUSHED_SHA = "45c5cac2bc49dd112766ea218b18a71e9c5f8e99"
def test_force_with_lease_requires_lease_evidence(self):
report = (
"Issue #182 continuation. force-with-lease push to "
"feat/issue-182-controller-handoff-enforcement."
)
result = assess_force_with_lease_push_report(
report,
old_remote_head=self.REMOTE_OLD,
expected_lease_head=self.LEASE_SHA,
new_pushed_head=self.PUSHED_SHA,
branch_pushed="feat/issue-182-controller-handoff-enforcement",
used_force_with_lease=True,
)
self.assertTrue(result["downgraded"])
def test_force_with_lease_complete_with_full_evidence(self):
report = (
"Issue #182 continuation with git push --force-with-lease. "
f"Old remote head {self.REMOTE_OLD}. "
f"Lease head {self.LEASE_SHA}. "
f"Pushed head {self.PUSHED_SHA}. "
"Branch feat/issue-182-controller-handoff-enforcement. "
"Push branch only: only the feature branch was pushed."
)
result = assess_force_with_lease_push_report(
report,
old_remote_head=self.REMOTE_OLD,
expected_lease_head=self.LEASE_SHA,
new_pushed_head=self.PUSHED_SHA,
branch_pushed="feat/issue-182-controller-handoff-enforcement",
used_force_with_lease=True,
)
self.assertTrue(result["complete"])
def test_continuation_requires_issue_claim_status(self):
report = (
"Issue #182 continuation mode. PR #186. "
f"old head {self.OLD_SHA} new head {self.NEW_SHA}. "
"PR author jcwalker3. Branch feat/issue-182-test."
)
result = assess_continuation_mode_report(
report,
pr_number=186,
pr_author="jcwalker3",
issue_number=182,
issue_claim_status="status:in-progress",
branch="feat/issue-182-test",
old_head_sha=self.OLD_SHA,
new_head_sha=self.NEW_SHA,
)
self.assertTrue(result["downgraded"])
def test_canonical_secret_sweep_helper(self):
sweep = canonical_secret_sweep_report(clean=True)
self.assertEqual(sweep["method"], CANONICAL_SECRET_SWEEP_COMMAND)
self.assertTrue(sweep["clean"])
def test_continuation_final_report_with_push_and_sweep_earns_a(self):
branch = "feat/issue-182-controller-handoff-enforcement"
report = "\n".join([
"Issue #182 continuation mode — status:in-progress already set.",
f"PR #186 updated via git push --force-with-lease.",
f"Old PR head {self.OLD_SHA}; new PR head {self.NEW_SHA}.",
f"Old remote head {self.REMOTE_OLD}.",
f"Lease head {self.LEASE_SHA}. Pushed head {self.PUSHED_SHA}.",
f"Branch {branch}. Push branch only: only the feature branch.",
"PR author: jcwalker3. Session authored PR: yes.",
"Continuation allowed: operator requested rebase.",
"Open PR inventory included PR #186.",
"## Controller Handoff",
"- Task: continuation",
"- Repo: Scaled-Tech-Consulting/Gitea-Tools",
"- Role: author",
"- Identity: prgs-author",
"- Issue/PR: #182 / PR #186",
f"- Branch/SHA: {branch}",
"- Files changed: review_proofs.py",
"- Validation: tests passed",
"- Mutations: push_branch",
"- Workspace mutations: none",
"- Current status: PR mergeable",
"- Blockers: none",
"- Next: review",
"- Safety: no review/merge",
"- Continuation mode: issue #182 continuation",
"- Existing PR: #186",
"- PR author: jcwalker3",
"- Issue claim status: status:in-progress",
f"- Branch: {branch}",
f"- Old PR head: {self.OLD_SHA}",
f"- New PR head: {self.NEW_SHA}",
"- Session authored PR: yes",
"- Why continuation allowed: operator requested rebase",
])
result = assess_issue_selection_final_report(
report,
mode="continuation",
continuation_proof={
"pr_number": 186,
"pr_author": "jcwalker3",
"issue_number": 182,
"issue_claim_status": "status:in-progress",
"branch": branch,
"old_head_sha": self.OLD_SHA,
"new_head_sha": self.NEW_SHA,
"session_authored_pr": True,
"continuation_allowed_reason": "operator requested rebase",
"push_proof": {
"old_remote_head": self.REMOTE_OLD,
"expected_lease_head": self.LEASE_SHA,
"new_pushed_head": self.PUSHED_SHA,
"branch_pushed": branch,
"used_force_with_lease": True,
},
"secret_sweep": canonical_secret_sweep_report(clean=True),
},
edited_pr_numbers=[186],
inventoried_pr_numbers=[186],
)
self.assertEqual(result["grade"], "A")
if __name__ == "__main__":
unittest.main()