Archive fixed catalog subsets and captured events, manifests, reproducible commands, raw timing and regression logs, and device resource evidence. Document distribution-dependent tile reduction gains and independent indexed producer throughput. Update the GPU plan and renderer design while retaining the production atomic path. Preserve historical measurement metadata and exclude generated Python bytecode.
20 lines
1.2 KiB
Python
20 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
from pathlib import Path
|
|
import hashlib,json,re,subprocess
|
|
base=Path(__file__).resolve().parent
|
|
repo=base.parents[1]
|
|
logs=list(base.glob('final_*.log'))
|
|
assert len(logs)==45
|
|
for p in logs:assert 'EXIT 0' in p.read_text(),p
|
|
m=json.loads((base/'source_binary_manifest.json').read_text())
|
|
for name,info in m.items():assert hashlib.sha256((repo/name).read_bytes()).hexdigest()==info['sha256'],name
|
|
m=json.loads((base/'events_manifest.json').read_text())
|
|
for name,info in m.items():assert hashlib.sha256((base/name).read_bytes()).hexdigest()==info['sha256'],name
|
|
for p in [repo/'gpu_psf_acceleration_plan.md',repo/'nr_spacetime_movie_renderer_design.md',base.with_suffix('.md'),base/'README.md']:
|
|
for target in re.findall(r'\]\(([^)]+)\)',p.read_text()):
|
|
# Ignore TeX bracket/parenthesis adjacency; check local artifact links.
|
|
if '://' not in target and re.search(r'\.(md|json|log|py|c|hip|txt)(#.*)?$',target):
|
|
assert (p.parent/target.split('#')[0]).exists(),(p,target)
|
|
subprocess.run(['git','diff','--check'],cwd=repo,check=True)
|
|
print('PASS: 45 final runs; source/binary/input/event hashes; local documentation links; git diff --check')
|