FAILURE MAP
← Case archive

FA-68971 / Tide and marine navigation tables / Open access

Bridge air draft clearance: Bridge clearance is treated as referenced to chart datum · case 01

Available clearance is short by the MHWS height at every tide.

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

ROOT CAUSE

The charted clearance is assumed to be above chart datum so only the tide is subtracted.

THE FAILURE

The charted clearance is assumed to be above chart datum so only the tide is subtracted.

Unsuccessful approach: Adding MHWS without subtracting the tide ignores the actual water level.

Case contract

Input [c, mhws, tide, air, safety]: charted vertical clearance c is measured above MHWS; mhws and tide are heights above chart datum; air is the vessel air draft. Available clearance = c+(mhws-tide) (it shrinks when the tide exceeds MHWS). Return [round(avail,2), round(avail-air,2), avail-air>=safety].

Why this case matters

Tide tables and passage plans turn published predictions into go/no-go decisions about depth, clearance and timing.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    c,mhws,tide,air,safety=x
    avail=c-tide
    margin=avail-air
    return [round(avail,2),round(margin,2),margin>=safety]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('bridge air draft clearance [18.0, 4.6, 1.2, 20.5, 1.0]', [18.0, 4.6, 1.2, 20.5, 1.0], [21.4, 0.9, False]), ('bridge air draft clearance [18.0, 4.6, 4.6, 17.0, 1.0]', [18.0, 4.6, 4.6, 17.0, 1.0], [18.0, 1.0, True]), ('bridge air draft clearance [18.0, 4.6, 5.3, 17.0, 1.0]', [18.0, 4.6, 5.3, 17.0, 1.0], [17.3, 0.3, False]), ('bridge air draft clearance [18.0, 4.6, 5.1, 16.9, 0.5]', [18.0, 4.6, 5.1, 16.9, 0.5], [17.5, 0.6, True]), ('bridge air draft clearance [12.5, 6.1, 0.4, 17.0, 0.5]', [12.5, 6.1, 0.4, 17.0, 0.5], [18.2, 1.2, True]), ('bridge air draft clearance [12.5, 6.1, 3.0, 14.9, 0.7]', [12.5, 6.1, 3.0, 14.9, 0.7], [15.6, 0.7, False]), ('bridge air draft clearance [30.0, 2.2, 2.9, 29.0, 0.2]', [30.0, 2.2, 2.9, 29.0, 0.2], [29.3, 0.3, True])], [('bridge air draft clearance [18.0, 4.6, 4.6, 17.0, 1.0]', [18.0, 4.6, 4.6, 17.0, 1.0], [18.0, 1.0, True]), ('bridge air draft clearance [18.0, 4.6, 5.1, 16.9, 0.5]', [18.0, 4.6, 5.1, 16.9, 0.5], [17.5, 0.6, True]), ('bridge air draft clearance [12.5, 6.1, 0.4, 17.0, 0.5]', [12.5, 6.1, 0.4, 17.0, 0.5], [18.2, 1.2, True]), ('bridge air draft clearance [12.5, 6.1, 3.0, 14.9, 0.7]', [12.5, 6.1, 3.0, 14.9, 0.7], [15.6, 0.7, False]), ('bridge air draft clearance [30.0, 2.2, 2.9, 29.0, 0.2]', [30.0, 2.2, 2.9, 29.0, 0.2], [29.3, 0.3, True]), ('bridge air draft clearance [9.0, 5.0, 5.0, 8.5, 0.5]', [9.0, 5.0, 5.0, 8.5, 0.5], [9.0, 0.5, True]), ('bridge air draft clearance [9.0, 5.0, 2.5, 11.0, 0.5]', [9.0, 5.0, 2.5, 11.0, 0.5], [11.5, 0.5, True])], [('bridge air draft clearance [18.0, 4.6, 5.3, 17.0, 1.0]', [18.0, 4.6, 5.3, 17.0, 1.0], [17.3, 0.3, False]), ('bridge air draft clearance [30.0, 2.2, 2.9, 29.0, 0.2]', [30.0, 2.2, 2.9, 29.0, 0.2], [29.3, 0.3, True]), ('bridge air draft clearance [9.0, 5.0, 5.0, 8.5, 0.5]', [9.0, 5.0, 5.0, 8.5, 0.5], [9.0, 0.5, True]), ('bridge air draft clearance [9.0, 5.0, 2.5, 11.0, 0.5]', [9.0, 5.0, 2.5, 11.0, 0.5], [11.5, 0.5, True]), ('bridge air draft clearance [9.0, 5.0, 6.0, 7.5, 0.4]', [9.0, 5.0, 6.0, 7.5, 0.4], [8.0, 0.5, True]), ('bridge air draft clearance [22.0, 3.5, 0.0, 25.0, 0.5]', [22.0, 3.5, 0.0, 25.0, 0.5], [25.5, 0.5, True]), ('bridge air draft clearance [15.0, 4.0, 4.4, 14.1, 0.5]', [15.0, 4.0, 4.4, 14.1, 0.5], [14.6, 0.5, True])], [('bridge air draft clearance [18.0, 4.6, 5.1, 16.9, 0.5]', [18.0, 4.6, 5.1, 16.9, 0.5], [17.5, 0.6, True]), ('bridge air draft clearance [9.0, 5.0, 6.0, 7.5, 0.4]', [9.0, 5.0, 6.0, 7.5, 0.4], [8.0, 0.5, True]), ('bridge air draft clearance [22.0, 3.5, 0.0, 25.0, 0.5]', [22.0, 3.5, 0.0, 25.0, 0.5], [25.5, 0.5, True]), ('bridge air draft clearance [15.0, 4.0, 4.4, 14.1, 0.5]', [15.0, 4.0, 4.4, 14.1, 0.5], [14.6, 0.5, True]), ('bridge air draft clearance [15.0, 4.0, 2.0, 16.46, 0.5]', [15.0, 4.0, 2.0, 16.46, 0.5], [17.0, 0.54, True]), ('bridge air draft clearance [15.0, 4.0, 4.8, 13.5, 0.2]', [15.0, 4.0, 4.8, 13.5, 0.2], [14.2, 0.7, True]), ('bridge air draft clearance [15.0, 4.0, 4.0, 14.42, 0.55]', [15.0, 4.0, 4.0, 14.42, 0.55], [15.0, 0.58, True])], [('bridge air draft clearance [12.5, 6.1, 0.4, 17.0, 0.5]', [12.5, 6.1, 0.4, 17.0, 0.5], [18.2, 1.2, True]), ('bridge air draft clearance [15.0, 4.0, 2.0, 16.46, 0.5]', [15.0, 4.0, 2.0, 16.46, 0.5], [17.0, 0.54, True]), ('bridge air draft clearance [15.0, 4.0, 4.8, 13.5, 0.2]', [15.0, 4.0, 4.8, 13.5, 0.2], [14.2, 0.7, True]), ('bridge air draft clearance [15.0, 4.0, 4.0, 14.42, 0.55]', [15.0, 4.0, 4.0, 14.42, 0.55], [15.0, 0.58, True]), ('bridge air draft clearance [15.0, 4.0, 4.1, 14.35, 0.5]', [15.0, 4.0, 4.1, 14.35, 0.5], [14.9, 0.55, True]), ('bridge air draft clearance [18.0, 4.6, 1.2, 20.5, 1.0]', [18.0, 4.6, 1.2, 20.5, 1.0], [21.4, 0.9, False]), ('bridge air draft clearance [18.0, 4.6, 4.6, 17.0, 1.0]', [18.0, 4.6, 4.6, 17.0, 1.0], [18.0, 1.0, True])]]
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
bridge air draft clearance [18.0, 4.6, 1.2, 20.5, 1.0][16.8, -3.7, False][21.4, 0.9, False]Failed
bridge air draft clearance [18.0, 4.6, 4.6, 17.0, 1.0][13.4, -3.6, False][18.0, 1.0, True]Failed
bridge air draft clearance [18.0, 4.6, 5.3, 17.0, 1.0][12.7, -4.3, False][17.3, 0.3, False]Failed
bridge air draft clearance [18.0, 4.6, 5.1, 16.9, 0.5][12.9, -4.0, False][17.5, 0.6, True]Failed
bridge air draft clearance [12.5, 6.1, 0.4, 17.0, 0.5][12.1, -4.9, False][18.2, 1.2, True]Failed
bridge air draft clearance [12.5, 6.1, 3.0, 14.9, 0.7][9.5, -5.4, False][15.6, 0.7, False]Failed
bridge air draft clearance [30.0, 2.2, 2.9, 29.0, 0.2][27.1, -1.9, False][29.3, 0.3, True]Failed

