{"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":"cd83819e0eaff9c9","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":"25fdc87bb3533f3a75efcef9b6642f65a7debfb7d4dca546bcdacced6bd5d37a","kind":"header","prev":"0000000000000000000000000000000000000000000000000000000000000000","seq":0}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"naive-harness","type":"ready","version":"2"},"player":0},"hash":"b79723337a448bc68df9075c2aad7319084d717357df3425aa0f3d40e6add9d7","kind":"ready","prev":"25fdc87bb3533f3a75efcef9b6642f65a7debfb7d4dca546bcdacced6bd5d37a","seq":1}
{"body":{"entrant_message":{"backend":"stub:v1","entrant":"solver-harness","type":"ready","version":"2"},"player":1},"hash":"2c7e43c06b92b12dbb16d193c0a8b014281bd33067638b3faa463e653730ee88","kind":"ready","prev":"b79723337a448bc68df9075c2aad7319084d717357df3425aa0f3d40e6add9d7","seq":2}
{"body":{"state":{"heaps":[1,6,5,5],"last_mover":null,"to_move":0,"turn":0},"state_digest":"a5cc07573ae0644e124174abbbaa545a14439bf696cb62863cb7a9bc43c96e4b","turn":0},"hash":"a97e7a6cc51d3fe6d688326b0b6e24d78c7085ba484c2fe81e334114d44c9398","kind":"state","prev":"2c7e43c06b92b12dbb16d193c0a8b014281bd33067638b3faa463e653730ee88","seq":3}
{"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":0},"hash":"8a787d818a4d5417c7ada16c242b1e331a4788c3970866db31740815bd873e3d","kind":"move","prev":"a97e7a6cc51d3fe6d688326b0b6e24d78c7085ba484c2fe81e334114d44c9398","seq":4}
{"body":{"state":{"heaps":[0,6,5,5],"last_mover":0,"to_move":1,"turn":1},"state_digest":"3a6808319b03e32e436a48c5b04b7b6b913e40d2a08fa88e67401e678b1566e5","turn":1},"hash":"4238c50b3a8ae683e45ac4ad6a903e1582189155bcfcc43c33e8dc36b156e66c","kind":"state","prev":"8a787d818a4d5417c7ada16c242b1e331a4788c3970866db31740815bd873e3d","seq":5}
{"body":{"entrant_message":{"move":{"heap":1,"take":6},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":1,"take":6},"player":1,"turn":1},"hash":"14df629bd9e1f2818d0e1c3757f9754ac66098c10eb21ef3d94da8f516d95fc8","kind":"move","prev":"4238c50b3a8ae683e45ac4ad6a903e1582189155bcfcc43c33e8dc36b156e66c","seq":6}
{"body":{"state":{"heaps":[0,0,5,5],"last_mover":1,"to_move":0,"turn":2},"state_digest":"a840e3407956168e496401dd07aa903b651ed3a95c2be3ebebda50a8608e2ebf","turn":2},"hash":"aa5762cc9fff2092d6fe912ae3294dc6fb851681b459a5306e7263cc8a680d2b","kind":"state","prev":"14df629bd9e1f2818d0e1c3757f9754ac66098c10eb21ef3d94da8f516d95fc8","seq":7}
{"body":{"entrant_message":{"move":{"heap":3,"take":1},"note":"{\"heap\": 3, \"take\": 1}","type":"move"},"legal":true,"move":{"heap":3,"take":1},"player":0,"turn":2},"hash":"e9a6309e4a3bf51a54dff75fc604008f6072817f436fc120ebc53e7b27852a6d","kind":"move","prev":"aa5762cc9fff2092d6fe912ae3294dc6fb851681b459a5306e7263cc8a680d2b","seq":8}
{"body":{"state":{"heaps":[0,0,5,4],"last_mover":0,"to_move":1,"turn":3},"state_digest":"fc47ef89523f8a8ddff5c72746549ca6dbfc155865149ecdf43017238c18787b","turn":3},"hash":"d2296f4e0436a42b11f9212e26523f4b0f794e2bf2e398176c1a554626592e68","kind":"state","prev":"e9a6309e4a3bf51a54dff75fc604008f6072817f436fc120ebc53e7b27852a6d","seq":9}
{"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":3},"hash":"78364955bbc5fef5ae03568a251366be80e6b640e6694843718fc8dfac3ec802","kind":"move","prev":"d2296f4e0436a42b11f9212e26523f4b0f794e2bf2e398176c1a554626592e68","seq":10}
{"body":{"state":{"heaps":[0,0,4,4],"last_mover":1,"to_move":0,"turn":4},"state_digest":"e5c97a2f2c59931c1af5d49e96f668d8fd26e2d4c42a6f99a9225a32439066ed","turn":4},"hash":"b71a00796cb19e9910e3be9d6ecc2e2da2caa9ecdc84647f010baa6cc13f11b5","kind":"state","prev":"78364955bbc5fef5ae03568a251366be80e6b640e6694843718fc8dfac3ec802","seq":11}
{"body":{"entrant_message":{"move":{"heap":3,"take":3},"note":"{\"heap\": 3, \"take\": 3}","type":"move"},"legal":true,"move":{"heap":3,"take":3},"player":0,"turn":4},"hash":"9fae7fc6f9c7d83d4ed934af14d6d1eb4e24658d3652a62c9b7beba3220f2a87","kind":"move","prev":"b71a00796cb19e9910e3be9d6ecc2e2da2caa9ecdc84647f010baa6cc13f11b5","seq":12}
{"body":{"state":{"heaps":[0,0,4,1],"last_mover":0,"to_move":1,"turn":5},"state_digest":"6435a65ef7e53893859214ab0a8a661c13051f5345bbf93461f37b7138f7e0bb","turn":5},"hash":"9a944cc9b17c1adcd0e2cca24d64ab097fe72d6709d8afc3abed5b1966a17597","kind":"state","prev":"9fae7fc6f9c7d83d4ed934af14d6d1eb4e24658d3652a62c9b7beba3220f2a87","seq":13}
{"body":{"entrant_message":{"move":{"heap":2,"take":3},"note":"source=fallback:rejected_model_answer","type":"move"},"legal":true,"move":{"heap":2,"take":3},"player":1,"turn":5},"hash":"4c38da52d4992e21f23477376b327a3222d0549e29856135098f9acd797659d3","kind":"move","prev":"9a944cc9b17c1adcd0e2cca24d64ab097fe72d6709d8afc3abed5b1966a17597","seq":14}
{"body":{"state":{"heaps":[0,0,1,1],"last_mover":1,"to_move":0,"turn":6},"state_digest":"2efe64c5740c40cb6b885503c7f902da6e72fb80724235dddd950d457def3a14","turn":6},"hash":"1c84a0a3368c9e193a5d7e68e38550ec0bafef355fbf2804414afcdae928d4f5","kind":"state","prev":"4c38da52d4992e21f23477376b327a3222d0549e29856135098f9acd797659d3","seq":15}
{"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":6},"hash":"0e5c56b4230cfab776ba71e08d81b7f266aa2143cf2b1e6021c6cd805dc392af","kind":"move","prev":"1c84a0a3368c9e193a5d7e68e38550ec0bafef355fbf2804414afcdae928d4f5","seq":16}
{"body":{"detail":"\"heap\" 5 out of range 0..3","phase":"move","player":0,"reason":"illegal_move","turn":6},"hash":"519b50d8cdf61b736332b2767a9c1361114276a1ee725fc2d245cb0ce3bec747","kind":"forfeit","prev":"0e5c56b4230cfab776ba71e08d81b7f266aa2143cf2b1e6021c6cd805dc392af","seq":17}
{"body":{"decisive":true,"moves":7,"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":"4678b6f1980bcde2d2122e5ec66b1edde562c7dc66f419898d74c784d567c69d","kind":"result","prev":"519b50d8cdf61b736332b2767a9c1361114276a1ee725fc2d245cb0ce3bec747","seq":18}
