87 lines
7.9 KiB
Python
87 lines
7.9 KiB
Python
"""Copy closed local evidence only. Never execute included helpers or native code."""
|
|
import hashlib
|
|
import json
|
|
from datetime import datetime, timezone
|
|
from pathlib import Path
|
|
|
|
main = Path('C:/Users/User/Documents/Git/ARCADIA-Studio')
|
|
worktree = main / '.local/canvas-union-ytr83r-20260911'
|
|
first = worktree / 'harness/experiments/grapheme-windows-cb91525-20260911'
|
|
second = worktree / 'harness/experiments/canvas-native-close-a57c334-20260911'
|
|
|
|
def digest(data):
|
|
return hashlib.sha256(data).hexdigest().upper()
|
|
|
|
def create(path, data):
|
|
path.parent.mkdir(parents=True, exist_ok=True)
|
|
with path.open('xb') as out:
|
|
out.write(data)
|
|
|
|
def archive(directory, sources, readme, excluded=None):
|
|
assert not (directory / 'manifest.json').exists()
|
|
records = []
|
|
for source, target in sources:
|
|
data = source.read_bytes()
|
|
before = digest(data)
|
|
destination = directory / target
|
|
create(destination, data)
|
|
copied = destination.read_bytes()
|
|
after = source.read_bytes()
|
|
assert data == copied == after, source
|
|
records.append(dict(origin=str(source), path=target, bytes=len(data), original_sha256=before,
|
|
copy_sha256=digest(copied), original_after_sha256=digest(after)))
|
|
manifest = dict(created_utc=datetime.now(timezone.utc).isoformat(), scope='Exact closed evidence copies; no execution or new acceptance',
|
|
payload_files=len(records), payload_bytes=sum(r['bytes'] for r in records), files=records,
|
|
excluded=excluded or [])
|
|
create(directory / 'manifest.json', (json.dumps(manifest, indent=2) + '\n').encode())
|
|
create(directory / 'README.md', readme.encode())
|
|
return dict(directory=str(directory), payload_files=len(records), payload_bytes=manifest['payload_bytes'], manifest_sha256=digest((directory / 'manifest.json').read_bytes()))
|
|
|
|
gates = main / '.local/grapheme-fixed-windows-20260911'
|
|
gate_sources = [(gates / (name + suffix), name + suffix)
|
|
for name in ('short-tests', 'short-bin-tests', 'desktop-all-targets', 'desktop-clippy')
|
|
for suffix in ('.log', '-status.json')]
|
|
gate_sources += [(gates / name, name) for name in ('before-desktop-verify-head.json', 'after-desktop-verify-head.json',
|
|
'after-clippy-verify-head.json', 'inputs.json', 'preserve-build.ps1', 'closed-evidence-readback.json', 'read-closed-evidence.py')]
|
|
gate_sources += [(main / '.local/grapheme-fixed-windows-gates-report.md', 'report.md'),
|
|
(main / '.local/toolchain/env.ps1', 'toolchain-env.ps1'),
|
|
(main / '.local/run-gate.ps1', 'run-gate.ps1'),
|
|
(main / '.local/grapheme-fixed-inputs.py', 'grapheme-fixed-inputs.py')]
|
|
zip_path = gates / 'exact-inputs.zip'
|
|
zip_data = zip_path.read_bytes()
|
|
zip_hash = digest(zip_data)
|
|
gate_readme = f'''# Closed grapheme Windows gates — cb91525
|
|
|
|
Codex-ytr83r /root/windows_release_gap_review, 2026-09-11. Exact closed evidence for source `cb91525cfd9da7ac15ea1b21b962145c77bb9922`: corrected short tests4/4, full desktop756/756, and strict desktop Clippy exit0. The4 short tests overlap756. The first incorrect `--lib` invocation is preserved as exit101 with no tests run.
|
|
|
|
`report.md` gives exact commands, timings, scope and environment. `inputs.json` binds529 frozen files /9,715,008 bytes, SHA256 `8F787F119E8D82ACB52C4F28BF4C3C6635D8970F1BC9D669DEB7C1FCC8373EB5`; three verify-head receipts passed before/between/after the full suite and Clippy. Source remains reproducible from the named Git commit. Original private ZIP `{zip_path}` ({len(zip_data)} bytes), SHA256 `{zip_hash}`, is intentionally excluded, together with all executables and DLLs.
|
|
|
|
**No cb91525 GUI build was started.** Root superseded that planned build to include the needed saved-destination baseline correction (peer33c6d83, issue5/comment514 and issue6) in one combined candidate. No binary, package, native grapheme or combined-candidate acceptance is implied. The historical `preserve-build.ps1` was never executed and explicitly refuses invocation. Helper/environment source snapshots were captured at archival time; terminal gate receipts are the execution authority. Included verification/archival scripts are source records, not instructions to run new gates.
|
|
|
|
`manifest.json` binds each original and copied payload with SHA256/size before copy and original readback after copy. `readback.json` records a subsequent independent read of originals/copies, metadata and exact final inventory. Historical absolute private paths inside raw receipts are preserved unchanged. No existing archive, source, STATE or Git index was changed.
|
|
'''
|
|
first_result = archive(first, gate_sources, gate_readme, [dict(path=str(zip_path), bytes=len(zip_data), sha256=zip_hash, reason='Source ZIP excluded; named source commit plus frozen input hashes retained'), dict(pattern='*.exe, *.dll', reason='No binary payload or GUI build for this freeze')])
|
|
|
|
native = main / '.local/native-a57c334'
|
|
native_sources = [(native / name, name) for name in ('camera-open-capture-failure.json', 'keyboard-close-observation.json', 'normal-close.json', 'logs/studio.stdout.log', 'logs/studio.stderr.log')]
|
|
native_readme = '''# a57 camera-attempt limitation and normal close
|
|
|
|
Codex-ytr83r /root/windows_release_gap_review, 2026-09-11. Small terminal supplement for source `a57c334b302eb13352b4bb65df1c75d94d002348`, GUI69DB, PID7564. Earlier successful staged source/consumer work,45 screenshots and13 passing oracle checks belong to the separate [completed staged archive](../staged-source-native-a57c334-20260911/README.md) and [raw independent review](../../release-staged-native-a57-independent-review-20260911.md). That archive already contains launch/provenance evidence; it is not duplicated here.
|
|
|
|
The later Ctrl+O attempt to open the cluster fixture encountered repeated capture timeouts. An accessibility-only read succeeded, but clicking the current File name edit failed because coordinate input geometry was unavailable. **No filename was entered and no new cluster project or camera acceptance resulted.** The failure receipt's pending-dialog/live-process text is historical.
|
|
|
|
Root then used a fresh accessibility observation of Open and Escape to cancel it, confirmed the dialog absent, read the saved main window afresh, and issued Alt+F4 once. Immediate inventory no longer contained the target window. The waiting logger subsequently recorded the bound process exit0 at2026-09-11T21:26:24.0748959UTC. Closed stdout/stderr are both0 bytes. Terminal readback records unchanged GUI SHA256 `69DBB90FA299B3B3D90140C7934891F79166025893AF9B35B2B8D754A37A0D40` and DLL `AA282FA47BB2C4E210CEA5E470CDBDCA58568F0BE0BC73E404D86AB9CD95EF6A`. These raw terminal records support cleanup; they do not establish camera, grapheme-fix or full native acceptance. Root additionally reported cleared Computer bindings and no application alive; this archive task made no new UI/process observation.
|
|
|
|
`manifest.json` records exact original/copy size and SHA256 with original readback. `readback.json` independently re-reads originals and copies and binds the exact final inventory. This archive contains5 closed payload files only, plus its README, manifest and readback; no launch, oracle or model was executed while copying. No binary or previous frozen archive was modified.
|
|
'''
|
|
second_result = archive(second, native_sources, native_readme)
|
|
|
|
review_source = main / '.local/staged-native-a57-independent-review.md'
|
|
review_target = worktree / 'harness/release-staged-native-a57-independent-review-20260911.md'
|
|
review = review_source.read_bytes()
|
|
expected_review = 'A949008C91854F8779BB37C2EABF87955782F2008075C37494D53AD3B4F2F564'
|
|
assert digest(review) == expected_review
|
|
create(review_target, review)
|
|
assert review_target.read_bytes() == review_source.read_bytes() == review
|
|
print(json.dumps(dict(archives=[first_result, second_result], raw_review=dict(path=str(review_target), bytes=len(review), sha256=digest(review))), indent=2))
|