FA-68931 / Tide and marine navigation tables / Open access
Secondary port differences: Time difference is rounded before being applied · case 01
Corrected times are a minute off when the interpolated difference has a half minute.
ROOT CAUSE
The interpolated time difference is truncated toward zero before adding it to the standard port time.
VERIFIED REPAIR
Add the unrounded difference and round the corrected time once.
Unsuccessful approach: Rounding the difference with Python round uses bankers rounding and still double-rounds.
Case contract
Input dict: standard port HW time hw (minutes of day), height hh, today range rng, mean spring/neap ranges sr/nr, time differences ts/tn (spring/neap, minutes) and height differences hs/hn. Interpolation factor k=(rng-nr)/(sr-nr) clamped to [0,1]; difference = neap+(spring-neap)*k. Time is wrapped to [0,1440) and rounded to whole minutes half up; height rounded to 2 decimals. Return [minutes, height].
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):
k=(x['rng']-x['nr'])/(x['sr']-x['nr'])
k=max(0.0,min(1.0,k))
dt=x['tn']+(x['ts']-x['tn'])*k
dh=x['hn']+(x['hs']-x['hn'])*k
t=math.floor(x['hw']+int(dt)+0.5)
t=t%1440
return [t,round(x['hh']+dh,2)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 2.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [611, 3.83]), ('secondary port differences {"hw": 600, "hh": 4.0, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -35, "tn": 20, "hs": -0.5, "hn": -0.1}', {'hw': 600, 'hh': 4.0, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -35, 'tn': 20, 'hs': -0.5, 'hn': -0.1}, [593, 3.7]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 1.8, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 1.8, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [620, 3.9]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.4, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 2.4, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [606, 3.8]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [593, 3.7]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.1, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.1, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [590, 3.68]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.6, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.6, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [579, 3.6])], [('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.1, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.1, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [590, 3.68]), ('secondary port differences {"hw": 610, "hh": 3.5, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -12, "tn": 25, "hs": -0.4, "hn": 0.1}', {'hw': 610, 'hh': 3.5, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -12, 'tn': 25, 'hs': -0.4, 'hn': 0.1}, [617, 3.35]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [593, 3.7]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.6, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.6, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [579, 3.6]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 4.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 4.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [565, 3.5]), ('secondary port differences {"hw": 10, "hh": 3.8, "rng": 3.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 10, 'hh': 3.8, 'rng': 3.9, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [1422, 3.25]), ('secondary port differences {"hw": 1430, "hh": 4.4, "rng": 2.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 1430, 'hh': 4.4, 'rng': 2.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [5, 4.17])], [('secondary port differences {"hw": 610, "hh": 3.5, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -12, "tn": 25, "hs": -0.4, "hn": 0.1}', {'hw': 610, 'hh': 3.5, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -12, 'tn': 25, 'hs': -0.4, 'hn': 0.1}, [617, 3.35]), ('secondary port differences {"hw": 600, "hh": 4.0, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -35, "tn": 20, "hs": -0.5, "hn": -0.1}', {'hw': 600, 'hh': 4.0, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -35, 'tn': 20, 'hs': -0.5, 'hn': -0.1}, [593, 3.7]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 4.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 4.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [565, 3.5]), ('secondary port differences {"hw": 10, "hh": 3.8, "rng": 3.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 10, 'hh': 3.8, 'rng': 3.9, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [1422, 3.25]), ('secondary port differences {"hw": 1430, "hh": 4.4, "rng": 2.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 1430, 'hh': 4.4, 'rng': 2.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [5, 4.17]), ('secondary port differences {"hw": 20, "hh": 3.0, "rng": 1.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 20, 'hh': 3.0, 'rng': 1.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [40, 2.8]), ('secondary port differences {"hw": 700, "hh": 5.0, "rng": 5.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 700, 'hh': 5.0, 'rng': 5.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [665, 4.4])], [('secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 2.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [611, 3.83]), ('secondary port differences {"hw": 610, "hh": 3.5, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -12, "tn": 25, "hs": -0.4, "hn": 0.1}', {'hw': 610, 'hh': 3.5, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -12, 'tn': 25, 'hs': -0.4, 'hn': 0.1}, [617, 3.35]), ('secondary port differences {"hw": 20, "hh": 3.0, "rng": 1.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 20, 'hh': 3.0, 'rng': 1.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [40, 2.8]), ('secondary port differences {"hw": 700, "hh": 5.0, "rng": 5.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 700, 'hh': 5.0, 'rng': 5.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [665, 4.4]), ('secondary port differences {"hw": 1425, "hh": 4.0, "rng": 1.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 1425, 'hh': 4.0, 'rng': 1.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [5, 3.8]), ('secondary port differences {"hw": 30, "hh": 4.9, "rng": 4.7, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 30, 'hh': 4.9, 'rng': 4.7, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [1435, 4.3]), ('secondary port differences {"hw": 300, "hh": 2.2, "rng": 0.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 300, 'hh': 2.2, 'rng': 0.9, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [320, 2.0])], [('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.1, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.1, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [590, 3.68]), ('secondary port differences {"hw": 600, "hh": 4.0, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -35, "tn": 20, "hs": -0.5, "hn": -0.1}', {'hw': 600, 'hh': 4.0, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -35, 'tn': 20, 'hs': -0.5, 'hn': -0.1}, [593, 3.7]), ('secondary port differences {"hw": 30, "hh": 4.9, "rng": 4.7, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 30, 'hh': 4.9, 'rng': 4.7, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [1435, 4.3]), ('secondary port differences {"hw": 300, "hh": 2.2, "rng": 0.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 300, 'hh': 2.2, 'rng': 0.9, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [320, 2.0]), ('secondary port differences {"hw": 610, "hh": 3.5, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -12, "tn": 25, "hs": -0.4, "hn": 0.1}', {'hw': 610, 'hh': 3.5, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -12, 'tn': 25, 'hs': -0.4, 'hn': 0.1}, [617, 3.35]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 1.8, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 1.8, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [620, 3.9]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 2.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [611, 3.83])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [610, 3.83] | [611, 3.83] | Failed |
| secondary port differences {"hw": 600, "hh": 4.0, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -35, "tn": 20, "hs": -0.5, "hn": -0.1} | [593, 3.7] | [593, 3.7] | Passed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 1.8, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [620, 3.9] | [620, 3.9] | Passed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.4, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [606, 3.8] | [606, 3.8] | Passed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [593, 3.7] | [593, 3.7] | Passed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.1, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [591, 3.68] | [590, 3.68] | Failed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.6, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [579, 3.6] | [579, 3.6] | Passed |
SHA-256 / 07ebd713160fff533d0e7fef213ee18bb5592571f6569093ff780ff300d4577d
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
k=(x['rng']-x['nr'])/(x['sr']-x['nr'])
k=max(0.0,min(1.0,k))
dt=x['tn']+(x['ts']-x['tn'])*k
dh=x['hn']+(x['hs']-x['hn'])*k
t=math.floor(x['hw']+round(dt)+0.5)
t=t%1440
return [t,round(x['hh']+dh,2)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 2.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [611, 3.83]), ('secondary port differences {"hw": 600, "hh": 4.0, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -35, "tn": 20, "hs": -0.5, "hn": -0.1}', {'hw': 600, 'hh': 4.0, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -35, 'tn': 20, 'hs': -0.5, 'hn': -0.1}, [593, 3.7]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 1.8, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 1.8, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [620, 3.9]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.4, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 2.4, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [606, 3.8]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [593, 3.7]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.1, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.1, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [590, 3.68]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.6, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.6, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [579, 3.6])], [('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.1, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.1, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [590, 3.68]), ('secondary port differences {"hw": 610, "hh": 3.5, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -12, "tn": 25, "hs": -0.4, "hn": 0.1}', {'hw': 610, 'hh': 3.5, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -12, 'tn': 25, 'hs': -0.4, 'hn': 0.1}, [617, 3.35]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [593, 3.7]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.6, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.6, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [579, 3.6]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 4.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 4.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [565, 3.5]), ('secondary port differences {"hw": 10, "hh": 3.8, "rng": 3.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 10, 'hh': 3.8, 'rng': 3.9, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [1422, 3.25]), ('secondary port differences {"hw": 1430, "hh": 4.4, "rng": 2.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 1430, 'hh': 4.4, 'rng': 2.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [5, 4.17])], [('secondary port differences {"hw": 610, "hh": 3.5, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -12, "tn": 25, "hs": -0.4, "hn": 0.1}', {'hw': 610, 'hh': 3.5, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -12, 'tn': 25, 'hs': -0.4, 'hn': 0.1}, [617, 3.35]), ('secondary port differences {"hw": 600, "hh": 4.0, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -35, "tn": 20, "hs": -0.5, "hn": -0.1}', {'hw': 600, 'hh': 4.0, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -35, 'tn': 20, 'hs': -0.5, 'hn': -0.1}, [593, 3.7]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 4.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 4.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [565, 3.5]), ('secondary port differences {"hw": 10, "hh": 3.8, "rng": 3.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 10, 'hh': 3.8, 'rng': 3.9, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [1422, 3.25]), ('secondary port differences {"hw": 1430, "hh": 4.4, "rng": 2.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 1430, 'hh': 4.4, 'rng': 2.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [5, 4.17]), ('secondary port differences {"hw": 20, "hh": 3.0, "rng": 1.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 20, 'hh': 3.0, 'rng': 1.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [40, 2.8]), ('secondary port differences {"hw": 700, "hh": 5.0, "rng": 5.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 700, 'hh': 5.0, 'rng': 5.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [665, 4.4])], [('secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 2.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [611, 3.83]), ('secondary port differences {"hw": 610, "hh": 3.5, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -12, "tn": 25, "hs": -0.4, "hn": 0.1}', {'hw': 610, 'hh': 3.5, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -12, 'tn': 25, 'hs': -0.4, 'hn': 0.1}, [617, 3.35]), ('secondary port differences {"hw": 20, "hh": 3.0, "rng": 1.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 20, 'hh': 3.0, 'rng': 1.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [40, 2.8]), ('secondary port differences {"hw": 700, "hh": 5.0, "rng": 5.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 700, 'hh': 5.0, 'rng': 5.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [665, 4.4]), ('secondary port differences {"hw": 1425, "hh": 4.0, "rng": 1.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 1425, 'hh': 4.0, 'rng': 1.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [5, 3.8]), ('secondary port differences {"hw": 30, "hh": 4.9, "rng": 4.7, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 30, 'hh': 4.9, 'rng': 4.7, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [1435, 4.3]), ('secondary port differences {"hw": 300, "hh": 2.2, "rng": 0.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 300, 'hh': 2.2, 'rng': 0.9, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [320, 2.0])], [('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.1, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.1, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [590, 3.68]), ('secondary port differences {"hw": 600, "hh": 4.0, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -35, "tn": 20, "hs": -0.5, "hn": -0.1}', {'hw': 600, 'hh': 4.0, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -35, 'tn': 20, 'hs': -0.5, 'hn': -0.1}, [593, 3.7]), ('secondary port differences {"hw": 30, "hh": 4.9, "rng": 4.7, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 30, 'hh': 4.9, 'rng': 4.7, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [1435, 4.3]), ('secondary port differences {"hw": 300, "hh": 2.2, "rng": 0.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 300, 'hh': 2.2, 'rng': 0.9, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [320, 2.0]), ('secondary port differences {"hw": 610, "hh": 3.5, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -12, "tn": 25, "hs": -0.4, "hn": 0.1}', {'hw': 610, 'hh': 3.5, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -12, 'tn': 25, 'hs': -0.4, 'hn': 0.1}, [617, 3.35]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 1.8, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 1.8, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [620, 3.9]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 2.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [611, 3.83])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [611, 3.83] | [611, 3.83] | Passed |
| secondary port differences {"hw": 600, "hh": 4.0, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -35, "tn": 20, "hs": -0.5, "hn": -0.1} | [592, 3.7] | [593, 3.7] | Failed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 1.8, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [620, 3.9] | [620, 3.9] | Passed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.4, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [606, 3.8] | [606, 3.8] | Passed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [593, 3.7] | [593, 3.7] | Passed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.1, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [590, 3.68] | [590, 3.68] | Passed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.6, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [579, 3.6] | [579, 3.6] | Passed |
SHA-256 / 47a1b910caedf94d97146596c1e22396aec438820372f973358f539666b29572
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
k=(x['rng']-x['nr'])/(x['sr']-x['nr'])
k=max(0.0,min(1.0,k))
dt=x['tn']+(x['ts']-x['tn'])*k
dh=x['hn']+(x['hs']-x['hn'])*k
t=math.floor(x['hw']+dt+0.5)
t=t%1440
return [t,round(x['hh']+dh,2)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 2.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [611, 3.83]), ('secondary port differences {"hw": 600, "hh": 4.0, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -35, "tn": 20, "hs": -0.5, "hn": -0.1}', {'hw': 600, 'hh': 4.0, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -35, 'tn': 20, 'hs': -0.5, 'hn': -0.1}, [593, 3.7]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 1.8, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 1.8, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [620, 3.9]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.4, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 2.4, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [606, 3.8]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [593, 3.7]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.1, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.1, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [590, 3.68]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.6, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.6, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [579, 3.6])], [('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.1, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.1, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [590, 3.68]), ('secondary port differences {"hw": 610, "hh": 3.5, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -12, "tn": 25, "hs": -0.4, "hn": 0.1}', {'hw': 610, 'hh': 3.5, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -12, 'tn': 25, 'hs': -0.4, 'hn': 0.1}, [617, 3.35]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [593, 3.7]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.6, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.6, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [579, 3.6]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 4.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 4.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [565, 3.5]), ('secondary port differences {"hw": 10, "hh": 3.8, "rng": 3.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 10, 'hh': 3.8, 'rng': 3.9, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [1422, 3.25]), ('secondary port differences {"hw": 1430, "hh": 4.4, "rng": 2.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 1430, 'hh': 4.4, 'rng': 2.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [5, 4.17])], [('secondary port differences {"hw": 610, "hh": 3.5, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -12, "tn": 25, "hs": -0.4, "hn": 0.1}', {'hw': 610, 'hh': 3.5, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -12, 'tn': 25, 'hs': -0.4, 'hn': 0.1}, [617, 3.35]), ('secondary port differences {"hw": 600, "hh": 4.0, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -35, "tn": 20, "hs": -0.5, "hn": -0.1}', {'hw': 600, 'hh': 4.0, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -35, 'tn': 20, 'hs': -0.5, 'hn': -0.1}, [593, 3.7]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 4.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 4.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [565, 3.5]), ('secondary port differences {"hw": 10, "hh": 3.8, "rng": 3.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 10, 'hh': 3.8, 'rng': 3.9, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [1422, 3.25]), ('secondary port differences {"hw": 1430, "hh": 4.4, "rng": 2.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 1430, 'hh': 4.4, 'rng': 2.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [5, 4.17]), ('secondary port differences {"hw": 20, "hh": 3.0, "rng": 1.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 20, 'hh': 3.0, 'rng': 1.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [40, 2.8]), ('secondary port differences {"hw": 700, "hh": 5.0, "rng": 5.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 700, 'hh': 5.0, 'rng': 5.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [665, 4.4])], [('secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 2.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [611, 3.83]), ('secondary port differences {"hw": 610, "hh": 3.5, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -12, "tn": 25, "hs": -0.4, "hn": 0.1}', {'hw': 610, 'hh': 3.5, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -12, 'tn': 25, 'hs': -0.4, 'hn': 0.1}, [617, 3.35]), ('secondary port differences {"hw": 20, "hh": 3.0, "rng": 1.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 20, 'hh': 3.0, 'rng': 1.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [40, 2.8]), ('secondary port differences {"hw": 700, "hh": 5.0, "rng": 5.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 700, 'hh': 5.0, 'rng': 5.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [665, 4.4]), ('secondary port differences {"hw": 1425, "hh": 4.0, "rng": 1.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 1425, 'hh': 4.0, 'rng': 1.0, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [5, 3.8]), ('secondary port differences {"hw": 30, "hh": 4.9, "rng": 4.7, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 30, 'hh': 4.9, 'rng': 4.7, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [1435, 4.3]), ('secondary port differences {"hw": 300, "hh": 2.2, "rng": 0.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 300, 'hh': 2.2, 'rng': 0.9, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [320, 2.0])], [('secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.1, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 3.1, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [590, 3.68]), ('secondary port differences {"hw": 600, "hh": 4.0, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -35, "tn": 20, "hs": -0.5, "hn": -0.1}', {'hw': 600, 'hh': 4.0, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -35, 'tn': 20, 'hs': -0.5, 'hn': -0.1}, [593, 3.7]), ('secondary port differences {"hw": 30, "hh": 4.9, "rng": 4.7, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 30, 'hh': 4.9, 'rng': 4.7, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [1435, 4.3]), ('secondary port differences {"hw": 300, "hh": 2.2, "rng": 0.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 300, 'hh': 2.2, 'rng': 0.9, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [320, 2.0]), ('secondary port differences {"hw": 610, "hh": 3.5, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -12, "tn": 25, "hs": -0.4, "hn": 0.1}', {'hw': 610, 'hh': 3.5, 'rng': 3.0, 'sr': 4.0, 'nr': 2.0, 'ts': -12, 'tn': 25, 'hs': -0.4, 'hn': 0.1}, [617, 3.35]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 1.8, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 1.8, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [620, 3.9]), ('secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2}', {'hw': 600, 'hh': 4.1, 'rng': 2.2, 'sr': 4.2, 'nr': 1.8, 'ts': -35, 'tn': 20, 'hs': -0.6, 'hn': -0.2}, [611, 3.83])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.2, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [611, 3.83] | [611, 3.83] | Passed |
| secondary port differences {"hw": 600, "hh": 4.0, "rng": 3.0, "sr": 4.0, "nr": 2.0, "ts": -35, "tn": 20, "hs": -0.5, "hn": -0.1} | [593, 3.7] | [593, 3.7] | Passed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 1.8, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [620, 3.9] | [620, 3.9] | Passed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 2.4, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [606, 3.8] | [606, 3.8] | Passed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.0, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [593, 3.7] | [593, 3.7] | Passed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.1, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [590, 3.68] | [590, 3.68] | Passed |
| secondary port differences {"hw": 600, "hh": 4.1, "rng": 3.6, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [579, 3.6] | [579, 3.6] | Passed |
SHA-256 / e0c85d41ca141b723883eb8b3922a0aedc0f0ffad78c4e3c1d4c25a72cab843b
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:06.767044+00:00.
Case digest / 9fe765db0c36e1331e7d86a5776fe7380384fdc6843fe492d715c3e7e8177d29