fix: guard transient controls and verify timeline endpoints

This commit is contained in:
chenmingxuan committed 2026-11-02 13:54:50 +08:00
1 parent 479a185192
commit 00e62a663a
29 files changed
+1150 -90

No files matched your search

+10 -1
View File
@@ -484,6 +484,15 @@ async def run_validation_loop(node, state: State) -> dict:
skipped_copy["attempts"] = [BURST_SKIPPED_MARKER if burst else "Skipped"]
execution.append(skipped_copy)
# A checkpoint may run before the next perception turn. Preserve the end of
# a native sequence now, without introducing captures between burst members.
# Saturated controls legitimately produce the same image hash as before.
sequence_post_image = None
if success and any(item.get("action") == "action_sequence" for item in execution):
captured = await _capture_live_screenshot(session, "post-sequence evidence")
if captured:
sequence_post_image = _absorb_post_screenshot(ctx, state, captured)
report = {
"execution": execution,
"status": "dispatched" if success else "failed",
@@ -494,7 +503,7 @@ async def run_validation_loop(node, state: State) -> dict:
report["pre_image_valid"] = False
# Determine if a distinct post-action screenshot was captured
distinct_post_image_name = (
distinct_post_image_name = sequence_post_image or (
last_screenshot_name
if (last_screenshot_name and last_screenshot_name != decision_screenshot_name)
else None