Archive exact a31b40d Windows and OA native acceptance evidence

This commit is contained in:
2026-09-12 03:54:36 -07:00
parent f52d81c1b9
commit bc8bc4f5a1
88 changed files with 37915 additions and 10 deletions
@@ -0,0 +1,52 @@
"""Create an isolated Windows acceptance workspace and launch its identified GUI."""
from pathlib import Path
import hashlib
import json
import os
import shutil
import subprocess
import sys
from datetime import datetime, timezone
root = Path(__file__).resolve().parent.parent
trial = root / '.local/native-qa/canvas-20260911'
mode = sys.argv[1]
if mode == 'prepare':
assert not trial.exists(), 'Do not overwrite a native trial'
trial.mkdir()
records = []
for name, rel in {
'scenario': 'harness/fixtures/scenario-authoring/base',
'process': 'harness/fixtures/source7-native/base',
'staged-source': 'harness/fixtures/staged-source-authoring/base',
}.items():
original = root / rel
assert original.is_dir()
shutil.copytree(original, trial / name)
for file in sorted(original.rglob('*')):
if file.is_file():
path = file.relative_to(original)
raw = file.read_bytes()
assert (trial / name / path).read_bytes() == raw
records.append({'path': f'{name}/{path.as_posix()}', 'source': f'{rel}/{path.as_posix()}', 'bytes': len(raw), 'sha256': hashlib.sha256(raw).hexdigest()})
for folder in ['profile/Desktop', 'profile/Documents', 'profile/AppData/Local', 'profile/AppData/Roaming', 'temp', 'evidence']:
(trial / folder).mkdir(parents=True, exist_ok=True)
(trial / 'preparation.json').write_text(json.dumps({'prepared_utc': datetime.now(timezone.utc).isoformat(), 'files': records}, indent=2) + '\n', encoding='utf-8', newline='\n')
print(json.dumps({'trial': str(trial), 'byte_identical_fixture_files': len(records)}))
elif mode == 'launch':
assert (trial / 'preparation.json').is_file()
assert not (trial / 'launch.json').exists(), 'Use a new explicit trial for another launch'
binary = Path(sys.argv[2]).resolve()
assert binary.is_relative_to(root / '.local/native-qa') and binary.name == 'arcadia-studio.exe'
assert binary.is_file() and (binary.parent / 'manifest.json').is_file()
profile = trial / 'profile'
env = {key: os.environ[key] for key in ['SystemRoot', 'WINDIR', 'SystemDrive', 'ProgramData', 'ALLUSERSPROFILE', 'PUBLIC', 'COMSPEC', 'PATHEXT', 'NUMBER_OF_PROCESSORS', 'PROCESSOR_ARCHITECTURE', 'OS'] if key in os.environ}
windows = Path(env['SystemRoot'])
env.update({'PATH': os.pathsep.join(map(str, [binary.parent, windows / 'System32', windows])), 'USERPROFILE': str(profile), 'LOCALAPPDATA': str(profile / 'AppData/Local'), 'APPDATA': str(profile / 'AppData/Roaming'), 'TEMP': str(trial / 'temp'), 'TMP': str(trial / 'temp')})
with (trial / 'stdout.log').open('wb') as out, (trial / 'stderr.log').open('wb') as err:
process = subprocess.Popen([str(binary)], cwd=trial, env=env, stdin=subprocess.DEVNULL, stdout=out, stderr=err, creationflags=subprocess.CREATE_NO_WINDOW)
record = {'started_utc': datetime.now(timezone.utc).isoformat(), 'pid': process.pid, 'binary': str(binary), 'bytes': binary.stat().st_size, 'sha256': hashlib.sha256(binary.read_bytes()).hexdigest(), 'private_profile': str(profile), 'acceptance': 'Launch requested; native behavior not yet verified.'}
(trial / 'launch.json').write_text(json.dumps(record, indent=2) + '\n', encoding='utf-8', newline='\n')
print(json.dumps(record))
else:
raise SystemExit('Expected prepare or launch')