{"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":"b861c2a0b03ed6a2","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":1009},"hash":"ca3fa283ec0f2ebe8e8b37c098eaea636476a5e25495b9da64e5b43cff93797e","kind":"header","prev":"0000000000000000000000000000000000000000000000000000000000000000","seq":0}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"naive-harness","type":"ready","version":"2"},"player":0},"hash":"a5d62e81f479c13926466b1d7833b5e317e98aa5be587cc4e5506fb98b7c1d2a","kind":"ready","prev":"ca3fa283ec0f2ebe8e8b37c098eaea636476a5e25495b9da64e5b43cff93797e","seq":1}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"solver-harness","type":"ready","version":"2"},"player":1},"hash":"c6ab592f91323704fd8843a10a26b94c78ad5201207dc089f2e47bfec7ef37f4","kind":"ready","prev":"a5d62e81f479c13926466b1d7833b5e317e98aa5be587cc4e5506fb98b7c1d2a","seq":2}
{"body":{"state":{"heaps":[1,4,1],"last_mover":null,"to_move":0,"turn":0},"state_digest":"67c9023e421439538eb8e786295943edbc2aac3c5337e5ea5b2aa5b010a66f4e","turn":0},"hash":"fc240527529f8727b81c8d23b3a53284e1541df6dc7b92b23c8c592a76243aff","kind":"state","prev":"c6ab592f91323704fd8843a10a26b94c78ad5201207dc089f2e47bfec7ef37f4","seq":3}
{"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":0},"hash":"c44ff2e7635b49b6a45133a021f0be07a25abf077458b82285722acbafa8cffa","kind":"move","prev":"fc240527529f8727b81c8d23b3a53284e1541df6dc7b92b23c8c592a76243aff","seq":4}
{"body":{"state":{"heaps":[1,4,0],"last_mover":0,"to_move":1,"turn":1},"state_digest":"2bcad27b1a4bd3f0af79d70dea4416d833e8add92b8620665ea28a2e6b6ad752","turn":1},"hash":"6c9984cf70a9e04b523d6d000c13ee74ee5080191fdd8f9bd7dcfccb323444e9","kind":"state","prev":"c44ff2e7635b49b6a45133a021f0be07a25abf077458b82285722acbafa8cffa","seq":5}
{"body":{"entrant_message":{"move":{"heap":1,"take":3},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":1,"take":3},"player":1,"turn":1},"hash":"e3668d65d4eaa21ac029162ed0725d080c2ac2626c98a62d9e17d77a9c3fdd4d","kind":"move","prev":"6c9984cf70a9e04b523d6d000c13ee74ee5080191fdd8f9bd7dcfccb323444e9","seq":6}
{"body":{"state":{"heaps":[1,1,0],"last_mover":1,"to_move":0,"turn":2},"state_digest":"6cde693112239b60109383b2f59d534173d9a5fc823a4625a0c9efc22eef35cd","turn":2},"hash":"227ee0e3e4ba6fe5dc2f5e38602255ae483eb25b6be3baceba1a037ab863b2a0","kind":"state","prev":"e3668d65d4eaa21ac029162ed0725d080c2ac2626c98a62d9e17d77a9c3fdd4d","seq":7}
{"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":0,"turn":2},"hash":"1146d3a248b53b8755e26bec7f3353c2232c822085b8ed3fdd2e40ecddef9dc6","kind":"move","prev":"227ee0e3e4ba6fe5dc2f5e38602255ae483eb25b6be3baceba1a037ab863b2a0","seq":8}
{"body":{"state":{"heaps":[0,1,0],"last_mover":0,"to_move":1,"turn":3},"state_digest":"c283a78df2c01fa35e0265842674432b4903df75d8144be5f6766be85291459a","turn":3},"hash":"4667d10cdb1d1a5ec2204389a61ae21dd13cf18073cc9520ff08d7f103d3f7b6","kind":"state","prev":"1146d3a248b53b8755e26bec7f3353c2232c822085b8ed3fdd2e40ecddef9dc6","seq":9}
{"body":{"entrant_message":{"move":{"heap":1,"take":1},"note":"source=model","type":"move"},"legal":true,"move":{"heap":1,"take":1},"player":1,"turn":3},"hash":"c0a497ea024ea95cce85dbc973e0ee37d143077b3ffeefd0af2695d73b250bfe","kind":"move","prev":"4667d10cdb1d1a5ec2204389a61ae21dd13cf18073cc9520ff08d7f103d3f7b6","seq":10}
{"body":{"state":{"heaps":[0,0,0],"last_mover":1,"to_move":0,"turn":4},"state_digest":"35a7cdb87f5cde0758416ba3bf412564d96574ab830c6a3b64032eff346a8f16","turn":4},"hash":"addc2be7f8ec02ef019c18c31c1eb760a90f14fa9d8c94971c02903c394cff2e","kind":"state","prev":"c0a497ea024ea95cce85dbc973e0ee37d143077b3ffeefd0af2695d73b250bfe","seq":11}
{"body":{"decisive":true,"moves":4,"points":{"0":0,"1":1},"reason":"took_last_object","scored_from":"referee_state_only","seats":{"0":"naive-harness","1":"solver-harness"},"self_report_excluded":true,"winner":1},"hash":"1e048f78f9d1d9ee797fb116f8d8a38ac1b518d0d6239694c1cfd735cf096d29","kind":"result","prev":"addc2be7f8ec02ef019c18c31c1eb760a90f14fa9d8c94971c02903c394cff2e","seq":12}
