fix(agent): keep completed milestones monotonic
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 1s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 1m21s
CD Pipeline / build-and-deploy (push) Successful in 6m48s
CD Pipeline / post-deploy-checks (push) Successful in 1m52s
AWOOOI Harbor 110 Local Repair / workflow-shape (push) Successful in 1s
AWOOOI Harbor 110 Local Repair / harbor-110-local-repair (push) Successful in 17s

This commit is contained in:
ogt
2026-07-11 17:58:56 +08:00
parent 3274162185
commit 09d630df2b
2 changed files with 200 additions and 0 deletions

View File

@@ -2393,6 +2393,42 @@ def test_ai_automation_retry_rollback_terminal_advances_order() -> None:
assert payload["current_p0_execution_focus"]["workplan_id"] == "AIA-P0-006"
def test_retry_terminal_keeps_prior_program_milestones_monotonic() -> None:
payload = load_latest_awoooi_priority_work_order_readback()
runtime_control = _autonomous_runtime_control_retry_rollback_closed()
verifier = runtime_control["autonomous_independent_post_verifier"]
verifier["closed"] = False
verifier["controls"]["verification_result_success"] = False
verifier["controls"]["all_postconditions_passed"] = False
verifier["active_blockers"] = [
"verification_result_success_not_verified",
"all_postconditions_passed_not_verified",
]
apply_ai_automation_live_closure_readbacks(
payload,
autonomous_runtime_control=runtime_control,
)
program = payload["ai_automation_program_ledger"]
items = {item["id"]: item for item in program["work_items"]}
verifier_item = items["AIA-P0-003"]
assert verifier_item["status"] == "done"
assert verifier_item["runtime_progress"]["runtime_closed"] is False
assert verifier_item["runtime_progress"]["latest_runtime_closed"] is False
assert verifier_item["runtime_progress"]["monotonic_program_closed"] is True
assert verifier_item["completion_evidence"]["proof_kind"] == (
"monotonic_successor_runtime_closure"
)
assert verifier_item["completion_evidence"]["successor_work_item_id"] == (
"AIA-P0-005"
)
assert program["summary"]["done_count"] == 6
assert program["summary"]["completion_percent"] == 30
assert program["summary"]["next_work_item_id"] == "AIA-P0-006"
assert program["summary"]["invalid_done_without_runtime_evidence_count"] == 0
def test_ai_automation_retry_rollback_terminal_fails_closed() -> None:
payload = load_latest_awoooi_priority_work_order_readback()
runtime_control = _autonomous_runtime_control_retry_rollback_closed()