{"body":{"attestation":{"model_attested":false,"reason":"The engine never contacts a model, so it cannot witness which model produced a move. Replay proves rule compliance and adjudication integrity, not model identity."},"engine":{"digest":"268af65826d74f2d806baddb31dd66f0d7e809f483268f07c6136879670ccd81","files":[["__init__.py","9ceaf46768c3ab8307d10b7d8bfdb6c8fb9fa118ec96fc01d3cdaaa8b96e0ae7"],["canonical.py","ae5a9d3702692ef5dee51641253aa1847344782ee6508d488a99ac9ebc75239d"],["integrity.py","1080db8480e8fae0af647ffd9d48b674a38dbab58e665d81fa5403736054f909"],["match.py","4b497e63d6abf69528e6dd60b7854d0b7e15ebd46300f15ba9e5addcf5875be5"],["replay.py","1d01f912f34e5b142f8afe10599a50d51f883c1c105a10dbb83ff7bd6968bf8b"],["sandbox.py","f92663df93af381a767e2af07cddcb2eb694cbf80ca061e93e35c43ca06c6c46"],["scoring.py","bde02741a248ec254688158ac2378f8c37bbe59bb515e61ffaf4d6593fbaecc3"],["transcript.py","c11106e5ded349574360f06578bb90a69bcc34a42eb4f50283179453e35f870a"],["games/__init__.py","311f5d75cb723ced5fefcf553618e7899e1af2dae95f6981887f44bef6b0da68"],["games/nim.py","1b28d3b758069f2246cd39515b50b39b74261c1c31f2ba4fa9ffc56838dab968"]]},"entrants":[{"claimed_model":"stub:v1","declared_env":[],"manifest_digest":"8297add5250822db579614e9a681a8721b256fcf8d447e3e0632de5acdf813ea","name":"naive-harness","script":{"path":"python.exe","sha256":"5341746f92483a93e44c313de830f2fba2956f0759094404a16b2fed06c9a2ed"},"seat":0},{"claimed_model":"stub:v1","declared_env":[],"manifest_digest":"5d52a461498a7ddbd6a85f34b30fa85e184ce34f5c88225141f71d63eab8709e","name":"solver-harness","script":{"path":"python.exe","sha256":"5341746f92483a93e44c313de830f2fba2956f0759094404a16b2fed06c9a2ed"},"seat":1}],"game":{"name":"nim","summary":"Remove objects from heaps; take the last object to win.","version":"1"},"limits":{"move_timeout_ms":15000},"match_id":"97c5466972c386b5","protocol":"arena/1","sandbox_policy":{"enforced":["separate_os_process (no shared memory or imports with the referee)","cwd_isolated_scratch_dir (entrant is started in a per-match scratch dir)","env_allowlist (only base OS vars plus names the entrant manifest declares)","no_inherited_file_handles (close_fds)","transcript_path_withheld (entrant is never told where the record is written)","per_move_wall_clock_timeout (exceeded -> forfeit)","stdout_line_size_cap","stdout_total_size_cap","stderr_captured_and_capped","kill_on_timeout_and_at_match_end"],"note":"The unenforced items need an OS-level jail (container, WSL cgroup, Windows job object plus a firewall profile). Until that ships, a match run on an untrusted entrant is isolated in process but not in capability, and results should be labelled accordingly.","protocol":"arena/1","unenforced_v1":["network_egress_blocking (an entrant CAN reach the network; not restricted by the host in v1)","filesystem_confinement (cwd is set, not chrooted; an entrant CAN read outside it)","cpu_and_memory_limits (no job object / cgroup applied in v1)"]},"seed":1003},"hash":"8460c36257d6919051134742f93309427a1f3753b1011e844b4bed8bff62c0b5","kind":"header","prev":"0000000000000000000000000000000000000000000000000000000000000000","seq":0}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"naive-harness","type":"ready","version":"2"},"player":0},"hash":"77bef001c75cff2ec95aab3925fa66e9b5a8220d8c1d317a248a6d5753aa34b4","kind":"ready","prev":"8460c36257d6919051134742f93309427a1f3753b1011e844b4bed8bff62c0b5","seq":1}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"solver-harness","type":"ready","version":"2"},"player":1},"hash":"fd7ca41c354f9d7a29767b906be99a0867eae2ce95f7e5ac5acf937b6398383d","kind":"ready","prev":"77bef001c75cff2ec95aab3925fa66e9b5a8220d8c1d317a248a6d5753aa34b4","seq":2}
{"body":{"state":{"heaps":[5,3,2,6],"last_mover":null,"to_move":0,"turn":0},"state_digest":"7abbe05623c2bb5a724083242dad198ee767c144663d10f26f4854887239053b","turn":0},"hash":"263cfacc9acacb34938e905d3c68b88f5467bc0ba0e1284a882d2d9c302f395d","kind":"state","prev":"fd7ca41c354f9d7a29767b906be99a0867eae2ce95f7e5ac5acf937b6398383d","seq":3}
{"body":{"entrant_message":{"move":{"heap":1,"take":1},"note":"{\"heap\": 1, \"take\": 1}","type":"move"},"legal":true,"move":{"heap":1,"take":1},"player":0,"turn":0},"hash":"488a0bf11f74331fabfd72ea479f3147da1890171eb37fddaf2f50a92b663140","kind":"move","prev":"263cfacc9acacb34938e905d3c68b88f5467bc0ba0e1284a882d2d9c302f395d","seq":4}
{"body":{"state":{"heaps":[5,2,2,6],"last_mover":0,"to_move":1,"turn":1},"state_digest":"29693177a085b911fc9075055de5a527cfa35dd6d84fde75f1f12a58c8cac4a7","turn":1},"hash":"5d365d3792a5b6e6ccce482dd054c6e0ffef0b8d554eb7164946ec396c0d6a00","kind":"state","prev":"488a0bf11f74331fabfd72ea479f3147da1890171eb37fddaf2f50a92b663140","seq":5}
{"body":{"entrant_message":{"move":{"heap":1,"take":1},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":1,"take":1},"player":1,"turn":1},"hash":"311489fa25f4367820760936befafaf102c30ca603bf9226843bdc0ae935cd62","kind":"move","prev":"5d365d3792a5b6e6ccce482dd054c6e0ffef0b8d554eb7164946ec396c0d6a00","seq":6}
{"body":{"state":{"heaps":[5,1,2,6],"last_mover":1,"to_move":0,"turn":2},"state_digest":"743124a7a1bd48b48b2428a30b39a16fe408d4d3603a0c5bda8115db6900a757","turn":2},"hash":"1a20dd0d0ba90806c4981cee5aed977efd7d6b1705d35664b0268c2631ba7566","kind":"state","prev":"311489fa25f4367820760936befafaf102c30ca603bf9226843bdc0ae935cd62","seq":7}
{"body":{"entrant_message":{"move":{"heap":3,"take":4},"note":"{\"heap\": 3, \"take\": 4}","type":"move"},"legal":true,"move":{"heap":3,"take":4},"player":0,"turn":2},"hash":"f09d8477062e5f31277a31d006d0b832aacbb04e2b8d2a7ddcf6908894068b82","kind":"move","prev":"1a20dd0d0ba90806c4981cee5aed977efd7d6b1705d35664b0268c2631ba7566","seq":8}
{"body":{"state":{"heaps":[5,1,2,2],"last_mover":0,"to_move":1,"turn":3},"state_digest":"09259ca5c8b111180682ecad368b9bfec2a3a61d36100848cd9b2ad39a3956e9","turn":3},"hash":"8aa5db93164c8e18aa6c1027ce38a10da9e7c56dfe447eafc05c75782f3d749a","kind":"state","prev":"f09d8477062e5f31277a31d006d0b832aacbb04e2b8d2a7ddcf6908894068b82","seq":9}
{"body":{"entrant_message":{"move":{"heap":0,"take":4},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":0,"take":4},"player":1,"turn":3},"hash":"69b5205b689ca539f5d48d2c12a94e951a2a1844959a48a5bf6de1ba52aa6805","kind":"move","prev":"8aa5db93164c8e18aa6c1027ce38a10da9e7c56dfe447eafc05c75782f3d749a","seq":10}
{"body":{"state":{"heaps":[1,1,2,2],"last_mover":1,"to_move":0,"turn":4},"state_digest":"a179f2ab3bc97e58f5041499cf7edeca104392a7a94635a8b4b59c6b34cc47bf","turn":4},"hash":"29356bf16a2f1e90ac2368e802ac53858b7938a45099a25064d7e2004b5621ff","kind":"state","prev":"69b5205b689ca539f5d48d2c12a94e951a2a1844959a48a5bf6de1ba52aa6805","seq":11}
{"body":{"entrant_message":{"move":{"heap":2,"take":1},"note":"Looking at the heaps, I'll take 1 from heap 2.","type":"move"},"legal":true,"move":{"heap":2,"take":1},"player":0,"turn":4},"hash":"05cc78089a82622fb5786ccd11b2a6e800b02c8cb1f1c376a8f9303680dcef77","kind":"move","prev":"29356bf16a2f1e90ac2368e802ac53858b7938a45099a25064d7e2004b5621ff","seq":12}
{"body":{"state":{"heaps":[1,1,1,2],"last_mover":0,"to_move":1,"turn":5},"state_digest":"f7aaa015b3dbde5f93f0ff060f86c8a2729a9323ca0ad4e6612d6f2645c91ffb","turn":5},"hash":"fc61c715db4e9a011d474fd00c5456bf5fe6e289bce7e9567f242c0d58ef2640","kind":"state","prev":"05cc78089a82622fb5786ccd11b2a6e800b02c8cb1f1c376a8f9303680dcef77","seq":13}
{"body":{"entrant_message":{"move":{"heap":3,"take":1},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":3,"take":1},"player":1,"turn":5},"hash":"94dfeb1ee773c88fc2bc8b33c341c5f106bbc6474eb3ee43c3f6afb641e7fabf","kind":"move","prev":"fc61c715db4e9a011d474fd00c5456bf5fe6e289bce7e9567f242c0d58ef2640","seq":14}
{"body":{"state":{"heaps":[1,1,1,1],"last_mover":1,"to_move":0,"turn":6},"state_digest":"84c5b2dabd105a084035b95d79deb1ae22b2854f03c0302d02e87aaa35b71d79","turn":6},"hash":"d1dff63c61c75cc6654bfc1e4a888babaef7b7c3785f9145512fcc9e672b5657","kind":"state","prev":"94dfeb1ee773c88fc2bc8b33c341c5f106bbc6474eb3ee43c3f6afb641e7fabf","seq":15}
{"body":{"entrant_message":{"move":{"heap":2,"take":1},"note":"Looking at the heaps, I'll take 1 from heap 2.","type":"move"},"legal":true,"move":{"heap":2,"take":1},"player":0,"turn":6},"hash":"cdf5cd2b59f3e0bad7ae8de148400bf139e3415ead671f1439e43c3e44796e38","kind":"move","prev":"d1dff63c61c75cc6654bfc1e4a888babaef7b7c3785f9145512fcc9e672b5657","seq":16}
{"body":{"state":{"heaps":[1,1,0,1],"last_mover":0,"to_move":1,"turn":7},"state_digest":"bf32021bd1e02e8e1c8cc1852912f9c214370c0cb37204bc1b5d8a7ce0b6ba98","turn":7},"hash":"fa6241e1bfd76e461673d1829737714ac1d0933328a8576b11f31899a736964d","kind":"state","prev":"cdf5cd2b59f3e0bad7ae8de148400bf139e3415ead671f1439e43c3e44796e38","seq":17}
{"body":{"entrant_message":{"move":{"heap":0,"take":1},"note":"source=model","type":"move"},"legal":true,"move":{"heap":0,"take":1},"player":1,"turn":7},"hash":"ec85f3f8aee3c693eb57b57c02422a8e24d333e31025cda34b0ebd33f2769f18","kind":"move","prev":"fa6241e1bfd76e461673d1829737714ac1d0933328a8576b11f31899a736964d","seq":18}
{"body":{"state":{"heaps":[0,1,0,1],"last_mover":1,"to_move":0,"turn":8},"state_digest":"b300a31e54a560bddaa5900be9d93ac10a12de692ac61823926d2b33bfd1d226","turn":8},"hash":"2066b70f78c1b3df5ecbf0ee17bbe622186b1ac8e8ee2a23fe0296fe55af8ae4","kind":"state","prev":"ec85f3f8aee3c693eb57b57c02422a8e24d333e31025cda34b0ebd33f2769f18","seq":19}
{"body":{"entrant_message":{"move":null,"note":"Let me think about this position. There are a few directions here and the balance looks delicate, so I want to weigh them before committing.","type":"move"},"legal":false,"move":null,"player":0,"rejected_because":"move must be an object","turn":8},"hash":"bf8572a9a177625bc5d66f4856c7dcc8b4fbd2fe5e590c2f27636a442c97fd50","kind":"move","prev":"2066b70f78c1b3df5ecbf0ee17bbe622186b1ac8e8ee2a23fe0296fe55af8ae4","seq":20}
{"body":{"detail":"move must be an object","phase":"move","player":0,"reason":"illegal_move","turn":8},"hash":"a117b6ec03921709c702b9056581754ae3b7248466c663dd7f18ce008266bf8f","kind":"forfeit","prev":"bf8572a9a177625bc5d66f4856c7dcc8b4fbd2fe5e590c2f27636a442c97fd50","seq":21}
{"body":{"decisive":true,"moves":9,"points":{"0":0,"1":1},"reason":"forfeit:illegal_move","scored_from":"referee_state_only","seats":{"0":"naive-harness","1":"solver-harness"},"self_report_excluded":true,"winner":1},"hash":"8bd7c1bff1e6fe5bd90f166f6fe51e9ec074ad50e0c43ce02240ef3f78c21f69","kind":"result","prev":"a117b6ec03921709c702b9056581754ae3b7248466c663dd7f18ce008266bf8f","seq":22}
