Files
sorokin.oleg.edu 9fd76aef3a Add current-draft diagnostic underlines and passive hover
Preserve raw include diagnostic provenance and derive bands from the existing shaped editor. Retain deferred tooltip paragraphs through rendering. Include source, regression, failure and native-trial evidence; corrected native acceptance remains pending.
2026-09-13 01:43:22 -07:00

75 lines
4.0 KiB
Python

"""Bind native launch to closed same-source Windows gates and the current CLI oracle."""
from pathlib import Path
import hashlib, json
base = Path(__file__).resolve().parent
gates = base.parent / 'text-diagnostic-gates'
def identity(path):
raw = path.read_bytes()
return {'path':str(path), 'bytes':len(raw), 'sha256':hashlib.sha256(raw).hexdigest()}
def read(path):
return json.loads(path.read_text(encoding='utf-8'))
preserved = base / 'windows-build-final-1-binaries/preserved.json'
binary_record = read(preserved)
evidence = [identity(preserved), identity(Path(__file__)), identity(base / 'launch.py'), identity(base / 'native-recorder.js')]
source_inputs = None
for label in ['strict-clippy-3','desktop-cli-final-1','format-final-1','windows-build-final-1']:
root = gates / label
result = read(root / 'result.json')
assert result['exitCode'] == 0 and result['inputsUnchanged'] and result['inputCount'] == 604
assert result['environment']['RUSTUP_TOOLCHAIN'] == 'stable-x86_64-pc-windows-gnullvm'
if source_inputs is None:
source_inputs = result['inputs']
assert source_inputs == result['inputs']
evidence.append(identity(root / 'result.json'))
for name, key in [('inputs.json','inputs'),('inputs.zip','archive'),('stdout.log','stdout'),('stderr.log','stderr')]:
item = identity(root / name)
assert {k:item[k] for k in ['bytes','sha256']} == result[key]
evidence.append(item)
oracle_path = base / 'current-oracle-1/result.json'
oracle = read(oracle_path)
assert oracle['passed'] and oracle['sourceInputs'] == source_inputs
evidence.append(identity(oracle_path))
for name in ['missing.stdout.json','missing.stderr.log','complete.stdout.json','complete.stderr.log']:
evidence.append(identity(oracle_path.parent / name))
for name in ['fixtures/missing-include/project.arcadia','fixtures/functions-to-discover.arcadia']:
evidence.append(identity(base / name))
binary = next(b for b in binary_record['binaries'] if b['name'] == 'arcadia-studio')
actual = identity(Path(binary['path']))
assert all(actual[key] == binary[key] for key in ['bytes','sha256'])
build_path = gates / 'windows-build-final-1/result.json'
build = read(build_path)
assert binary_record['buildResult'] == identity(build_path)
assert binary_record['sourceInputs'] == source_inputs
assert 'build' in build['command'] and build['finish']
if '--target' in build['command']:
assert build['command'][build['command'].index('--target') + 1] == 'x86_64-pc-windows-gnullvm'
matches = [a for a in build['artifacts'] if a['cargo']['target']['name'] == 'arcadia-studio'
and a['cargo']['target']['kind'] == ['bin'] and a['cargo']['profile']['test'] is False
and a['cargo']['executable']]
assert len(matches) == 1
artifact = matches[0]
assert artifact['readback'] == {key:actual[key] for key in ['bytes','sha256']}
assert Path(binary['source']).resolve() == Path(artifact['cargo']['executable']).resolve()
assert Path(artifact['cargo']['manifest_path']).resolve() == (Path(build['cwd']) / 'crates/oa-desktop/Cargo.toml').resolve()
assert 'crates/oa-desktop/Cargo.toml' in read(build_path.parent / 'inputs.json')
raw_artifacts = []
for line in (build_path.parent / 'stdout.log').read_text(encoding='utf-8').splitlines():
try:
value = json.loads(line)
except json.JSONDecodeError:
continue
if isinstance(value, dict) and value.get('reason') == 'compiler-artifact':
raw_artifacts.append(value)
assert artifact['cargo'] in raw_artifacts
assert oracle['buildResult']['sha256'] == identity(build_path)['sha256']
manifest = {'nativeReady':True, 'target':'x86_64-pc-windows-gnullvm', 'scope':'Development diagnostic GUI trial only; no integrated package or release acceptance.', 'sourceInputs':source_inputs, 'binary':actual, 'evidence':evidence}
path = base / 'launch-manifest-final-1.json'
with path.open('x', encoding='utf-8', newline='\n') as output:
json.dump(manifest, output, indent=2)
output.write('\n')
print(json.dumps(identity(path)))