|
|
@@ -1,4 +1,5 @@
|
|
|
-from __future__ import annotations
|
|
|
+import json
|
|
|
+from pathlib import Path
|
|
|
|
|
|
import httpx
|
|
|
import pytest
|
|
|
@@ -6,6 +7,16 @@ import pytest
|
|
|
from script_build_host.internal_e2e import _wait_for_root
|
|
|
|
|
|
|
|
|
+def test_recovery_checkpoint_fixtures_cover_all_segment_boundaries() -> None:
|
|
|
+ path = Path(__file__).parent / "fixtures" / "recovery_checkpoints.json"
|
|
|
+ payload = json.loads(path.read_text(encoding="utf-8"))
|
|
|
+ assert set(payload["checkpoints"]) == {"direction", "structure", "portfolio", "root"}
|
|
|
+ assert all(
|
|
|
+ item["input_snapshot_digest"].startswith("sha256:")
|
|
|
+ for item in payload["checkpoints"].values()
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
@pytest.mark.asyncio
|
|
|
async def test_mission_poll_allows_only_bounded_startup_failures() -> None:
|
|
|
calls = 0
|