{"abstract":"Levels are validated as solvable although the exit is only diagonally adjacent.","category":"Procedural level generation constraints","checks":8,"contract":"grid rows of '#' wall, '.' floor, 'D' door (passable), '~' water (passable only when swim) and 'E' exit. From start [row, col], 4-neighbour flood fill. Returns {reachable: number of reached cells including start, exit: whether an E cell was reached}.","evaluation_group":"w2-procedural-level-generation-constraints-flood-reach","failed_approach":"Keeping only forward directions misses areas up or left of the start.","family":"w2-procedural-level-generation-constraints-flood-reach-neighbourhood","id":"FA-86366","implementations":{"attempt":{"sha256":"d06b4d2b2088dcebe0222fd00d995ffd4f1468217c32150e29b924f8a5036e56","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(grid, start, swim):\n    h = len(grid)\n    w = len(grid[0])\n    sr, sc = start\n    seen = {(sr, sc)}\n    stack = [(sr, sc)]\n    found = False\n    while stack:\n        r, c = stack.pop()\n        if grid[r][c] == 'E':\n            found = True\n        for dr, dc in ((1, 0), (0, 1)):\n            nr, nc = r + dr, c + dc\n            if 0 <= nr < h and 0 <= nc < w and (nr, nc) not in seen:\n                t = grid[nr][nc]\n                if t == '#' or (t == '~' and not swim):\n                    continue\n                seen.add((nr, nc))\n                stack.append((nr, nc))\n    return {'reachable': len(seen), 'exit': found}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('regression neighbourhood #1',\n   [['..E.#.#', '#.~..#.', 'D.#..#.'], [0, 3], True],\n   {'reachable': 12, 'exit': True}),\n  ('regression neighbourhood #2',\n   [['#.#..', '~~...', 'DDDE~', '.D.D.', '.....', '....#'], [4, 1], False],\n   {'reachable': 23, 'exit': True}),\n  ('partial repair boundary #1', [['E', '.'], [1, 0], False], {'reachable': 2, 'exit': True}),\n  ('partial repair boundary #2', [['.E..', '.D..'], [0, 1], True], {'reachable': 8, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['~.#D##E'], [0, 6], False], {'reachable': 1, 'exit': True})],\n [('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('regression neighbourhood #1',\n   [['#.#..', '~~...', 'DDDE~', '.D.D.', '.....', '....#'], [4, 1], False],\n   {'reachable': 23, 'exit': True}),\n  ('fault site neighbourhood #1',\n   [['.....D', '......', '.D~#.#', '...E#~'], [0, 0], True],\n   {'reachable': 20, 'exit': True}),\n  ('partial repair boundary #1',\n   [['~.D#.', 'D....', '#.D#E'], [1, 4], True],\n   {'reachable': 12, 'exit': True}),\n  ('partial repair boundary #2',\n   [['D.~E.', '#~~.#', 'DD...'], [2, 3], False],\n   {'reachable': 8, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['~.#D##E'], [0, 6], False], {'reachable': 1, 'exit': True})],\n [('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('fault site neighbourhood #1',\n   [['#D~.##', '.D.~E#', '.~...~', '....#.', '#.....'], [0, 3], False],\n   {'reachable': 1, 'exit': False}),\n  ('fault site neighbourhood #2', [['~#DD~.', '..~E.D'], [1, 0], False], {'reachable': 2, 'exit': False}),\n  ('partial repair boundary #1', [['E', '.', '.', '.', '~'], [2, 0], True], {'reachable': 5, 'exit': True}),\n  ('partial repair boundary #2', [['E.D.', '...D'], [1, 0], True], {'reachable': 8, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['~.#D##E'], [0, 6], False], {'reachable': 1, 'exit': True})],\n [('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('regression neighbourhood #1',\n   [['~D', '.E', '~.', '.#', '..', '.D'], [1, 1], False],\n   {'reachable': 4, 'exit': True}),\n  ('regression neighbourhood #2',\n   [['D#.#~', '.#~~.', 'D..E#', '.....', '.D.D.', '..~.D', '.~.D.'], [6, 2], False],\n   {'reachable': 24, 'exit': True}),\n  ('partial repair boundary #1',\n   [['.##.', '.D#D', 'D...', '.D~.', '.#DE', '.~#.', '.~DD'], [3, 0], False],\n   {'reachable': 20, 'exit': True}),\n  ('partial repair boundary #2',\n   [['..', '.E', 'DD', '.#', '..', '.~', '..'], [6, 0], False],\n   {'reachable': 12, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['.E', '.D', 'D.'], [0, 0], True], {'reachable': 6, 'exit': True})],\n [('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('regression neighbourhood #1',\n   [['.#~D', '#~~.', '~.E.', 'D.##', '~...'], [3, 1], True],\n   {'reachable': 15, 'exit': True}),\n  ('regression neighbourhood #2',\n   [['...', 'E~D', '#.#', '~..', '#..', '~..'], [5, 2], False],\n   {'reachable': 7, 'exit': False}),\n  ('partial repair boundary #1', [['~D.E..~', '.......'], [1, 5], False], {'reachable': 12, 'exit': True}),\n  ('partial repair boundary #2',\n   [['#D~..', '.#D.~', '.#...', '....D', 'DD#..', '.D.~#', '~~E.D'], [0, 3], True],\n   {'reachable': 30, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['DD~.', '.#.#', '~.E.', '#.~~', 'D.~.'], [4, 3], False], {'reachable': 1, 'exit': False})]]\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":"a49e31898ea10f6f02fa4fbcecf829d31126e1a1e46f2c8ccc42dc00c772085d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(grid, start, swim):\n    h = len(grid)\n    w = len(grid[0])\n    sr, sc = start\n    seen = {(sr, sc)}\n    stack = [(sr, sc)]\n    found = False\n    while stack:\n        r, c = stack.pop()\n        if grid[r][c] == 'E':\n            found = True\n        for dr, dc in ((1, 0), (-1, 0), (0, 1), (0, -1), (1, 1), (-1, -1), (1, -1), (-1, 1)):\n            nr, nc = r + dr, c + dc\n            if 0 <= nr < h and 0 <= nc < w and (nr, nc) not in seen:\n                t = grid[nr][nc]\n                if t == '#' or (t == '~' and not swim):\n                    continue\n                seen.add((nr, nc))\n                stack.append((nr, nc))\n    return {'reachable': len(seen), 'exit': found}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('regression neighbourhood #1',\n   [['..E.#.#', '#.~..#.', 'D.#..#.'], [0, 3], True],\n   {'reachable': 12, 'exit': True}),\n  ('regression neighbourhood #2',\n   [['#.#..', '~~...', 'DDDE~', '.D.D.', '.....', '....#'], [4, 1], False],\n   {'reachable': 23, 'exit': True}),\n  ('partial repair boundary #1', [['E', '.'], [1, 0], False], {'reachable': 2, 'exit': True}),\n  ('partial repair boundary #2', [['.E..', '.D..'], [0, 1], True], {'reachable': 8, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['~.#D##E'], [0, 6], False], {'reachable': 1, 'exit': True})],\n [('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('regression neighbourhood #1',\n   [['#.#..', '~~...', 'DDDE~', '.D.D.', '.....', '....#'], [4, 1], False],\n   {'reachable': 23, 'exit': True}),\n  ('fault site neighbourhood #1',\n   [['.....D', '......', '.D~#.#', '...E#~'], [0, 0], True],\n   {'reachable': 20, 'exit': True}),\n  ('partial repair boundary #1',\n   [['~.D#.', 'D....', '#.D#E'], [1, 4], True],\n   {'reachable': 12, 'exit': True}),\n  ('partial repair boundary #2',\n   [['D.~E.', '#~~.#', 'DD...'], [2, 3], False],\n   {'reachable': 8, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['~.#D##E'], [0, 6], False], {'reachable': 1, 'exit': True})],\n [('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('fault site neighbourhood #1',\n   [['#D~.##', '.D.~E#', '.~...~', '....#.', '#.....'], [0, 3], False],\n   {'reachable': 1, 'exit': False}),\n  ('fault site neighbourhood #2', [['~#DD~.', '..~E.D'], [1, 0], False], {'reachable': 2, 'exit': False}),\n  ('partial repair boundary #1', [['E', '.', '.', '.', '~'], [2, 0], True], {'reachable': 5, 'exit': True}),\n  ('partial repair boundary #2', [['E.D.', '...D'], [1, 0], True], {'reachable': 8, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['~.#D##E'], [0, 6], False], {'reachable': 1, 'exit': True})],\n [('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('regression neighbourhood #1',\n   [['~D', '.E', '~.', '.#', '..', '.D'], [1, 1], False],\n   {'reachable': 4, 'exit': True}),\n  ('regression neighbourhood #2',\n   [['D#.#~', '.#~~.', 'D..E#', '.....', '.D.D.', '..~.D', '.~.D.'], [6, 2], False],\n   {'reachable': 24, 'exit': True}),\n  ('partial repair boundary #1',\n   [['.##.', '.D#D', 'D...', '.D~.', '.#DE', '.~#.', '.~DD'], [3, 0], False],\n   {'reachable': 20, 'exit': True}),\n  ('partial repair boundary #2',\n   [['..', '.E', 'DD', '.#', '..', '.~', '..'], [6, 0], False],\n   {'reachable': 12, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['.E', '.D', 'D.'], [0, 0], True], {'reachable': 6, 'exit': True})],\n [('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('regression neighbourhood #1',\n   [['.#~D', '#~~.', '~.E.', 'D.##', '~...'], [3, 1], True],\n   {'reachable': 15, 'exit': True}),\n  ('regression neighbourhood #2',\n   [['...', 'E~D', '#.#', '~..', '#..', '~..'], [5, 2], False],\n   {'reachable': 7, 'exit': False}),\n  ('partial repair boundary #1', [['~D.E..~', '.......'], [1, 5], False], {'reachable': 12, 'exit': True}),\n  ('partial repair boundary #2',\n   [['#D~..', '.#D.~', '.#...', '....D', 'DD#..', '.D.~#', '~~E.D'], [0, 3], True],\n   {'reachable': 30, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['DD~.', '.#.#', '~.E.', '#.~~', 'D.~.'], [4, 3], False], {'reachable': 1, 'exit': False})]]\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":"561fa3097088b48846ffc4f4f93eaca67a3faf710c34d08f5a682eb652320898","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(grid, start, swim):\n    h = len(grid)\n    w = len(grid[0])\n    sr, sc = start\n    seen = {(sr, sc)}\n    stack = [(sr, sc)]\n    found = False\n    while stack:\n        r, c = stack.pop()\n        if grid[r][c] == 'E':\n            found = True\n        for dr, dc in ((1, 0), (-1, 0), (0, 1), (0, -1)):\n            nr, nc = r + dr, c + dc\n            if 0 <= nr < h and 0 <= nc < w and (nr, nc) not in seen:\n                t = grid[nr][nc]\n                if t == '#' or (t == '~' and not swim):\n                    continue\n                seen.add((nr, nc))\n                stack.append((nr, nc))\n    return {'reachable': len(seen), 'exit': found}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('regression neighbourhood #1',\n   [['..E.#.#', '#.~..#.', 'D.#..#.'], [0, 3], True],\n   {'reachable': 12, 'exit': True}),\n  ('regression neighbourhood #2',\n   [['#.#..', '~~...', 'DDDE~', '.D.D.', '.....', '....#'], [4, 1], False],\n   {'reachable': 23, 'exit': True}),\n  ('partial repair boundary #1', [['E', '.'], [1, 0], False], {'reachable': 2, 'exit': True}),\n  ('partial repair boundary #2', [['.E..', '.D..'], [0, 1], True], {'reachable': 8, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['~.#D##E'], [0, 6], False], {'reachable': 1, 'exit': True})],\n [('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('regression neighbourhood #1',\n   [['#.#..', '~~...', 'DDDE~', '.D.D.', '.....', '....#'], [4, 1], False],\n   {'reachable': 23, 'exit': True}),\n  ('fault site neighbourhood #1',\n   [['.....D', '......', '.D~#.#', '...E#~'], [0, 0], True],\n   {'reachable': 20, 'exit': True}),\n  ('partial repair boundary #1',\n   [['~.D#.', 'D....', '#.D#E'], [1, 4], True],\n   {'reachable': 12, 'exit': True}),\n  ('partial repair boundary #2',\n   [['D.~E.', '#~~.#', 'DD...'], [2, 3], False],\n   {'reachable': 8, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['~.#D##E'], [0, 6], False], {'reachable': 1, 'exit': True})],\n [('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('fault site neighbourhood #1',\n   [['#D~.##', '.D.~E#', '.~...~', '....#.', '#.....'], [0, 3], False],\n   {'reachable': 1, 'exit': False}),\n  ('fault site neighbourhood #2', [['~#DD~.', '..~E.D'], [1, 0], False], {'reachable': 2, 'exit': False}),\n  ('partial repair boundary #1', [['E', '.', '.', '.', '~'], [2, 0], True], {'reachable': 5, 'exit': True}),\n  ('partial repair boundary #2', [['E.D.', '...D'], [1, 0], True], {'reachable': 8, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['~.#D##E'], [0, 6], False], {'reachable': 1, 'exit': True})],\n [('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('regression neighbourhood #1',\n   [['~D', '.E', '~.', '.#', '..', '.D'], [1, 1], False],\n   {'reachable': 4, 'exit': True}),\n  ('regression neighbourhood #2',\n   [['D#.#~', '.#~~.', 'D..E#', '.....', '.D.D.', '..~.D', '.~.D.'], [6, 2], False],\n   {'reachable': 24, 'exit': True}),\n  ('partial repair boundary #1',\n   [['.##.', '.D#D', 'D...', '.D~.', '.#DE', '.~#.', '.~DD'], [3, 0], False],\n   {'reachable': 20, 'exit': True}),\n  ('partial repair boundary #2',\n   [['..', '.E', 'DD', '.#', '..', '.~', '..'], [6, 0], False],\n   {'reachable': 12, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['.E', '.D', 'D.'], [0, 0], True], {'reachable': 6, 'exit': True})],\n [('diagonal gap only #1', [['.#', '#E'], [0, 0], False], {'reachable': 1, 'exit': False}),\n  ('regression neighbourhood #1',\n   [['.#~D', '#~~.', '~.E.', 'D.##', '~...'], [3, 1], True],\n   {'reachable': 15, 'exit': True}),\n  ('regression neighbourhood #2',\n   [['...', 'E~D', '#.#', '~..', '#..', '~..'], [5, 2], False],\n   {'reachable': 7, 'exit': False}),\n  ('partial repair boundary #1', [['~D.E..~', '.......'], [1, 5], False], {'reachable': 12, 'exit': True}),\n  ('partial repair boundary #2',\n   [['#D~..', '.#D.~', '.#...', '....D', 'DD#..', '.D.~#', '~~E.D'], [0, 3], True],\n   {'reachable': 30, 'exit': True}),\n  ('door corridor #1', [['.DE'], [0, 0], False], {'reachable': 3, 'exit': True}),\n  ('walled-in start #1', [['#.#', '#E#'], [0, 1], True], {'reachable': 2, 'exit': True}),\n  ('control #1', [['DD~.', '.#.#', '~.E.', '#.~~', 'D.~.'], [4, 3], False], {'reachable': 1, 'exit': False})]]\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-flood-reach-neighbourhood","generated_at":"2026-09-29T14:50:48.881032+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 `((1, 0), (-1, 0), (0, 1), (0, -1))` at the neighbourhood step.","root_cause":"The fill uses the 8-neighbourhood although movement is 4-directional.","sha256":"fa0a625233d45b712f38358a355dc52167ec035a6722915cfcb00969461df5e5","title":"Level reachability flood fill: Flood fill squeezes through diagonal gaps · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.436,"exit_code":1,"observations":[{"actual":{"exit":false,"reachable":1},"check":"diagonal gap only #1","expected":{"exit":false,"reachable":1},"passed":true},{"actual":{"exit":false,"reachable":5},"check":"regression neighbourhood #1","expected":{"exit":true,"reachable":12},"passed":false},{"actual":{"exit":false,"reachable":7},"check":"regression neighbourhood #2","expected":{"exit":true,"reachable":23},"passed":false},{"actual":{"exit":false,"reachable":1},"check":"partial repair boundary #1","expected":{"exit":true,"reachable":2},"passed":false},{"actual":{"exit":true,"reachable":6},"check":"partial repair boundary #2","expected":{"exit":true,"reachable":8},"passed":false},{"actual":{"exit":true,"reachable":3},"check":"door corridor #1","expected":{"exit":true,"reachable":3},"passed":true},{"actual":{"exit":true,"reachable":2},"check":"walled-in start #1","expected":{"exit":true,"reachable":2},"passed":true},{"actual":{"exit":true,"reachable":1},"check":"control #1","expected":{"exit":true,"reachable":1},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"diagonal gap only #1\", \"actual\": {\"reachable\": 1, \"exit\": false}, \"expected\": {\"reachable\": 1, \"exit\": false}, \"passed\": true}, {\"check\": \"regression neighbourhood #1\", \"actual\": {\"reachable\": 5, \"exit\": false}, \"expected\": {\"reachable\": 12, \"exit\": true}, \"passed\": false}, {\"check\": \"regression neighbourhood #2\", \"actual\": {\"reachable\": 7, \"exit\": false}, \"expected\": {\"reachable\": 23, \"exit\": true}, \"passed\": false}, {\"check\": \"partial repair boundary #1\", \"actual\": {\"reachable\": 1, \"exit\": false}, \"expected\": {\"reachable\": 2, \"exit\": true}, \"passed\": false}, {\"check\": \"partial repair boundary #2\", \"actual\": {\"reachable\": 6, \"exit\": true}, \"expected\": {\"reachable\": 8, \"exit\": true}, \"passed\": false}, {\"check\": \"door corridor #1\", \"actual\": {\"reachable\": 3, \"exit\": true}, \"expected\": {\"reachable\": 3, \"exit\": true}, \"passed\": true}, {\"check\": \"walled-in start #1\", \"actual\": {\"reachable\": 2, \"exit\": true}, \"expected\": {\"reachable\": 2, \"exit\": true}, \"passed\": true}, {\"check\": \"control #1\", \"actual\": {\"reachable\": 1, \"exit\": true}, \"expected\": {\"reachable\": 1, \"exit\": true}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.248,"exit_code":1,"observations":[{"actual":{"exit":true,"reachable":2},"check":"diagonal gap only #1","expected":{"exit":false,"reachable":1},"passed":false},{"actual":{"exit":true,"reachable":15},"check":"regression neighbourhood #1","expected":{"exit":true,"reachable":12},"passed":false},{"actual":{"exit":true,"reachable":24},"check":"regression neighbourhood #2","expected":{"exit":true,"reachable":23},"passed":false},{"actual":{"exit":true,"reachable":2},"check":"partial repair boundary #1","expected":{"exit":true,"reachable":2},"passed":true},{"actual":{"exit":true,"reachable":8},"check":"partial repair boundary #2","expected":{"exit":true,"reachable":8},"passed":true},{"actual":{"exit":true,"reachable":3},"check":"door corridor #1","expected":{"exit":true,"reachable":3},"passed":true},{"actual":{"exit":true,"reachable":2},"check":"walled-in start #1","expected":{"exit":true,"reachable":2},"passed":true},{"actual":{"exit":true,"reachable":1},"check":"control #1","expected":{"exit":true,"reachable":1},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"diagonal gap only #1\", \"actual\": {\"reachable\": 2, \"exit\": true}, \"expected\": {\"reachable\": 1, \"exit\": false}, \"passed\": false}, {\"check\": \"regression neighbourhood #1\", \"actual\": {\"reachable\": 15, \"exit\": true}, \"expected\": {\"reachable\": 12, \"exit\": true}, \"passed\": false}, {\"check\": \"regression neighbourhood #2\", \"actual\": {\"reachable\": 24, \"exit\": true}, \"expected\": {\"reachable\": 23, \"exit\": true}, \"passed\": false}, {\"check\": \"partial repair boundary #1\", \"actual\": {\"reachable\": 2, \"exit\": true}, \"expected\": {\"reachable\": 2, \"exit\": true}, \"passed\": true}, {\"check\": \"partial repair boundary #2\", \"actual\": {\"reachable\": 8, \"exit\": true}, \"expected\": {\"reachable\": 8, \"exit\": true}, \"passed\": true}, {\"check\": \"door corridor #1\", \"actual\": {\"reachable\": 3, \"exit\": true}, \"expected\": {\"reachable\": 3, \"exit\": true}, \"passed\": true}, {\"check\": \"walled-in start #1\", \"actual\": {\"reachable\": 2, \"exit\": true}, \"expected\": {\"reachable\": 2, \"exit\": true}, \"passed\": true}, {\"check\": \"control #1\", \"actual\": {\"reachable\": 1, \"exit\": true}, \"expected\": {\"reachable\": 1, \"exit\": true}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.862,"exit_code":0,"observations":[{"actual":{"exit":false,"reachable":1},"check":"diagonal gap only #1","expected":{"exit":false,"reachable":1},"passed":true},{"actual":{"exit":true,"reachable":12},"check":"regression neighbourhood #1","expected":{"exit":true,"reachable":12},"passed":true},{"actual":{"exit":true,"reachable":23},"check":"regression neighbourhood #2","expected":{"exit":true,"reachable":23},"passed":true},{"actual":{"exit":true,"reachable":2},"check":"partial repair boundary #1","expected":{"exit":true,"reachable":2},"passed":true},{"actual":{"exit":true,"reachable":8},"check":"partial repair boundary #2","expected":{"exit":true,"reachable":8},"passed":true},{"actual":{"exit":true,"reachable":3},"check":"door corridor #1","expected":{"exit":true,"reachable":3},"passed":true},{"actual":{"exit":true,"reachable":2},"check":"walled-in start #1","expected":{"exit":true,"reachable":2},"passed":true},{"actual":{"exit":true,"reachable":1},"check":"control #1","expected":{"exit":true,"reachable":1},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"diagonal gap only #1\", \"actual\": {\"reachable\": 1, \"exit\": false}, \"expected\": {\"reachable\": 1, \"exit\": false}, \"passed\": true}, {\"check\": \"regression neighbourhood #1\", \"actual\": {\"reachable\": 12, \"exit\": true}, \"expected\": {\"reachable\": 12, \"exit\": true}, \"passed\": true}, {\"check\": \"regression neighbourhood #2\", \"actual\": {\"reachable\": 23, \"exit\": true}, \"expected\": {\"reachable\": 23, \"exit\": true}, \"passed\": true}, {\"check\": \"partial repair boundary #1\", \"actual\": {\"reachable\": 2, \"exit\": true}, \"expected\": {\"reachable\": 2, \"exit\": true}, \"passed\": true}, {\"check\": \"partial repair boundary #2\", \"actual\": {\"reachable\": 8, \"exit\": true}, \"expected\": {\"reachable\": 8, \"exit\": true}, \"passed\": true}, {\"check\": \"door corridor #1\", \"actual\": {\"reachable\": 3, \"exit\": true}, \"expected\": {\"reachable\": 3, \"exit\": true}, \"passed\": true}, {\"check\": \"walled-in start #1\", \"actual\": {\"reachable\": 2, \"exit\": true}, \"expected\": {\"reachable\": 2, \"exit\": true}, \"passed\": true}, {\"check\": \"control #1\", \"actual\": {\"reachable\": 1, \"exit\": true}, \"expected\": {\"reachable\": 1, \"exit\": true}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}