feat(laboratory): publish M48S load envelope
This commit is contained in:
@@ -38,7 +38,7 @@ def test_m48s_lab_seals_visual_comparison_and_load_evidence(tmp_path: Path) -> N
|
||||
assert manifest["result_id"] == result.result_id
|
||||
assert result.result_id.endswith(identity_digest)
|
||||
assert manifest["identity_sha256"] == identity_digest
|
||||
assert len(manifest["artifacts"]) == 35
|
||||
assert len(manifest["artifacts"]) == 39
|
||||
assert manifest["method"]["completeness"] == "complete"
|
||||
assert manifest["bounded_question_accepted"] is True
|
||||
assert manifest["ground_truth"] is False
|
||||
@@ -49,6 +49,11 @@ def test_m48s_lab_seals_visual_comparison_and_load_evidence(tmp_path: Path) -> N
|
||||
"integrated_world_state_gate_evaluated": True,
|
||||
"integrated_world_state_gate_passed": True,
|
||||
"full_replay_visual_published": True,
|
||||
"load_envelope_evaluated": True,
|
||||
"production_rate_repeatability_passed": False,
|
||||
"reserve_12_fps_passed": True,
|
||||
"limit_15_fps_passed": True,
|
||||
"load_envelope_accepted": False,
|
||||
"detector_replacement_authorized": False,
|
||||
"production_accepted": False,
|
||||
}
|
||||
@@ -80,6 +85,24 @@ def test_m48s_lab_seals_visual_comparison_and_load_evidence(tmp_path: Path) -> N
|
||||
assert hardening["startup"]["prewarmed"]["world_state_ms"] == 60.516957
|
||||
assert hardening["startup"]["prewarm_duration_ms"] == 420.721918
|
||||
assert hardening["startup"]["validation_frames"] == 1_000
|
||||
envelope = manifest["metrics"]["load_envelope"]
|
||||
assert envelope["schema_version"] == "missioncore.m48s-load-envelope-comparison/v1"
|
||||
assert envelope["production_rate_repeatability_passed"] is False
|
||||
assert envelope["reserve_12_fps_passed"] is True
|
||||
assert envelope["limit_15_fps_passed"] is True
|
||||
assert envelope["load_envelope_accepted"] is False
|
||||
assert envelope["compute_capacity_at_least_fps"] == 15.0
|
||||
production, reserve, limit = envelope["scenarios"]
|
||||
assert production["delivered_world_states"] == 4_483
|
||||
assert production["superseded_frames"] == 6
|
||||
assert production["operating_target_gate_passed"] is False
|
||||
assert reserve["delivered_world_states"] == 4_477
|
||||
assert reserve["superseded_frames"] == 12
|
||||
assert reserve["operating_target_gate_passed"] is True
|
||||
assert limit["delivered_world_states"] == 4_488
|
||||
assert limit["superseded_frames"] == 1
|
||||
assert limit["operating_target_gate_passed"] is True
|
||||
assert all(item["additional_inference_passes"] == 0 for item in envelope["scenarios"])
|
||||
|
||||
catalog = json.loads((result.result_root / "catalog.json").read_text("utf-8"))
|
||||
assert catalog["frame_count"] == len(FRAME_IDS) == 11
|
||||
@@ -99,7 +122,7 @@ def test_m48s_lab_seals_visual_comparison_and_load_evidence(tmp_path: Path) -> N
|
||||
)
|
||||
proof = verify_laboratory_evidence_result(definition, result.result_root)
|
||||
assert proof["result_id"] == result.result_id
|
||||
assert proof["artifact_count"] == 35
|
||||
assert proof["artifact_count"] == 39
|
||||
|
||||
with pytest.raises(M48SFixedClassDetectorLabError, match="already exists"):
|
||||
build_m48s_fixed_class_detector_lab(
|
||||
|
||||
@@ -51,6 +51,15 @@ def test_m48s_lab_api_projects_verified_result_frame_and_camera(tmp_path: Path)
|
||||
assert hardening["baseline"]["delivered_world_states"] == 4_480
|
||||
assert hardening["hardened"]["delivered_world_states"] == 4_488
|
||||
assert hardening["startup"]["prewarmed"]["world_state_ms"] == 60.516957
|
||||
envelope = result.json()["metrics"]["load_envelope"]
|
||||
assert envelope["production_rate_repeatability_passed"] is False
|
||||
assert envelope["reserve_12_fps_passed"] is True
|
||||
assert envelope["limit_15_fps_passed"] is True
|
||||
assert [item["requested_source_rate_hz"] for item in envelope["scenarios"]] == [
|
||||
10.0,
|
||||
12.0,
|
||||
15.0,
|
||||
]
|
||||
assert result.json()["ground_truth"] is False
|
||||
assert len(result.json()["frames"]) == 11
|
||||
|
||||
|
||||
Reference in New Issue
Block a user