{"abstract":"Players fight on the level exit.","category":"Procedural level generation constraints","checks":8,"contract":"Proposed positions are deduplicated and taken ascending. A position is legal when 1 <= pos <= length-2, is not a rest checkpoint (pos % rest_every == 0 when rest_every > 0), and lies at least min_gap after the anchor: the later of the last accepted encounter (initially the start, 0) and the last checkpoint at or before pos. Returns accepted positions.","contract_signature":"length, encounters, min_gap, rest_every","evaluation_group":"w2-procedural-level-generation-constraints-encounter-pacing","failed_approach":"The inclusive bound rejects the last legal tile.","family":"w2-procedural-level-generation-constraints-encounter-pacing-exit-exclusion","id":"FA-86766","implementations":{"attempt":{"sha256":"ad15436e309030c88f29d554771b4bcf7149b06a38767c5d4edfaf25944bf159","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(length, encounters, min_gap, rest_every):\n    out = []\n    last = 0\n    for pos in sorted(set(encounters)):\n        if pos < 1 or pos >= length - 2:\n            continue\n        if rest_every and pos % rest_every == 0:\n            continue\n        anchor = last\n        if rest_every:\n            anchor = max(anchor, pos // rest_every * rest_every)\n        if pos - anchor < min_gap:\n            continue\n        out.append(pos)\n        last = pos\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('fault site exit exclusion #1', [27, [20, 6, 10, 15, 26, -2, 12, 27, -1], 0, 0], [6, 10, 12, 15, 20]),\n  ('fault site exit exclusion #2', [14, [4, 9, 16, 9, 16, 7, 8, 16, 0, 13], 1, 5], [4, 7, 8, 9]),\n  ('partial repair boundary #1', [5, [4, 3, 1, 6, 0, 1, 3, 4], 3, 0], [3]),\n  ('partial repair boundary #2', [5, [4, 5, 0, 7, 4, 3], 1, 4], [3]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('fault site exit exclusion #1', [14, [4, 9, 16, 9, 16, 7, 8, 16, 0, 13], 1, 5], [4, 7, 8, 9]),\n  ('fault site exit exclusion #2', [40, [41, 39, 8, 9, 9, 32, 18, 41], 5, 0], [8, 18, 32]),\n  ('partial repair boundary #1', [5, [4, 5, 0, 7, 4, 3], 1, 4], [3]),\n  ('partial repair boundary #2', [5, [5, 0, 4, 3, 7], 3, 0], [3]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('fault site exit exclusion #1', [10, [1, 3, 6, 0, 12, 9, 7, -1], 3, 0], [3, 6]),\n  ('fault site exit exclusion #2', [14, [11, 0, 11, 6, 13, 15, 15, 3], 5, 7], [6]),\n  ('regression exit exclusion #1', [20, [16, 11, 18, 18, -2, 4, 21, 19, 21], 0, 0], [4, 11, 16, 18]),\n  ('partial repair boundary #1', [11, [-2, 9, 11], 0, 5], [9]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('regression exit exclusion #1', [20, [16, 11, 18, 18, -2, 4, 21, 19, 21], 0, 0], [4, 11, 16, 18]),\n  ('fault site exit exclusion #1', [14, [13, -1, 2, 6], 0, 7], [2, 6]),\n  ('partial repair boundary #1', [13, [15, 4, 0, 6, 1, 2, 1, 14, 11], 2, 0], [2, 4, 6, 11]),\n  ('partial repair boundary #2', [12, [7, 2, 14, 6, 14, 14, 10], 1, 7], [2, 6, 10]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('control #1', [34, [-1, 30, 25, 20, 1, 11, 0], 5, 4], [])],\n [('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('fault site exit exclusion #1', [8, [3, 2, 8, 9, 7, -2, 0, 1], 2, 0], [2]),\n  ('fault site exit exclusion #2', [12, [2, 1, 11], 5, 0], []),\n  ('partial repair boundary #1', [15, [3, 15, 2, 13], 2, 5], [2, 13]),\n  ('regression exit exclusion #1', [5, [-2, 6, 4, 3, 7, 5, -1, 1, 2, -2], 1, 0], [1, 2, 3]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('control #1', [40, [3, 4], 3, 0], [3])]]\nfor label, args, expected in cases[N-1]:\n    check(label, solve(*args), expected)\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":"aee1cd2cfe2f1c494f179261bfa657358f0fe501cfbc82051c2368820c446474","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(length, encounters, min_gap, rest_every):\n    out = []\n    last = 0\n    for pos in sorted(set(encounters)):\n        if pos < 1 or pos > length - 1:\n            continue\n        if rest_every and pos % rest_every == 0:\n            continue\n        anchor = last\n        if rest_every:\n            anchor = max(anchor, pos // rest_every * rest_every)\n        if pos - anchor < min_gap:\n            continue\n        out.append(pos)\n        last = pos\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('fault site exit exclusion #1', [27, [20, 6, 10, 15, 26, -2, 12, 27, -1], 0, 0], [6, 10, 12, 15, 20]),\n  ('fault site exit exclusion #2', [14, [4, 9, 16, 9, 16, 7, 8, 16, 0, 13], 1, 5], [4, 7, 8, 9]),\n  ('partial repair boundary #1', [5, [4, 3, 1, 6, 0, 1, 3, 4], 3, 0], [3]),\n  ('partial repair boundary #2', [5, [4, 5, 0, 7, 4, 3], 1, 4], [3]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('fault site exit exclusion #1', [14, [4, 9, 16, 9, 16, 7, 8, 16, 0, 13], 1, 5], [4, 7, 8, 9]),\n  ('fault site exit exclusion #2', [40, [41, 39, 8, 9, 9, 32, 18, 41], 5, 0], [8, 18, 32]),\n  ('partial repair boundary #1', [5, [4, 5, 0, 7, 4, 3], 1, 4], [3]),\n  ('partial repair boundary #2', [5, [5, 0, 4, 3, 7], 3, 0], [3]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('fault site exit exclusion #1', [10, [1, 3, 6, 0, 12, 9, 7, -1], 3, 0], [3, 6]),\n  ('fault site exit exclusion #2', [14, [11, 0, 11, 6, 13, 15, 15, 3], 5, 7], [6]),\n  ('regression exit exclusion #1', [20, [16, 11, 18, 18, -2, 4, 21, 19, 21], 0, 0], [4, 11, 16, 18]),\n  ('partial repair boundary #1', [11, [-2, 9, 11], 0, 5], [9]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('regression exit exclusion #1', [20, [16, 11, 18, 18, -2, 4, 21, 19, 21], 0, 0], [4, 11, 16, 18]),\n  ('fault site exit exclusion #1', [14, [13, -1, 2, 6], 0, 7], [2, 6]),\n  ('partial repair boundary #1', [13, [15, 4, 0, 6, 1, 2, 1, 14, 11], 2, 0], [2, 4, 6, 11]),\n  ('partial repair boundary #2', [12, [7, 2, 14, 6, 14, 14, 10], 1, 7], [2, 6, 10]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('control #1', [34, [-1, 30, 25, 20, 1, 11, 0], 5, 4], [])],\n [('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('fault site exit exclusion #1', [8, [3, 2, 8, 9, 7, -2, 0, 1], 2, 0], [2]),\n  ('fault site exit exclusion #2', [12, [2, 1, 11], 5, 0], []),\n  ('partial repair boundary #1', [15, [3, 15, 2, 13], 2, 5], [2, 13]),\n  ('regression exit exclusion #1', [5, [-2, 6, 4, 3, 7, 5, -1, 1, 2, -2], 1, 0], [1, 2, 3]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('control #1', [40, [3, 4], 3, 0], [3])]]\nfor label, args, expected in cases[N-1]:\n    check(label, solve(*args), expected)\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":"Deterministic toy contract stipulated for this model; integer or exact arithmetic only, not a reproduction of any specific 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":"w2-procedural-level-generation-constraints-encounter-pacing-exit-exclusion","generated_at":"2026-09-29T14:50:52.600751+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Procedural generators silently emit unplayable or unfair levels when a single constraint check uses the wrong boundary, axis, neighborhood or update order; the defect is visible in exact generated geometry.","root_cause":"The upper bound allows the exit position.","sha256":"3ff676808af828bce8ed017d3f11688c8f894e0125c1515bf5591364e8fdc235","title":"Encounter pacing along the critical path: Encounter on the exit tile · 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":38.103,"exit_code":1,"observations":[{"actual":[],"check":"last legal tile #1","expected":[8],"passed":false},{"actual":[6,10,12,15,20],"check":"fault site exit exclusion #1","expected":[6,10,12,15,20],"passed":true},{"actual":[4,7,8,9],"check":"fault site exit exclusion #2","expected":[4,7,8,9],"passed":true},{"actual":[],"check":"partial repair boundary #1","expected":[3],"passed":false},{"actual":[],"check":"partial repair boundary #2","expected":[3],"passed":false},{"actual":[3,4],"check":"duplicate proposals #1","expected":[3,4],"passed":true},{"actual":[2,7],"check":"checkpoint resets gap #1","expected":[2,7],"passed":true},{"actual":[],"check":"control #1","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"last legal tile #1\", \"actual\": [], \"expected\": [8], \"passed\": false}, {\"check\": \"fault site exit exclusion #1\", \"actual\": [6, 10, 12, 15, 20], \"expected\": [6, 10, 12, 15, 20], \"passed\": true}, {\"check\": \"fault site exit exclusion #2\", \"actual\": [4, 7, 8, 9], \"expected\": [4, 7, 8, 9], \"passed\": true}, {\"check\": \"partial repair boundary #1\", \"actual\": [], \"expected\": [3], \"passed\": false}, {\"check\": \"partial repair boundary #2\", \"actual\": [], \"expected\": [3], \"passed\": false}, {\"check\": \"duplicate proposals #1\", \"actual\": [3, 4], \"expected\": [3, 4], \"passed\": true}, {\"check\": \"checkpoint resets gap #1\", \"actual\": [2, 7], \"expected\": [2, 7], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.167,"exit_code":1,"observations":[{"actual":[8,9],"check":"last legal tile #1","expected":[8],"passed":false},{"actual":[6,10,12,15,20,26],"check":"fault site exit exclusion #1","expected":[6,10,12,15,20],"passed":false},{"actual":[4,7,8,9,13],"check":"fault site exit exclusion #2","expected":[4,7,8,9],"passed":false},{"actual":[3],"check":"partial repair boundary #1","expected":[3],"passed":true},{"actual":[3],"check":"partial repair boundary #2","expected":[3],"passed":true},{"actual":[3,4],"check":"duplicate proposals #1","expected":[3,4],"passed":true},{"actual":[2,7],"check":"checkpoint resets gap #1","expected":[2,7],"passed":true},{"actual":[],"check":"control #1","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"last legal tile #1\", \"actual\": [8, 9], \"expected\": [8], \"passed\": false}, {\"check\": \"fault site exit exclusion #1\", \"actual\": [6, 10, 12, 15, 20, 26], \"expected\": [6, 10, 12, 15, 20], \"passed\": false}, {\"check\": \"fault site exit exclusion #2\", \"actual\": [4, 7, 8, 9, 13], \"expected\": [4, 7, 8, 9], \"passed\": false}, {\"check\": \"partial repair boundary #1\", \"actual\": [3], \"expected\": [3], \"passed\": true}, {\"check\": \"partial repair boundary #2\", \"actual\": [3], \"expected\": [3], \"passed\": true}, {\"check\": \"duplicate proposals #1\", \"actual\": [3, 4], \"expected\": [3, 4], \"passed\": true}, {\"check\": \"checkpoint resets gap #1\", \"actual\": [2, 7], \"expected\": [2, 7], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [], \"expected\": [], \"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."}}