FAILURE MAP
← Case archive

FA-67280 / Railway interlocking logic / Member archive

Flank protection selection: own flank demand · case 05

Two route points silently overwrite each other's flank demand on a shared flank point.

Member previewVariant 5 · 3 implementations · 8 checks per implementation

Case contract

For each route point (sorted) in its lie, the flank table (key point+lie) lists flank points with the protecting lie and an optional flank signal. A flank point is set to its protecting lie if it is free, locked in that lie by another route, or already demanded in that lie by this route; if it is unavailable, its flank signal is held at danger when the signal exists and is holdable; otherwise the route is refused (refused:<flank point>, nothing set or held). Held signals are returned sorted and unique.

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.

One recorded failure

Sample boundary fixture

This sample comes from the broken implementation of a controlled reproducer.

Boundary fixtureActualExpectedOutcome
regression: own conflicting demand without a signal{"held_signals": [], "result": "protected", "set_points": {"P7": "N", "P8": "N", "P9": "N"}}{"held_signals": [], "result": "refused:P7", "set_points": {}}Failed

MEMBER ARCHIVE

The complete case is available to members.

This record includes three runnable implementations, regression fixtures, execution results, and source hashes.

Member access is invitation-based. Sign in with your invited account to inspect the sources.

Sign in to the archive ↗