{"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":"a732550e1592a2f2","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":1006},"hash":"c0e04c74d58fadd7a926f00f106332b8f05f3b23fffdb9ddbb5454149eaac187","kind":"header","prev":"0000000000000000000000000000000000000000000000000000000000000000","seq":0}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"naive-harness","type":"ready","version":"2"},"player":0},"hash":"1f1635e84e8d7f75784ed41e36796978370d43fd9fb8b81baae72d85f70f17e5","kind":"ready","prev":"c0e04c74d58fadd7a926f00f106332b8f05f3b23fffdb9ddbb5454149eaac187","seq":1}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"solver-harness","type":"ready","version":"2"},"player":1},"hash":"d095b619fee27d7e7c43f4b5ea9263a8f961d60319091aa6c2037c81eb1d192f","kind":"ready","prev":"1f1635e84e8d7f75784ed41e36796978370d43fd9fb8b81baae72d85f70f17e5","seq":2}
{"body":{"state":{"heaps":[1,2,4,1],"last_mover":null,"to_move":0,"turn":0},"state_digest":"0392d6829c51ce6165d89c4e576799005df036ff22e53dd5636c7de25d1a6794","turn":0},"hash":"793192290037d42bca6d25596159ca7a1fbbe828d978d20ccca5f2df63d5622b","kind":"state","prev":"d095b619fee27d7e7c43f4b5ea9263a8f961d60319091aa6c2037c81eb1d192f","seq":3}
{"body":{"entrant_message":{"move":{"heap":0,"take":1},"note":"{\"heap\": 0, \"take\": 1}","type":"move"},"legal":true,"move":{"heap":0,"take":1},"player":0,"turn":0},"hash":"5025cd2c9bb8b8339d079fb8f187c375625658a10cae197cc4096254d170037b","kind":"move","prev":"793192290037d42bca6d25596159ca7a1fbbe828d978d20ccca5f2df63d5622b","seq":4}
{"body":{"state":{"heaps":[0,2,4,1],"last_mover":0,"to_move":1,"turn":1},"state_digest":"a0e267f98d86472aad745cb5f0bae04e554a7bad4c8236b77b7e93608750b03b","turn":1},"hash":"5d8db8631278fe379e4d68cf784806295ae9f9ec03473d0db181c35ee0c877ff","kind":"state","prev":"5025cd2c9bb8b8339d079fb8f187c375625658a10cae197cc4096254d170037b","seq":5}
{"body":{"entrant_message":{"move":{"heap":2,"take":1},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":2,"take":1},"player":1,"turn":1},"hash":"a69b7583d7f89b0105775c8b39fab154eea6363b6c6e93bb0d58fe26cb5198ae","kind":"move","prev":"5d8db8631278fe379e4d68cf784806295ae9f9ec03473d0db181c35ee0c877ff","seq":6}
{"body":{"state":{"heaps":[0,2,3,1],"last_mover":1,"to_move":0,"turn":2},"state_digest":"be580e9afa1f367ee3a2d27ef8d9b4230a5042819e3cdf0741ec4adae87f857d","turn":2},"hash":"a0f237f6d50e1e823fe77708f309730d6afd3d97e980ee139b1d657494801b88","kind":"state","prev":"a69b7583d7f89b0105775c8b39fab154eea6363b6c6e93bb0d58fe26cb5198ae","seq":7}
{"body":{"entrant_message":{"move":{"heap":1,"take":2},"note":"{\"heap\": 1, \"take\": 2}","type":"move"},"legal":true,"move":{"heap":1,"take":2},"player":0,"turn":2},"hash":"407ab3009819517da4b94dcb229e31e1a9fbb453104d498a1a0ad73748c0804d","kind":"move","prev":"a0f237f6d50e1e823fe77708f309730d6afd3d97e980ee139b1d657494801b88","seq":8}
{"body":{"state":{"heaps":[0,0,3,1],"last_mover":0,"to_move":1,"turn":3},"state_digest":"191c16ef8bea4906b74b75c24b16101527ff780954e6b997bc61cb49e727eb74","turn":3},"hash":"183cadaead105509d7048dcb29bbebc68e0146058d18f50736b7803b492d8fab","kind":"state","prev":"407ab3009819517da4b94dcb229e31e1a9fbb453104d498a1a0ad73748c0804d","seq":9}
{"body":{"entrant_message":{"move":{"heap":2,"take":2},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":2,"take":2},"player":1,"turn":3},"hash":"c0e6076dd779c5e10045caeca0f592e5c4e34520d20e8df1a015bf645d9513a3","kind":"move","prev":"183cadaead105509d7048dcb29bbebc68e0146058d18f50736b7803b492d8fab","seq":10}
{"body":{"state":{"heaps":[0,0,1,1],"last_mover":1,"to_move":0,"turn":4},"state_digest":"1e9fc5c54cf56ff1b0b97965a2c6df879ea27610251a80cfd7601e5036ee8f4e","turn":4},"hash":"fcd5d7ac325d4d89c29b2a50560dd3a063bf64af987b28404a0dffc81809abe9","kind":"state","prev":"c0e6076dd779c5e10045caeca0f592e5c4e34520d20e8df1a015bf645d9513a3","seq":11}
{"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":0,"rejected_because":"\"heap\" 5 out of range 0..3","turn":4},"hash":"62a2f81ec3b2b254296dde0586458033101a2e89011f0c2fed760d9959fb1c5b","kind":"move","prev":"fcd5d7ac325d4d89c29b2a50560dd3a063bf64af987b28404a0dffc81809abe9","seq":12}
{"body":{"detail":"\"heap\" 5 out of range 0..3","phase":"move","player":0,"reason":"illegal_move","turn":4},"hash":"1a7b77e56912aeac476d0d41bde49455d1285684f1eb8ab0cf3dab1e30529750","kind":"forfeit","prev":"62a2f81ec3b2b254296dde0586458033101a2e89011f0c2fed760d9959fb1c5b","seq":13}
{"body":{"decisive":true,"moves":5,"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":"7f183daf1cac87aef2fd3a99d8dd99ade60e43811837fd0ae6cc202bcf68b38b","kind":"result","prev":"1a7b77e56912aeac476d0d41bde49455d1285684f1eb8ab0cf3dab1e30529750","seq":14}
