FAILURE MAP
← Case archive

FA-66856 / Railway interlocking logic / Open access

Route request admission: re-request of a set route · case 01

Re-requesting a route that is already set reports a conflict with itself.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The already-set check was dropped, so the route is compared against its own lock entry.

VERIFIED REPAIR

Answer already-set before any occupancy or conflict checks.

Unsuccessful approach: Moving the already-set check after the occupancy test reports occupied once a train has entered its own route.

Case contract

x has a route table (sections, overlap sections, required point positions, direction), the locked routes, occupied sections and a requested route. Return unknown-route, already-set, occupied (any path section occupied), opposing:<r> (shared path/overlap with an opposite-direction locked route), section-conflict:<r>, point-conflict:<r> (a shared point needed in the other position) or granted. Locked routes are examined in sorted order. Overlap may overlap another overlap.

Why this case matters

Interlocking logic decides whether trains may be given authority; a wrong decision at this point either grants unsafe movements or strands traffic.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    routes = x['routes']
    name = x['request']
    if name not in routes:
        return 'unknown-route'
    req = routes[name]
    occ = set(x['occupied'])
    if any(s in occ for s in req['sections']):
        return 'occupied'
    for other in sorted(x['locked']):
        o = routes[other]
        mine = set(req['sections'])
        theirs = set(o['sections'])
        shared = (mine & (theirs | set(o['overlap']))) | (set(req['overlap']) & theirs)
        if shared and o['dir'] != req['dir']:
            return 'opposing:' + other
        if shared:
            return 'section-conflict:' + other
        for p, pos in sorted(req['points'].items()):
            if p in o['points'] and o['points'][p] != pos:
                return 'point-conflict:' + other
    return 'granted'
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 5', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['C', 'D'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 6', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S10-S7', 'S7-S2', 'S1-S4'], 'occupied': ['E'], 'request': 'S10-S7'}, 'already-set'), ('boundary: train standing in the second path section', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['B'], 'request': 'S1-S3'}, 'occupied'), ('boundary: train standing in the first path section', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['A'], 'request': 'S1-S4'}, 'occupied'), ('sampled regression 1', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S1-S4', 'S7-S2'], 'occupied': [], 'request': 'S7-S2'}, 'already-set'), ('control 4', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['G', 'K'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('control 7', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9', 'S13-S14', 'S11-S12'], 'occupied': [], 'request': 'S99-S1'}, 'unknown-route')], [('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 35', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S11-S12', 'S13-S14'], 'occupied': [], 'request': 'S13-S14'}, 'already-set'), ('boundary: shared point in the same lie', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S13-S14'}, 'section-conflict:S3-S5'), ('boundary: points agree between two locked routes', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2'], 'occupied': [], 'request': 'S13-S14'}, 'granted'), ('control 12', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['G'], 'request': 'S11-S12'}, 'granted'), ('control 15', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['B'], 'request': 'S10-S7'}, 'granted'), ('control 18', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6', 'S11-S12', 'S3-S5'], 'occupied': ['J'], 'request': 'S6-S2'}, 'section-conflict:S8-S6')], [('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 72', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4', 'S7-S2'], 'occupied': ['F'], 'request': 'S7-S2'}, 'already-set'), ('sampled regression 60', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2', 'S10-S7'], 'occupied': ['B', 'L'], 'request': 'S6-S2'}, 'already-set'), ('boundary: overlaps overlapping each other', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2'], 'occupied': [], 'request': 'S7-S2'}, 'section-conflict:S6-S2'), ('boundary: overlap overlapping another path', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S1-S3'}, 'section-conflict:S3-S5'), ('control 23', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9'], 'occupied': [], 'request': 'S3-S5'}, 'section-conflict:S4-S9'), ('sampled regression 26', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S13-S14'], 'occupied': ['B', 'D', 'H'], 'request': 'S13-S14'}, 'already-set'), ('control 29', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S13-S14'], 'occupied': ['K'], 'request': 'S8-S6'}, 'opposing:S13-S14')], [('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 8', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['B', 'D'], 'request': 'S1-S4'}, 'already-set'), ('sampled regression 44', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S7-S2', 'S11-S12', 'S13-S14'], 'occupied': ['A', 'H'], 'request': 'S7-S2'}, 'already-set'), ('boundary: opposite direction elsewhere on the layout', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6'], 'occupied': [], 'request': 'S11-S12'}, 'granted'), ('sampled regression 34', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9', 'S1-S3'], 'occupied': [], 'request': 'S1-S3'}, 'already-set'), ('control 37', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9'], 'occupied': [], 'request': 'S99-S1'}, 'unknown-route'), ('control 40', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['D'], 'request': 'S3-S5'}, 'granted')], [('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 53', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6'], 'occupied': ['G'], 'request': 'S8-S6'}, 'already-set'), ('sampled regression 11', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['D', 'F', 'H'], 'request': 'S1-S4'}, 'already-set'), ('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('boundary: point needed reverse while normal locked', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S13-S14'], 'occupied': [], 'request': 'S1-S4'}, 'point-conflict:S13-S14'), ('control 45', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S1-S4', 'S1-S3'], 'occupied': ['E'], 'request': 'S7-S2'}, 'opposing:S1-S3'), ('control 48', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['K'], 'request': 'S13-S14'}, 'granted'), ('control 51', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['F'], 'request': 'S6-S2'}, 'granted')]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: re-request of a set route under a trainoccupiedalready-setFailed
sampled regression 5section-conflict:S1-S3already-setFailed
sampled regression 6occupiedalready-setFailed
boundary: train standing in the second path sectionoccupiedoccupiedPassed
boundary: train standing in the first path sectionoccupiedoccupiedPassed
sampled regression 1opposing:S1-S4already-setFailed
control 4point-conflict:S1-S4point-conflict:S1-S4Passed
control 7unknown-routeunknown-routePassed

