FA-68926 / Tide and marine navigation tables / Open access
Secondary port differences: Negative corrected times are not wrapped into the day · case 01
A correction just after midnight yields a negative time of day.
ROOT CAUSE
Only times past 1440 are reduced; times before midnight stay negative.
VERIFIED REPAIR
Reduce modulo 1440 in both directions.
Unsuccessful approach: Taking abs() before the modulo reflects the time instead of wrapping it.
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']+dt+0.5)
t=t-1440 if t>=1440 else t
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": 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": 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]), ('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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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.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": 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": 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": 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.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": 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": 10, "hh": 3.8, "rng": 3.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [-18, 3.25] | [1422, 3.25] | 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.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.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 / ba09073cbbf149e9e3385bf5c5e2b41a1d713e86544c2408a421e66c0670e484
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']+dt+0.5)
t=abs(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": 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": 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]), ('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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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.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": 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": 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": 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.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": 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": 10, "hh": 3.8, "rng": 3.9, "sr": 4.2, "nr": 1.8, "ts": -35, "tn": 20, "hs": -0.6, "hn": -0.2} | [18, 3.25] | [1422, 3.25] | 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.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.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 / 9c5cfd15f56122b67b4ff56fd9d1faced3c352f23f86e8b96d82bfd4c9d6f079
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": 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": 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]), ('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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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.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": 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": 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": 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.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": 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": 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] | [1422, 3.25] | 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.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.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 / a047d212e333af9ffae8e84154e72e71fa1e4e81ccb170dfd97becb1b0f6ee48
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.769972+00:00.
Case digest / 3e6ac966ee9038a7f4eabae9d296b3475483a7fd1c0d0d4f2783346057b9c1cc