{"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":"416381ce9fb89b25","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":1004},"hash":"092b314dfe8d32becb464aeb94f7101ab92182d94ac5806d098e6452955a05b4","kind":"header","prev":"0000000000000000000000000000000000000000000000000000000000000000","seq":0}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"solver-harness","type":"ready","version":"2"},"player":0},"hash":"4b16e25a2c2e996d424df65aca6a0e9fab4ff43bf748b8155ac3e81e3e14c340","kind":"ready","prev":"092b314dfe8d32becb464aeb94f7101ab92182d94ac5806d098e6452955a05b4","seq":1}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"naive-harness","type":"ready","version":"2"},"player":1},"hash":"ada0b57ebd11eee1cdfdea0babf8136d6e3ffedbb6333a20fe633ec73c8982bc","kind":"ready","prev":"4b16e25a2c2e996d424df65aca6a0e9fab4ff43bf748b8155ac3e81e3e14c340","seq":2}
{"body":{"state":{"heaps":[1,6,5,5],"last_mover":null,"to_move":0,"turn":0},"state_digest":"a5cc07573ae0644e124174abbbaa545a14439bf696cb62863cb7a9bc43c96e4b","turn":0},"hash":"1c4c477d148e1c6963fb4244edb2ba2cd90e902febf0b0f187a38136e4572d61","kind":"state","prev":"ada0b57ebd11eee1cdfdea0babf8136d6e3ffedbb6333a20fe633ec73c8982bc","seq":3}
{"body":{"entrant_message":{"move":{"heap":3,"take":3},"note":"source=model","type":"move"},"legal":true,"move":{"heap":3,"take":3},"player":0,"turn":0},"hash":"04c67c11b6f5a790c3f2276901be2d5549813567b94b0d0d4720540c73cdb3eb","kind":"move","prev":"1c4c477d148e1c6963fb4244edb2ba2cd90e902febf0b0f187a38136e4572d61","seq":4}
{"body":{"state":{"heaps":[1,6,5,2],"last_mover":0,"to_move":1,"turn":1},"state_digest":"bbe5fb23f3af8921d36e871fb536d94edc7ed745bfea0b25a6d3eb32635e7241","turn":1},"hash":"6f65bd8fca9429a0e7f278b4396ec92b8e8a58f5337bf18299372dd6197bbe02","kind":"state","prev":"04c67c11b6f5a790c3f2276901be2d5549813567b94b0d0d4720540c73cdb3eb","seq":5}
{"body":{"entrant_message":{"move":{"heap":1,"take":4},"note":"Looking at the heaps, I'll take 4 from heap 1.","type":"move"},"legal":true,"move":{"heap":1,"take":4},"player":1,"turn":1},"hash":"5432d978477d36e6c592c928f5d11045a9277be7865e34081ff3c165d89c83b9","kind":"move","prev":"6f65bd8fca9429a0e7f278b4396ec92b8e8a58f5337bf18299372dd6197bbe02","seq":6}
{"body":{"state":{"heaps":[1,2,5,2],"last_mover":1,"to_move":0,"turn":2},"state_digest":"57ab6a761163a2d46c46bf3aaade01fc1309c91892675401ef654c2efcd90aff","turn":2},"hash":"db9b5e587093b8b0e8d8b7c6f9d9856b8b14c72ab3ed02b4451e6465ae55e7d9","kind":"state","prev":"5432d978477d36e6c592c928f5d11045a9277be7865e34081ff3c165d89c83b9","seq":7}
{"body":{"entrant_message":{"move":{"heap":2,"take":4},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":2,"take":4},"player":0,"turn":2},"hash":"57fe8c2665235ec256cad4f0c924d8884a12c85351457bf4dc13909332c4cb1b","kind":"move","prev":"db9b5e587093b8b0e8d8b7c6f9d9856b8b14c72ab3ed02b4451e6465ae55e7d9","seq":8}
{"body":{"state":{"heaps":[1,2,1,2],"last_mover":0,"to_move":1,"turn":3},"state_digest":"068d559aca08288924af49ea8373bdb89c68c30a30c7d8cecc5a1fd39fad450e","turn":3},"hash":"a7c3b4e812d817b6f8e15bcb0b44c71a9eda72ebeddde656dd289b77ff5c7464","kind":"state","prev":"57fe8c2665235ec256cad4f0c924d8884a12c85351457bf4dc13909332c4cb1b","seq":9}
{"body":{"entrant_message":{"move":{"heap":0,"take":1},"note":"{\"heap\": 0, \"take\": 1}","type":"move"},"legal":true,"move":{"heap":0,"take":1},"player":1,"turn":3},"hash":"3433da06871ae9ca25fa30d9cb71d4747a5997d583d6be45f942e3496adc54ac","kind":"move","prev":"a7c3b4e812d817b6f8e15bcb0b44c71a9eda72ebeddde656dd289b77ff5c7464","seq":10}
{"body":{"state":{"heaps":[0,2,1,2],"last_mover":1,"to_move":0,"turn":4},"state_digest":"47e0c595d38ffb7790075afe83137b7bf8d704452f8a8f217e8433fcd3094a94","turn":4},"hash":"1e7dcc59602e19a2fd2213dad3e3aae7b0581641f86203eeeb48ae75ce23e614","kind":"state","prev":"3433da06871ae9ca25fa30d9cb71d4747a5997d583d6be45f942e3496adc54ac","seq":11}
{"body":{"entrant_message":{"move":{"heap":2,"take":1},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":2,"take":1},"player":0,"turn":4},"hash":"6738e1d19b619e868b73354cd699f2501c5dc73f96f2b0eb96e5f7bbca9f209e","kind":"move","prev":"1e7dcc59602e19a2fd2213dad3e3aae7b0581641f86203eeeb48ae75ce23e614","seq":12}
{"body":{"state":{"heaps":[0,2,0,2],"last_mover":0,"to_move":1,"turn":5},"state_digest":"854ea84b11ecf81610dc3364e279aa5bf459dd5f2a514f2aa4b6fa9221ab73ed","turn":5},"hash":"7b386e49f41b49f41ca2aeeec501342159b9084432bec265ed793df64983fa12","kind":"state","prev":"6738e1d19b619e868b73354cd699f2501c5dc73f96f2b0eb96e5f7bbca9f209e","seq":13}
{"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":1,"rejected_because":"move must be an object","turn":5},"hash":"3099550f35e6a4aa8d4f1e07aab1a014d4c67718c7eb21632d65f740f77d46d5","kind":"move","prev":"7b386e49f41b49f41ca2aeeec501342159b9084432bec265ed793df64983fa12","seq":14}
{"body":{"detail":"move must be an object","phase":"move","player":1,"reason":"illegal_move","turn":5},"hash":"f57d50f83068f7d5b0a53e0dc23e7926d83f1fc76281ad668d09b03d98ca102d","kind":"forfeit","prev":"3099550f35e6a4aa8d4f1e07aab1a014d4c67718c7eb21632d65f740f77d46d5","seq":15}
{"body":{"decisive":true,"moves":6,"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":"cf6bcf2574c6a3110cfddf0f5af6639a826027df4fec65a4caeae89bec702e05","kind":"result","prev":"f57d50f83068f7d5b0a53e0dc23e7926d83f1fc76281ad668d09b03d98ca102d","seq":16}
