@@ -644,6 +644,43 @@ def test_path_like_attestation_labels_fail_closed_without_leaking(
644644 assert private_path not in json .dumps (receipt , sort_keys = True )
645645
646646
647+ def test_namespaced_public_case_id_qualifies_without_weakening_path_gate () -> None :
648+ attestation = _attestation ()
649+ attestation ["case_id" ] = "public-suite/case-1"
650+
651+ receipt = build_benchmark_integrity_qualification (
652+ trajectory = _trajectory (),
653+ runtime_attestation = attestation ,
654+ )
655+
656+ assert receipt ["integrity_qualified" ] is True
657+ assert receipt ["case_id" ] == "public-suite/case-1"
658+ assert receipt ["blockers" ] == []
659+
660+
661+ @pytest .mark .parametrize (
662+ "case_id" ,
663+ [
664+ "public-suite/nested/case-1" ,
665+ "public-suite/../case-1" ,
666+ "public suite/case-1" ,
667+ "public-suite\\ case-1" ,
668+ ],
669+ )
670+ def test_noncanonical_namespaced_case_id_still_fails_closed (case_id : str ) -> None :
671+ attestation = _attestation ()
672+ attestation ["case_id" ] = case_id
673+
674+ receipt = build_benchmark_integrity_qualification (
675+ trajectory = _trajectory (),
676+ runtime_attestation = attestation ,
677+ )
678+
679+ assert receipt ["integrity_qualified" ] is False
680+ assert receipt ["case_id" ] == "redacted"
681+ assert "runtime_attestation_case_id_path_like" in receipt ["blockers" ]
682+
683+
647684def test_path_like_policy_id_fails_closed_without_leaking () -> None :
648685 private_path = "C:\\ Users\\ private-user\\ policy.json"
649686 receipt = build_benchmark_integrity_qualification (
0 commit comments