"""Verify published IFEval files and recompute all scores, without a model.""" import hashlib import importlib.metadata import json import sys from pathlib import Path, PurePosixPath root = Path(__file__).resolve().parent manifest = json.loads((root/'manifest.json').read_text(encoding='utf-8')) actual = {p.relative_to(root).as_posix() for p in root.rglob('*') if p.is_file() and '__pycache__' not in p.parts} assert actual == set(manifest['files']) | {'manifest.json'}, 'File inventory differs' for name, expected in manifest['files'].items(): rel = PurePosixPath(name) assert not rel.is_absolute() and '..' not in rel.parts file = root/name assert not file.is_symlink() assert hashlib.sha256(file.read_bytes()).hexdigest() == expected, 'File hash differs: '+name publication = json.loads((root/'publication.json').read_text(encoding='utf-8')) for name, expected in publication['verificationDependencies'].items(): assert importlib.metadata.version(name) == expected, 'Dependency version differs: '+name assert hashlib.sha256((root/'observations/manifest.json').read_bytes()).hexdigest() == publication['sourceManifestSha256'] from tools.ifeval_541_sources import verify_frozen_sources from tools.ifeval_541_bundle import verify_bundle verify_frozen_sources(root/'sources') verify_bundle(root/'observations', source_root=root/'sources') print('PASS: all file hashes, 541 responses, 834 instructions, strict/loose vectors and four metrics recomputed; CPU only.')