96 lines
5.4 KiB
Python
96 lines
5.4 KiB
Python
"""Copy the already closed native440 evidence; never execute a saved helper."""
|
|
from pathlib import Path
|
|
import hashlib
|
|
import json
|
|
import sys
|
|
|
|
if sys.flags.optimize:
|
|
raise SystemExit('Optimized Python is forbidden')
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
DEST = ROOT / '.local/n44d'
|
|
REL = 'harness/experiments/navigation-native-440-20260913'
|
|
OUT = DEST / REL
|
|
TRIAL = ROOT / '.local/native-qa/navigation-palette-20260913-01'
|
|
BASE = 'cccd66c5d522497dbecb28ce722644848943d009'
|
|
SOURCE = '44095f78c28b79d6d085863dc928adba8e24d955'
|
|
ORACLE = 'e1240295bd114d23d3f67a69e6b38bdb2e25bb0d'
|
|
|
|
def require(value, message):
|
|
if not value:
|
|
raise RuntimeError(message)
|
|
|
|
def identity(path):
|
|
data = path.read_bytes()
|
|
return {'bytes': len(data), 'sha256': hashlib.sha256(data).hexdigest()}
|
|
|
|
def read(path):
|
|
return json.loads(path.read_bytes())
|
|
|
|
require(not OUT.exists(), 'Archive output already exists')
|
|
require(read(TRIAL / 'closure.json')['exit'] == 0, 'Actual closure required')
|
|
OUT.mkdir(parents=True)
|
|
files = []
|
|
references = []
|
|
|
|
def copy(source, relative):
|
|
require(source.is_file() and not source.is_symlink(), str(source))
|
|
require(source.suffix.lower() not in ('.exe', '.dll', '.rlib', '.rmeta', '.pdb'), 'No binaries/caches')
|
|
target = OUT / relative
|
|
require(not target.exists(), 'Duplicate output: ' + relative)
|
|
before = source.read_bytes()
|
|
target.parent.mkdir(parents=True, exist_ok=True)
|
|
target.write_bytes(before)
|
|
require(source.read_bytes() == target.read_bytes() == before, 'Changed while copying: ' + str(source))
|
|
files.append({'path': target.relative_to(DEST).as_posix(), 'original': source.relative_to(ROOT).as_posix(), **identity(target)})
|
|
|
|
def tree(source, relative):
|
|
require(source.is_dir(), str(source))
|
|
for item in sorted(source.rglob('*')):
|
|
require(not item.is_symlink(), str(item))
|
|
if item.is_file():
|
|
copy(item, relative + '/' + item.relative_to(source).as_posix())
|
|
|
|
for folder in ['evidence', 'checkpoints', 'source-baseline', 'compact-baseline', 'lifecycle-baseline', 'topology-baseline', 'source-rename-expected']:
|
|
tree(TRIAL / folder, 'raw/trial/' + folder)
|
|
for folder in sorted(TRIAL.glob('checkpoint-*')):
|
|
require(set(p.name for p in folder.iterdir()) == {'run.json', 'stdout.log', 'stderr.log', 'verified-core-inputs.json'}, 'Unexpected oracle-run inventory')
|
|
tree(folder, 'raw/trial/' + folder.name)
|
|
for name in ['launch-request.json', 'launch.json', 'closure.json', 'stdout.log', 'stderr.log', 'preparation.json', 'source-example-preparation.json']:
|
|
copy(TRIAL / name, 'raw/trial/' + name)
|
|
for name in ['navigation-native-partial-independent-review-20260913.md', 'navigation-native-final-independent-review-20260913.md', 'navigation-native-final-independent-audit-20260913.json']:
|
|
copy(ROOT / '.local' / name, 'review/' + name)
|
|
for name in ['checkpoint-navigation-palette-20260913.py', 'checkpoint-navigation-palette-20260913-handoff.md', 'navigation-palette-native-session-command-r2.py', 'navigation-selection-native-final-44095f7.json', 'navigation-native-launch-r2-20260913.log', 'navigation-preview-details-scroll-finding-20260913.md']:
|
|
copy(ROOT / '.local' / name, 'raw/helpers/' + name)
|
|
copy(ROOT / '.local/native-qa/navigation-selection-stage-44095f7/manifest.json', 'raw/stage/manifest.json')
|
|
copy(Path(__file__).resolve(), 'archive-builder.py')
|
|
|
|
def reference(path, original=None):
|
|
require((DEST / path).is_file(), 'Missing published reference: ' + path)
|
|
record = {'path': path, 'commit': BASE, **identity(DEST / path)}
|
|
if original:
|
|
require((ROOT / original).read_bytes() == (DEST / path).read_bytes(), 'Published/local reference differs: ' + original)
|
|
record['original'] = original
|
|
references.append(record)
|
|
|
|
prior = 'harness/experiments/navigation-440-windows-20260913/'
|
|
reference(prior + 'manifest.json')
|
|
reference(prior + 'README.md')
|
|
reference(prior + 'verify.py')
|
|
for name in ['result.json', 'inputs.json', 'environment.json', 'cargo.jsonl', 'cargo.stderr.log']:
|
|
original = '.local/navigation-palette-gates-20260913/artifacts-44095f7/' + name
|
|
reference(prior + 'raw/' + original, original)
|
|
prep = 'harness/experiments/navigation-native-preparation-e124029-20260913/'
|
|
reference(prep + 'manifest.json')
|
|
reference(prep + 'README.md')
|
|
for name in ['native-qa/navigation-oracle-e124029/build.json', 'run-navigation-palette-oracle.py', 'navigation-palette-native-oracle.rs', 'build-navigation-palette-probe.py']:
|
|
reference(prep + 'evidence/.local/' + name, '.local/' + name)
|
|
reference('harness/experiments/navigation-palette-e124029-windows-20260913/gates/list-e124029.inputs.json', '.local/navigation-palette-gates-20260913/list-e124029.inputs.json')
|
|
|
|
manifest = {'schema': 'closed-native440-evidence-v1', 'source': SOURCE, 'oracle_source': ORACLE, 'publication_base': BASE,
|
|
'scope': 'Closed native440 trial, known Details-to-Preview FAIL preserved; no complete native/package acceptance.',
|
|
'files': files, 'references': references,
|
|
'omitted': 'Executables, runtime binaries and mutable caches are identified by original receipts, not included. Final work trees equal their final snapshots; profile/temp are not archived.'}
|
|
(OUT / 'manifest.pending.json').write_text(json.dumps(manifest, indent=2) + '\n', encoding='utf-8')
|
|
print(json.dumps({'output': str(OUT), 'raw_files': len(files), 'references': len(references), 'scope': 'Copied raw bytes; pending README/report/verifier and final manifest.'}))
|