{"abstract":"An exploding die consumes rolls belonging to the next die.","category":"Game simulation rules","checks":6,"contract":"Sides>=2 and stream contains at least one value below sides. Values in 1..sides. Score one exploding die by consuming maxima until first nonmaximum, including it; ignore suffix.","contract_signature":"sides, rolls","evaluation_group":"model-68bdf1cd0b22826e","failed_approach":"Stopping after one extra roll truncates a chain of explosions.","family":"z-games-exploding-dice-consumption","id":"FA-11681","implementations":{"attempt":{"sha256":"f3cb5d7c15e45c725637d06c647b6b40c8b6b6150a52b978af8c45af71722f21","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(sides, rolls):\n    count=2 if rolls[0]==sides else 1\n    return [sum(rolls[:count]),count]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ns=N+2\ncheck('unused suffix',solve(s,[1,s,1]),[1,1])\ncheck('chain of explosions',solve(s,[s,s,1,2]),[2*s+1,3])\ncheck('one explosion',solve(s,[s,1]),[s+1,2])\ncheck('no explosion',solve(s,[s-1]),[s-1,1])\ncheck('long chain',solve(s,[s]*(N+2)+[1,s]),[s*(N+2)+1,N+3])\ncheck('minimum die',solve(2,[2,2,1]),[5,3])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"6925ec4187d25f3b23fdf2700bf2f67cd6cdfa7b010e194c7e87ae8277aaadf9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(sides, rolls):\n    return [sum(rolls),len(rolls)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ns=N+2\ncheck('unused suffix',solve(s,[1,s,1]),[1,1])\ncheck('chain of explosions',solve(s,[s,s,1,2]),[2*s+1,3])\ncheck('one explosion',solve(s,[s,1]),[s+1,2])\ncheck('no explosion',solve(s,[s-1]),[s-1,1])\ncheck('long chain',solve(s,[s]*(N+2)+[1,s]),[s*(N+2)+1,N+3])\ncheck('minimum die',solve(2,[2,2,1]),[5,3])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"Controlled rules-only simulation; not a complete game engine. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"z-games-exploding-dice-consumption","generated_at":"2026-09-29T14:38:49.984120+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic game-rule model isolates this rule interaction for regression testing.","root_cause":"The whole supplied roll stream is summed.","sha256":"45be30ae3df08b9e7bb7f8184381e615e177acff25dfea15636104b54481802a","title":"An exploding die consumes rolls belonging to the next die · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":41.095,"exit_code":1,"observations":[{"actual":[1,1],"check":"unused suffix","expected":[1,1],"passed":true},{"actual":[6,2],"check":"chain of explosions","expected":[7,3],"passed":false},{"actual":[4,2],"check":"one explosion","expected":[4,2],"passed":true},{"actual":[2,1],"check":"no explosion","expected":[2,1],"passed":true},{"actual":[6,2],"check":"long chain","expected":[10,4],"passed":false},{"actual":[4,2],"check":"minimum die","expected":[5,3],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unused suffix\", \"actual\": [1, 1], \"expected\": [1, 1], \"passed\": true}, {\"check\": \"chain of explosions\", \"actual\": [6, 2], \"expected\": [7, 3], \"passed\": false}, {\"check\": \"one explosion\", \"actual\": [4, 2], \"expected\": [4, 2], \"passed\": true}, {\"check\": \"no explosion\", \"actual\": [2, 1], \"expected\": [2, 1], \"passed\": true}, {\"check\": \"long chain\", \"actual\": [6, 2], \"expected\": [10, 4], \"passed\": false}, {\"check\": \"minimum die\", \"actual\": [4, 2], \"expected\": [5, 3], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.658,"exit_code":1,"observations":[{"actual":[5,3],"check":"unused suffix","expected":[1,1],"passed":false},{"actual":[9,4],"check":"chain of explosions","expected":[7,3],"passed":false},{"actual":[4,2],"check":"one explosion","expected":[4,2],"passed":true},{"actual":[2,1],"check":"no explosion","expected":[2,1],"passed":true},{"actual":[13,5],"check":"long chain","expected":[10,4],"passed":false},{"actual":[5,3],"check":"minimum die","expected":[5,3],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"unused suffix\", \"actual\": [5, 3], \"expected\": [1, 1], \"passed\": false}, {\"check\": \"chain of explosions\", \"actual\": [9, 4], \"expected\": [7, 3], \"passed\": false}, {\"check\": \"one explosion\", \"actual\": [4, 2], \"expected\": [4, 2], \"passed\": true}, {\"check\": \"no explosion\", \"actual\": [2, 1], \"expected\": [2, 1], \"passed\": true}, {\"check\": \"long chain\", \"actual\": [13, 5], \"expected\": [10, 4], \"passed\": false}, {\"check\": \"minimum die\", \"actual\": [5, 3], \"expected\": [5, 3], \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}