| """Cross-codec Task 2 runnerの厳格TDD契約。""" |
| from __future__ import annotations |
|
|
| import hashlib |
| import json |
| from argparse import Namespace |
| from pathlib import Path |
|
|
| import numpy as np |
| import pytest |
| from PIL import Image |
|
|
| import pixelmodel_robustness.cross_codec as codecs |
| from pixelmodel_robustness.prompts import CATEGORIES |
|
|
|
|
| @pytest.fixture |
| def fixture_inputs(tmp_path: Path) -> dict[str, Path]: |
| values = np.arange(16, dtype=np.float16) |
| pixels = np.zeros((4, 4, 3), dtype=np.uint8) |
| bits = values.view(np.uint16) |
| pixels.reshape(-1, 3)[:, 0] = (bits >> 8).astype(np.uint8) |
| pixels.reshape(-1, 3)[:, 1] = bits.astype(np.uint8) |
| image = tmp_path / "model.png" |
| Image.fromarray(pixels, "RGB").save(image) |
| manifest = tmp_path / "model_png.json" |
| manifest.write_text(json.dumps({"total_parameters": 16, "params": [{"name": "a", "numel": 8}, {"name": "b", "numel": 8}]}), encoding="utf-8") |
| config = tmp_path / "config.json" |
| config.write_text(json.dumps({"architecture": "fixture"}), encoding="utf-8") |
| model = tmp_path / "model.safetensors" |
| model.write_bytes(b"fixture") |
| prompts = tmp_path / "prompts.json" |
| rows = [] |
| for index, category in enumerate(CATEGORIES): |
| rows.append({"prompt_id": f"first-{category}", "category": category, "prompt": f"first {category}", "seed": index, "initial_latent_seed": index}) |
| for index in range(92): |
| category = CATEGORIES[index % len(CATEGORIES)] |
| rows.append({"prompt_id": f"p-{index}", "category": category, "prompt": f"prompt {index}", "seed": 100 + index, "initial_latent_seed": 100 + index}) |
| prompts.write_text(json.dumps(rows), encoding="utf-8") |
| return {"image": image, "manifest": manifest, "config": config, "model": model, "prompts": prompts} |
|
|
|
|
| def make_args(inputs: dict[str, Path], output: Path, **overrides: object) -> Namespace: |
| values = {"profile": "pilot", "image": str(inputs["image"]), "manifest": str(inputs["manifest"]), "config": str(inputs["config"]), "model": str(inputs["model"]), "prompts_manifest": str(inputs["prompts"]), "prompts": 8, "steps": 50, "cfg": 6.0, "device": "mps", "output": str(output), "conditions": "", "recover_lock": False, "fixture": True, "fake_runtime": False, "vae": "vae", "clip": "clip", "pilot_manifest": None} |
| values.update(overrides) |
| return Namespace(**values) |
|
|
|
|
| def preflight() -> tuple[codecs.CodecPreflight, ...]: |
| return tuple(codecs.CodecPreflight(name, True, "fixture", None, ("fixture", name), {"fixture": True}) for name in codecs.CODEC_SPECS) |
|
|
|
|
| def payload_factory(image: Image.Image, spec: codecs.CodecSpec) -> tuple[bytes, Image.Image]: |
| from io import BytesIO |
| stream = BytesIO() |
| image.convert("RGB").save(stream, format="PNG") |
| payload = stream.getvalue() |
| return payload, Image.open(BytesIO(payload)).convert("RGB") |
|
|
|
|
| class Runtime: |
| def generate(self, prompt: str, seed: int) -> tuple[Image.Image, float]: |
| return Image.new("RGB", (4, 4), seed % 255), 0.5 |
|
|
|
|
| def runtime_factory(args: Namespace, device: str) -> tuple[object, object]: |
| return (lambda path: object()), Runtime() |
|
|
|
|
| def test_pilot_selection_is_category_order_and_full_is_exact() -> None: |
| from pixelmodel_robustness.cross_codec_experiment import select_prompts |
| prompts = [{"prompt_id": f"{category}-{index}-{duplicate}", "category": category, "prompt": f"{category}-{index}-{duplicate}", "seed": index, "initial_latent_seed": index} for index, category in enumerate(CATEGORIES) for duplicate in range(2)] |
| selected = select_prompts(prompts, "pilot") |
| assert [item["prompt_id"] for item in selected] == [next(item["prompt_id"] for item in prompts if item["category"] == category) for category in CATEGORIES] |
| with pytest.raises(ValueError, match="exactly 100"): |
| select_prompts(prompts, "full") |
|
|
|
|
| def test_cli_contract_rejects_before_output(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import build_parser, run |
| args = build_parser().parse_args(["--profile", "pilot", "--image", str(fixture_inputs["image"]), "--manifest", str(fixture_inputs["manifest"]), "--config", str(fixture_inputs["config"]), "--model", str(fixture_inputs["model"]), "--prompts-manifest", str(fixture_inputs["prompts"]), "--output", str(tmp_path / "out"), "--prompts", "7"]) |
| with pytest.raises(ValueError, match="8"): |
| run(args) |
| assert not Path(args.output).exists() |
|
|
|
|
| def test_fixture_e2e_has_complete_rows_and_artifacts(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| rows = [json.loads(line) for line in (result / "results" / "raw_rows.jsonl").read_text().splitlines()] |
| weights = [row for row in rows if row["row_type"] == "weight"] |
| layers = [row for row in rows if row["row_type"] == "layer"] |
| generations = [row for row in rows if row["row_type"] == "generation"] |
| assert len(weights) == 17 and len(layers) == 34 and len(generations) == 136 |
| assert all(row["attempted"] and row["completed"] and row["success"] for row in generations if not row["blocked"]) |
| assert all((result / row["sample_path"]).is_file() and row["sample_bytes"] == (result / row["sample_path"]).stat().st_size and row["sample_hash"] == hashlib.sha256((result / row["sample_path"]).read_bytes()).hexdigest() for row in generations if row["success"]) |
| baseline = next(row for row in weights if row["condition"] == "png_baseline") |
| assert (result / baseline["materialized"]["path"]).read_bytes() == fixture_inputs["image"].read_bytes() |
| assert json.loads((result / "pilot_gate.json").read_text())["pass"] is True |
|
|
|
|
| def test_save_sample_supports_pil_chw_and_rejects_nonfinite(tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import _save_sample |
| class Tensor: |
| def __init__(self, value: np.ndarray): self.value = value |
| def detach(self): return self |
| def cpu(self): return self |
| def clamp(self, low: float, high: float): return Tensor(np.clip(self.value, low, high)) |
| def permute(self, *axes: int): return Tensor(np.transpose(self.value, axes)) |
| def numpy(self): return self.value |
| path = tmp_path / "nested" / "sample.png" |
| artifact = _save_sample(Tensor(np.ones((3, 4, 4), dtype=np.float32)), path, base=tmp_path) |
| assert path.is_file() and artifact["sha256"] == hashlib.sha256(path.read_bytes()).hexdigest() |
| with pytest.raises((ValueError, FloatingPointError)): |
| _save_sample(Tensor(np.full((3, 4, 4), np.nan, dtype=np.float32)), tmp_path / "bad.png", base=tmp_path) |
|
|
|
|
| def test_loader_called_once_per_condition_and_baseline_path_exists(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| calls: list[str] = [] |
| def loader(path: str) -> object: |
| calls.append(path) |
| assert Path(path).is_file() |
| return object() |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=lambda a, d: (loader, Runtime())) |
| rows = [json.loads(line) for line in (result / "results" / "raw_rows.jsonl").read_text().splitlines()] |
| nonblocked = {row["condition"] for row in rows if row["row_type"] == "weight" and not row["blocked"]} |
| assert len(calls) == len(nonblocked) |
| assert any(path.endswith("png_baseline.png") for path in calls) |
|
|
|
|
| def test_model_loader_failure_is_one_attempt_and_gate_fails(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| calls: list[str] = [] |
| def loader(path: str) -> object: |
| calls.append(path) |
| raise ValueError("load failed") |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=lambda a, d: (loader, Runtime())) |
| rows = [json.loads(line) for line in (result / "results" / "raw_rows.jsonl").read_text().splitlines()] |
| assert len(calls) == 17 |
| assert all(not row["attempted"] and row["blocked"] and row["failure_stage"] == "model_load" and row["sample_path"] is None for row in rows if row["row_type"] == "generation") |
| assert json.loads((result / "pilot_gate.json").read_text())["pass"] is False |
|
|
|
|
| def test_raw_block_repair_count_and_shared_payload(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| def candidate(condition: str, values: np.ndarray) -> np.ndarray: |
| result = values.copy() |
| if condition == "jpeg_q100_raw": result[:3] = [np.nan, np.inf, -np.inf] |
| if condition == "jpeg_q80_raw": result[:3] = [np.nan, np.inf, -np.inf] |
| return result |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory, candidate_factory=candidate) |
| rows = [json.loads(line) for line in (result / "results" / "raw_rows.jsonl").read_text().splitlines()] |
| weights = {row["condition"]: row for row in rows if row["row_type"] == "weight"} |
| assert weights["jpeg_q100_raw"]["blocked"] is True |
| assert weights["jpeg_q100_repair_zero"]["repaired_count"] == 3 |
| assert weights["jpeg_q100_raw"]["payload_sha256"] == weights["jpeg_q100_repair_zero"]["payload_sha256"] |
|
|
|
|
| def test_payload_storage_metrics_and_protected_artifacts(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| rows = [json.loads(line) for line in (result / "results" / "raw_rows.jsonl").read_text().splitlines()] |
| weights = {row["condition"]: row for row in rows if row["row_type"] == "weight"} |
| for row in weights.values(): |
| assert {"payload_bytes", "payload_over_png", "png_over_payload", "size_saving_percent"} <= row.keys() |
| protected = weights["jpeg_q100_protected_high"] |
| assert {"high", "low"} <= protected["protected"].keys() |
| assert protected["payload_bytes"] == protected["protected"]["high"]["bytes"] + protected["protected"]["low"]["bytes"] |
|
|
|
|
| def test_strict_rows_and_condition_completion_reject_tamper(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import condition_complete, load_rows_strict, run |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| manifest = json.loads((result / "manifest.json").read_text()) |
| rows = load_rows_strict(result / "results" / "raw_rows.jsonl", manifest["run_identity_hash"]) |
| sample = next(row for row in rows if row["row_type"] == "generation" and row["success"]) |
| (result / sample["sample_path"]).write_bytes(b"tampered") |
| assert condition_complete(rows, sample["condition"], set(manifest["prompt_ids"]), {"a", "b"}, result) is False |
| with pytest.raises(ValueError, match="identity"): |
| load_rows_strict(result / "results" / "raw_rows.jsonl", "wrong") |
|
|
|
|
| def test_strict_rows_reject_duplicate_canonical_identity(tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import load_rows_strict |
| path = tmp_path / "rows.jsonl" |
| row = {"row_type": "weight", "stage": "weight", "condition": "png_baseline", "prompt_id": None, "run_identity_hash": "identity"} |
| path.write_text(json.dumps(row) + "\n" + json.dumps(row) + "\n", encoding="utf-8") |
| with pytest.raises(ValueError, match="duplicate"): |
| load_rows_strict(path, "identity") |
|
|
|
|
| def test_resume_skips_completed_and_rejects_completed_resume(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| args = make_args(fixture_inputs, result) |
| with pytest.raises(ValueError, match="completed"): |
| run(args, preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
|
|
|
|
| def test_full_gate_validation_rejects_tampered_gate_before_output(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| pilot = run(make_args(fixture_inputs, tmp_path / "pilot"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| gate = pilot / "pilot_gate.json" |
| value = json.loads(gate.read_text()) |
| value["prompt_ids"] = ["tampered"] |
| gate.write_text(json.dumps(value), encoding="utf-8") |
| args = make_args(fixture_inputs, tmp_path / "full", profile="full", prompts=100, fixture=False, pilot_manifest=str(gate)) |
| with pytest.raises(ValueError, match="pilot gate"): |
| run(args, preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| assert not Path(args.output).exists() |
|
|
|
|
| def test_invalid_prompt_category_and_duplicate_ids_rejected_before_output(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| prompts = json.loads(fixture_inputs["prompts"].read_text()) |
| prompts[0]["category"] = "invalid" |
| fixture_inputs["prompts"].write_text(json.dumps(prompts), encoding="utf-8") |
| with pytest.raises(ValueError, match="category"): |
| run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight) |
|
|
|
|
| def test_preflight_identity_order_and_duplicates_rejected(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| statuses = list(preflight()) |
| statuses[0], statuses[1] = statuses[1], statuses[0] |
| with pytest.raises(RuntimeError, match="preflight"): |
| run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=lambda: tuple(statuses)) |
|
|
|
|
| def test_resource_sample_is_measured_and_three_violation_guard(fixture_inputs: dict[str, Path], tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None: |
| from pixelmodel_robustness import cross_codec_experiment as experiment |
| snapshot = experiment.sample_resource(tmp_path) |
| assert snapshot["rss_bytes"] > 0 and snapshot["system_available_percent"] > 0 and snapshot["disk_free_bytes"] > 0 |
| monkeypatch.setattr(experiment, "sample_resource", lambda output: {"rss_bytes": 13 * 1024**3, "system_available_percent": 5.0, "disk_free_bytes": 1}) |
| with pytest.raises(experiment.ResourceGuardError): |
| experiment.run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight) |
| assert not (tmp_path / "out").exists() |
|
|
|
|
| def test_generation_failure_has_no_fake_sample(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| class Failing(Runtime): |
| def generate(self, prompt: str, seed: int): raise FloatingPointError("nonfinite image") |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=lambda a, d: (lambda path: object(), Failing())) |
| rows = [json.loads(line) for line in (result / "results" / "raw_rows.jsonl").read_text().splitlines()] |
| assert all(not row["success"] and row["sample_path"] is None and row["clip_score"] is None and row["first_error"] for row in rows if row["row_type"] == "generation") |
|
|
|
|
| def test_generation_row_schema_and_layer_rows_have_no_prompt_hack(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| rows = [json.loads(line) for line in (result / "results" / "raw_rows.jsonl").read_text().splitlines()] |
| generation = next(row for row in rows if row["row_type"] == "generation") |
| assert {"category", "prompt", "seed", "initial_latent_seed", "attempt_count", "completed", "elapsed_seconds", "failure_stage", "failure_class", "first_error", "sample_path", "sample_hash", "sample_bytes"} <= generation.keys() |
| assert all(not str(row.get("prompt_id", "")).startswith("layer:") for row in rows if row["row_type"] == "layer") |
|
|
|
|
| def test_full_fixture_gate_binding_unit_does_not_create_gate(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| pilot = run(make_args(fixture_inputs, tmp_path / "pilot"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| gate = pilot / "pilot_gate.json" |
| args = make_args(fixture_inputs, tmp_path / "full", profile="full", prompts=100, fixture=False, pilot_manifest=str(gate)) |
| with pytest.raises(ValueError): |
| run(args, preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| assert not (Path(args.output) / "pilot_gate.json").exists() |
|
|
|
|
| def test_preflight_unavailable_fails_before_output(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| def unavailable() -> tuple[codecs.CodecPreflight, ...]: |
| return tuple(codecs.CodecPreflight(name, name != "avif_q70", "fixture", None if name != "avif_q70" else "missing", ("fixture", name), {}) for name in codecs.CODEC_SPECS) |
| with pytest.raises(RuntimeError, match="preflight"): |
| run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=unavailable) |
| assert not (tmp_path / "out").exists() |
|
|
|
|
| @pytest.mark.parametrize("artifact_key", ["sample", "payload", "materialized", "protected_high", "protected_low"]) |
| def test_validate_pilot_gate_rehashes_every_persisted_artifact(fixture_inputs: dict[str, Path], tmp_path: Path, artifact_key: str) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run, validate_pilot_gate |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| rows_path = result / "results" / "raw_rows.jsonl" |
| rows = [json.loads(line) for line in rows_path.read_text().splitlines()] |
| if artifact_key == "sample": |
| target = next(row for row in rows if row["row_type"] == "generation" and row["success"]) |
| path = result / target["sample_path"] |
| elif artifact_key == "payload": |
| target = next(row for row in rows if row["row_type"] == "weight") |
| path = result / target["payload"]["path"] |
| elif artifact_key == "materialized": |
| target = next(row for row in rows if row["row_type"] == "weight" and row["materialized"]) |
| path = result / target["materialized"]["path"] |
| else: |
| target = next(row for row in rows if row["row_type"] == "weight" and row["protected"]) |
| path = result / target["protected"]["high" if artifact_key.endswith("high") else "low"]["path"] |
| path.write_bytes(path.read_bytes() + b"tamper") |
| with pytest.raises(ValueError, match="pilot gate"): |
| validate_pilot_gate(result / "pilot_gate.json") |
|
|
|
|
| @pytest.mark.parametrize("status", ["running", "resource_guard_failed"]) |
| @pytest.mark.parametrize("tree_key", ["payload", "protected", "materialized"]) |
| def test_resume_revalidates_existing_weight_artifact_tree(fixture_inputs: dict[str, Path], tmp_path: Path, status: str, tree_key: str) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| manifest_path = result / "manifest.json" |
| manifest = json.loads(manifest_path.read_text()) |
| manifest["status"] = status |
| manifest_path.write_text(json.dumps(manifest), encoding="utf-8") |
| rows_path = result / "results" / "raw_rows.jsonl" |
| rows = [json.loads(line) for line in rows_path.read_text().splitlines()] |
| weight = next(row for row in rows if row["row_type"] == "weight" and row[tree_key]) |
| artifact = weight[tree_key] |
| if tree_key == "protected": |
| artifact = artifact["high"] |
| (result / artifact["path"]).write_bytes(b"tampered") |
| with pytest.raises(ValueError, match="artifact tamper"): |
| run(make_args(fixture_inputs, result, recover_lock=True), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
|
|
|
|
| def test_codec_encode_failure_is_canonical_and_gate_fails(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| def failing_payload(image: Image.Image, spec: codecs.CodecSpec) -> tuple[bytes, Image.Image]: |
| if spec.name == "jpeg_q80": |
| raise OSError("encoder unavailable") |
| return payload_factory(image, spec) |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=failing_payload, runtime_factory=runtime_factory) |
| rows = [json.loads(line) for line in (result / "results" / "raw_rows.jsonl").read_text().splitlines()] |
| failed = [row for row in rows if row["row_type"] == "weight" and row["condition"].startswith("jpeg_q80")] |
| assert len(failed) == 3 and all(row["status"] == "codec_pipeline_failed" and row["blocked"] for row in failed) |
| assert all(row["failure_stage"] == "encode" for row in rows if row["row_type"] == "generation" and row["condition"].startswith("jpeg_q80")) |
| assert json.loads((result / "manifest.json").read_text())["status"] == "completed_with_pipeline_failures" |
| assert json.loads((result / "pilot_gate.json").read_text())["pass"] is False |
|
|
|
|
| def test_codec_decode_failure_is_canonical_and_gate_fails(fixture_inputs: dict[str, Path], tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None: |
| import pixelmodel_robustness.cross_codec as module |
| from pixelmodel_robustness.cross_codec_experiment import run |
| original = module.decode_rgb |
| def failing_decode(payload: bytes, spec: codecs.CodecSpec, **kwargs: object) -> Image.Image: |
| if spec.name == "jpeg_q80": |
| raise ValueError("decoder rejected payload") |
| return original(payload, spec, **kwargs) |
| monkeypatch.setattr(module, "decode_rgb", failing_decode) |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, runtime_factory=runtime_factory) |
| rows = [json.loads(line) for line in (result / "results" / "raw_rows.jsonl").read_text().splitlines()] |
| failed = [row for row in rows if row["row_type"] == "generation" and row["condition"].startswith("jpeg_q80")] |
| assert len(failed) == 8 * 3 and all(not row["attempted"] and row["failure_stage"] == "decode" for row in failed) |
| assert json.loads((result / "pilot_gate.json").read_text())["pass"] is False |
|
|
|
|
| def test_resource_preflight_is_persisted_once(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| rows = [json.loads(line) for line in (result / "results" / "resource_monitor.jsonl").read_text().splitlines()] |
| preflight_rows = [row for row in rows if row["row_type"] == "resource_guard" and row["stage"] == "preflight"] |
| assert len(preflight_rows) == 1 and preflight_rows[0]["rss_bytes"] > 0 |
|
|
|
|
| def test_protected_payload_is_read_back_before_generation(fixture_inputs: dict[str, Path], tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None: |
| import pixelmodel_robustness.cross_codec as module |
| from pixelmodel_robustness.cross_codec_experiment import run |
| calls = 0 |
| original = module.decode_protected_high |
| def counted(*args: object, **kwargs: object): |
| nonlocal calls |
| calls += 1 |
| return original(*args, **kwargs) |
| monkeypatch.setattr(module, "decode_protected_high", counted) |
| run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| assert calls == 5 |
|
|
|
|
| def test_scientific_gate_identity_projection_is_immutable_and_profile_neutral() -> None: |
| from pixelmodel_robustness.cross_codec_experiment import SCIENTIFIC_GATE_IDENTITY_KEYS, scientific_identity_hash |
| assert isinstance(SCIENTIFIC_GATE_IDENTITY_KEYS, tuple) |
| base = {key: f"value-{key}" for key in SCIENTIFIC_GATE_IDENTITY_KEYS} |
| base["mode"] = "real" |
| pilot = {**base, "profile": "pilot", "prompt_ids": ["p1"], "prompt_selection_hash": "pilot", "completed_at": "old"} |
| full = {**base, "profile": "full", "prompt_ids": ["p1", "p2"], "prompt_selection_hash": "full", "completed_at": "new"} |
| assert scientific_identity_hash(pilot) == scientific_identity_hash(full) |
| changed = {**full, "code_hashes": "tampered"} |
| assert scientific_identity_hash(full) != scientific_identity_hash(changed) |
|
|
|
|
| def test_manifest_binds_jpeg_repair_module_hash_to_run_identity(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness import jpeg_repair |
| from pixelmodel_robustness.cross_codec_experiment import run, scientific_identity_hash, sha256_file |
|
|
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| manifest = json.loads((result / "manifest.json").read_text()) |
| expected = sha256_file(jpeg_repair.__file__) |
|
|
| assert manifest["run_identity"]["code_hashes"]["jpeg_repair"] == expected |
| assert manifest["scientific_identity_hash"] == scientific_identity_hash(manifest["run_identity"]) |
| changed = {**manifest["run_identity"], "code_hashes": {**manifest["run_identity"]["code_hashes"], "jpeg_repair": "tampered"}} |
| assert scientific_identity_hash(changed) != manifest["scientific_identity_hash"] |
|
|
|
|
| def test_webp_lossless_pixel_mismatch_is_pipeline_failure(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
| def mismatching_payload(image: Image.Image, spec: codecs.CodecSpec) -> tuple[bytes, Image.Image]: |
| payload, decoded = payload_factory(image, spec) |
| if spec.name == "webp_lossless": |
| decoded = decoded.copy() |
| decoded.putpixel((0, 0), (255, 0, 0)) |
| return payload, decoded |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=mismatching_payload, runtime_factory=runtime_factory) |
| rows = [json.loads(line) for line in (result / "results" / "raw_rows.jsonl").read_text().splitlines()] |
| affected = [row for row in rows if row["condition"] == "webp_lossless"] |
| assert len([row for row in affected if row["row_type"] == "weight"]) == 1 |
| assert all(row["failure_stage"] == "decode_invariant" for row in affected) |
| assert json.loads((result / "manifest.json").read_text())["status"] == "completed_with_pipeline_failures" |
| assert json.loads((result / "pilot_gate.json").read_text())["pass"] is False |
|
|
|
|
| def test_protected_decode_failure_is_condition_local(fixture_inputs: dict[str, Path], tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None: |
| import pixelmodel_robustness.cross_codec as module |
| from pixelmodel_robustness.cross_codec_experiment import run |
| original = module.decode_protected_high |
| def failing_decode(artifact: object, shape: object, values: object, **kwargs: object): |
| if getattr(artifact, "low_codec", None) == "jpeg_q80": |
| raise RuntimeError("protected decoder failed") |
| return original(artifact, shape, values, **kwargs) |
| monkeypatch.setattr(module, "decode_protected_high", failing_decode) |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| rows = [json.loads(line) for line in (result / "results" / "raw_rows.jsonl").read_text().splitlines()] |
| failed_weights = [row for row in rows if row["row_type"] == "weight" and row["status"] == "codec_pipeline_failed"] |
| assert [row["condition"] for row in failed_weights] == ["jpeg_q80_protected_high"] |
| assert all(row["failure_stage"] == "protected_invariant" for row in failed_weights) |
| assert json.loads((result / "pilot_gate.json").read_text())["pass"] is False |
|
|
|
|
| def test_incomplete_failed_generation_rejects_any_sample_artifact_field(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import condition_complete, load_rows_strict, run |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| manifest = json.loads((result / "manifest.json").read_text()) |
| rows = load_rows_strict(result / "results" / "raw_rows.jsonl", manifest["run_identity_hash"]) |
| target = next(row for row in rows if row["row_type"] == "generation") |
| target["success"] = False |
| target["attempted"] = True |
| target["completed"] = True |
| target["failure_stage"] = "generation" |
| target["sample_bytes"] = 1 |
| assert condition_complete(rows, target["condition"], set(manifest["prompt_ids"]), set(manifest["layer_ids"]), result) is False |
|
|
|
|
| def test_completed_manifest_records_raw_rows_bytes(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run |
|
|
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| manifest = json.loads((result / "manifest.json").read_text()) |
| raw = result / "results" / "raw_rows.jsonl" |
| assert manifest["raw_rows_bytes"] == raw.stat().st_size |
|
|
|
|
| def test_resource_monitor_is_bound_and_gate_rejects_resource_tamper(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import run, validate_pilot_gate |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| manifest = json.loads((result / "manifest.json").read_text()) |
| metadata = manifest["resource_monitor"] |
| assert metadata["binding_method"] == "run_completion" and metadata["bytes"] > 0 and metadata["sha256"] |
| resource = result / metadata["path"] |
| resource.write_bytes(resource.read_bytes() + b'{}\n') |
| with pytest.raises(ValueError, match="pilot gate|resource"): |
| validate_pilot_gate(result / "pilot_gate.json") |
|
|
|
|
| def test_resource_monitor_migration_preserves_data_and_is_idempotent(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import ( |
| bind_completed_resource_monitor, |
| run, |
| validate_pilot_gate, |
| validate_resource_monitor, |
| ) |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| manifest_path = result / "manifest.json" |
| manifest = json.loads(manifest_path.read_text()) |
| original_identity = {key: manifest[key] for key in ("source_sha256", "run_identity", "run_identity_hash", "scientific_identity_hash")} |
| manifest.pop("resource_monitor") |
| manifest["mode"] = "real" |
| manifest_path.write_text(json.dumps(manifest), encoding="utf-8") |
| tracked = [result / "results" / "raw_rows.jsonl", result / "results" / "resource_monitor.jsonl"] |
| tracked += [path for path in result.rglob("*") if path.is_file() and ("payloads" in path.parts or "samples" in path.parts)] |
| before = {str(path.relative_to(result)): (path.stat().st_size, hashlib.sha256(path.read_bytes()).hexdigest()) for path in tracked} |
| bind_completed_resource_monitor(result, fixture_inputs["image"]) |
| bind_completed_resource_monitor(result, fixture_inputs["image"]) |
| after = {str(path.relative_to(result)): (path.stat().st_size, hashlib.sha256(path.read_bytes()).hexdigest()) for path in tracked} |
| updated = json.loads(manifest_path.read_text()) |
| assert before == after |
| assert {key: updated[key] for key in original_identity} == original_identity |
| assert updated["resource_monitor"]["binding_method"] == "post_run_verified" |
| gate_data = validate_pilot_gate(result / "pilot_gate.json") |
| assert gate_data["gate"]["resource_monitor"] == updated["resource_monitor"] |
| actual = validate_resource_monitor(result, updated, [json.loads(line) for line in (result / "results" / "raw_rows.jsonl").read_text().splitlines()]) |
| assert all(updated["resource_monitor"][key] == actual[key] for key in actual) |
|
|
|
|
| def test_migration_gate_rejects_forged_resource_annotations(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import ( |
| _hash, |
| bind_completed_resource_monitor, |
| run, |
| sha256_file, |
| validate_pilot_gate, |
| ) |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| manifest_path = result / "manifest.json" |
| manifest = json.loads(manifest_path.read_text()) |
| manifest["mode"] = "real" |
| manifest.pop("resource_monitor") |
| manifest_path.write_text(json.dumps(manifest), encoding="utf-8") |
| bind_completed_resource_monitor(result, fixture_inputs["image"]) |
| gate_path = result / "pilot_gate.json" |
| gate = json.loads(gate_path.read_text()) |
| gate["resource_monitor"]["binding_method"] = "unknown" |
| gate_path.write_text(json.dumps(gate), encoding="utf-8") |
| with pytest.raises(ValueError, match="pilot gate|tampered"): |
| validate_pilot_gate(gate_path) |
| manifest = json.loads(manifest_path.read_text()) |
| manifest["resource_monitor"]["binding_method"] = "unknown" |
| manifest_path.write_text(json.dumps(manifest), encoding="utf-8") |
| gate = json.loads(gate_path.read_text()) |
| gate["resource_monitor"] = manifest["resource_monitor"] |
| gate["manifest_sha256"] = sha256_file(manifest_path) |
| gate["gate_hash"] = _hash({key: value for key, value in gate.items() if key != "gate_hash"}) |
| gate_path.write_text(json.dumps(gate), encoding="utf-8") |
| with pytest.raises(ValueError, match="resource|pilot gate"): |
| validate_pilot_gate(gate_path) |
|
|
|
|
| def test_bound_resource_rejects_invalid_post_run_annotations(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import _validate_bound_resource, run, validate_resource_monitor |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| manifest = json.loads((result / "manifest.json").read_text()) |
| rows = [json.loads(line) for line in (result / "results" / "raw_rows.jsonl").read_text().splitlines()] |
| actual = validate_resource_monitor(result, manifest, rows) |
| for annotation in ({"bound_at": "not-utc", "binding_code_hash": "a" * 64}, {"bound_at": "2026-01-01T00:00:00+00:00", "binding_code_hash": "A" * 64}): |
| recorded = {**actual, "binding_method": "post_run_verified", **annotation} |
| with pytest.raises((ValueError, TypeError), match="bound_at|binding_code_hash"): |
| _validate_bound_resource(recorded, actual) |
|
|
|
|
| def test_resource_monitor_migration_rejects_wrong_source(fixture_inputs: dict[str, Path], tmp_path: Path) -> None: |
| from pixelmodel_robustness.cross_codec_experiment import bind_completed_resource_monitor, run |
| result = run(make_args(fixture_inputs, tmp_path / "out"), preflight_factory=preflight, payload_factory=payload_factory, runtime_factory=runtime_factory) |
| manifest_path = result / "manifest.json" |
| manifest = json.loads(manifest_path.read_text()) |
| manifest.pop("resource_monitor") |
| manifest_path.write_text(json.dumps(manifest), encoding="utf-8") |
| with pytest.raises(ValueError, match="source"): |
| bind_completed_resource_monitor(result, tmp_path / "wrong.png") |
|
|