"""Read-only fixture lint with a pinned existing CLI; not current-build acceptance.""" from pathlib import Path import datetime, hashlib, json, shutil, subprocess, sys base = Path(__file__).resolve().parent out = base / sys.argv[1] out.mkdir() binary = Path('C:/Users/User/Documents/Git/ARCADIA-Studio/.local/target-gnullvm/debug/arcadia.exe') def identity(path): raw = path.read_bytes() return {'bytes': len(raw), 'sha256': hashlib.sha256(raw).hexdigest()} before = identity(binary) fixture = out / 'complete-fixture' fixture.mkdir() shutil.copyfile(base / 'fixtures/missing-include/project.arcadia', fixture / 'project.arcadia') shutil.copyfile(base / 'fixtures/functions-to-discover.arcadia', fixture / 'functions.arcadia') inputs = {p.name: identity(p) for p in fixture.iterdir()} runs = [] for label, entry in [('missing', base / 'fixtures/missing-include/project.arcadia'), ('complete', fixture / 'project.arcadia')]: argv = [str(binary), 'lint', str(entry), '--json'] start = datetime.datetime.now(datetime.timezone.utc).isoformat() result = subprocess.run(argv, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=out) (out / f'{label}.stdout.json').write_bytes(result.stdout) (out / f'{label}.stderr.log').write_bytes(result.stderr) runs.append({'label': label, 'start': start, 'argv': argv, 'exitCode': result.returncode, 'stdout': identity(out / f'{label}.stdout.json'), 'stderr': identity(out / f'{label}.stderr.log')}) record = {'scope': 'Provisional fixture/diagnostic preparation using identified pre-existing CLI. Source provenance not established here; no current #12 binary or native acceptance claim.', 'helper': identity(Path(__file__)), 'binaryPath': str(binary), 'binary': before, 'binaryUnchanged': before == identity(binary), 'inputs': inputs, 'inputsUnchanged': inputs == {p.name: identity(p) for p in fixture.iterdir()}, 'runs': runs} (out / 'result.json').write_text(json.dumps(record, indent=2), encoding='utf-8') print(json.dumps(record, indent=2)) sys.exit(0 if [run['exitCode'] for run in runs] == [3, 0] and record['inputsUnchanged'] and record['binaryUnchanged'] else 1)