SHA-256 / acd3c3bb2107a23d03d6b8e82a6a86cc6a93917bee297b4f6c656ee3861d3672

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    routes = x['routes']
    name = x['request']
    if name not in routes:
        return 'unknown-route'
    req = routes[name]
    occ = set(x['occupied'])
    if any(s in occ for s in req['sections']):
        return 'occupied'
    if name in x['locked']:
        return 'already-set'
    for other in sorted(x['locked']):
        o = routes[other]
        mine = set(req['sections'])
        theirs = set(o['sections'])
        shared = (mine & (theirs | set(o['overlap']))) | (set(req['overlap']) & theirs)
        if shared and o['dir'] != req['dir']:
            return 'opposing:' + other
        if shared:
            return 'section-conflict:' + other
        for p, pos in sorted(req['points'].items()):
            if p in o['points'] and o['points'][p] != pos:
                return 'point-conflict:' + other
    return 'granted'
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 5', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['C', 'D'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 6', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S10-S7', 'S7-S2', 'S1-S4'], 'occupied': ['E'], 'request': 'S10-S7'}, 'already-set'), ('boundary: train standing in the second path section', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['B'], 'request': 'S1-S3'}, 'occupied'), ('boundary: train standing in the first path section', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['A'], 'request': 'S1-S4'}, 'occupied'), ('sampled regression 1', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S1-S4', 'S7-S2'], 'occupied': [], 'request': 'S7-S2'}, 'already-set'), ('control 4', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['G', 'K'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('control 7', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9', 'S13-S14', 'S11-S12'], 'occupied': [], 'request': 'S99-S1'}, 'unknown-route')], [('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 35', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S11-S12', 'S13-S14'], 'occupied': [], 'request': 'S13-S14'}, 'already-set'), ('boundary: shared point in the same lie', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S13-S14'}, 'section-conflict:S3-S5'), ('boundary: points agree between two locked routes', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2'], 'occupied': [], 'request': 'S13-S14'}, 'granted'), ('control 12', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['G'], 'request': 'S11-S12'}, 'granted'), ('control 15', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['B'], 'request': 'S10-S7'}, 'granted'), ('control 18', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6', 'S11-S12', 'S3-S5'], 'occupied': ['J'], 'request': 'S6-S2'}, 'section-conflict:S8-S6')], [('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 72', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4', 'S7-S2'], 'occupied': ['F'], 'request': 'S7-S2'}, 'already-set'), ('sampled regression 60', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2', 'S10-S7'], 'occupied': ['B', 'L'], 'request': 'S6-S2'}, 'already-set'), ('boundary: overlaps overlapping each other', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2'], 'occupied': [], 'request': 'S7-S2'}, 'section-conflict:S6-S2'), ('boundary: overlap overlapping another path', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S1-S3'}, 'section-conflict:S3-S5'), ('control 23', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9'], 'occupied': [], 'request': 'S3-S5'}, 'section-conflict:S4-S9'), ('sampled regression 26', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S13-S14'], 'occupied': ['B', 'D', 'H'], 'request': 'S13-S14'}, 'already-set'), ('control 29', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S13-S14'], 'occupied': ['K'], 'request': 'S8-S6'}, 'opposing:S13-S14')], [('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 8', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['B', 'D'], 'request': 'S1-S4'}, 'already-set'), ('sampled regression 44', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S7-S2', 'S11-S12', 'S13-S14'], 'occupied': ['A', 'H'], 'request': 'S7-S2'}, 'already-set'), ('boundary: opposite direction elsewhere on the layout', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6'], 'occupied': [], 'request': 'S11-S12'}, 'granted'), ('sampled regression 34', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9', 'S1-S3'], 'occupied': [], 'request': 'S1-S3'}, 'already-set'), ('control 37', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9'], 'occupied': [], 'request': 'S99-S1'}, 'unknown-route'), ('control 40', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['D'], 'request': 'S3-S5'}, 'granted')], [('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 53', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6'], 'occupied': ['G'], 'request': 'S8-S6'}, 'already-set'), ('sampled regression 11', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['D', 'F', 'H'], 'request': 'S1-S4'}, 'already-set'), ('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('boundary: point needed reverse while normal locked', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S13-S14'], 'occupied': [], 'request': 'S1-S4'}, 'point-conflict:S13-S14'), ('control 45', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S1-S4', 'S1-S3'], 'occupied': ['E'], 'request': 'S7-S2'}, 'opposing:S1-S3'), ('control 48', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['K'], 'request': 'S13-S14'}, 'granted'), ('control 51', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['F'], 'request': 'S6-S2'}, 'granted')]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: re-request of a set route under a trainoccupiedalready-setFailed
sampled regression 5already-setalready-setPassed
sampled regression 6occupiedalready-setFailed
boundary: train standing in the second path sectionoccupiedoccupiedPassed
boundary: train standing in the first path sectionoccupiedoccupiedPassed
sampled regression 1already-setalready-setPassed
control 4point-conflict:S1-S4point-conflict:S1-S4Passed
control 7unknown-routeunknown-routePassed

