Files
TheTree_mock/docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/independent-preservation-evidence-review-r03.json
T

27 lines
5.1 KiB
JSON

{
"candidate": "9641ed52def2ff8e5b0222449a4a83a1191e1d37",
"scope": "Limited new preservation/full-restored-snapshot scenario evidence review; not formal whole-unit acceptance",
"result": {
"status": "changes_requested",
"summary": "Limited review of one native macOS producer→consumer run on 9641ed5. Adequately shown: different processes (PIDs 39701 and 40866, recorded at launch and per observer row), the same recorder hash in both runs, and the controller guards (exact commit, clean tree, source/stage/default-player unchanged, exit 0, no ERROR in the log). Full restore equality at snapshot_published before the ordinary SAVE_LOADED event is also adequately shown: the snapshot the observer built at the publish and the snapshot read back from disk are byte-identical (SHA b242cc87…, 118528 bytes, both pinned), the only capture was index 0, and a fresh process can only match the minute-444 save if the restore really happened. This holds for that phase only, not after the event. NOT adequately shown: preservation of ALL FOUR old slot files. Only manifest.json and world.bin are re-hashed on the live manual_ui path. journal.log and thumbnail.png rely only on preexisting-slot-before/after.json, which neither shown controller nor the observer writes. Their method, author and timing relative to the named-slot save are not shown, and their size difference (1472 vs 762 bytes) is unexplained. Menu ids 3/2 and the resume results (clock 444→531, reception finished, gold 4500/material 42) are CUA observations only, with no pinned captures. The restore-equality and different-process parts would pass alone; the ALL4 claim does not.",
"findings": [
"PASS-LIMITED: Restore equality is shown at the right phase. The observer calls runtime.create_snapshot() when snapshot_published fires. When the recovery completes, it compares that snapshot with the disk read from inspect_snapshot using == and compares SHA-256 of both serialized byte forms. snapshot-000.bin and loaded-stored-snapshot.bin are pinned with identical SHA b242cc87… / 118528 bytes. snapshot_index 0 and a fresh process mean equality is only possible after the restore. Valid only before the SAVE_LOADED completion event, as stated; not post-event equivalence.",
"PASS-LIMITED: Different processes. PIDs 39701 and 40866 come from each controller's Popen; the observer also logs its own process id per row. The consumer reused the producer's profile and required it to exist.",
"PASS-LIMITED: Guards. Each controller checks the exact candidate commit, a clean tree, tested stage source hashes, and no other running engine. Afterwards it checks source refs, the stage inventory and the default player are unchanged and restores project.godot. A run passes only with exit 0 and no ERROR/SCRIPT ERROR in the native log. ended.json is hash-pinned, but its contents were not supplied, so passed=true and empty guard_errors are taken from the summary.",
"GAP (blocking ALL4): Only manifest.json (62d801bb…) and world.bin (da65a181…) are re-hashed on the live saves/manual_ui path. journal.log (1ba101ad…) and thumbnail.png (17b547b7…) have no live re-hash pins and rely only on preexisting-slot-before/after.json.",
"GAP (blocking ALL4): Neither the producer nor the consumer controller, nor passive_os.gd, writes preexisting-slot-before.json or preexisting-slot-after.json. Their author, method and timing are unproven. The before capture must fall after the quick save and before the named-slot (menu id3) save. Its 1472 bytes vs the after file's 762 bytes is unexplained. Supply both files' contents and the capture method, with timing tied to the events.jsonl ticks.",
"SCOPE NOTE: The producer required a fresh, empty profile (require not profile.exists(); mkdir). So the 'preexisting' manual_ui slot was created by the same run's quick save. It existed before the named save, not across sessions.",
"OBSERVER LIMIT: Menu ids id3/id2, the 'preservation-r03' name entry and the confirm-read are not proven by pinned data. The observer logs _input keys and mouse buttons and dialog/label state (contents not supplied), but not PopupMenu item ids. It may not see clicks inside popup subwindows. These rest on CUA observation.",
"OBSERVER LIMIT: Resume results (clock 444→531, reception 70%→completed, gold 4500/material 42) are CUA-only. Only snapshot-000 is pinned; later snapshot_published captures were not supplied.",
"MINOR: The observer is not perfectly passive. Connecting to snapshot_published makes _publish_snapshot emit the signal, which it otherwise skips, and the handler adds a create_snapshot() call. This is likely harmless for state but does change the code path.",
"NOT CLAIMED/NOT ACCEPTED: whole P24/P24-02, all content, Windows/other platforms, post-event equivalence, repeated full roster."
],
"whole_unit_accepted": false
},
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/3b4f57954a9d44b299c47feb4b024139",
"model": "claude-opus-5-5",
"formal_runner_review": false,
"whole_unit_accepted": false,
"input_proof_sha256": "024a2cb0aba292037f281a3eea43b5eac95d773fa0517e77b32b08ef5084e7c1"
}