Add guarded Text alias rename with complete preview and editor reuse
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"archive": "source-rename-completed-evidence-20260912.zip",
|
||||
"sha256": "2282e4e755bb03ab3ecb079391909f3978297ad307e76306ef7eb5a87a9437cf",
|
||||
"bytes": 10755689,
|
||||
"members": 77,
|
||||
"payloadBytes": 12361849,
|
||||
"completedRuns": [
|
||||
"attempt-6",
|
||||
"clipping-negative-1",
|
||||
"clipping-positive-diagnostic-1",
|
||||
"nested-sync-diagnostic-1",
|
||||
"editor-patch-check-1"
|
||||
],
|
||||
"commandReceipts": 8,
|
||||
"inputArchivesVerified": 5,
|
||||
"sourceReadbacks": 73,
|
||||
"allMemberBytesAndCrcVerified": true,
|
||||
"scope": "Completed source gates and bounded experiments only; not candidate acceptance or native paint."
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
"""Archive only explicitly selected completed receipts; execute no project code."""
|
||||
import hashlib
|
||||
import io
|
||||
import json
|
||||
from pathlib import Path
|
||||
import zipfile
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
OUT = Path(__file__).resolve().parent
|
||||
PREFIX = "source-rename-completed-evidence/"
|
||||
RUNS = ["attempt-6", "clipping-negative-1", "clipping-positive-diagnostic-1",
|
||||
"nested-sync-diagnostic-1", "editor-patch-check-1"]
|
||||
payload = {}
|
||||
originals = {}
|
||||
checks = []
|
||||
|
||||
def sha(data):
|
||||
return hashlib.sha256(data).hexdigest()
|
||||
|
||||
def encoded(value):
|
||||
return (json.dumps(value, ensure_ascii=True, indent=2) + "\n").encode()
|
||||
|
||||
def add(source, target):
|
||||
path = ROOT / source
|
||||
data = path.read_bytes()
|
||||
assert target not in payload
|
||||
assert path.suffix.lower() not in {".exe", ".dll", ".pyc"}
|
||||
payload[target] = data
|
||||
originals[str(path)] = data
|
||||
|
||||
for run in RUNS:
|
||||
directory = ROOT / ".local/source-rename-integration-20260912" / run
|
||||
names = ["inputs.zip", "inputs.json", "environment.json"]
|
||||
phases = ["clippy", "tests", "timing", "gui"] if run == "attempt-6" else [""]
|
||||
if run == "attempt-6":
|
||||
names.append("complete.json")
|
||||
complete = json.loads((directory / "complete.json").read_bytes())
|
||||
assert complete["inputsUnchanged"] and complete["gates"] == phases
|
||||
for phase in phases:
|
||||
receipt_name = phase + "-result.json" if phase else "result.json"
|
||||
receipt = json.loads((directory / receipt_name).read_bytes())
|
||||
assert receipt["finished"] and receipt["inputsUnchanged"]
|
||||
assert receipt["exitCode"] == (101 if run == "clipping-negative-1" else 0)
|
||||
names.append(receipt_name)
|
||||
for stream in ["stdout", "stderr"]:
|
||||
log = (phase + "-" if phase else "") + stream + ".log"
|
||||
assert sha((directory / log).read_bytes()) == receipt[stream + "Sha256"]
|
||||
names.append(log)
|
||||
checks.append({"run": run, "phase": phase or "command", "exitCode": receipt["exitCode"],
|
||||
"finished": receipt["finished"], "command": receipt["command"]})
|
||||
manifest = json.loads((directory / "inputs.json").read_bytes())
|
||||
raw = (directory / "inputs.zip").read_bytes()
|
||||
assert sha(raw) == manifest["archiveSha256"]
|
||||
with zipfile.ZipFile(io.BytesIO(raw)) as inner:
|
||||
expected = {entry["path"]: entry for entry in manifest["files"]}
|
||||
assert len(inner.namelist()) == len(set(inner.namelist())) == len(expected)
|
||||
assert set(inner.namelist()) == set(expected) and inner.testzip() is None
|
||||
for name, entry in expected.items():
|
||||
assert not Path(name).is_absolute() and ".." not in Path(name).parts
|
||||
assert Path(name).suffix.lower() not in {".exe", ".dll", ".pyc"}
|
||||
data = inner.read(name)
|
||||
assert len(data) == entry["bytes"] and sha(data) == entry["sha256"]
|
||||
checks.append({"run": run, "inputArchiveSha256": sha(raw), "inputMembers": len(expected),
|
||||
"allInputBytesAndCrcVerified": True})
|
||||
for name in names:
|
||||
add(directory.relative_to(ROOT) / name, "runs/" + run + "/" + name)
|
||||
|
||||
diagnosis = ".local/source-rename-latency-diagnosis-20260912/"
|
||||
notes = ["notes.md", "read-bindings.json", "nested-summary.json", "summarize.py",
|
||||
"editor-initialization-candidates.md", "editor-initialization-bindings.json",
|
||||
"same-line-patch-assessment.md", "editor-patch-independent-review.md",
|
||||
"editor-patch-review-bindings.json", "prepare-instrumentation.ps1",
|
||||
"candidate/editor_patch.rs", "candidate/README.md"]
|
||||
for name in notes:
|
||||
add(diagnosis + name, "diagnosis/" + name)
|
||||
for path in sorted((ROOT / diagnosis / "instrumentation").rglob("*")):
|
||||
if path.is_file():
|
||||
add(path.relative_to(ROOT), "diagnosis/instrumentation/" + path.relative_to(ROOT / diagnosis / "instrumentation").as_posix())
|
||||
for name in ["README.md", "source_rename.rs", "controller-tests.rs", "preview_glyph_tests.rs", "base-hashes.json", "staged-hashes.json"]:
|
||||
add(".local/source-rename-preview-clipping-20260912/" + name, "clipping-stage/" + name)
|
||||
for name in ["native-preview-clipping-review.md", "native-preview-clipping-bindings.json", "staged-clipping-review.md", "staged-clipping-review-bindings.json"]:
|
||||
add(".local/source-rename-controller-independent-review-20260912/" + name, "reviews/" + name)
|
||||
for name in ["gate.py", "focused.py"]:
|
||||
add(".local/source-rename-integration-20260912/" + name, "helpers-current-readback/" + name)
|
||||
assert sha(payload["diagnosis/candidate/editor_patch.rs"]) == "f301b8a043916b69dccb176da527a50ee85124b7e8b1da18921e4a0374a5153b"
|
||||
|
||||
# Bind the corrected helper from the completed check snapshot, never moving live source.
|
||||
with zipfile.ZipFile(io.BytesIO(payload["runs/editor-patch-check-1/inputs.zip"])) as inner:
|
||||
corrected = inner.read("crates/oa-desktop/src/app/source_rename/editor_patch.rs")
|
||||
assert sha(corrected) == "049c9774c1ca28cda01f9a8e024604bef282366aa52c53c17c1918dbd09c3441"
|
||||
negative = payload["runs/clipping-negative-1/stderr.log"].decode()
|
||||
assert "source glyph under scrollbar" in negative and "cluster=92..93" in negative
|
||||
|
||||
native_path = "harness/experiments/source-alias-rename-native-20260912/source-rename-native-attempt-6-20260912.zip"
|
||||
native = (ROOT / native_path).read_bytes()
|
||||
assert sha(native) == "77adda5a33eb1def6dab23352ca0ab172300ea65fc21d2c215d545d7fcce0d08"
|
||||
gui = json.loads(payload["runs/attempt-6/gui-result.json"])["binary"]
|
||||
summary = {"scope": "Completed source gates and bounded experiments only; not candidate acceptance or native paint.",
|
||||
"checks": checks, "externalBindings": [{"path": native_path, "sha256": sha(native), "bytes": len(native), "included": False},
|
||||
{"path": ".local/source-rename-integration-20260912/attempt-6/arcadia-studio.exe", "sha256": gui["sha256"], "bytes": gui["bytes"], "included": False}],
|
||||
"correctedHelperFromCheckInputSha256": sha(corrected),
|
||||
"excluded": ["editor-patch-tests-1", "next-layout evaluator", "executable/DLL bytes", "private profiles", "caches", "duplicate native trial archive"]}
|
||||
payload["SUMMARY.json"] = encoded(summary)
|
||||
payload["INDEX.md"] = b"""# Completed alias source gates and bounded experiments
|
||||
|
||||
This private archive preserves five completed runs only. It is not a release or acceptance of an editor-reuse candidate. Native trial evidence is separately versioned and SHA-bound in SUMMARY.json, without duplicate payload.
|
||||
|
||||
| Run | Meaning |
|
||||
| --- | --- |
|
||||
| attempt-6 | Four successful Windows source gates: Clippy, tests, existing full Confirm timing, GUI executable build. The GUI JSON records the external binary; building it is not native acceptance. |
|
||||
| clipping-negative-1 | Expected test failure (101): original layout allows actual shaped declaration glyph cluster92..93 beneath the scrollbar. |
|
||||
| clipping-positive-diagnostic-1 | Successful focused rename tests with corrected preview layout and temporary timing instrumentation in source. This is an experimental capture, not clean production acceptance. |
|
||||
| nested-sync-diagnostic-1 | Successful ignored real-Confirm timing experiment with nested instrumentation. Inclusive phase levels must not be added together; no GPU, first-paint or native responsiveness claim. |
|
||||
| editor-patch-check-1 | Successful cargo check of corrected reuse helper integration only. It does not execute helper behavior, later layout timing or native rendering. |
|
||||
|
||||
Every run has its exact inputs.zip, complete membership/hash manifest, environment, commands/receipts and raw logs. All eight command receipt log hashes and all five nested ZIP memberships/member bytes/CRCs were independently checked during construction. Inputs manifests bind historical uncommitted snapshots; baseCommit alone is not their source identity.
|
||||
|
||||
diagnosis/instrumentation preserves removed diagnostic baseline/modified files, exact patch, bindings and generator. Historical notes retain their original time-scoped claims; later receipts qualify earlier hypotheses. diagnosis/candidate/editor_patch.rs is frozen f301b8a0 and has the known after-only LFCR counterexample documented in editor-patch-independent-review.md. Its original README's broad fallback claim is superseded by that review. Corrected helper049c9774 is preserved inside editor-patch-check-1/inputs.zip. The review is static, not proof of executed correctness.
|
||||
|
||||
clipping-stage and reviews preserve the earlier proposed repair/evaluator and source review; the exact executed evaluator is in each run's inputs.zip. helpers-current-readback are archive-time helper source snapshots, not independently proven historical executed versions. Historical absolute paths are evidence, not portable execution instructions. Reproduce with the recorded Windows compiler/dependencies and exact source snapshot; do not run relocated helpers blindly.
|
||||
|
||||
No current editor-patch-tests-1 or subsequent layout evaluation is included. No executables, DLLs, caches or private profiles are included, and no native trial payload is duplicated. PAYLOAD-MANIFEST.json covers all members except itself; external archive-result.json binds the entire archive.
|
||||
"""
|
||||
add(Path(__file__).relative_to(ROOT), "archive-tools/build_archive.py")
|
||||
payload["READBACK-SOURCES.json"] = encoded([{"path": str(Path(path).relative_to(ROOT)), "sha256": sha(data), "bytes": len(data)} for path, data in originals.items()])
|
||||
payload["PAYLOAD-MANIFEST.json"] = encoded({"selfExcluded": "PAYLOAD-MANIFEST.json", "members": [{"path": name, "bytes": len(data), "sha256": sha(data)} for name, data in sorted(payload.items())]})
|
||||
archive = OUT / "source-rename-completed-evidence-20260912.zip"
|
||||
with zipfile.ZipFile(archive, "x", compression=zipfile.ZIP_DEFLATED, compresslevel=9) as zipped:
|
||||
for name, data in sorted(payload.items()):
|
||||
info = zipfile.ZipInfo(PREFIX + name, date_time=(2026, 9, 12, 0, 0, 0))
|
||||
info.compress_type = zipfile.ZIP_DEFLATED
|
||||
zipped.writestr(info, data)
|
||||
with zipfile.ZipFile(archive) as zipped:
|
||||
assert zipped.testzip() is None and set(zipped.namelist()) == {PREFIX + n for n in payload}
|
||||
for name, data in payload.items():
|
||||
assert zipped.read(PREFIX + name) == data
|
||||
for path, data in originals.items():
|
||||
assert Path(path).read_bytes() == data, "Source changed during archive: " + path
|
||||
receipt = {"archive": archive.name, "sha256": sha(archive.read_bytes()), "bytes": archive.stat().st_size,
|
||||
"members": len(payload), "payloadBytes": sum(map(len, payload.values())), "completedRuns": RUNS,
|
||||
"commandReceipts": 8, "inputArchivesVerified": 5, "sourceReadbacks": len(originals),
|
||||
"allMemberBytesAndCrcVerified": True, "scope": summary["scope"]}
|
||||
with (OUT / "archive-result.json").open("x", encoding="utf-8") as stream:
|
||||
json.dump(receipt, stream, indent=2)
|
||||
print(json.dumps(receipt))
|
||||
@@ -0,0 +1,11 @@
|
||||
# Independent archive verification — PASS
|
||||
|
||||
2026-09-12, `/root/publication_review`. No discrepancies found. Read-only verification of archive/original bytes; no archived helper, project code, Cargo or native application was executed. See `independent-verification.json` and the separate `independent_verify.py` evaluator.
|
||||
|
||||
- Whole ZIP matches `archive-result.json`: SHA256 `2282e4e755bb03ab3ecb079391909f3978297ad307e76306ef7eb5a87a9437cf`, 10,755,689 bytes, 77 members, 12,361,849 uncompressed payload bytes.
|
||||
- Complete outer manifest membership, every payload hash/length and all CRCs pass. All five nested input ZIPs pass exact membership, every input hash/length and CRC: 513/514/514/514/515 members respectively. No duplicate or unsafe paths, executable/DLL/cache/profile payloads, or nested native archive duplicates were found.
|
||||
- All eight completed command receipts agree with their raw log hashes and summary entries. All 73 original-source readbacks are byte-identical, including the archive builder. External native ZIP `77adda5a…` and preserved executable `d1ec6305…` match their complete SHA256 and byte bindings.
|
||||
- Raw outcomes match the stated historical scope: attempt6 has 796 tests passed, zero failed, two ignored, plus successful strict Clippy, separate ignored timing and executable build. The clipping negative control fails with the recorded glyph cluster92..93 beneath the scrollbar. The corrected-layout diagnostic run passes 33 focused tests; nested timing passes its one experiment. Editor-patch-check-1 is a successful **check**, not executed behavior.
|
||||
- The original candidate `f301b8a0…`, its documented LFCR finding, and corrected helper `049c9774…` inside the completed check snapshot are correctly distinguished. Staged clipping hashes and nested timing summary-to-log binding pass.
|
||||
|
||||
Limitations are accurately stated in INDEX.md: this is historical evidence, not acceptance of the current reuse candidate, subsequent evaluator runs, corrected native layout, or release. Native trial payload remains separately bound. Helper sources labeled archive-time readbacks are not asserted to be the exact historical executed versions. Historical uncommitted input snapshots, rather than baseCommit alone, identify each tested source. No new native painting or latency claim follows from this verification.
|
||||
+133
@@ -0,0 +1,133 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"checks": 2945,
|
||||
"archiveSha256": "2282e4e755bb03ab3ecb079391909f3978297ad307e76306ef7eb5a87a9437cf",
|
||||
"bytes": 10755689,
|
||||
"members": 77,
|
||||
"payloadBytes": 12361849,
|
||||
"nestedInputs": {
|
||||
"attempt-6": {
|
||||
"members": 513,
|
||||
"sha256": "03b5a9e3f4e9e220421320c09f1ecf46f811edf2e3c6c45dcd9522c6d78b8255",
|
||||
"topLevelCounts": {
|
||||
"Cargo.lock": 1,
|
||||
"Cargo.toml": 1,
|
||||
"build": 3,
|
||||
"crates": 275,
|
||||
"docs": 18,
|
||||
"examples": 51,
|
||||
"harness": 164
|
||||
}
|
||||
},
|
||||
"clipping-negative-1": {
|
||||
"members": 514,
|
||||
"sha256": "1a59b58373d615a534244881a931f4423f590f04e0e632c986bf2a93af7d287d",
|
||||
"topLevelCounts": {
|
||||
"Cargo.lock": 1,
|
||||
"Cargo.toml": 1,
|
||||
"build": 3,
|
||||
"crates": 276,
|
||||
"docs": 18,
|
||||
"examples": 51,
|
||||
"harness": 164
|
||||
}
|
||||
},
|
||||
"clipping-positive-diagnostic-1": {
|
||||
"members": 514,
|
||||
"sha256": "fc899e533e04317d0ba27dfa9f1bdfbfca77d3dede8478c45480f0edb19931a0",
|
||||
"topLevelCounts": {
|
||||
"Cargo.lock": 1,
|
||||
"Cargo.toml": 1,
|
||||
"build": 3,
|
||||
"crates": 276,
|
||||
"docs": 18,
|
||||
"examples": 51,
|
||||
"harness": 164
|
||||
}
|
||||
},
|
||||
"nested-sync-diagnostic-1": {
|
||||
"members": 514,
|
||||
"sha256": "5bbd5145f6eea69fabe5cbfa3da14f059cf4446de49072f8714a5dc709d35cfa",
|
||||
"topLevelCounts": {
|
||||
"Cargo.lock": 1,
|
||||
"Cargo.toml": 1,
|
||||
"build": 3,
|
||||
"crates": 276,
|
||||
"docs": 18,
|
||||
"examples": 51,
|
||||
"harness": 164
|
||||
}
|
||||
},
|
||||
"editor-patch-check-1": {
|
||||
"members": 515,
|
||||
"sha256": "1b18763ba3f74cbff0e842ff51b58879a6d7f82daac4ce65086b8c579ae0b272",
|
||||
"topLevelCounts": {
|
||||
"Cargo.lock": 1,
|
||||
"Cargo.toml": 1,
|
||||
"build": 3,
|
||||
"crates": 277,
|
||||
"docs": 18,
|
||||
"examples": 51,
|
||||
"harness": 164
|
||||
}
|
||||
}
|
||||
},
|
||||
"commandReceipts": [
|
||||
{
|
||||
"run": "attempt-6",
|
||||
"phase": "clippy",
|
||||
"exitCode": 0
|
||||
},
|
||||
{
|
||||
"run": "attempt-6",
|
||||
"phase": "tests",
|
||||
"exitCode": 0
|
||||
},
|
||||
{
|
||||
"run": "attempt-6",
|
||||
"phase": "timing",
|
||||
"exitCode": 0
|
||||
},
|
||||
{
|
||||
"run": "attempt-6",
|
||||
"phase": "gui",
|
||||
"exitCode": 0
|
||||
},
|
||||
{
|
||||
"run": "clipping-negative-1",
|
||||
"phase": "command",
|
||||
"exitCode": 101
|
||||
},
|
||||
{
|
||||
"run": "clipping-positive-diagnostic-1",
|
||||
"phase": "command",
|
||||
"exitCode": 0
|
||||
},
|
||||
{
|
||||
"run": "nested-sync-diagnostic-1",
|
||||
"phase": "command",
|
||||
"exitCode": 0
|
||||
},
|
||||
{
|
||||
"run": "editor-patch-check-1",
|
||||
"phase": "command",
|
||||
"exitCode": 0
|
||||
}
|
||||
],
|
||||
"originalReadbacks": 73,
|
||||
"originalDeltas": [],
|
||||
"externalBindings": [
|
||||
{
|
||||
"path": "harness/experiments/source-alias-rename-native-20260912/source-rename-native-attempt-6-20260912.zip",
|
||||
"sha256": "77adda5a33eb1def6dab23352ca0ab172300ea65fc21d2c215d545d7fcce0d08",
|
||||
"bytes": 3221627
|
||||
},
|
||||
{
|
||||
"path": ".local/source-rename-integration-20260912/attempt-6/arcadia-studio.exe",
|
||||
"sha256": "d1ec63050e95513064155e9d04f443d95667b1e468dcdbb3b810dad379504814",
|
||||
"bytes": 113854464
|
||||
}
|
||||
],
|
||||
"failures": [],
|
||||
"scope": "Independent byte/CRC/membership and receipt verification only; no archived or production code executed."
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
"""Read archive/original bytes only; never import or execute archived helpers."""
|
||||
from pathlib import Path, PurePosixPath, PureWindowsPath
|
||||
from collections import Counter
|
||||
import hashlib
|
||||
import io
|
||||
import json
|
||||
import zipfile
|
||||
|
||||
root = Path(__file__).resolve().parents[2]
|
||||
folder = Path(__file__).resolve().parent
|
||||
receipt = json.loads((folder / 'archive-result.json').read_bytes())
|
||||
raw = (folder / receipt['archive']).read_bytes()
|
||||
sha = lambda b: hashlib.sha256(b).hexdigest()
|
||||
failures = []
|
||||
checks = 0
|
||||
def check(ok, message):
|
||||
global checks
|
||||
checks += 1
|
||||
if not ok:
|
||||
failures.append(message)
|
||||
def safe(name):
|
||||
pos = PurePosixPath(name)
|
||||
win = PureWindowsPath(name)
|
||||
return not pos.is_absolute() and not win.is_absolute() and not win.drive and '..' not in pos.parts and '\\' not in name
|
||||
def verify_zip(z, label):
|
||||
names = z.namelist()
|
||||
check(len(names) == len(set(names)), label + ': duplicate member')
|
||||
check(z.testzip() is None, label + ': CRC')
|
||||
check(all(safe(n) for n in names), label + ': unsafe member path')
|
||||
check(all(not n.endswith('/') for n in names), label + ': unexpected directory member')
|
||||
check(all(PurePosixPath(n).suffix.lower() not in {'.exe', '.dll', '.pyc'} for n in names), label + ': executable/cache member')
|
||||
check(all(not ({'node_modules', 'target', '.git', '__pycache__', 'profile', 'profiles', 'cache', 'caches'} & set(PurePosixPath(n).parts)) for n in names), label + ': out-of-scope directory')
|
||||
return names
|
||||
|
||||
check(sha(raw) == receipt['sha256'], 'whole archive SHA')
|
||||
check(len(raw) == receipt['bytes'], 'whole archive bytes')
|
||||
prefix = 'source-rename-completed-evidence/'
|
||||
z = zipfile.ZipFile(io.BytesIO(raw))
|
||||
names = verify_zip(z, 'outer')
|
||||
check(len(names) == receipt['members'] == 77, 'outer member count')
|
||||
check(all(n.startswith(prefix) for n in names), 'outer prefix')
|
||||
payload = {n[len(prefix):]: z.read(n) for n in names}
|
||||
check(sum(map(len, payload.values())) == receipt['payloadBytes'], 'outer payload bytes')
|
||||
manifest = json.loads(payload['PAYLOAD-MANIFEST.json'])
|
||||
entries = manifest['members']
|
||||
check(manifest['selfExcluded'] == 'PAYLOAD-MANIFEST.json', 'manifest self exclusion')
|
||||
check(len(entries) == len({e['path'] for e in entries}), 'manifest duplicate entry')
|
||||
check(set(e['path'] for e in entries) == set(payload) - {'PAYLOAD-MANIFEST.json'}, 'manifest complete membership')
|
||||
for entry in entries:
|
||||
data = payload[entry['path']]
|
||||
check(len(data) == entry['bytes'] and sha(data) == entry['sha256'], 'manifest member: ' + entry['path'])
|
||||
|
||||
source_maps = [
|
||||
('.local/source-rename-latency-diagnosis-20260912/', 'diagnosis/'),
|
||||
('.local/source-rename-preview-clipping-20260912/', 'clipping-stage/'),
|
||||
('.local/source-rename-controller-independent-review-20260912/', 'reviews/'),
|
||||
]
|
||||
source_entries = json.loads(payload['READBACK-SOURCES.json'])
|
||||
check(len(source_entries) == receipt['sourceReadbacks'] == 73, 'readback count')
|
||||
original_deltas = []
|
||||
for entry in source_entries:
|
||||
source = entry['path'].replace('\\', '/')
|
||||
check(safe(source), 'unsafe original path: ' + source)
|
||||
if source.endswith('/build_archive.py'):
|
||||
member = 'archive-tools/build_archive.py'
|
||||
elif source in {'.local/source-rename-integration-20260912/gate.py', '.local/source-rename-integration-20260912/focused.py'}:
|
||||
member = 'helpers-current-readback/' + source.rsplit('/', 1)[1]
|
||||
elif source.startswith('.local/source-rename-integration-20260912/'):
|
||||
member = 'runs/' + source.removeprefix('.local/source-rename-integration-20260912/')
|
||||
else:
|
||||
mapped = [target + source.removeprefix(base) for base, target in source_maps if source.startswith(base)]
|
||||
check(len(mapped) == 1, 'original target mapping: ' + source)
|
||||
if not mapped:
|
||||
continue
|
||||
member = mapped[0]
|
||||
archived = payload[member]
|
||||
check(len(archived) == entry['bytes'] and sha(archived) == entry['sha256'], 'readback archive binding: ' + member)
|
||||
actual = (root / source).read_bytes()
|
||||
if actual != archived:
|
||||
original_deltas.append({'path': source, 'currentSha256': sha(actual), 'archiveSha256': sha(archived)})
|
||||
check(not original_deltas, 'original source byte differences')
|
||||
|
||||
summary = json.loads(payload['SUMMARY.json'])
|
||||
runs = receipt['completedRuns']
|
||||
check(runs == ['attempt-6', 'clipping-negative-1', 'clipping-positive-diagnostic-1', 'nested-sync-diagnostic-1', 'editor-patch-check-1'], 'completed run scope')
|
||||
check({PurePosixPath(n).parts[1] for n in payload if n.startswith('runs/')} == set(runs), 'actual run membership')
|
||||
nested = {}
|
||||
commands = []
|
||||
for run in runs:
|
||||
start = f'runs/{run}/'
|
||||
manifest = json.loads(payload[start + 'inputs.json'])
|
||||
data = payload[start + 'inputs.zip']
|
||||
check(sha(data) == manifest['archiveSha256'], run + ': input ZIP binding')
|
||||
inner = zipfile.ZipFile(io.BytesIO(data))
|
||||
inner_names = verify_zip(inner, run)
|
||||
expected = manifest['files']
|
||||
check(len(expected) == len({e['path'] for e in expected}), run + ': duplicate input manifest entry')
|
||||
check(set(inner_names) == {e['path'] for e in expected}, run + ': input membership')
|
||||
for entry in expected:
|
||||
item = inner.read(entry['path'])
|
||||
check(len(item) == entry['bytes'] and sha(item) == entry['sha256'], run + ': ' + entry['path'])
|
||||
nested[run] = {'members': len(inner_names), 'sha256': sha(data), 'topLevelCounts': dict(Counter(PurePosixPath(n).parts[0] for n in inner_names))}
|
||||
recorded = [r for r in summary['checks'] if r['run'] == run and 'inputArchiveSha256' in r]
|
||||
check(len(recorded) == 1 and recorded[0]['inputArchiveSha256'] == sha(data) and recorded[0]['inputMembers'] == len(inner_names), run + ': summary input binding')
|
||||
phases = ['clippy', 'tests', 'timing', 'gui'] if run == 'attempt-6' else ['']
|
||||
for phase in phases:
|
||||
stem = phase + '-' if phase else ''
|
||||
result = json.loads(payload[start + stem + 'result.json'])
|
||||
check(bool(result['finished']) and result['inputsUnchanged'] and result['started'] < result['finished'], run + ': completion ' + phase)
|
||||
check(result['exitCode'] == (101 if run == 'clipping-negative-1' else 0), run + ': exit ' + phase)
|
||||
for stream in ['stdout', 'stderr']:
|
||||
check(sha(payload[start + stem + stream + '.log']) == result[stream + 'Sha256'], run + ': log ' + phase + stream)
|
||||
recorded = [r for r in summary['checks'] if r['run'] == run and r.get('phase') == (phase or 'command')]
|
||||
check(len(recorded) == 1 and all(recorded[0][key] == result[key] for key in ['command', 'finished', 'exitCode']), run + ': command summary ' + phase)
|
||||
commands.append({'run': run, 'phase': phase or 'command', 'exitCode': result['exitCode']})
|
||||
if run == 'editor-patch-check-1':
|
||||
corrected = inner.read('crates/oa-desktop/src/app/source_rename/editor_patch.rs')
|
||||
check(sha(corrected) == summary['correctedHelperFromCheckInputSha256'] == '049c9774c1ca28cda01f9a8e024604bef282366aa52c53c17c1918dbd09c3441', 'corrected helper binding')
|
||||
check(len(commands) == receipt['commandReceipts'] == 8, 'command count')
|
||||
check(len(nested) == receipt['inputArchivesVerified'] == 5, 'input archive count')
|
||||
complete = json.loads(payload['runs/attempt-6/complete.json'])
|
||||
check(complete['inputsUnchanged'] and complete['gates'] == ['clippy', 'tests', 'timing', 'gui'], 'gate6 closure')
|
||||
check(sha(payload['diagnosis/candidate/editor_patch.rs']) == 'f301b8a043916b69dccb176da527a50ee85124b7e8b1da18921e4a0374a5153b', 'original candidate binding')
|
||||
check('source glyph under scrollbar' in payload['runs/clipping-negative-1/stderr.log'].decode() and 'cluster=92..93' in payload['runs/clipping-negative-1/stderr.log'].decode(), 'negative glyph failure receipt')
|
||||
check(json.loads(payload['diagnosis/nested-summary.json'])['logSha256'] == sha(payload['runs/nested-sync-diagnostic-1/stdout.log']), 'nested timing summary log binding')
|
||||
for entry in json.loads(payload['clipping-stage/staged-hashes.json']):
|
||||
member = 'clipping-stage/' + PureWindowsPath(entry['Path']).name
|
||||
check(sha(payload[member]) == entry['Hash'].lower(), 'staged layout source binding: ' + member)
|
||||
external = []
|
||||
for entry in summary['externalBindings']:
|
||||
data = (root / entry['path']).read_bytes()
|
||||
check(not entry['included'], 'external mistakenly marked included')
|
||||
check(len(data) == entry['bytes'] and sha(data) == entry['sha256'], 'external binding: ' + entry['path'])
|
||||
external.append({'path': entry['path'], 'sha256': sha(data), 'bytes': len(data)})
|
||||
binary = json.loads(payload['runs/attempt-6/gui-result.json'])['binary']
|
||||
check(external[1]['sha256'] == binary['sha256'] and external[1]['bytes'] == binary['bytes'], 'external binary gate receipt')
|
||||
|
||||
result = {'status': 'PASS' if not failures else 'FAIL', 'checks': checks, 'archiveSha256': sha(raw), 'bytes': len(raw), 'members': len(names), 'payloadBytes': sum(map(len, payload.values())), 'nestedInputs': nested, 'commandReceipts': commands, 'originalReadbacks': len(source_entries), 'originalDeltas': original_deltas, 'externalBindings': external, 'failures': failures, 'scope': 'Independent byte/CRC/membership and receipt verification only; no archived or production code executed.'}
|
||||
(folder / 'independent-verification.json').write_text(json.dumps(result, indent=2), encoding='utf-8')
|
||||
print(json.dumps(result, indent=2))
|
||||
BIN
Binary file not shown.
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"archive": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\source-rename-native-evidence-20260912\\source-rename-native-attempt-6-20260912.zip",
|
||||
"sha256": "77adda5a33eb1def6dab23352ca0ab172300ea65fc21d2c215d545d7fcce0d08",
|
||||
"bytes": 3221627,
|
||||
"members": 284,
|
||||
"payloadBytes": 5375259,
|
||||
"screenshots": {
|
||||
"metadataFiles": 47,
|
||||
"originalJpegFiles": 59
|
||||
},
|
||||
"verifiedUnchangedReadbacks": 285,
|
||||
"exactFixtureReadbacks": [
|
||||
{
|
||||
"case": "simple",
|
||||
"variant": "baseline",
|
||||
"matchesManifest": "original_files",
|
||||
"files": 4,
|
||||
"bytes": 772
|
||||
},
|
||||
{
|
||||
"case": "simple",
|
||||
"variant": "expected",
|
||||
"matchesManifest": "expected_files",
|
||||
"files": 4,
|
||||
"bytes": 786
|
||||
},
|
||||
{
|
||||
"case": "simple",
|
||||
"variant": "work",
|
||||
"matchesManifest": "expected_files",
|
||||
"files": 4,
|
||||
"bytes": 786
|
||||
},
|
||||
{
|
||||
"case": "representative",
|
||||
"variant": "baseline",
|
||||
"matchesManifest": "original_files",
|
||||
"files": 37,
|
||||
"bytes": 294617
|
||||
},
|
||||
{
|
||||
"case": "representative",
|
||||
"variant": "expected",
|
||||
"matchesManifest": "expected_files",
|
||||
"files": 37,
|
||||
"bytes": 294641
|
||||
},
|
||||
{
|
||||
"case": "representative",
|
||||
"variant": "work",
|
||||
"matchesManifest": "original_files",
|
||||
"files": 37,
|
||||
"bytes": 294617
|
||||
}
|
||||
],
|
||||
"zipCrcAndAllMemberBytesVerified": true,
|
||||
"scope": "Completed attempt-6 native trial only; partial native outcome, not acceptance or release.",
|
||||
"binarySha256": "d1ec63050e95513064155e9d04f443d95667b1e468dcdbb3b810dad379504814"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
# Independent archive review
|
||||
|
||||
Reviewer: Codex-9e8r6t /root/native_archive. Reviewed 2026-09-12. PASS for archival integrity and claim scope; this is not native acceptance.
|
||||
|
||||
Reviewed archive: source-rename-native-attempt-6-20260912.zip
|
||||
|
||||
- SHA256: 77adda5a33eb1def6dab23352ca0ab172300ea65fc21d2c215d545d7fcce0d08
|
||||
- ZIP size: 3,221,627 bytes; 284 unique members.
|
||||
- ZIP CRC check passed. Exact manifest membership and all 283 payload byte lengths/SHA256 values passed; PAYLOAD-MANIFEST.json correctly excludes itself.
|
||||
- All 59 original JPEGs and 47 metadata files match the original trial directory byte-for-byte, with exact membership.
|
||||
- All six physical fixture trees match the preauthored fixture manifest: simple baseline/expected/work contain four files each; representative baseline/expected/work contain 37 each. Simple work matches expected; representative work remains baseline. Physical support files are retained.
|
||||
- All five saved-disk verification receipts report exit 0, no failure, exact physical-byte match and unchanged-by-oracle. Their expected variants, four-file maps, pinned oracle/DLL/binary hashes, and stdout/stderr hashes agree with the archived evidence. Their logs report exact model/identity/four reachable sources and four exact disk files.
|
||||
- Closure receipt binds PID 9108, exit 0, unchanged binary/runtime and SHA256 values of both empty raw logs.
|
||||
- Historical launcher SHA256 cf65065d18c110a029ec4dc6bbf712cfedc0b9970992b42cb158e676a289b343 verified. Comparison to the current launcher shows only the later profile/Desktop mkdir-list entry; the archive accurately describes the historical helper as a hash-proved reconstruction.
|
||||
|
||||
INDEX.md and SUMMARY.json explicitly identify the minimum-size preview clipping failure and partial native outcome. They do not claim representative native rename, immediate Undo Rename acceptance, unsaved-memory inspection by disk oracles, or acceptance of a later repair. The saved Undo/Redo evidence concerns model Undo/Redo with subsequent saved-disk checks.
|
||||
|
||||
No executable, DLL, private-profile directory or cache payload is included. External binary/source-build bindings remain separate; archived relocated helpers are not represented as portable launch instructions.
|
||||
|
||||
This review used read-only archive/hash/CRC comparisons, receipt inspection and comparison with original files. No Cargo, compiler, native application, oracle, GUI, network or production edit was executed. This note records that completed review without rerunning it.
|
||||
BIN
Binary file not shown.
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"archive": "source-rename-refresh-evidence-20260912.zip",
|
||||
"sha256": "d46aacbba1dfccec64b195482e2857c97ceefecad6b0176c62c73c50964e18ba",
|
||||
"bytes": 6411947,
|
||||
"members": 37,
|
||||
"payloadBytes": 7201600,
|
||||
"completedRuns": [
|
||||
"editor-patch-tests-2",
|
||||
"editor-patch-timing-1",
|
||||
"attempt-7"
|
||||
],
|
||||
"commandReceipts": 6,
|
||||
"inputArchivesVerified": 3,
|
||||
"inputMembersEach": 516,
|
||||
"exactThreeWayInputMembershipAndBytes": true,
|
||||
"originalReadbacks": 34,
|
||||
"allMemberBytesAndCrcVerified": true,
|
||||
"externalBinarySha256": "2486eecc00d8de9160ecd930f69394e00b1a1ce102d76fb776b978db33414ed3",
|
||||
"scope": "Windows debug source gates and bounded timing only; corrected native trial not yet accepted."
|
||||
}
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"scope": "Independent archive byte/CRC/provenance review only; no execution of builders, project code, native app or gate tools. No corrected native acceptance.",
|
||||
"archiveSha256": "d46aacbba1dfccec64b195482e2857c97ceefecad6b0176c62c73c50964e18ba",
|
||||
"archiveBytes": 6411947,
|
||||
"members": 37,
|
||||
"manifestPayloadsVerified": 36,
|
||||
"originalReadbacks": 34,
|
||||
"nestedInputArchives": 3,
|
||||
"nestedInputMembersEach": 516,
|
||||
"exactThreeWayInputMembershipAndBytes": true,
|
||||
"allCrcsAndMemberHashesPassed": true,
|
||||
"completedCommands": [
|
||||
{
|
||||
"run": "editor-patch-tests-2",
|
||||
"phase": "",
|
||||
"finished": "2026-09-12T13:51:44.023824+00:00"
|
||||
},
|
||||
{
|
||||
"run": "editor-patch-timing-1",
|
||||
"phase": "",
|
||||
"finished": "2026-09-12T13:54:04.503303+00:00"
|
||||
},
|
||||
{
|
||||
"run": "attempt-7",
|
||||
"phase": "clippy",
|
||||
"finished": "2026-09-12T14:00:02.795856+00:00"
|
||||
},
|
||||
{
|
||||
"run": "attempt-7",
|
||||
"phase": "tests",
|
||||
"finished": "2026-09-12T14:09:16.517298+00:00"
|
||||
},
|
||||
{
|
||||
"run": "attempt-7",
|
||||
"phase": "timing",
|
||||
"finished": "2026-09-12T14:10:05.679440+00:00"
|
||||
},
|
||||
{
|
||||
"run": "attempt-7",
|
||||
"phase": "gui",
|
||||
"finished": "2026-09-12T14:15:41.805763+00:00"
|
||||
}
|
||||
],
|
||||
"externalBinary": {
|
||||
"path": ".local/source-rename-integration-20260912/attempt-7/arcadia-studio.exe",
|
||||
"sha256": "2486eecc00d8de9160ecd930f69394e00b1a1ce102d76fb776b978db33414ed3",
|
||||
"bytes": 113879552,
|
||||
"included": false
|
||||
},
|
||||
"producerReceiptSha256": "ec91311ea6850745960072571d088415df4d3f3210e58c0dad1bd4f0ee7135ad",
|
||||
"builderSha256": "6fbfca25bf38c459e723f30b9333786372a5207c937e34b6204d6f8161baca11"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
# Independent refresh archive review
|
||||
|
||||
2026-09-12; Codex-9e8r6t /root/native_archive. PASS for archive integrity, original bindings and stated scope. No builder/project code, Cargo, native application or gate tool was executed. The active native trial was not touched or evaluated.
|
||||
|
||||
Archive SHA256 d46aacbba1dfccec64b195482e2857c97ceefecad6b0176c62c73c50964e18ba; 6,411,947 bytes;37 unique members. This agrees with archive-result.json (the earlier dispatch typo is not authoritative).
|
||||
|
||||
ZIP CRC and all36 manifest payload byte lengths/SHA256 values passed, with exact membership and correct self-exclusion. All34 ORIGINAL-SOURCES bindings match both archived member bytes and current preserved originals; adjacent INDEX.md/PAYLOAD-MANIFEST.json match their archived versions. All three nested input ZIP hashes, CRCs and516-member manifests passed. Exact member sets and bytes are equal across tests-2, timing-1 and attempt-7 despite distinct whole ZIP hashes.
|
||||
|
||||
All six command receipts have terminal timestamps, exit0 and inputsUnchanged=true; raw stdout/stderr hashes agree. Attempt-7 complete.json lists the four completed Clippy/tests/timing/GUI gates. Its full test log reports802 passed,0 failed,3 ignored. GUI completion is14:15:41.805763UTC. Static App-review source bindings match the exact archived inputs; the earlier execution review's receipt/log/input bindings also match. Its then-running attempt-7 language is correctly identified as historical in the index.
|
||||
|
||||
The external preserved binary independently matches2486eecc00d8de9160ecd930f69394e00b1a1ce102d76fb776b978db33414ed3 and113,879,552 bytes. Binary bytes are excluded. No executable/DLL/cache/profile payload was found, including nested input archives.
|
||||
|
||||
Builder inspected as source only: explicit completed-run whitelist, exclusive outputs, exact input/log/source checks, original readbacks and no project execution. The index honestly limits conclusions to completed Windows debug source gates and bounded timing. It distinguishes ordinary sync from optimized Confirm, fixed-fixture timing from native/GPU/first-paint results, and static reviews from executable assertions. It makes no corrected-native acceptance or later-source claim. The new native trial remains separate.
|
||||
|
||||
Detailed bindings/check outcomes: independent-review-receipt.json. Original archive, builder and producer receipt are unchanged.
|
||||
BIN
Binary file not shown.
Reference in New Issue
Block a user