docs: publish State multiselect verification and native evidence
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
"""Prepare pinned source receipts after raw/sibling capture validation; never build."""
|
||||
from pathlib import Path
|
||||
import argparse, json
|
||||
from verify import HERE, SPECS, TOOLS, FILES, need, pin, verify_data, raw_captures, packaged, verify_package
|
||||
|
||||
def main():
|
||||
parser=argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument('--raw-gates',type=Path,required=True,help='original raw gates and source-RUN.json receipts')
|
||||
parser.add_argument('--checks',type=Path,help='completed sibling checks package; required when writing')
|
||||
parser.add_argument('--repo',type=Path,help='optionally rerun exact committed Git-blob comparison')
|
||||
parser.add_argument('--output',type=Path,help='new source package directory')
|
||||
parser.add_argument('--check-only',action='store_true')
|
||||
args=parser.parse_args()
|
||||
receipts={run:(args.raw_gates/('source-'+run+'.json')).read_bytes() for run in SPECS}
|
||||
captured=packaged(args.checks) if args.checks else raw_captures(args.raw_gates)
|
||||
summary=verify_data(receipts,captured,args.repo)
|
||||
if args.check_only:
|
||||
print('PASS source check-only; no package written:',summary); return
|
||||
need(args.checks is not None,'written portable source package requires completed --checks package')
|
||||
need(args.output is not None,'explicit new --output required')
|
||||
out=args.output.resolve(); need(not out.exists(),'existing package refused')
|
||||
payload={name:(HERE/name).read_bytes() for name in TOOLS}
|
||||
payload.update({'source-'+run+'.json':data for run,data in receipts.items()})
|
||||
need(set(payload)==FILES,'exact source files')
|
||||
out.mkdir(parents=True)
|
||||
for name,data in payload.items():
|
||||
with (out/name).open('xb') as stream: stream.write(data)
|
||||
with (out/'files.json').open('x',encoding='utf-8') as stream:
|
||||
json.dump({name:pin(data) for name,data in sorted(payload.items())},stream,indent=2)
|
||||
# Git comparison was already performed above when requested; readback is byte-only.
|
||||
verify_package(out,args.checks)
|
||||
print('PASS written source package readback:',out,summary)
|
||||
if __name__=='__main__': main()
|
||||
Reference in New Issue
Block a user