{"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":"d04b13aff0875655","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":1011},"hash":"4f16659f33de1ee8d8341f2fb9a3a8281d970baee4618d451c61cf58c9b46154","kind":"header","prev":"0000000000000000000000000000000000000000000000000000000000000000","seq":0}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"naive-harness","type":"ready","version":"2"},"player":0},"hash":"0662b9a2010469785dc37a10dcf90edade84ea61e20478c2157ddfd6a6872c03","kind":"ready","prev":"4f16659f33de1ee8d8341f2fb9a3a8281d970baee4618d451c61cf58c9b46154","seq":1}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"solver-harness","type":"ready","version":"2"},"player":1},"hash":"db6756ae8a35d3af2986bdb01b62496af5040a048d4e2ade376e81f8a0ffaf19","kind":"ready","prev":"0662b9a2010469785dc37a10dcf90edade84ea61e20478c2157ddfd6a6872c03","seq":2}
{"body":{"state":{"heaps":[3,1,4,2],"last_mover":null,"to_move":0,"turn":0},"state_digest":"81742590cf567bd91b7e1df371c3629649b4e6a8eec1e1e89586e75d638bafa3","turn":0},"hash":"892876a1bce3062b938ce8f858af9540c1faacd1dc28b3fde95f61d4ada07ea8","kind":"state","prev":"db6756ae8a35d3af2986bdb01b62496af5040a048d4e2ade376e81f8a0ffaf19","seq":3}
{"body":{"entrant_message":{"move":{"heap":2,"take":1},"note":"{\"heap\": 2, \"take\": 1}","type":"move"},"legal":true,"move":{"heap":2,"take":1},"player":0,"turn":0},"hash":"58d53ab750fa7f57652650c7fdec7df703e85030f8cc6b997b07fbeb1693ca32","kind":"move","prev":"892876a1bce3062b938ce8f858af9540c1faacd1dc28b3fde95f61d4ada07ea8","seq":4}
{"body":{"state":{"heaps":[3,1,3,2],"last_mover":0,"to_move":1,"turn":1},"state_digest":"06fbf4256679255bbfab07ea25c9518adf04c719ea6c142e3db7a05e037ba181","turn":1},"hash":"ba034c347456b117464441b3f426b20635941917b4e1953f5fbf327deaf3c92f","kind":"state","prev":"58d53ab750fa7f57652650c7fdec7df703e85030f8cc6b997b07fbeb1693ca32","seq":5}
{"body":{"entrant_message":{"move":{"heap":2,"take":3},"note":"source=model","type":"move"},"legal":true,"move":{"heap":2,"take":3},"player":1,"turn":1},"hash":"295d0d4e7d0c6a56291d285157d95eee567b0080c47e94a724a8a02357ad409a","kind":"move","prev":"ba034c347456b117464441b3f426b20635941917b4e1953f5fbf327deaf3c92f","seq":6}
{"body":{"state":{"heaps":[3,1,0,2],"last_mover":1,"to_move":0,"turn":2},"state_digest":"71e61c8a5ee486983e77282f24c6d6219eb732f671e3ef8756b824bb7fed9f41","turn":2},"hash":"cc4b6452521e8d1d46a8491c64eae6f02b80dd9f3eb88a2113cb23e932d4b2d7","kind":"state","prev":"295d0d4e7d0c6a56291d285157d95eee567b0080c47e94a724a8a02357ad409a","seq":7}
{"body":{"entrant_message":{"move":{"heap":1,"take":1},"note":"Looking at the heaps, I'll take 1 from heap 1.","type":"move"},"legal":true,"move":{"heap":1,"take":1},"player":0,"turn":2},"hash":"60b53b36fcf5348f2b103d12c9bff594ae782ae2b6225019a851638eec68f4e0","kind":"move","prev":"cc4b6452521e8d1d46a8491c64eae6f02b80dd9f3eb88a2113cb23e932d4b2d7","seq":8}
{"body":{"state":{"heaps":[3,0,0,2],"last_mover":0,"to_move":1,"turn":3},"state_digest":"2677b733f44ad57a706186ec18130406d0f654e2196b546d5afc56f5ec88e4e5","turn":3},"hash":"405a51d31296b2db7285c63646b408e8efb516fa74a5f5b5df60f2596068def5","kind":"state","prev":"60b53b36fcf5348f2b103d12c9bff594ae782ae2b6225019a851638eec68f4e0","seq":9}
{"body":{"entrant_message":{"move":{"heap":0,"take":1},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":0,"take":1},"player":1,"turn":3},"hash":"d6849a9aa441d4cb83a5f214a5411e15fc6d639d9e0aae9997b680470c63b2bf","kind":"move","prev":"405a51d31296b2db7285c63646b408e8efb516fa74a5f5b5df60f2596068def5","seq":10}
{"body":{"state":{"heaps":[2,0,0,2],"last_mover":1,"to_move":0,"turn":4},"state_digest":"504dc05f5811c3ea04a1e4f0552e5461fd2afe89f55f76548d303df365869898","turn":4},"hash":"7766dac91ffc8c4d45190fb29452bb56f35d9cde7d861e5de6f279aa223bbf70","kind":"state","prev":"d6849a9aa441d4cb83a5f214a5411e15fc6d639d9e0aae9997b680470c63b2bf","seq":11}
{"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":4},"hash":"9f3cc13efdaea55f0985277c230b4b766c8fef6652f848bbe3ef937adf51bf67","kind":"move","prev":"7766dac91ffc8c4d45190fb29452bb56f35d9cde7d861e5de6f279aa223bbf70","seq":12}
{"body":{"detail":"move must be an object","phase":"move","player":0,"reason":"illegal_move","turn":4},"hash":"4d691bfc914f1a4a737347e018daa523ee069789ec4050b1682c5c8917fb0c48","kind":"forfeit","prev":"9f3cc13efdaea55f0985277c230b4b766c8fef6652f848bbe3ef937adf51bf67","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":"d5d1102801aa1d30e39d8c462b130da835a9d653f39f427ff5ce298132ce7b32","kind":"result","prev":"4d691bfc914f1a4a737347e018daa523ee069789ec4050b1682c5c8917fb0c48","seq":14}
