FA-69231 / Tide and marine navigation tables / Open access
Light geographic and visible range: Horizon constant for feet is used with metres · case 01
Every light is sighted too early relative to a metric table.
ROOT CAUSE
The 1.17 feet-based constant is applied to heights in metres.
VERIFIED REPAIR
Use 2.08 for heights in metres.
Unsuccessful approach: Converting metres to feet but keeping 1.17 is close yet not the stipulated constant.
Case contract
Input [he, hl, nominal, mhws, tide]: observer height of eye (m), light elevation charted above MHWS (m), nominal range (nm), MHWS and current tide above datum. Effective light height = hl+(mhws-tide). Geographic range = 2.08*(sqrt(he)+sqrt(effective)). Visible range = min(geographic, nominal); the limit is "geographic" when geographic<nominal else "luminous". Return [geo rounded 1, visible rounded 1, limit].
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):
he,hl,nom,mhws,tide=x
hle=hl+(mhws-tide)
geo=1.17*(math.sqrt(he)+math.sqrt(hle))
vis=min(geo,nom)
lim='geographic' if geo<nom else 'luminous'
return [round(geo,1),round(vis,1),lim]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('light geographic and visible range [3, 25, 18, 4.5, 1.0]', [3, 25, 18, 4.5, 1.0], [14.7, 14.7, 'geographic']), ('light geographic and visible range [3, 25, 10, 4.5, 1.0]', [3, 25, 10, 4.5, 1.0], [14.7, 10, 'luminous']), ('light geographic and visible range [9, 64, 23, 5.0, 5.0]', [9, 64, 23, 5.0, 5.0], [22.9, 22.9, 'geographic']), ('light geographic and visible range [1.5, 12, 20, 4.0, 0.5]', [1.5, 12, 20, 4.0, 0.5], [10.7, 10.7, 'geographic']), ('light geographic and visible range [16, 36, 20.8, 3.0, 3.0]', [16, 36, 20.8, 3.0, 3.0], [20.8, 20.8, 'luminous']), ('light geographic and visible range [4, 9, 10.4, 2.0, 2.0]', [4, 9, 10.4, 2.0, 2.0], [10.4, 10.4, 'luminous']), ('light geographic and visible range [2, 40, 15, 4.0, 6.0]', [2, 40, 15, 4.0, 6.0], [15.8, 15, 'luminous'])], [('light geographic and visible range [3, 25, 10, 4.5, 1.0]', [3, 25, 10, 4.5, 1.0], [14.7, 10, 'luminous']), ('light geographic and visible range [1.5, 12, 20, 4.0, 0.5]', [1.5, 12, 20, 4.0, 0.5], [10.7, 10.7, 'geographic']), ('light geographic and visible range [16, 36, 20.8, 3.0, 3.0]', [16, 36, 20.8, 3.0, 3.0], [20.8, 20.8, 'luminous']), ('light geographic and visible range [4, 9, 10.4, 2.0, 2.0]', [4, 9, 10.4, 2.0, 2.0], [10.4, 10.4, 'luminous']), ('light geographic and visible range [2, 40, 15, 4.0, 6.0]', [2, 40, 15, 4.0, 6.0], [15.8, 15, 'luminous']), ('light geographic and visible range [12, 80, 30, 5.0, 2.0]', [12, 80, 30, 5.0, 2.0], [26.2, 26.2, 'geographic']), ('light geographic and visible range [5, 5, 6, 3.0, 1.0]', [5, 5, 6, 3.0, 1.0], [10.2, 6, 'luminous'])], [('light geographic and visible range [9, 64, 23, 5.0, 5.0]', [9, 64, 23, 5.0, 5.0], [22.9, 22.9, 'geographic']), ('light geographic and visible range [2, 40, 15, 4.0, 6.0]', [2, 40, 15, 4.0, 6.0], [15.8, 15, 'luminous']), ('light geographic and visible range [12, 80, 30, 5.0, 2.0]', [12, 80, 30, 5.0, 2.0], [26.2, 26.2, 'geographic']), ('light geographic and visible range [5, 5, 6, 3.0, 1.0]', [5, 5, 6, 3.0, 1.0], [10.2, 6, 'luminous']), ('light geographic and visible range [25, 100, 28, 4.0, 4.0]', [25, 100, 28, 4.0, 4.0], [31.2, 28, 'luminous']), ('light geographic and visible range [4, 16, 12.48, 3.0, 3.0]', [4, 16, 12.48, 3.0, 3.0], [12.5, 12.5, 'luminous']), ('light geographic and visible range [4, 9.174, 10.48, 2.0, 2.0]', [4, 9.174, 10.48, 2.0, 2.0], [10.5, 10.5, 'geographic'])], [('light geographic and visible range [1.5, 12, 20, 4.0, 0.5]', [1.5, 12, 20, 4.0, 0.5], [10.7, 10.7, 'geographic']), ('light geographic and visible range [25, 100, 28, 4.0, 4.0]', [25, 100, 28, 4.0, 4.0], [31.2, 28, 'luminous']), ('light geographic and visible range [4, 16, 12.48, 3.0, 3.0]', [4, 16, 12.48, 3.0, 3.0], [12.5, 12.5, 'luminous']), ('light geographic and visible range [4, 9.174, 10.48, 2.0, 2.0]', [4, 9.174, 10.48, 2.0, 2.0], [10.5, 10.5, 'geographic']), ('light geographic and visible range [3, 25, 18, 4.5, 1.0]', [3, 25, 18, 4.5, 1.0], [14.7, 14.7, 'geographic']), ('light geographic and visible range [3, 25, 10, 4.5, 1.0]', [3, 25, 10, 4.5, 1.0], [14.7, 10, 'luminous']), ('light geographic and visible range [9, 64, 23, 5.0, 5.0]', [9, 64, 23, 5.0, 5.0], [22.9, 22.9, 'geographic'])], [('light geographic and visible range [16, 36, 20.8, 3.0, 3.0]', [16, 36, 20.8, 3.0, 3.0], [20.8, 20.8, 'luminous']), ('light geographic and visible range [3, 25, 18, 4.5, 1.0]', [3, 25, 18, 4.5, 1.0], [14.7, 14.7, 'geographic']), ('light geographic and visible range [3, 25, 10, 4.5, 1.0]', [3, 25, 10, 4.5, 1.0], [14.7, 10, 'luminous']), ('light geographic and visible range [9, 64, 23, 5.0, 5.0]', [9, 64, 23, 5.0, 5.0], [22.9, 22.9, 'geographic']), ('light geographic and visible range [1.5, 12, 20, 4.0, 0.5]', [1.5, 12, 20, 4.0, 0.5], [10.7, 10.7, 'geographic']), ('light geographic and visible range [4, 9, 10.4, 2.0, 2.0]', [4, 9, 10.4, 2.0, 2.0], [10.4, 10.4, 'luminous']), ('light geographic and visible range [2, 40, 15, 4.0, 6.0]', [2, 40, 15, 4.0, 6.0], [15.8, 15, 'luminous'])]]
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 |
|---|---|---|---|
| light geographic and visible range [3, 25, 18, 4.5, 1.0] | [8.3, 8.3, 'geographic'] | [14.7, 14.7, 'geographic'] | Failed |
| light geographic and visible range [3, 25, 10, 4.5, 1.0] | [8.3, 8.3, 'geographic'] | [14.7, 10, 'luminous'] | Failed |
| light geographic and visible range [9, 64, 23, 5.0, 5.0] | [12.9, 12.9, 'geographic'] | [22.9, 22.9, 'geographic'] | Failed |
| light geographic and visible range [1.5, 12, 20, 4.0, 0.5] | [6.0, 6.0, 'geographic'] | [10.7, 10.7, 'geographic'] | Failed |
| light geographic and visible range [16, 36, 20.8, 3.0, 3.0] | [11.7, 11.7, 'geographic'] | [20.8, 20.8, 'luminous'] | Failed |
| light geographic and visible range [4, 9, 10.4, 2.0, 2.0] | [5.8, 5.8, 'geographic'] | [10.4, 10.4, 'luminous'] | Failed |
| light geographic and visible range [2, 40, 15, 4.0, 6.0] | [8.9, 8.9, 'geographic'] | [15.8, 15, 'luminous'] | Failed |
SHA-256 / 28561e666fc00fa60ac758b265f130b50286a560f1a2457740ff4e773553514d
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
he,hl,nom,mhws,tide=x
hle=hl+(mhws-tide)
geo=1.17*(math.sqrt(he*3.28084)+math.sqrt(hle*3.28084))
vis=min(geo,nom)
lim='geographic' if geo<nom else 'luminous'
return [round(geo,1),round(vis,1),lim]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('light geographic and visible range [3, 25, 18, 4.5, 1.0]', [3, 25, 18, 4.5, 1.0], [14.7, 14.7, 'geographic']), ('light geographic and visible range [3, 25, 10, 4.5, 1.0]', [3, 25, 10, 4.5, 1.0], [14.7, 10, 'luminous']), ('light geographic and visible range [9, 64, 23, 5.0, 5.0]', [9, 64, 23, 5.0, 5.0], [22.9, 22.9, 'geographic']), ('light geographic and visible range [1.5, 12, 20, 4.0, 0.5]', [1.5, 12, 20, 4.0, 0.5], [10.7, 10.7, 'geographic']), ('light geographic and visible range [16, 36, 20.8, 3.0, 3.0]', [16, 36, 20.8, 3.0, 3.0], [20.8, 20.8, 'luminous']), ('light geographic and visible range [4, 9, 10.4, 2.0, 2.0]', [4, 9, 10.4, 2.0, 2.0], [10.4, 10.4, 'luminous']), ('light geographic and visible range [2, 40, 15, 4.0, 6.0]', [2, 40, 15, 4.0, 6.0], [15.8, 15, 'luminous'])], [('light geographic and visible range [3, 25, 10, 4.5, 1.0]', [3, 25, 10, 4.5, 1.0], [14.7, 10, 'luminous']), ('light geographic and visible range [1.5, 12, 20, 4.0, 0.5]', [1.5, 12, 20, 4.0, 0.5], [10.7, 10.7, 'geographic']), ('light geographic and visible range [16, 36, 20.8, 3.0, 3.0]', [16, 36, 20.8, 3.0, 3.0], [20.8, 20.8, 'luminous']), ('light geographic and visible range [4, 9, 10.4, 2.0, 2.0]', [4, 9, 10.4, 2.0, 2.0], [10.4, 10.4, 'luminous']), ('light geographic and visible range [2, 40, 15, 4.0, 6.0]', [2, 40, 15, 4.0, 6.0], [15.8, 15, 'luminous']), ('light geographic and visible range [12, 80, 30, 5.0, 2.0]', [12, 80, 30, 5.0, 2.0], [26.2, 26.2, 'geographic']), ('light geographic and visible range [5, 5, 6, 3.0, 1.0]', [5, 5, 6, 3.0, 1.0], [10.2, 6, 'luminous'])], [('light geographic and visible range [9, 64, 23, 5.0, 5.0]', [9, 64, 23, 5.0, 5.0], [22.9, 22.9, 'geographic']), ('light geographic and visible range [2, 40, 15, 4.0, 6.0]', [2, 40, 15, 4.0, 6.0], [15.8, 15, 'luminous']), ('light geographic and visible range [12, 80, 30, 5.0, 2.0]', [12, 80, 30, 5.0, 2.0], [26.2, 26.2, 'geographic']), ('light geographic and visible range [5, 5, 6, 3.0, 1.0]', [5, 5, 6, 3.0, 1.0], [10.2, 6, 'luminous']), ('light geographic and visible range [25, 100, 28, 4.0, 4.0]', [25, 100, 28, 4.0, 4.0], [31.2, 28, 'luminous']), ('light geographic and visible range [4, 16, 12.48, 3.0, 3.0]', [4, 16, 12.48, 3.0, 3.0], [12.5, 12.5, 'luminous']), ('light geographic and visible range [4, 9.174, 10.48, 2.0, 2.0]', [4, 9.174, 10.48, 2.0, 2.0], [10.5, 10.5, 'geographic'])], [('light geographic and visible range [1.5, 12, 20, 4.0, 0.5]', [1.5, 12, 20, 4.0, 0.5], [10.7, 10.7, 'geographic']), ('light geographic and visible range [25, 100, 28, 4.0, 4.0]', [25, 100, 28, 4.0, 4.0], [31.2, 28, 'luminous']), ('light geographic and visible range [4, 16, 12.48, 3.0, 3.0]', [4, 16, 12.48, 3.0, 3.0], [12.5, 12.5, 'luminous']), ('light geographic and visible range [4, 9.174, 10.48, 2.0, 2.0]', [4, 9.174, 10.48, 2.0, 2.0], [10.5, 10.5, 'geographic']), ('light geographic and visible range [3, 25, 18, 4.5, 1.0]', [3, 25, 18, 4.5, 1.0], [14.7, 14.7, 'geographic']), ('light geographic and visible range [3, 25, 10, 4.5, 1.0]', [3, 25, 10, 4.5, 1.0], [14.7, 10, 'luminous']), ('light geographic and visible range [9, 64, 23, 5.0, 5.0]', [9, 64, 23, 5.0, 5.0], [22.9, 22.9, 'geographic'])], [('light geographic and visible range [16, 36, 20.8, 3.0, 3.0]', [16, 36, 20.8, 3.0, 3.0], [20.8, 20.8, 'luminous']), ('light geographic and visible range [3, 25, 18, 4.5, 1.0]', [3, 25, 18, 4.5, 1.0], [14.7, 14.7, 'geographic']), ('light geographic and visible range [3, 25, 10, 4.5, 1.0]', [3, 25, 10, 4.5, 1.0], [14.7, 10, 'luminous']), ('light geographic and visible range [9, 64, 23, 5.0, 5.0]', [9, 64, 23, 5.0, 5.0], [22.9, 22.9, 'geographic']), ('light geographic and visible range [1.5, 12, 20, 4.0, 0.5]', [1.5, 12, 20, 4.0, 0.5], [10.7, 10.7, 'geographic']), ('light geographic and visible range [4, 9, 10.4, 2.0, 2.0]', [4, 9, 10.4, 2.0, 2.0], [10.4, 10.4, 'luminous']), ('light geographic and visible range [2, 40, 15, 4.0, 6.0]', [2, 40, 15, 4.0, 6.0], [15.8, 15, 'luminous'])]]
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 |
|---|---|---|---|
| light geographic and visible range [3, 25, 18, 4.5, 1.0] | [15.0, 15.0, 'geographic'] | [14.7, 14.7, 'geographic'] | Failed |
| light geographic and visible range [3, 25, 10, 4.5, 1.0] | [15.0, 10, 'luminous'] | [14.7, 10, 'luminous'] | Failed |
| light geographic and visible range [9, 64, 23, 5.0, 5.0] | [23.3, 23, 'luminous'] | [22.9, 22.9, 'geographic'] | Failed |
| light geographic and visible range [1.5, 12, 20, 4.0, 0.5] | [10.9, 10.9, 'geographic'] | [10.7, 10.7, 'geographic'] | Failed |
| light geographic and visible range [16, 36, 20.8, 3.0, 3.0] | [21.2, 20.8, 'luminous'] | [20.8, 20.8, 'luminous'] | Failed |
| light geographic and visible range [4, 9, 10.4, 2.0, 2.0] | [10.6, 10.4, 'luminous'] | [10.4, 10.4, 'luminous'] | Failed |
| light geographic and visible range [2, 40, 15, 4.0, 6.0] | [16.1, 15, 'luminous'] | [15.8, 15, 'luminous'] | Failed |
SHA-256 / dc2c3d62e2cb981bc838390e129e0f0a5ec8c623c771dbd0ac3b9ceb15417b2c
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
he,hl,nom,mhws,tide=x
hle=hl+(mhws-tide)
geo=2.08*(math.sqrt(he)+math.sqrt(hle))
vis=min(geo,nom)
lim='geographic' if geo<nom else 'luminous'
return [round(geo,1),round(vis,1),lim]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('light geographic and visible range [3, 25, 18, 4.5, 1.0]', [3, 25, 18, 4.5, 1.0], [14.7, 14.7, 'geographic']), ('light geographic and visible range [3, 25, 10, 4.5, 1.0]', [3, 25, 10, 4.5, 1.0], [14.7, 10, 'luminous']), ('light geographic and visible range [9, 64, 23, 5.0, 5.0]', [9, 64, 23, 5.0, 5.0], [22.9, 22.9, 'geographic']), ('light geographic and visible range [1.5, 12, 20, 4.0, 0.5]', [1.5, 12, 20, 4.0, 0.5], [10.7, 10.7, 'geographic']), ('light geographic and visible range [16, 36, 20.8, 3.0, 3.0]', [16, 36, 20.8, 3.0, 3.0], [20.8, 20.8, 'luminous']), ('light geographic and visible range [4, 9, 10.4, 2.0, 2.0]', [4, 9, 10.4, 2.0, 2.0], [10.4, 10.4, 'luminous']), ('light geographic and visible range [2, 40, 15, 4.0, 6.0]', [2, 40, 15, 4.0, 6.0], [15.8, 15, 'luminous'])], [('light geographic and visible range [3, 25, 10, 4.5, 1.0]', [3, 25, 10, 4.5, 1.0], [14.7, 10, 'luminous']), ('light geographic and visible range [1.5, 12, 20, 4.0, 0.5]', [1.5, 12, 20, 4.0, 0.5], [10.7, 10.7, 'geographic']), ('light geographic and visible range [16, 36, 20.8, 3.0, 3.0]', [16, 36, 20.8, 3.0, 3.0], [20.8, 20.8, 'luminous']), ('light geographic and visible range [4, 9, 10.4, 2.0, 2.0]', [4, 9, 10.4, 2.0, 2.0], [10.4, 10.4, 'luminous']), ('light geographic and visible range [2, 40, 15, 4.0, 6.0]', [2, 40, 15, 4.0, 6.0], [15.8, 15, 'luminous']), ('light geographic and visible range [12, 80, 30, 5.0, 2.0]', [12, 80, 30, 5.0, 2.0], [26.2, 26.2, 'geographic']), ('light geographic and visible range [5, 5, 6, 3.0, 1.0]', [5, 5, 6, 3.0, 1.0], [10.2, 6, 'luminous'])], [('light geographic and visible range [9, 64, 23, 5.0, 5.0]', [9, 64, 23, 5.0, 5.0], [22.9, 22.9, 'geographic']), ('light geographic and visible range [2, 40, 15, 4.0, 6.0]', [2, 40, 15, 4.0, 6.0], [15.8, 15, 'luminous']), ('light geographic and visible range [12, 80, 30, 5.0, 2.0]', [12, 80, 30, 5.0, 2.0], [26.2, 26.2, 'geographic']), ('light geographic and visible range [5, 5, 6, 3.0, 1.0]', [5, 5, 6, 3.0, 1.0], [10.2, 6, 'luminous']), ('light geographic and visible range [25, 100, 28, 4.0, 4.0]', [25, 100, 28, 4.0, 4.0], [31.2, 28, 'luminous']), ('light geographic and visible range [4, 16, 12.48, 3.0, 3.0]', [4, 16, 12.48, 3.0, 3.0], [12.5, 12.5, 'luminous']), ('light geographic and visible range [4, 9.174, 10.48, 2.0, 2.0]', [4, 9.174, 10.48, 2.0, 2.0], [10.5, 10.5, 'geographic'])], [('light geographic and visible range [1.5, 12, 20, 4.0, 0.5]', [1.5, 12, 20, 4.0, 0.5], [10.7, 10.7, 'geographic']), ('light geographic and visible range [25, 100, 28, 4.0, 4.0]', [25, 100, 28, 4.0, 4.0], [31.2, 28, 'luminous']), ('light geographic and visible range [4, 16, 12.48, 3.0, 3.0]', [4, 16, 12.48, 3.0, 3.0], [12.5, 12.5, 'luminous']), ('light geographic and visible range [4, 9.174, 10.48, 2.0, 2.0]', [4, 9.174, 10.48, 2.0, 2.0], [10.5, 10.5, 'geographic']), ('light geographic and visible range [3, 25, 18, 4.5, 1.0]', [3, 25, 18, 4.5, 1.0], [14.7, 14.7, 'geographic']), ('light geographic and visible range [3, 25, 10, 4.5, 1.0]', [3, 25, 10, 4.5, 1.0], [14.7, 10, 'luminous']), ('light geographic and visible range [9, 64, 23, 5.0, 5.0]', [9, 64, 23, 5.0, 5.0], [22.9, 22.9, 'geographic'])], [('light geographic and visible range [16, 36, 20.8, 3.0, 3.0]', [16, 36, 20.8, 3.0, 3.0], [20.8, 20.8, 'luminous']), ('light geographic and visible range [3, 25, 18, 4.5, 1.0]', [3, 25, 18, 4.5, 1.0], [14.7, 14.7, 'geographic']), ('light geographic and visible range [3, 25, 10, 4.5, 1.0]', [3, 25, 10, 4.5, 1.0], [14.7, 10, 'luminous']), ('light geographic and visible range [9, 64, 23, 5.0, 5.0]', [9, 64, 23, 5.0, 5.0], [22.9, 22.9, 'geographic']), ('light geographic and visible range [1.5, 12, 20, 4.0, 0.5]', [1.5, 12, 20, 4.0, 0.5], [10.7, 10.7, 'geographic']), ('light geographic and visible range [4, 9, 10.4, 2.0, 2.0]', [4, 9, 10.4, 2.0, 2.0], [10.4, 10.4, 'luminous']), ('light geographic and visible range [2, 40, 15, 4.0, 6.0]', [2, 40, 15, 4.0, 6.0], [15.8, 15, 'luminous'])]]
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 |
|---|---|---|---|
| light geographic and visible range [3, 25, 18, 4.5, 1.0] | [14.7, 14.7, 'geographic'] | [14.7, 14.7, 'geographic'] | Passed |
| light geographic and visible range [3, 25, 10, 4.5, 1.0] | [14.7, 10, 'luminous'] | [14.7, 10, 'luminous'] | Passed |
| light geographic and visible range [9, 64, 23, 5.0, 5.0] | [22.9, 22.9, 'geographic'] | [22.9, 22.9, 'geographic'] | Passed |
| light geographic and visible range [1.5, 12, 20, 4.0, 0.5] | [10.7, 10.7, 'geographic'] | [10.7, 10.7, 'geographic'] | Passed |
| light geographic and visible range [16, 36, 20.8, 3.0, 3.0] | [20.8, 20.8, 'luminous'] | [20.8, 20.8, 'luminous'] | Passed |
| light geographic and visible range [4, 9, 10.4, 2.0, 2.0] | [10.4, 10.4, 'luminous'] | [10.4, 10.4, 'luminous'] | Passed |
| light geographic and visible range [2, 40, 15, 4.0, 6.0] | [15.8, 15, 'luminous'] | [15.8, 15, 'luminous'] | Passed |
SHA-256 / 55307512ed7565fe8a09d96e640936f85ac223d9537b9c22e3ce8095233ea08b
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:09.512509+00:00.
Case digest / 689a6278b7ec4abb3d207fe2d641b620567b73b65b4c30879672302dba09927d