SHA-256 / f4a7a280356be0b55c864a91d2325ed98eddba7dc4ac28fd6dbbcc38a8cf8a33

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    routes = x['routes']
    name = x['request']
    if name not in routes:
        return 'unknown-route'
    if name in x['locked']:
        return 'already-set'
    req = routes[name]
    occ = set(x['occupied'])
    if any(s in occ for s in req['sections']):
        return 'occupied'
    for other in sorted(x['locked']):
        o = routes[other]
        mine = set(req['sections'])
        theirs = set(o['sections'])
        shared = (mine & (theirs | set(o['overlap']))) | (set(req['overlap']) & theirs)
        if shared and o['dir'] != req['dir']:
            return 'opposing:' + other
        if shared:
            return 'section-conflict:' + other
        for p, pos in sorted(req['points'].items()):
            if p in o['points'] and o['points'][p] != pos:
                return 'point-conflict:' + other
    return 'granted'
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 5', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['C', 'D'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 6', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S10-S7', 'S7-S2', 'S1-S4'], 'occupied': ['E'], 'request': 'S10-S7'}, 'already-set'), ('boundary: train standing in the second path section', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['B'], 'request': 'S1-S3'}, 'occupied'), ('boundary: train standing in the first path section', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['A'], 'request': 'S1-S4'}, 'occupied'), ('sampled regression 1', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S1-S4', 'S7-S2'], 'occupied': [], 'request': 'S7-S2'}, 'already-set'), ('control 4', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['G', 'K'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('control 7', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9', 'S13-S14', 'S11-S12'], 'occupied': [], 'request': 'S99-S1'}, 'unknown-route')], [('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 35', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S11-S12', 'S13-S14'], 'occupied': [], 'request': 'S13-S14'}, 'already-set'), ('boundary: shared point in the same lie', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S13-S14'}, 'section-conflict:S3-S5'), ('boundary: points agree between two locked routes', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2'], 'occupied': [], 'request': 'S13-S14'}, 'granted'), ('control 12', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['G'], 'request': 'S11-S12'}, 'granted'), ('control 15', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['B'], 'request': 'S10-S7'}, 'granted'), ('control 18', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6', 'S11-S12', 'S3-S5'], 'occupied': ['J'], 'request': 'S6-S2'}, 'section-conflict:S8-S6')], [('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 72', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4', 'S7-S2'], 'occupied': ['F'], 'request': 'S7-S2'}, 'already-set'), ('sampled regression 60', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2', 'S10-S7'], 'occupied': ['B', 'L'], 'request': 'S6-S2'}, 'already-set'), ('boundary: overlaps overlapping each other', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S6-S2'], 'occupied': [], 'request': 'S7-S2'}, 'section-conflict:S6-S2'), ('boundary: overlap overlapping another path', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S1-S3'}, 'section-conflict:S3-S5'), ('control 23', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9'], 'occupied': [], 'request': 'S3-S5'}, 'section-conflict:S4-S9'), ('sampled regression 26', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S13-S14'], 'occupied': ['B', 'D', 'H'], 'request': 'S13-S14'}, 'already-set'), ('control 29', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S13-S14'], 'occupied': ['K'], 'request': 'S8-S6'}, 'opposing:S13-S14')], [('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 8', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['B', 'D'], 'request': 'S1-S4'}, 'already-set'), ('sampled regression 44', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S7-S2', 'S11-S12', 'S13-S14'], 'occupied': ['A', 'H'], 'request': 'S7-S2'}, 'already-set'), ('boundary: opposite direction elsewhere on the layout', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6'], 'occupied': [], 'request': 'S11-S12'}, 'granted'), ('sampled regression 34', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9', 'S1-S3'], 'occupied': [], 'request': 'S1-S3'}, 'already-set'), ('control 37', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S4-S9'], 'occupied': [], 'request': 'S99-S1'}, 'unknown-route'), ('control 40', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['D'], 'request': 'S3-S5'}, 'granted')], [('regression: re-request of a set route under a train', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S3'], 'occupied': ['A'], 'request': 'S1-S3'}, 'already-set'), ('sampled regression 53', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S8-S6'], 'occupied': ['G'], 'request': 'S8-S6'}, 'already-set'), ('sampled regression 11', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S1-S4'], 'occupied': ['D', 'F', 'H'], 'request': 'S1-S4'}, 'already-set'), ('regression: re-request of a set route', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5'], 'occupied': [], 'request': 'S3-S5'}, 'already-set'), ('boundary: point needed reverse while normal locked', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S13-S14'], 'occupied': [], 'request': 'S1-S4'}, 'point-conflict:S13-S14'), ('control 45', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': ['S3-S5', 'S1-S4', 'S1-S3'], 'occupied': ['E'], 'request': 'S7-S2'}, 'opposing:S1-S3'), ('control 48', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['K'], 'request': 'S13-S14'}, 'granted'), ('control 51', {'routes': {'S1-S3': {'sections': ['A', 'B'], 'overlap': ['C'], 'points': {'P1': 'N'}, 'dir': 'up'}, 'S1-S4': {'sections': ['A', 'D'], 'overlap': ['E'], 'points': {'P1': 'R'}, 'dir': 'up'}, 'S3-S5': {'sections': ['C', 'F'], 'overlap': ['G'], 'points': {'P2': 'N'}, 'dir': 'up'}, 'S6-S2': {'sections': ['B', 'A'], 'overlap': ['H'], 'points': {'P1': 'N'}, 'dir': 'down'}, 'S7-S2': {'sections': ['D', 'A'], 'overlap': ['H'], 'points': {'P1': 'R'}, 'dir': 'down'}, 'S8-S6': {'sections': ['F', 'C'], 'overlap': ['B'], 'points': {'P2': 'N'}, 'dir': 'down'}, 'S4-S9': {'sections': ['E', 'G'], 'overlap': ['K'], 'points': {'P2': 'R', 'P3': 'N'}, 'dir': 'up'}, 'S10-S7': {'sections': ['G', 'E'], 'overlap': ['D'], 'points': {'P3': 'N'}, 'dir': 'down'}, 'S11-S12': {'sections': ['J'], 'overlap': ['K'], 'points': {'P3': 'R'}, 'dir': 'up'}, 'S13-S14': {'sections': ['L'], 'overlap': ['C'], 'points': {'P1': 'N', 'P4': 'R'}, 'dir': 'up'}}, 'locked': [], 'occupied': ['F'], 'request': 'S6-S2'}, 'granted')]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: re-request of a set route under a trainalready-setalready-setPassed
sampled regression 5already-setalready-setPassed
sampled regression 6already-setalready-setPassed
boundary: train standing in the second path sectionoccupiedoccupiedPassed
boundary: train standing in the first path sectionoccupiedoccupiedPassed
sampled regression 1already-setalready-setPassed
control 4point-conflict:S1-S4point-conflict:S1-S4Passed
control 7unknown-routeunknown-routePassed

SHA-256 / f516c5a6cddabd493aecab7c80dabea34f667fffd032c579f996749c2f37445b

Verification & scope

Stipulated toy interlocking contract for a bounded teaching model; it makes no claim of conformance to any railway signalling standard and omits real safety cases. 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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:47:47.511367+00:00.

Case digest / f352dfec14884666d644433843be7dfa1a3ef8fbe95549730c9e2d2479327c0c