Files
KArtSell.Aegis/scripts/generate_manifest_v125.py
T
kjh2064 dcd1322d41
ci / backend (push) Failing after 12s
ci / frontend (push) Failing after 19s
ci / static (push) Failing after 45s
Initial commit: Add project files
2026-08-02 05:15:36 +09:00

34 lines
1.3 KiB
Python

#!/usr/bin/env python3
from __future__ import annotations
import hashlib, json
from pathlib import Path
ROOT=Path(__file__).resolve().parents[1]
EXCLUDE={'PACKAGE_MANIFEST.json','SHA256SUMS.txt'}
def sha(path: Path)->str:
h=hashlib.sha256()
with path.open('rb') as f:
for b in iter(lambda:f.read(1024*1024),b''): h.update(b)
return h.hexdigest()
files=[]
for p in sorted(ROOT.rglob('*')):
if not p.is_file(): continue
rel=p.relative_to(ROOT).as_posix()
if rel in EXCLUDE or '/__pycache__/' in f'/{rel}/': continue
files.append({'path':rel,'bytes':p.stat().st_size,'sha256':sha(p)})
manifest={
'package':'KArtSell_Aegis_v12_5_execution_assurance_complete',
'version':'12.5',
'status':'IMPLEMENTATION_TEMPLATE_STATIC_VALIDATED_RUNTIME_EVIDENCE_REQUIRED',
'boundary':['RESEARCH_CANDIDATE_NOT_PRODUCTION','AUTOMATIC_ORDER_OFF','KIS_SUBMISSION_OFF','AUTO_MODEL_PROMOTION_OFF'],
'fileCount':len(files),
'totalBytes':sum(x['bytes'] for x in files),
'files':files,
}
(ROOT/'PACKAGE_MANIFEST.json').write_text(json.dumps(manifest,ensure_ascii=False,indent=2)+'\n',encoding='utf-8')
with (ROOT/'SHA256SUMS.txt').open('w',encoding='utf-8') as f:
for x in files: f.write(f"{x['sha256']} {x['path']}\n")
print(f"manifest files={len(files)} bytes={manifest['totalBytes']}")