Ctrl K
ComunidadGuías…

scripts/prepare-controlled-upgrade.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/usr/bin/env python3
"""Verify a root-owned, allowlisted synthetic acceptance bundle before any writes."""
import base64
import gzip
import hashlib
import json
from pathlib import Path
import re
import sys

repository = Path(__file__).resolve().parent.parent
lock = json.loads((repository / 'tools/controlled-upgrade/fixture-lock.json').read_text())
archive = repository / 'tools/controlled-upgrade/root-fixture.json.gz'
expected = {
    'scripts/verify-node-controlled-upgrade.mjs',
    'scripts/verify-node-controlled-upgrade.test.mjs',
    'scripts/verify-node-direct-registration.mjs',
    'scripts/fixtures/node-controlled-upgrade-core_test.go',
    'scripts/fixtures/node-controlled-upgrade-provider.mjs',
    'scripts/fixtures/node-upgrade-old-binaries.json',
}
if len(sys.argv) != 2:
    raise SystemExit('supply one new extraction directory')
if hashlib.sha256(archive.read_bytes()).hexdigest() != lock['sha256']:
    raise SystemExit('root fixture hash mismatch')
bundle = json.loads(gzip.decompress(archive.read_bytes()))
if bundle['root_commit'] != lock['root_commit']:
    raise SystemExit('wrong root source commit')
if len(bundle['files']) != len(expected) or {f['path'] for f in bundle['files']} != expected:
    raise SystemExit('unexpected or missing fixture files')
if len(lock['files']) != len(expected) or {f['path'] for f in lock['files']} != expected:
    raise SystemExit('invalid fixture lock')
locked_files = {f['path']: f for f in lock['files']}
verified = []
for entry in bundle['files']:
    metadata = {k: v for k, v in entry.items() if k != 'content'}
    if metadata != locked_files[entry['path']] or entry['mode'] not in {'100644', '100755'}:
        raise SystemExit('fixture metadata mismatch')
    content = base64.b64decode(entry['content'], validate=True)
    blob = b'blob ' + str(len(content)).encode() + b'\0' + content
    if hashlib.sha256(content).hexdigest() != entry['sha256'] or hashlib.sha1(blob).hexdigest() != entry['git_blob']:
        raise SystemExit('fixture content mismatch')
    verified.append((entry, content))
# This root-owned file is already authenticated by both the bundle and file
# hashes. Bind the public checkout pin to the Core commit reviewed with it.
root_lock = json.loads(next(content for entry, content in verified
                            if entry['path'] == 'scripts/fixtures/node-upgrade-old-binaries.json'))
core_commit = lock.get('core_commit', '')
if not isinstance(core_commit, str) or not re.fullmatch(r'[a-f0-9]{40}', core_commit) or root_lock.get('core_commit') != core_commit:
    raise SystemExit('reviewed Core commit mismatch')
destination = Path(sys.argv[1]).resolve()
destination.mkdir(mode=0o700, parents=False, exist_ok=False)
for entry, content in verified:
    target = destination / entry['path']
    target.parent.mkdir(mode=0o700, parents=True, exist_ok=True)
    with target.open('xb') as output:
        output.write(content)
    target.chmod(0o755 if entry['mode'] == '100755' else 0o644)
print(json.dumps({'root_commit': lock['root_commit'], 'sha256': lock['sha256']}))