{"abstract":"The down stair leads onto a water tile.","category":"Procedural level generation constraints","checks":8,"contract":"Scan floor_a row by row (y), then column (x); choose the first cell where floor_a[y][x] == '.', the cell exists on floor_b and is '.' there, and the Manhattan distance to entrance [x, y] is at least min_dist. Returns [x, y] or None.","contract_signature":"floor_a, floor_b, entrance, min_dist","evaluation_group":"w2-procedural-level-generation-constraints-aligned-stairs","failed_approach":"Checking floor_a twice never inspects the lower floor tile.","family":"w2-procedural-level-generation-constraints-aligned-stairs-lower-floor-tile","id":"FA-86826","implementations":{"attempt":{"sha256":"3b30230161896b1be1e9c690368493891a268ccf6f45f17d54cc9366e34e972c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(floor_a, floor_b, entrance, min_dist):\n    for y in range(len(floor_a)):\n        for x in range(len(floor_a[0])):\n            if floor_a[y][x] != '.':\n                continue\n            if y >= len(floor_b) or x >= len(floor_b[0]) or floor_a[y][x] != '.':\n                continue\n            if abs(x - entrance[0]) + abs(y - entrance[1]) < min_dist:\n                continue\n            return [x, y]\n    return None\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('water below #1', [['.'], ['~'], [0, 0], 0], None),\n  ('regression lower floor tile #1',\n   [['...', '.#.', '...', '..#', '###', '..#'], ['~.#.~', '##~~#', '~~#..', '.~.~.'], [2, 4], 5],\n   [1, 0]),\n  ('regression lower floor tile #2',\n   [['#....', '..#..', '#...#', '#..#.', '.#.#.', '.#.#.'],\n    ['#~..', '..~.', '..~.', '..#.', '##~~'],\n    [1, 4],\n    1],\n   [2, 0]),\n  ('partial repair boundary #1',\n   [['...##.', '..#.#.', '..#...', '#.....', '#.....'], ['#', '.', '.', '~'], [0, 2], 1],\n   [0, 1]),\n  ('regression lower floor tile #3',\n   [['.#', '#.', '#.', '..', '..', '#.'], ['~..##', '#..#.', '#.#~.', '..~.~', '~~~..'], [0, 0], 5],\n   None),\n  ('first row candidate #1', [['..', '..'], ['#.', '..'], [0, 0], 1], [1, 0]),\n  ('distance exactly min #1', [['...'], ['...'], [0, 0], 2], [2, 0]),\n  ('control #1', [['#.#.', '...#'], ['...#~', '.....'], [3, 1], 4], None)],\n [('water below #1', [['.'], ['~'], [0, 0], 0], None),\n  ('regression lower floor tile #1',\n   [['#....', '..#..', '#...#', '#..#.', '.#.#.', '.#.#.'],\n    ['#~..', '..~.', '..~.', '..#.', '##~~'],\n    [1, 4],\n    1],\n   [2, 0]),\n  ('regression lower floor tile #2',\n   [['.#', '#.', '#.', '..', '..', '#.'], ['~..##', '#..#.', '#.#~.', '..~.~', '~~~..'], [0, 0], 5],\n   None),\n  ('partial repair boundary #1',\n   [['...##.', '..#.#.', '..#...', '#.....', '#.....'], ['#', '.', '.', '~'], [0, 2], 1],\n   [0, 1]),\n  ('regression lower floor tile #3',\n   [['.', '.', '#', '#'], ['~~.~~#', '~...~.', '~#.~#.', '~~~#~.'], [0, 2], 1],\n   None),\n  ('first row candidate #1', [['..', '..'], ['#.', '..'], [0, 0], 1], [1, 0]),\n  ('distance exactly min #1', [['...'], ['...'], [0, 0], 2], [2, 0]),\n  ('control #1', [['#.#.', '...#'], ['...#~', '.....'], [3, 1], 4], None)],\n [('water below #1', [['.'], ['~'], [0, 0], 0], None),\n  ('regression lower floor tile #1',\n   [['.', '.', '#', '#'], ['~~.~~#', '~...~.', '~#.~#.', '~~~#~.'], [0, 2], 1],\n   None),\n  ('regression lower floor tile #2',\n   [['..', '..', '#.', '.#', '#.', '.#'], ['~.~', '~~~', '~#.', '~#.', '...', '##.'], [0, 4], 4],\n   [1, 0]),\n  ('regression lower floor tile #3',\n   [['.#', '#.', '#.', '..', '..', '#.'], ['~..##', '#..#.', '#.#~.', '..~.~', '~~~..'], [0, 0], 5],\n   None),\n  ('regression lower floor tile #4',\n   [['.#.#', '#...', '..#.'], ['..#', '~~.', '~.#', '...', '#~.', '~#.'], [2, 0], 4],\n   None),\n  ('first row candidate #1', [['..', '..'], ['#.', '..'], [0, 0], 1], [1, 0]),\n  ('distance exactly min #1', [['...'], ['...'], [0, 0], 2], [2, 0]),\n  ('control #1', [['#.#.', '...#'], ['...#~', '.....'], [3, 1], 4], None)],\n [('water below #1', [['.'], ['~'], [0, 0], 0], None),\n  ('regression lower floor tile #1',\n   [['.#.#', '#...', '..#.'], ['..#', '~~.', '~.#', '...', '#~.', '~#.'], [2, 0], 4],\n   None),\n  ('regression lower floor tile #2',\n   [['.#..', '....', '....', '#...'], ['~#...', '~.~..', '#~.~.'], [3, 0], 0],\n   [2, 0]),\n  ('regression lower floor tile #3',\n   [['..', '..', '#.', '.#', '#.', '.#'], ['~.~', '~~~', '~#.', '~#.', '...', '##.'], [0, 4], 4],\n   [1, 0]),\n  ('regression lower floor tile #4', [['.', '.', '.'], ['~..'], [0, 2], 1], None),\n  ('first row candidate #1', [['..', '..'], ['#.', '..'], [0, 0], 1], [1, 0]),\n  ('distance exactly min #1', [['...'], ['...'], [0, 0], 2], [2, 0]),\n  ('control #1', [['.', '#', '.', '#'], ['#.....'], [0, 1], 4], None)],\n [('water below #1', [['.'], ['~'], [0, 0], 0], None),\n  ('regression lower floor tile #1', [['.', '.', '.'], ['~..'], [0, 2], 1], None),\n  ('regression lower floor tile #2',\n   [['..###.', '.#.#..', '...##.', '###...', '.#..##'], ['#', '~', '.', '.', '.', '#'], [2, 2], 2],\n   [0, 2]),\n  ('regression lower floor tile #3',\n   [['.#..', '....', '....', '#...'], ['~#...', '~.~..', '#~.~.'], [3, 0], 0],\n   [2, 0]),\n  ('partial repair boundary #1',\n   [['..#.', '..#.', '..#.', '#...', '.#.#'], ['#..#', '.~#.', '.##~'], [0, 2], 5],\n   None),\n  ('first row candidate #1', [['..', '..'], ['#.', '..'], [0, 0], 1], [1, 0]),\n  ('distance exactly min #1', [['...'], ['...'], [0, 0], 2], [2, 0]),\n  ('control #1', [['##', '.#', '#.', '.#', '.#'], ['##.', '...', '.~#'], [0, 0], 5], None)]]\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":"a6431017ea61011809c10421ff60bb0e879ab1fcc0a7834054a4373cece60a39","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(floor_a, floor_b, entrance, min_dist):\n    for y in range(len(floor_a)):\n        for x in range(len(floor_a[0])):\n            if floor_a[y][x] != '.':\n                continue\n            if y >= len(floor_b) or x >= len(floor_b[0]) or floor_b[y][x] == '#':\n                continue\n            if abs(x - entrance[0]) + abs(y - entrance[1]) < min_dist:\n                continue\n            return [x, y]\n    return None\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('water below #1', [['.'], ['~'], [0, 0], 0], None),\n  ('regression lower floor tile #1',\n   [['...', '.#.', '...', '..#', '###', '..#'], ['~.#.~', '##~~#', '~~#..', '.~.~.'], [2, 4], 5],\n   [1, 0]),\n  ('regression lower floor tile #2',\n   [['#....', '..#..', '#...#', '#..#.', '.#.#.', '.#.#.'],\n    ['#~..', '..~.', '..~.', '..#.', '##~~'],\n    [1, 4],\n    1],\n   [2, 0]),\n  ('partial repair boundary #1',\n   [['...##.', '..#.#.', '..#...', '#.....', '#.....'], ['#', '.', '.', '~'], [0, 2], 1],\n   [0, 1]),\n  ('regression lower floor tile #3',\n   [['.#', '#.', '#.', '..', '..', '#.'], ['~..##', '#..#.', '#.#~.', '..~.~', '~~~..'], [0, 0], 5],\n   None),\n  ('first row candidate #1', [['..', '..'], ['#.', '..'], [0, 0], 1], [1, 0]),\n  ('distance exactly min #1', [['...'], ['...'], [0, 0], 2], [2, 0]),\n  ('control #1', [['#.#.', '...#'], ['...#~', '.....'], [3, 1], 4], None)],\n [('water below #1', [['.'], ['~'], [0, 0], 0], None),\n  ('regression lower floor tile #1',\n   [['#....', '..#..', '#...#', '#..#.', '.#.#.', '.#.#.'],\n    ['#~..', '..~.', '..~.', '..#.', '##~~'],\n    [1, 4],\n    1],\n   [2, 0]),\n  ('regression lower floor tile #2',\n   [['.#', '#.', '#.', '..', '..', '#.'], ['~..##', '#..#.', '#.#~.', '..~.~', '~~~..'], [0, 0], 5],\n   None),\n  ('partial repair boundary #1',\n   [['...##.', '..#.#.', '..#...', '#.....', '#.....'], ['#', '.', '.', '~'], [0, 2], 1],\n   [0, 1]),\n  ('regression lower floor tile #3',\n   [['.', '.', '#', '#'], ['~~.~~#', '~...~.', '~#.~#.', '~~~#~.'], [0, 2], 1],\n   None),\n  ('first row candidate #1', [['..', '..'], ['#.', '..'], [0, 0], 1], [1, 0]),\n  ('distance exactly min #1', [['...'], ['...'], [0, 0], 2], [2, 0]),\n  ('control #1', [['#.#.', '...#'], ['...#~', '.....'], [3, 1], 4], None)],\n [('water below #1', [['.'], ['~'], [0, 0], 0], None),\n  ('regression lower floor tile #1',\n   [['.', '.', '#', '#'], ['~~.~~#', '~...~.', '~#.~#.', '~~~#~.'], [0, 2], 1],\n   None),\n  ('regression lower floor tile #2',\n   [['..', '..', '#.', '.#', '#.', '.#'], ['~.~', '~~~', '~#.', '~#.', '...', '##.'], [0, 4], 4],\n   [1, 0]),\n  ('regression lower floor tile #3',\n   [['.#', '#.', '#.', '..', '..', '#.'], ['~..##', '#..#.', '#.#~.', '..~.~', '~~~..'], [0, 0], 5],\n   None),\n  ('regression lower floor tile #4',\n   [['.#.#', '#...', '..#.'], ['..#', '~~.', '~.#', '...', '#~.', '~#.'], [2, 0], 4],\n   None),\n  ('first row candidate #1', [['..', '..'], ['#.', '..'], [0, 0], 1], [1, 0]),\n  ('distance exactly min #1', [['...'], ['...'], [0, 0], 2], [2, 0]),\n  ('control #1', [['#.#.', '...#'], ['...#~', '.....'], [3, 1], 4], None)],\n [('water below #1', [['.'], ['~'], [0, 0], 0], None),\n  ('regression lower floor tile #1',\n   [['.#.#', '#...', '..#.'], ['..#', '~~.', '~.#', '...', '#~.', '~#.'], [2, 0], 4],\n   None),\n  ('regression lower floor tile #2',\n   [['.#..', '....', '....', '#...'], ['~#...', '~.~..', '#~.~.'], [3, 0], 0],\n   [2, 0]),\n  ('regression lower floor tile #3',\n   [['..', '..', '#.', '.#', '#.', '.#'], ['~.~', '~~~', '~#.', '~#.', '...', '##.'], [0, 4], 4],\n   [1, 0]),\n  ('regression lower floor tile #4', [['.', '.', '.'], ['~..'], [0, 2], 1], None),\n  ('first row candidate #1', [['..', '..'], ['#.', '..'], [0, 0], 1], [1, 0]),\n  ('distance exactly min #1', [['...'], ['...'], [0, 0], 2], [2, 0]),\n  ('control #1', [['.', '#', '.', '#'], ['#.....'], [0, 1], 4], None)],\n [('water below #1', [['.'], ['~'], [0, 0], 0], None),\n  ('regression lower floor tile #1', [['.', '.', '.'], ['~..'], [0, 2], 1], None),\n  ('regression lower floor tile #2',\n   [['..###.', '.#.#..', '...##.', '###...', '.#..##'], ['#', '~', '.', '.', '.', '#'], [2, 2], 2],\n   [0, 2]),\n  ('regression lower floor tile #3',\n   [['.#..', '....', '....', '#...'], ['~#...', '~.~..', '#~.~.'], [3, 0], 0],\n   [2, 0]),\n  ('partial repair boundary #1',\n   [['..#.', '..#.', '..#.', '#...', '.#.#'], ['#..#', '.~#.', '.##~'], [0, 2], 5],\n   None),\n  ('first row candidate #1', [['..', '..'], ['#.', '..'], [0, 0], 1], [1, 0]),\n  ('distance exactly min #1', [['...'], ['...'], [0, 0], 2], [2, 0]),\n  ('control #1', [['##', '.#', '#.', '.#', '.#'], ['##.', '...', '.~#'], [0, 0], 5], None)]]\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-aligned-stairs-lower-floor-tile","generated_at":"2026-09-29T14:50:53.185881+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":"Only walls are rejected on the lower floor.","sha256":"a77db4fddf709cdb5ba0317e3d984f5cd56f886d53538603f62d5960092b81c0","title":"Aligned stair placement: Stairs land in water below · 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":40.534,"exit_code":1,"observations":[{"actual":[0,0],"check":"water below #1","expected":null,"passed":false},{"actual":[0,0],"check":"regression lower floor tile #1","expected":[1,0],"passed":false},{"actual":[1,0],"check":"regression lower floor tile #2","expected":[2,0],"passed":false},{"actual":[0,0],"check":"partial repair boundary #1","expected":[0,1],"passed":false},{"actual":[1,4],"check":"regression lower floor tile #3","expected":null,"passed":false},{"actual":[1,0],"check":"first row candidate #1","expected":[1,0],"passed":true},{"actual":[2,0],"check":"distance exactly min #1","expected":[2,0],"passed":true},{"actual":null,"check":"control #1","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"water below #1\", \"actual\": [0, 0], \"expected\": null, \"passed\": false}, {\"check\": \"regression lower floor tile #1\", \"actual\": [0, 0], \"expected\": [1, 0], \"passed\": false}, {\"check\": \"regression lower floor tile #2\", \"actual\": [1, 0], \"expected\": [2, 0], \"passed\": false}, {\"check\": \"partial repair boundary #1\", \"actual\": [0, 0], \"expected\": [0, 1], \"passed\": false}, {\"check\": \"regression lower floor tile #3\", \"actual\": [1, 4], \"expected\": null, \"passed\": false}, {\"check\": \"first row candidate #1\", \"actual\": [1, 0], \"expected\": [1, 0], \"passed\": true}, {\"check\": \"distance exactly min #1\", \"actual\": [2, 0], \"expected\": [2, 0], \"passed\": true}, {\"check\": \"control #1\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.017,"exit_code":1,"observations":[{"actual":[0,0],"check":"water below #1","expected":null,"passed":false},{"actual":[0,0],"check":"regression lower floor tile #1","expected":[1,0],"passed":false},{"actual":[1,0],"check":"regression lower floor tile #2","expected":[2,0],"passed":false},{"actual":[0,1],"check":"partial repair boundary #1","expected":[0,1],"passed":true},{"actual":[1,4],"check":"regression lower floor tile #3","expected":null,"passed":false},{"actual":[1,0],"check":"first row candidate #1","expected":[1,0],"passed":true},{"actual":[2,0],"check":"distance exactly min #1","expected":[2,0],"passed":true},{"actual":null,"check":"control #1","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"water below #1\", \"actual\": [0, 0], \"expected\": null, \"passed\": false}, {\"check\": \"regression lower floor tile #1\", \"actual\": [0, 0], \"expected\": [1, 0], \"passed\": false}, {\"check\": \"regression lower floor tile #2\", \"actual\": [1, 0], \"expected\": [2, 0], \"passed\": false}, {\"check\": \"partial repair boundary #1\", \"actual\": [0, 1], \"expected\": [0, 1], \"passed\": true}, {\"check\": \"regression lower floor tile #3\", \"actual\": [1, 4], \"expected\": null, \"passed\": false}, {\"check\": \"first row candidate #1\", \"actual\": [1, 0], \"expected\": [1, 0], \"passed\": true}, {\"check\": \"distance exactly min #1\", \"actual\": [2, 0], \"expected\": [2, 0], \"passed\": true}, {\"check\": \"control #1\", \"actual\": null, \"expected\": null, \"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."}}