{"abstract":"Enemies appear right at the level entrance.","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.","evaluation_group":"w2-procedural-level-generation-constraints-encounter-pacing","failed_approach":"Anchoring at tile one shifts the first gap by one.","family":"w2-procedural-level-generation-constraints-encounter-pacing-initial-anchor","id":"FA-86776","implementations":{"attempt":{"sha256":"3e4dfc1ab1bbcb9c3eebbe2351e84b97eb0b0491d94e2c876162e2dd4af3743d","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 = 1\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 = [[('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('regression initial anchor #1', [10, [1, 3, 6, 0, 12, 9, 7, -1], 3, 0], [3, 6]),\n  ('fault site initial anchor #1', [5, [-1, 1, 7, 5, -2], 3, 0], []),\n  ('partial repair boundary #1', [40, [3, 4], 3, 0], [3]),\n  ('partial repair boundary #2', [22, [17, 15, -1, 24, 7, 1, -2, 18, 2], 2, 7], [2, 17]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('fault site initial anchor #1', [14, [2], 5, 0], []),\n  ('regression initial anchor #1', [5, [4, 3, 1, 6, 0, 1, 3, 4], 3, 0], [3]),\n  ('regression initial anchor #2', [10, [1, 3, 6, 0, 12, 9, 7, -1], 3, 0], [3, 6]),\n  ('partial repair boundary #1', [22, [17, 15, -1, 24, 7, 1, -2, 18, 2], 2, 7], [2, 17]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('regression initial anchor #1', [8, [3, 2, 8, 9, 7, -2, 0, 1], 2, 0], [2]),\n  ('fault site initial anchor #1', [12, [2, 1, 11], 5, 0], []),\n  ('partial repair boundary #1', [23, [2], 2, 0], [2]),\n  ('partial repair boundary #2', [13, [4, 11, 8, 5], 5, 7], [5]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('regression initial anchor #1', [13, [15, 4, 0, 6, 1, 2, 1, 14, 11], 2, 0], [2, 4, 6, 11]),\n  ('fault site initial anchor #1', [20, [21, 8, 21, 2, -2, 8, 7], 5, 0], [7]),\n  ('regression initial anchor #2', [5, [4, 3, 1, 6, 0, 1, 3, 4], 3, 0], [3]),\n  ('partial repair boundary #1', [5, [5, 0, 4, 3, 7], 3, 0], [3]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [27, [20, 6, 10, 15, 26, -2, 12, 27, -1], 0, 0], [6, 10, 12, 15, 20])],\n [('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('fault site initial anchor #1', [11, [3, 1, 9, 8, 7, 12], 5, 0], [7]),\n  ('fault site initial anchor #2', [21, [4, 11, 0, 3, 11, 4, 4, -1, 23], 5, 0], [11]),\n  ('partial repair boundary #1', [33, [17, 5, -1], 5, 7], [5]),\n  ('partial repair boundary #2', [24, [5], 5, 7], [5]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [34, [-1, 30, 25, 20, 1, 11, 0], 5, 4], [])]]\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":"6b9a912394204a0fa7fedc2de6df5710bbb2c556cf3deb132866019f533593b3","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 = -min_gap\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 = [[('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('regression initial anchor #1', [10, [1, 3, 6, 0, 12, 9, 7, -1], 3, 0], [3, 6]),\n  ('fault site initial anchor #1', [5, [-1, 1, 7, 5, -2], 3, 0], []),\n  ('partial repair boundary #1', [40, [3, 4], 3, 0], [3]),\n  ('partial repair boundary #2', [22, [17, 15, -1, 24, 7, 1, -2, 18, 2], 2, 7], [2, 17]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('fault site initial anchor #1', [14, [2], 5, 0], []),\n  ('regression initial anchor #1', [5, [4, 3, 1, 6, 0, 1, 3, 4], 3, 0], [3]),\n  ('regression initial anchor #2', [10, [1, 3, 6, 0, 12, 9, 7, -1], 3, 0], [3, 6]),\n  ('partial repair boundary #1', [22, [17, 15, -1, 24, 7, 1, -2, 18, 2], 2, 7], [2, 17]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('regression initial anchor #1', [8, [3, 2, 8, 9, 7, -2, 0, 1], 2, 0], [2]),\n  ('fault site initial anchor #1', [12, [2, 1, 11], 5, 0], []),\n  ('partial repair boundary #1', [23, [2], 2, 0], [2]),\n  ('partial repair boundary #2', [13, [4, 11, 8, 5], 5, 7], [5]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('regression initial anchor #1', [13, [15, 4, 0, 6, 1, 2, 1, 14, 11], 2, 0], [2, 4, 6, 11]),\n  ('fault site initial anchor #1', [20, [21, 8, 21, 2, -2, 8, 7], 5, 0], [7]),\n  ('regression initial anchor #2', [5, [4, 3, 1, 6, 0, 1, 3, 4], 3, 0], [3]),\n  ('partial repair boundary #1', [5, [5, 0, 4, 3, 7], 3, 0], [3]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [27, [20, 6, 10, 15, 26, -2, 12, 27, -1], 0, 0], [6, 10, 12, 15, 20])],\n [('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('fault site initial anchor #1', [11, [3, 1, 9, 8, 7, 12], 5, 0], [7]),\n  ('fault site initial anchor #2', [21, [4, 11, 0, 3, 11, 4, 4, -1, 23], 5, 0], [11]),\n  ('partial repair boundary #1', [33, [17, 5, -1], 5, 7], [5]),\n  ('partial repair boundary #2', [24, [5], 5, 7], [5]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [34, [-1, 30, 25, 20, 1, 11, 0], 5, 4], [])]]\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"},"fixed":{"sha256":"4b4177be5313237f4553e042ae672e88c80823b01f70a80c234ce60c00af2693","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 = [[('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('regression initial anchor #1', [10, [1, 3, 6, 0, 12, 9, 7, -1], 3, 0], [3, 6]),\n  ('fault site initial anchor #1', [5, [-1, 1, 7, 5, -2], 3, 0], []),\n  ('partial repair boundary #1', [40, [3, 4], 3, 0], [3]),\n  ('partial repair boundary #2', [22, [17, 15, -1, 24, 7, 1, -2, 18, 2], 2, 7], [2, 17]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('fault site initial anchor #1', [14, [2], 5, 0], []),\n  ('regression initial anchor #1', [5, [4, 3, 1, 6, 0, 1, 3, 4], 3, 0], [3]),\n  ('regression initial anchor #2', [10, [1, 3, 6, 0, 12, 9, 7, -1], 3, 0], [3, 6]),\n  ('partial repair boundary #1', [22, [17, 15, -1, 24, 7, 1, -2, 18, 2], 2, 7], [2, 17]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('regression initial anchor #1', [8, [3, 2, 8, 9, 7, -2, 0, 1], 2, 0], [2]),\n  ('fault site initial anchor #1', [12, [2, 1, 11], 5, 0], []),\n  ('partial repair boundary #1', [23, [2], 2, 0], [2]),\n  ('partial repair boundary #2', [13, [4, 11, 8, 5], 5, 7], [5]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [21, [-2, 16], 2, 5], [])],\n [('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('regression initial anchor #1', [13, [15, 4, 0, 6, 1, 2, 1, 14, 11], 2, 0], [2, 4, 6, 11]),\n  ('fault site initial anchor #1', [20, [21, 8, 21, 2, -2, 8, 7], 5, 0], [7]),\n  ('regression initial anchor #2', [5, [4, 3, 1, 6, 0, 1, 3, 4], 3, 0], [3]),\n  ('partial repair boundary #1', [5, [5, 0, 4, 3, 7], 3, 0], [3]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [27, [20, 6, 10, 15, 26, -2, 12, 27, -1], 0, 0], [6, 10, 12, 15, 20])],\n [('checkpoint resets gap #1', [20, [2, 6, 7], 2, 5], [2, 7]),\n  ('fault site initial anchor #1', [11, [3, 1, 9, 8, 7, 12], 5, 0], [7]),\n  ('fault site initial anchor #2', [21, [4, 11, 0, 3, 11, 4, 4, -1, 23], 5, 0], [11]),\n  ('partial repair boundary #1', [33, [17, 5, -1], 5, 7], [5]),\n  ('partial repair boundary #2', [24, [5], 5, 7], [5]),\n  ('duplicate proposals #1', [10, [3, 3, 4], 0, 0], [3, 4]),\n  ('last legal tile #1', [10, [8, 9], 1, 0], [8]),\n  ('control #1', [34, [-1, 30, 25, 20, 1, 11, 0], 5, 4], [])]]\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-initial-anchor","generated_at":"2026-09-29T14:50:52.719434+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.","repair":"Restore `last = 0` at the initial anchor step.","root_cause":"The anchor starts before the level start.","sha256":"f7410f1cbc159e138970514dbcfe0e32f4985b404edac2358c7a1327d2a65268","title":"Encounter pacing along the critical path: First encounter ignores the start gap · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.402,"exit_code":1,"observations":[{"actual":[7],"check":"checkpoint resets gap #1","expected":[2,7],"passed":false},{"actual":[6],"check":"regression initial anchor #1","expected":[3,6],"passed":false},{"actual":[],"check":"fault site initial anchor #1","expected":[],"passed":true},{"actual":[4],"check":"partial repair boundary #1","expected":[3],"passed":false},{"actual":[17],"check":"partial repair boundary #2","expected":[2,17],"passed":false},{"actual":[3,4],"check":"duplicate proposals #1","expected":[3,4],"passed":true},{"actual":[8],"check":"last legal tile #1","expected":[8],"passed":true},{"actual":[],"check":"control #1","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"checkpoint resets gap #1\", \"actual\": [7], \"expected\": [2, 7], \"passed\": false}, {\"check\": \"regression initial anchor #1\", \"actual\": [6], \"expected\": [3, 6], \"passed\": false}, {\"check\": \"fault site initial anchor #1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"partial repair boundary #1\", \"actual\": [4], \"expected\": [3], \"passed\": false}, {\"check\": \"partial repair boundary #2\", \"actual\": [17], \"expected\": [2, 17], \"passed\": false}, {\"check\": \"duplicate proposals #1\", \"actual\": [3, 4], \"expected\": [3, 4], \"passed\": true}, {\"check\": \"last legal tile #1\", \"actual\": [8], \"expected\": [8], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.66,"exit_code":1,"observations":[{"actual":[2,7],"check":"checkpoint resets gap #1","expected":[2,7],"passed":true},{"actual":[1,6],"check":"regression initial anchor #1","expected":[3,6],"passed":false},{"actual":[1],"check":"fault site initial anchor #1","expected":[],"passed":false},{"actual":[3],"check":"partial repair boundary #1","expected":[3],"passed":true},{"actual":[2,17],"check":"partial repair boundary #2","expected":[2,17],"passed":true},{"actual":[3,4],"check":"duplicate proposals #1","expected":[3,4],"passed":true},{"actual":[8],"check":"last legal tile #1","expected":[8],"passed":true},{"actual":[],"check":"control #1","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"checkpoint resets gap #1\", \"actual\": [2, 7], \"expected\": [2, 7], \"passed\": true}, {\"check\": \"regression initial anchor #1\", \"actual\": [1, 6], \"expected\": [3, 6], \"passed\": false}, {\"check\": \"fault site initial anchor #1\", \"actual\": [1], \"expected\": [], \"passed\": false}, {\"check\": \"partial repair boundary #1\", \"actual\": [3], \"expected\": [3], \"passed\": true}, {\"check\": \"partial repair boundary #2\", \"actual\": [2, 17], \"expected\": [2, 17], \"passed\": true}, {\"check\": \"duplicate proposals #1\", \"actual\": [3, 4], \"expected\": [3, 4], \"passed\": true}, {\"check\": \"last legal tile #1\", \"actual\": [8], \"expected\": [8], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.295,"exit_code":0,"observations":[{"actual":[2,7],"check":"checkpoint resets gap #1","expected":[2,7],"passed":true},{"actual":[3,6],"check":"regression initial anchor #1","expected":[3,6],"passed":true},{"actual":[],"check":"fault site initial anchor #1","expected":[],"passed":true},{"actual":[3],"check":"partial repair boundary #1","expected":[3],"passed":true},{"actual":[2,17],"check":"partial repair boundary #2","expected":[2,17],"passed":true},{"actual":[3,4],"check":"duplicate proposals #1","expected":[3,4],"passed":true},{"actual":[8],"check":"last legal tile #1","expected":[8],"passed":true},{"actual":[],"check":"control #1","expected":[],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"checkpoint resets gap #1\", \"actual\": [2, 7], \"expected\": [2, 7], \"passed\": true}, {\"check\": \"regression initial anchor #1\", \"actual\": [3, 6], \"expected\": [3, 6], \"passed\": true}, {\"check\": \"fault site initial anchor #1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"partial repair boundary #1\", \"actual\": [3], \"expected\": [3], \"passed\": true}, {\"check\": \"partial repair boundary #2\", \"actual\": [2, 17], \"expected\": [2, 17], \"passed\": true}, {\"check\": \"duplicate proposals #1\", \"actual\": [3, 4], \"expected\": [3, 4], \"passed\": true}, {\"check\": \"last legal tile #1\", \"actual\": [8], \"expected\": [8], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}