PixelModel-v4-image-codec-study / tests /test_cross_codec_experiment.py
brulee-1's picture
Add files using upload-large-folder tool
901a5f5 verified
Raw
History Blame Contribute Delete
36.6 kB
"""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")