{"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":"5d52a461498a7ddbd6a85f34b30fa85e184ce34f5c88225141f71d63eab8709e","name":"solver-harness","script":{"path":"python.exe","sha256":"5341746f92483a93e44c313de830f2fba2956f0759094404a16b2fed06c9a2ed"},"seat":0},{"claimed_model":"stub:v1","declared_env":[],"manifest_digest":"8297add5250822db579614e9a681a8721b256fcf8d447e3e0632de5acdf813ea","name":"naive-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":"fd00595c6f7ea0e1","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":1005},"hash":"15ba05c22ce7160d2eb265a275fee0861c8e95fa1ff799240df899bd32a17658","kind":"header","prev":"0000000000000000000000000000000000000000000000000000000000000000","seq":0}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"solver-harness","type":"ready","version":"2"},"player":0},"hash":"cdb3f5a4957cbc8780033bad3447f8c64157def7d8963ce99309c62b7c7e0454","kind":"ready","prev":"15ba05c22ce7160d2eb265a275fee0861c8e95fa1ff799240df899bd32a17658","seq":1}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"naive-harness","type":"ready","version":"2"},"player":1},"hash":"cab999a7b981c68561bc797cea887ec8b5890f9eb2d6d15a76c2ec8d1b3be1e0","kind":"ready","prev":"cdb3f5a4957cbc8780033bad3447f8c64157def7d8963ce99309c62b7c7e0454","seq":2}
{"body":{"state":{"heaps":[7,4,5,4],"last_mover":null,"to_move":0,"turn":0},"state_digest":"89c95bac0d4422fb7c2a371e1548f199627eda45027509d4e464a989ec22c71e","turn":0},"hash":"535481f41c693da44752f8ba5eabd1320ce7f2700c8d6f9653100e52eeb1c99b","kind":"state","prev":"cab999a7b981c68561bc797cea887ec8b5890f9eb2d6d15a76c2ec8d1b3be1e0","seq":3}
{"body":{"entrant_message":{"move":{"heap":0,"take":2},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":0,"take":2},"player":0,"turn":0},"hash":"fef30990ea7ecb4e361fbcec1d81fe194cdf39c997e67ea0d4224fbddb433b08","kind":"move","prev":"535481f41c693da44752f8ba5eabd1320ce7f2700c8d6f9653100e52eeb1c99b","seq":4}
{"body":{"state":{"heaps":[5,4,5,4],"last_mover":0,"to_move":1,"turn":1},"state_digest":"fdd430df5630b94ef69bb824cc59a8939e3e3537e18e74d99ab76289479d6d21","turn":1},"hash":"dbef5266f9ac8ecbf9da778bcc3ec4143818909317394b963ba7b36fbc73526d","kind":"state","prev":"fef30990ea7ecb4e361fbcec1d81fe194cdf39c997e67ea0d4224fbddb433b08","seq":5}
{"body":{"entrant_message":{"move":{"heap":3,"take":1},"note":"{\"heap\": 3, \"take\": 1}","type":"move"},"legal":true,"move":{"heap":3,"take":1},"player":1,"turn":1},"hash":"0ed7a6e1c8d159d3695f25e7340c1346f0f44548829373580200edadaf506dc1","kind":"move","prev":"dbef5266f9ac8ecbf9da778bcc3ec4143818909317394b963ba7b36fbc73526d","seq":6}
{"body":{"state":{"heaps":[5,4,5,3],"last_mover":1,"to_move":0,"turn":2},"state_digest":"a5eef3ece7964a128a41a597af41676a5d6c2ef6cf98f12d24179bbaab7ea2e3","turn":2},"hash":"33eedd935b5a583f789c69c9427dd45ef4084d6d5a24270b771b54351b3f4522","kind":"state","prev":"0ed7a6e1c8d159d3695f25e7340c1346f0f44548829373580200edadaf506dc1","seq":7}
{"body":{"entrant_message":{"move":{"heap":0,"take":3},"note":"source=model","type":"move"},"legal":true,"move":{"heap":0,"take":3},"player":0,"turn":2},"hash":"dd4405e519b61c877e9084335001dcc510a355336dc9c6cbba9626e7da863f53","kind":"move","prev":"33eedd935b5a583f789c69c9427dd45ef4084d6d5a24270b771b54351b3f4522","seq":8}
{"body":{"state":{"heaps":[2,4,5,3],"last_mover":0,"to_move":1,"turn":3},"state_digest":"e835c5bec5aa2b50f03789c904a2a88a4a19e074c58b8e67a025b95daff3f223","turn":3},"hash":"7be33031144f424d509272630651dc011e14c9bd25fba53ccc2c64fce8f3741b","kind":"state","prev":"dd4405e519b61c877e9084335001dcc510a355336dc9c6cbba9626e7da863f53","seq":9}
{"body":{"entrant_message":{"move":{"heap":0,"take":1},"note":"Looking at the heaps, I'll take 1 from heap 0.","type":"move"},"legal":true,"move":{"heap":0,"take":1},"player":1,"turn":3},"hash":"eb30bcb8e7491ca468d6d5ad5f4cbadb3ff3ed165174cd2fd33bdfb4aaf13760","kind":"move","prev":"7be33031144f424d509272630651dc011e14c9bd25fba53ccc2c64fce8f3741b","seq":10}
{"body":{"state":{"heaps":[1,4,5,3],"last_mover":1,"to_move":0,"turn":4},"state_digest":"8f688e583fe4fc863224ae48a261932595e11eb6ecb8b6eea922afb958e659c7","turn":4},"hash":"dc12a85176cea05f84a9752e3c5d9a3c8e3c56b1a0a750bad4e14f329b368091","kind":"state","prev":"eb30bcb8e7491ca468d6d5ad5f4cbadb3ff3ed165174cd2fd33bdfb4aaf13760","seq":11}
{"body":{"entrant_message":{"move":{"heap":3,"take":3},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":3,"take":3},"player":0,"turn":4},"hash":"e47f66129ce5603dcce374b26c5d20835c946936660e82827b0a148bd1191fc1","kind":"move","prev":"dc12a85176cea05f84a9752e3c5d9a3c8e3c56b1a0a750bad4e14f329b368091","seq":12}
{"body":{"state":{"heaps":[1,4,5,0],"last_mover":0,"to_move":1,"turn":5},"state_digest":"05e8da67eac9d5707d1e21157c65fa0ede5f1cebf593516b713c9db3f5eab514","turn":5},"hash":"af6b929c10bfb9c08c7608cea2e9187a147a2d62564634253eacc7b2690a2064","kind":"state","prev":"e47f66129ce5603dcce374b26c5d20835c946936660e82827b0a148bd1191fc1","seq":13}
{"body":{"entrant_message":{"move":{"heap":1,"take":2},"note":"Looking at the heaps, I'll take 2 from heap 1.","type":"move"},"legal":true,"move":{"heap":1,"take":2},"player":1,"turn":5},"hash":"b2cc1c42089f84c7bb03d6b56255f3b5a86f0c1263e404c12827cda21b5bdcc3","kind":"move","prev":"af6b929c10bfb9c08c7608cea2e9187a147a2d62564634253eacc7b2690a2064","seq":14}
{"body":{"state":{"heaps":[1,2,5,0],"last_mover":1,"to_move":0,"turn":6},"state_digest":"0d3d1fe6b72451b7d229297814703b162573b89ff287a3eaa342f83af0aa0660","turn":6},"hash":"05ec341743eaa3352f24bc18dd07b6e7e3db51b99e8e8f09c38c410cddcd688d","kind":"state","prev":"b2cc1c42089f84c7bb03d6b56255f3b5a86f0c1263e404c12827cda21b5bdcc3","seq":15}
{"body":{"entrant_message":{"move":{"heap":2,"take":2},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":2,"take":2},"player":0,"turn":6},"hash":"1c02c1872fb13993664462c161ef4230aa2c274fb7606262cb711c954f0f48b7","kind":"move","prev":"05ec341743eaa3352f24bc18dd07b6e7e3db51b99e8e8f09c38c410cddcd688d","seq":16}
{"body":{"state":{"heaps":[1,2,3,0],"last_mover":0,"to_move":1,"turn":7},"state_digest":"bb2882e9539783a0d521ce14d99103d3963958f665a1e2738e5d6c7795316b38","turn":7},"hash":"f44f77ff16301cd6882ec932cfd5ca8d1af54a448ef28e8f769e0deb5604fcfb","kind":"state","prev":"1c02c1872fb13993664462c161ef4230aa2c274fb7606262cb711c954f0f48b7","seq":17}
{"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":1,"turn":7},"hash":"75fa2e6bda50e50ba9e2588a6ca66791551d78b5b5755198e57b4be4fbc3e44a","kind":"move","prev":"f44f77ff16301cd6882ec932cfd5ca8d1af54a448ef28e8f769e0deb5604fcfb","seq":18}
{"body":{"state":{"heaps":[1,2,2,0],"last_mover":1,"to_move":0,"turn":8},"state_digest":"842e3af7e8b2737d87252055fab7a257a96d42b3f0ea600166168dac259bef87","turn":8},"hash":"73ebb54901c82bd310dc1906d435e8e9e540c23799072e50590f809909824444","kind":"state","prev":"75fa2e6bda50e50ba9e2588a6ca66791551d78b5b5755198e57b4be4fbc3e44a","seq":19}
{"body":{"entrant_message":{"move":{"heap":0,"take":1},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":0,"take":1},"player":0,"turn":8},"hash":"516107fd04b879af293417bd8d3b1872617efcc40363d07f79d70b9cb3f57c91","kind":"move","prev":"73ebb54901c82bd310dc1906d435e8e9e540c23799072e50590f809909824444","seq":20}
{"body":{"state":{"heaps":[0,2,2,0],"last_mover":0,"to_move":1,"turn":9},"state_digest":"cf1ca31a48206316b8a9baee9a1683f4ca05891360dea4ca6b6839a5efdb9ef8","turn":9},"hash":"7b9e599fcf8f8fe703de42c9dbd71bf37ead805568abf57e5db185ac7e2506df","kind":"state","prev":"516107fd04b879af293417bd8d3b1872617efcc40363d07f79d70b9cb3f57c91","seq":21}
{"body":{"entrant_message":{"move":{"heap":5,"take":2},"note":"I'll take 2 from heap 5.","type":"move"},"legal":false,"move":{"heap":5,"take":2},"player":1,"rejected_because":"\"heap\" 5 out of range 0..3","turn":9},"hash":"da96694971bd0de1ff32c2856d0b65ac4d8763bcaf324a382eb4ce6e6f36f0c2","kind":"move","prev":"7b9e599fcf8f8fe703de42c9dbd71bf37ead805568abf57e5db185ac7e2506df","seq":22}
{"body":{"detail":"\"heap\" 5 out of range 0..3","phase":"move","player":1,"reason":"illegal_move","turn":9},"hash":"3336997fcbc229cc5b89eca2812ae21bc04eb3aca8418bbfb9eabc0acf4a1237","kind":"forfeit","prev":"da96694971bd0de1ff32c2856d0b65ac4d8763bcaf324a382eb4ce6e6f36f0c2","seq":23}
{"body":{"decisive":true,"moves":10,"points":{"0":1,"1":0},"reason":"forfeit:illegal_move","scored_from":"referee_state_only","seats":{"0":"solver-harness","1":"naive-harness"},"self_report_excluded":true,"winner":0},"hash":"ad25491801df015edb49cc122120df919d93d9105aa40c9dfc638c9c8dd1890f","kind":"result","prev":"3336997fcbc229cc5b89eca2812ae21bc04eb3aca8418bbfb9eabc0acf4a1237","seq":24}
