FAILURE MAP
← Case archive

FA-66846 / Railway interlocking logic / Open access

Route request admission: shared point agreement · case 01

Compatible routes that use a common point in the same lie are refused.

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

ROOT CAUSE

Any shared point is reported as a conflict, even when both routes need the same position.

VERIFIED REPAIR

Only report a point conflict when the locked route needs the point in the opposite position.

Unsuccessful approach: Treating only reverse requests as conflicts misses a normal request against a reverse-locked point and still refuses reverse-reverse sharing.

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'
    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']:
                return 'point-conflict:' + other
    return 'granted'
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: 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 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'), ('sampled regression 13', {'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', 'S13-S14', 'S4-S9'], 'occupied': [], 'request': 'S1-S3'}, 'opposing:S8-S6'), ('control 54', {'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': ['F', 'G'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('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'), ('control 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 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'), ('control 10', {'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': [], 'request': 'S7-S2'}, 'granted')], [('regression: 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 54', {'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': ['F', 'G'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('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'), ('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: 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'), ('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: 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 58', {'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', 'S4-S9'], 'occupied': ['E', 'J'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('sampled regression 13', {'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', 'S13-S14', 'S4-S9'], 'occupied': [], 'request': 'S1-S3'}, 'opposing:S8-S6'), ('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'), ('control 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: 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 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 54', {'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': ['F', 'G'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('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'), ('boundary: opposing movement into the same 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': ['S1-S3'], 'occupied': [], 'request': 'S6-S2'}, 'opposing:S1-S3'), ('control 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: 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 54', {'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': ['F', 'G'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('sampled regression 13', {'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', 'S13-S14', 'S4-S9'], 'occupied': [], 'request': 'S1-S3'}, 'opposing:S8-S6'), ('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'), ('boundary: 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'), ('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: points agree between two locked routespoint-conflict:S6-S2grantedFailed
control 4point-conflict:S1-S4point-conflict:S1-S4Passed
sampled regression 13point-conflict:S13-S14opposing:S8-S6Failed
control 54point-conflict:S1-S4point-conflict:S1-S4Passed
boundary: train standing in the second path sectionoccupiedoccupiedPassed
control 1already-setalready-setPassed
control 7unknown-routeunknown-routePassed
control 10grantedgrantedPassed

SHA-256 / d343990a38dddbb1be2e418703dbb474f3fc88d1f8606decf1a4873058262be1

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'
    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 pos == 'R':
                return 'point-conflict:' + other
    return 'granted'
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: 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 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'), ('sampled regression 13', {'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', 'S13-S14', 'S4-S9'], 'occupied': [], 'request': 'S1-S3'}, 'opposing:S8-S6'), ('control 54', {'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': ['F', 'G'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('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'), ('control 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 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'), ('control 10', {'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': [], 'request': 'S7-S2'}, 'granted')], [('regression: 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 54', {'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': ['F', 'G'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('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'), ('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: 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'), ('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: 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 58', {'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', 'S4-S9'], 'occupied': ['E', 'J'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('sampled regression 13', {'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', 'S13-S14', 'S4-S9'], 'occupied': [], 'request': 'S1-S3'}, 'opposing:S8-S6'), ('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'), ('control 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: 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 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 54', {'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': ['F', 'G'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('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'), ('boundary: opposing movement into the same 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': ['S1-S3'], 'occupied': [], 'request': 'S6-S2'}, 'opposing:S1-S3'), ('control 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: 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 54', {'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': ['F', 'G'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('sampled regression 13', {'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', 'S13-S14', 'S4-S9'], 'occupied': [], 'request': 'S1-S3'}, 'opposing:S8-S6'), ('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'), ('boundary: 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'), ('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: points agree between two locked routesgrantedgrantedPassed
control 4grantedpoint-conflict:S1-S4Failed
sampled regression 13opposing:S8-S6opposing:S8-S6Passed
control 54grantedpoint-conflict:S1-S4Failed
boundary: train standing in the second path sectionoccupiedoccupiedPassed
control 1already-setalready-setPassed
control 7unknown-routeunknown-routePassed
control 10grantedgrantedPassed

SHA-256 / c855be75a3b43c3063d1f024f7e86cfb6902ec05790e1869cc1001b3592df40f

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: 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 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'), ('sampled regression 13', {'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', 'S13-S14', 'S4-S9'], 'occupied': [], 'request': 'S1-S3'}, 'opposing:S8-S6'), ('control 54', {'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': ['F', 'G'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('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'), ('control 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 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'), ('control 10', {'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': [], 'request': 'S7-S2'}, 'granted')], [('regression: 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 54', {'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': ['F', 'G'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('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'), ('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: 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'), ('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: 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 58', {'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', 'S4-S9'], 'occupied': ['E', 'J'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('sampled regression 13', {'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', 'S13-S14', 'S4-S9'], 'occupied': [], 'request': 'S1-S3'}, 'opposing:S8-S6'), ('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'), ('control 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: 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 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 54', {'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': ['F', 'G'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('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'), ('boundary: opposing movement into the same 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': ['S1-S3'], 'occupied': [], 'request': 'S6-S2'}, 'opposing:S1-S3'), ('control 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: 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 54', {'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': ['F', 'G'], 'request': 'S13-S14'}, 'point-conflict:S1-S4'), ('sampled regression 13', {'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', 'S13-S14', 'S4-S9'], 'occupied': [], 'request': 'S1-S3'}, 'opposing:S8-S6'), ('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'), ('boundary: 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'), ('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: points agree between two locked routesgrantedgrantedPassed
control 4point-conflict:S1-S4point-conflict:S1-S4Passed
sampled regression 13opposing:S8-S6opposing:S8-S6Passed
control 54point-conflict:S1-S4point-conflict:S1-S4Passed
boundary: train standing in the second path sectionoccupiedoccupiedPassed
control 1already-setalready-setPassed
control 7unknown-routeunknown-routePassed
control 10grantedgrantedPassed

SHA-256 / 618ca965c47cdbf70f0e4910bb468b9ae5e78dad869f4acb766c2ad40990c01f

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.473385+00:00.

Case digest / a57f484e289a733133969f0bd73856ce2598f84f6cd2d46cbc7761599efc9ca1