SHA-256 / 661e1617d256b1c98ce3619f063165c8eebc7e4d247b63124aede3ea4a6058f4

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    c,mhws,tide,air,safety=x
    avail=c+mhws
    margin=avail-air
    return [round(avail,2),round(margin,2),margin>=safety]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('bridge air draft clearance [18.0, 4.6, 1.2, 20.5, 1.0]', [18.0, 4.6, 1.2, 20.5, 1.0], [21.4, 0.9, False]), ('bridge air draft clearance [18.0, 4.6, 4.6, 17.0, 1.0]', [18.0, 4.6, 4.6, 17.0, 1.0], [18.0, 1.0, True]), ('bridge air draft clearance [18.0, 4.6, 5.3, 17.0, 1.0]', [18.0, 4.6, 5.3, 17.0, 1.0], [17.3, 0.3, False]), ('bridge air draft clearance [18.0, 4.6, 5.1, 16.9, 0.5]', [18.0, 4.6, 5.1, 16.9, 0.5], [17.5, 0.6, True]), ('bridge air draft clearance [12.5, 6.1, 0.4, 17.0, 0.5]', [12.5, 6.1, 0.4, 17.0, 0.5], [18.2, 1.2, True]), ('bridge air draft clearance [12.5, 6.1, 3.0, 14.9, 0.7]', [12.5, 6.1, 3.0, 14.9, 0.7], [15.6, 0.7, False]), ('bridge air draft clearance [30.0, 2.2, 2.9, 29.0, 0.2]', [30.0, 2.2, 2.9, 29.0, 0.2], [29.3, 0.3, True])], [('bridge air draft clearance [18.0, 4.6, 4.6, 17.0, 1.0]', [18.0, 4.6, 4.6, 17.0, 1.0], [18.0, 1.0, True]), ('bridge air draft clearance [18.0, 4.6, 5.1, 16.9, 0.5]', [18.0, 4.6, 5.1, 16.9, 0.5], [17.5, 0.6, True]), ('bridge air draft clearance [12.5, 6.1, 0.4, 17.0, 0.5]', [12.5, 6.1, 0.4, 17.0, 0.5], [18.2, 1.2, True]), ('bridge air draft clearance [12.5, 6.1, 3.0, 14.9, 0.7]', [12.5, 6.1, 3.0, 14.9, 0.7], [15.6, 0.7, False]), ('bridge air draft clearance [30.0, 2.2, 2.9, 29.0, 0.2]', [30.0, 2.2, 2.9, 29.0, 0.2], [29.3, 0.3, True]), ('bridge air draft clearance [9.0, 5.0, 5.0, 8.5, 0.5]', [9.0, 5.0, 5.0, 8.5, 0.5], [9.0, 0.5, True]), ('bridge air draft clearance [9.0, 5.0, 2.5, 11.0, 0.5]', [9.0, 5.0, 2.5, 11.0, 0.5], [11.5, 0.5, True])], [('bridge air draft clearance [18.0, 4.6, 5.3, 17.0, 1.0]', [18.0, 4.6, 5.3, 17.0, 1.0], [17.3, 0.3, False]), ('bridge air draft clearance [30.0, 2.2, 2.9, 29.0, 0.2]', [30.0, 2.2, 2.9, 29.0, 0.2], [29.3, 0.3, True]), ('bridge air draft clearance [9.0, 5.0, 5.0, 8.5, 0.5]', [9.0, 5.0, 5.0, 8.5, 0.5], [9.0, 0.5, True]), ('bridge air draft clearance [9.0, 5.0, 2.5, 11.0, 0.5]', [9.0, 5.0, 2.5, 11.0, 0.5], [11.5, 0.5, True]), ('bridge air draft clearance [9.0, 5.0, 6.0, 7.5, 0.4]', [9.0, 5.0, 6.0, 7.5, 0.4], [8.0, 0.5, True]), ('bridge air draft clearance [22.0, 3.5, 0.0, 25.0, 0.5]', [22.0, 3.5, 0.0, 25.0, 0.5], [25.5, 0.5, True]), ('bridge air draft clearance [15.0, 4.0, 4.4, 14.1, 0.5]', [15.0, 4.0, 4.4, 14.1, 0.5], [14.6, 0.5, True])], [('bridge air draft clearance [18.0, 4.6, 5.1, 16.9, 0.5]', [18.0, 4.6, 5.1, 16.9, 0.5], [17.5, 0.6, True]), ('bridge air draft clearance [9.0, 5.0, 6.0, 7.5, 0.4]', [9.0, 5.0, 6.0, 7.5, 0.4], [8.0, 0.5, True]), ('bridge air draft clearance [22.0, 3.5, 0.0, 25.0, 0.5]', [22.0, 3.5, 0.0, 25.0, 0.5], [25.5, 0.5, True]), ('bridge air draft clearance [15.0, 4.0, 4.4, 14.1, 0.5]', [15.0, 4.0, 4.4, 14.1, 0.5], [14.6, 0.5, True]), ('bridge air draft clearance [15.0, 4.0, 2.0, 16.46, 0.5]', [15.0, 4.0, 2.0, 16.46, 0.5], [17.0, 0.54, True]), ('bridge air draft clearance [15.0, 4.0, 4.8, 13.5, 0.2]', [15.0, 4.0, 4.8, 13.5, 0.2], [14.2, 0.7, True]), ('bridge air draft clearance [15.0, 4.0, 4.0, 14.42, 0.55]', [15.0, 4.0, 4.0, 14.42, 0.55], [15.0, 0.58, True])], [('bridge air draft clearance [12.5, 6.1, 0.4, 17.0, 0.5]', [12.5, 6.1, 0.4, 17.0, 0.5], [18.2, 1.2, True]), ('bridge air draft clearance [15.0, 4.0, 2.0, 16.46, 0.5]', [15.0, 4.0, 2.0, 16.46, 0.5], [17.0, 0.54, True]), ('bridge air draft clearance [15.0, 4.0, 4.8, 13.5, 0.2]', [15.0, 4.0, 4.8, 13.5, 0.2], [14.2, 0.7, True]), ('bridge air draft clearance [15.0, 4.0, 4.0, 14.42, 0.55]', [15.0, 4.0, 4.0, 14.42, 0.55], [15.0, 0.58, True]), ('bridge air draft clearance [15.0, 4.0, 4.1, 14.35, 0.5]', [15.0, 4.0, 4.1, 14.35, 0.5], [14.9, 0.55, True]), ('bridge air draft clearance [18.0, 4.6, 1.2, 20.5, 1.0]', [18.0, 4.6, 1.2, 20.5, 1.0], [21.4, 0.9, False]), ('bridge air draft clearance [18.0, 4.6, 4.6, 17.0, 1.0]', [18.0, 4.6, 4.6, 17.0, 1.0], [18.0, 1.0, True])]]
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
bridge air draft clearance [18.0, 4.6, 1.2, 20.5, 1.0][22.6, 2.1, True][21.4, 0.9, False]Failed
bridge air draft clearance [18.0, 4.6, 4.6, 17.0, 1.0][22.6, 5.6, True][18.0, 1.0, True]Failed
bridge air draft clearance [18.0, 4.6, 5.3, 17.0, 1.0][22.6, 5.6, True][17.3, 0.3, False]Failed
bridge air draft clearance [18.0, 4.6, 5.1, 16.9, 0.5][22.6, 5.7, True][17.5, 0.6, True]Failed
bridge air draft clearance [12.5, 6.1, 0.4, 17.0, 0.5][18.6, 1.6, True][18.2, 1.2, True]Failed
bridge air draft clearance [12.5, 6.1, 3.0, 14.9, 0.7][18.6, 3.7, True][15.6, 0.7, False]Failed
bridge air draft clearance [30.0, 2.2, 2.9, 29.0, 0.2][32.2, 3.2, True][29.3, 0.3, True]Failed

SHA-256 / 3987812767b3c5dcab8aee70ff438ec1e6fd4aa4653abca383787527a9bcb770

HELD IN THE MEMBER ARCHIVE

The verified repair and its recorded checks are member-only.

This mechanism has 7 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.

Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.

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

Sign in to the archive ↗

Verification & scope

A deterministic toy model with stipulated rules and constants; not certified hydrographic software or a substitute for official tide tables. 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:48:07.110464+00:00.

Case digest / 62b0fc8e7bdb4314155dc5d02109408272bcdc53a214224a422aae0a9c028f6f