#!/usr/bin/env python3 from __future__ import annotations import hashlib import json from pathlib import Path import msgspec ROOT = Path(__file__).resolve().parent ARTIFACTS = ROOT / "artifacts" CONTROL = ARTIFACTS / "control.msgpack" MALICIOUS = ARTIFACTS / "decoder_trigger.msgpack" def sha256(path: Path) -> str: return hashlib.sha256(path.read_bytes()).hexdigest() def main() -> None: manifest = { "format": "MessagePack (.msgpack)", "loader": "msgspec.msgpack.Decoder(type=ModelState).decode", "msgspec_version": msgspec.__version__, "control": { "path": str(CONTROL), "size": CONTROL.stat().st_size, "sha256": sha256(CONTROL), }, "malicious": { "path": str(MALICIOUS), "size": MALICIOUS.stat().st_size, "sha256": sha256(MALICIOUS), }, "trigger_vector": [4, 2, 7], } (ARTIFACTS / "manifest.json").write_text(json.dumps(manifest, indent=2) + "\n", encoding="utf-8") print(json.dumps(manifest, indent=2)) if __name__ == "__main__": main()