{"abstract":"Coefficients double and nearly every tide is clamped to 120.","category":"Tide and marine navigation tables","checks":7,"contract":"Input [hw, lw_before, lw_after, z0, U]: range = hw - mean of the two flanking low waters; coefficient = floor(100*(range/2)/U + 0.5) clamped to [20,120]. Class: exceptional if coef>=110, else spring if coef>=70, neap if coef<=45, else mean. Return [coef, class]. z0 (mean level) is informational only.","contract_signature":"x","evaluation_group":"w2-tide_and_marine_navigation_tables-coefficient","failed_approach":"Using the high water height above mean level ignores asymmetric low waters.","family":"w2-tide_and_marine_navigation_tables-coefficient-half-range","id":"FA-69141","implementations":{"attempt":{"sha256":"df00196007206686ad6bf52a6033bfcc5abd320ce0a0ba0d908eb8a0a0fb07f4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    hw,lb,la,z0,U=x\n    rng=hw-(lb+la)/2\n    c=math.floor(100*(hw-z0)/U+0.5)\n    c=max(20,min(120,c))\n    if c>=110: cls='exceptional'\n    elif c>=70: cls='spring'\n    elif c<=45: cls='neap'\n    else: cls='mean'\n    return [c,cls]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('tidal coefficient classification [6.5, 0.9, 1.1, 3.6, 3.05]', [6.5, 0.9, 1.1, 3.6, 3.05], [90, 'spring']), ('tidal coefficient classification [5.2, 2.0, 2.1, 3.6, 3.05]', [5.2, 2.0, 2.1, 3.6, 3.05], [52, 'mean']), ('tidal coefficient classification [4.6, 2.6, 2.7, 3.6, 3.05]', [4.6, 2.6, 2.7, 3.6, 3.05], [32, 'neap']), ('tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]', [7.4, 0.1, 0.3, 3.6, 3.05], [118, 'exceptional']), ('tidal coefficient classification [7.9, 0.0, 0.0, 3.6, 3.05]', [7.9, 0.0, 0.0, 3.6, 3.05], [120, 'exceptional']), ('tidal coefficient classification [3.9, 3.0, 3.1, 3.6, 3.05]', [3.9, 3.0, 3.1, 3.6, 3.05], [20, 'neap']), ('tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]', [6.0, 1.73, 1.73, 3.6, 3.05], [70, 'spring'])], [('tidal coefficient classification [5.2, 2.0, 2.1, 3.6, 3.05]', [5.2, 2.0, 2.1, 3.6, 3.05], [52, 'mean']), ('tidal coefficient classification [4.6, 2.6, 2.7, 3.6, 3.05]', [4.6, 2.6, 2.7, 3.6, 3.05], [32, 'neap']), ('tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]', [7.4, 0.1, 0.3, 3.6, 3.05], [118, 'exceptional']), ('tidal coefficient classification [7.9, 0.0, 0.0, 3.6, 3.05]', [7.9, 0.0, 0.0, 3.6, 3.05], [120, 'exceptional']), ('tidal coefficient classification [3.9, 3.0, 3.1, 3.6, 3.05]', [3.9, 3.0, 3.1, 3.6, 3.05], [20, 'neap']), ('tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]', [6.0, 1.73, 1.73, 3.6, 3.05], [70, 'spring']), ('tidal coefficient classification [5.0, 2.255, 2.255, 3.6, 3.05]', [5.0, 2.255, 2.255, 3.6, 3.05], [45, 'neap'])], [('tidal coefficient classification [4.6, 2.6, 2.7, 3.6, 3.05]', [4.6, 2.6, 2.7, 3.6, 3.05], [32, 'neap']), ('tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]', [7.4, 0.1, 0.3, 3.6, 3.05], [118, 'exceptional']), ('tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]', [6.0, 1.73, 1.73, 3.6, 3.05], [70, 'spring']), ('tidal coefficient classification [5.0, 2.255, 2.255, 3.6, 3.05]', [5.0, 2.255, 2.255, 3.6, 3.05], [45, 'neap']), ('tidal coefficient classification [5.0, 2.25, 2.25, 3.6, 3.05]', [5.0, 2.25, 2.25, 3.6, 3.05], [45, 'neap']), ('tidal coefficient classification [6.1, 1.3, 0.7, 3.6, 3.05]', [6.1, 1.3, 0.7, 3.6, 3.05], [84, 'spring']), ('tidal coefficient classification [6.3, 0.8, 1.6, 3.8, 3.05]', [6.3, 0.8, 1.6, 3.8, 3.05], [84, 'spring'])], [('tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]', [7.4, 0.1, 0.3, 3.6, 3.05], [118, 'exceptional']), ('tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]', [6.0, 1.73, 1.73, 3.6, 3.05], [70, 'spring']), ('tidal coefficient classification [6.1, 1.3, 0.7, 3.6, 3.05]', [6.1, 1.3, 0.7, 3.6, 3.05], [84, 'spring']), ('tidal coefficient classification [6.3, 0.8, 1.6, 3.8, 3.05]', [6.3, 0.8, 1.6, 3.8, 3.05], [84, 'spring']), ('tidal coefficient classification [4.0, 1.0, 1.0, 2.4, 2.0]', [4.0, 1.0, 1.0, 2.4, 2.0], [75, 'spring']), ('tidal coefficient classification [4.4, 1.6, 1.6, 2.9, 2.0]', [4.4, 1.6, 1.6, 2.9, 2.0], [70, 'spring']), ('tidal coefficient classification [3.8, 0.0, 2.0, 2.1, 2.0]', [3.8, 0.0, 2.0, 2.1, 2.0], [70, 'spring'])], [('tidal coefficient classification [3.9, 3.0, 3.1, 3.6, 3.05]', [3.9, 3.0, 3.1, 3.6, 3.05], [20, 'neap']), ('tidal coefficient classification [5.0, 2.255, 2.255, 3.6, 3.05]', [5.0, 2.255, 2.255, 3.6, 3.05], [45, 'neap']), ('tidal coefficient classification [4.4, 1.6, 1.6, 2.9, 2.0]', [4.4, 1.6, 1.6, 2.9, 2.0], [70, 'spring']), ('tidal coefficient classification [3.8, 0.0, 2.0, 2.1, 2.0]', [3.8, 0.0, 2.0, 2.1, 2.0], [70, 'spring']), ('tidal coefficient classification [5.0, 1.46, 1.46, 3.2, 2.0]', [5.0, 1.46, 1.46, 3.2, 2.0], [89, 'spring']), ('tidal coefficient classification [5.0, 1.22, 1.22, 3.2, 2.0]', [5.0, 1.22, 1.22, 3.2, 2.0], [95, 'spring']), ('tidal coefficient classification [5.4, 1.0, 1.0, 3.2, 2.0]', [5.4, 1.0, 1.0, 3.2, 2.0], [110, 'exceptional'])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"ae9c803d6811b22f2d6c2a1aaa7bd37aff353e7fdf15aa1272cd481c222d1dc8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    hw,lb,la,z0,U=x\n    rng=hw-(lb+la)/2\n    c=math.floor(100*rng/U+0.5)\n    c=max(20,min(120,c))\n    if c>=110: cls='exceptional'\n    elif c>=70: cls='spring'\n    elif c<=45: cls='neap'\n    else: cls='mean'\n    return [c,cls]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('tidal coefficient classification [6.5, 0.9, 1.1, 3.6, 3.05]', [6.5, 0.9, 1.1, 3.6, 3.05], [90, 'spring']), ('tidal coefficient classification [5.2, 2.0, 2.1, 3.6, 3.05]', [5.2, 2.0, 2.1, 3.6, 3.05], [52, 'mean']), ('tidal coefficient classification [4.6, 2.6, 2.7, 3.6, 3.05]', [4.6, 2.6, 2.7, 3.6, 3.05], [32, 'neap']), ('tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]', [7.4, 0.1, 0.3, 3.6, 3.05], [118, 'exceptional']), ('tidal coefficient classification [7.9, 0.0, 0.0, 3.6, 3.05]', [7.9, 0.0, 0.0, 3.6, 3.05], [120, 'exceptional']), ('tidal coefficient classification [3.9, 3.0, 3.1, 3.6, 3.05]', [3.9, 3.0, 3.1, 3.6, 3.05], [20, 'neap']), ('tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]', [6.0, 1.73, 1.73, 3.6, 3.05], [70, 'spring'])], [('tidal coefficient classification [5.2, 2.0, 2.1, 3.6, 3.05]', [5.2, 2.0, 2.1, 3.6, 3.05], [52, 'mean']), ('tidal coefficient classification [4.6, 2.6, 2.7, 3.6, 3.05]', [4.6, 2.6, 2.7, 3.6, 3.05], [32, 'neap']), ('tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]', [7.4, 0.1, 0.3, 3.6, 3.05], [118, 'exceptional']), ('tidal coefficient classification [7.9, 0.0, 0.0, 3.6, 3.05]', [7.9, 0.0, 0.0, 3.6, 3.05], [120, 'exceptional']), ('tidal coefficient classification [3.9, 3.0, 3.1, 3.6, 3.05]', [3.9, 3.0, 3.1, 3.6, 3.05], [20, 'neap']), ('tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]', [6.0, 1.73, 1.73, 3.6, 3.05], [70, 'spring']), ('tidal coefficient classification [5.0, 2.255, 2.255, 3.6, 3.05]', [5.0, 2.255, 2.255, 3.6, 3.05], [45, 'neap'])], [('tidal coefficient classification [4.6, 2.6, 2.7, 3.6, 3.05]', [4.6, 2.6, 2.7, 3.6, 3.05], [32, 'neap']), ('tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]', [7.4, 0.1, 0.3, 3.6, 3.05], [118, 'exceptional']), ('tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]', [6.0, 1.73, 1.73, 3.6, 3.05], [70, 'spring']), ('tidal coefficient classification [5.0, 2.255, 2.255, 3.6, 3.05]', [5.0, 2.255, 2.255, 3.6, 3.05], [45, 'neap']), ('tidal coefficient classification [5.0, 2.25, 2.25, 3.6, 3.05]', [5.0, 2.25, 2.25, 3.6, 3.05], [45, 'neap']), ('tidal coefficient classification [6.1, 1.3, 0.7, 3.6, 3.05]', [6.1, 1.3, 0.7, 3.6, 3.05], [84, 'spring']), ('tidal coefficient classification [6.3, 0.8, 1.6, 3.8, 3.05]', [6.3, 0.8, 1.6, 3.8, 3.05], [84, 'spring'])], [('tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]', [7.4, 0.1, 0.3, 3.6, 3.05], [118, 'exceptional']), ('tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]', [6.0, 1.73, 1.73, 3.6, 3.05], [70, 'spring']), ('tidal coefficient classification [6.1, 1.3, 0.7, 3.6, 3.05]', [6.1, 1.3, 0.7, 3.6, 3.05], [84, 'spring']), ('tidal coefficient classification [6.3, 0.8, 1.6, 3.8, 3.05]', [6.3, 0.8, 1.6, 3.8, 3.05], [84, 'spring']), ('tidal coefficient classification [4.0, 1.0, 1.0, 2.4, 2.0]', [4.0, 1.0, 1.0, 2.4, 2.0], [75, 'spring']), ('tidal coefficient classification [4.4, 1.6, 1.6, 2.9, 2.0]', [4.4, 1.6, 1.6, 2.9, 2.0], [70, 'spring']), ('tidal coefficient classification [3.8, 0.0, 2.0, 2.1, 2.0]', [3.8, 0.0, 2.0, 2.1, 2.0], [70, 'spring'])], [('tidal coefficient classification [3.9, 3.0, 3.1, 3.6, 3.05]', [3.9, 3.0, 3.1, 3.6, 3.05], [20, 'neap']), ('tidal coefficient classification [5.0, 2.255, 2.255, 3.6, 3.05]', [5.0, 2.255, 2.255, 3.6, 3.05], [45, 'neap']), ('tidal coefficient classification [4.4, 1.6, 1.6, 2.9, 2.0]', [4.4, 1.6, 1.6, 2.9, 2.0], [70, 'spring']), ('tidal coefficient classification [3.8, 0.0, 2.0, 2.1, 2.0]', [3.8, 0.0, 2.0, 2.1, 2.0], [70, 'spring']), ('tidal coefficient classification [5.0, 1.46, 1.46, 3.2, 2.0]', [5.0, 1.46, 1.46, 3.2, 2.0], [89, 'spring']), ('tidal coefficient classification [5.0, 1.22, 1.22, 3.2, 2.0]', [5.0, 1.22, 1.22, 3.2, 2.0], [95, 'spring']), ('tidal coefficient classification [5.4, 1.0, 1.0, 3.2, 2.0]', [5.4, 1.0, 1.0, 3.2, 2.0], [110, 'exceptional'])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-tide_and_marine_navigation_tables-coefficient-half-range","generated_at":"2026-09-29T14:48:08.701525+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Tide tables and passage plans turn published predictions into go/no-go decisions about depth, clearance and timing.","root_cause":"The coefficient numerator uses the whole range rather than its half.","sha256":"12837a4d8d2f103802d99162765785c5961011ce2ac9720cfe09201a04676396","title":"Tidal coefficient classification: Full range is used where the half range belongs · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":39.881,"exit_code":1,"observations":[{"actual":[95,"spring"],"check":"tidal coefficient classification [6.5, 0.9, 1.1, 3.6, 3.05]","expected":[90,"spring"],"passed":false},{"actual":[52,"mean"],"check":"tidal coefficient classification [5.2, 2.0, 2.1, 3.6, 3.05]","expected":[52,"mean"],"passed":true},{"actual":[33,"neap"],"check":"tidal coefficient classification [4.6, 2.6, 2.7, 3.6, 3.05]","expected":[32,"neap"],"passed":false},{"actual":[120,"exceptional"],"check":"tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]","expected":[118,"exceptional"],"passed":false},{"actual":[120,"exceptional"],"check":"tidal coefficient classification [7.9, 0.0, 0.0, 3.6, 3.05]","expected":[120,"exceptional"],"passed":true},{"actual":[20,"neap"],"check":"tidal coefficient classification [3.9, 3.0, 3.1, 3.6, 3.05]","expected":[20,"neap"],"passed":true},{"actual":[79,"spring"],"check":"tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]","expected":[70,"spring"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"tidal coefficient classification [6.5, 0.9, 1.1, 3.6, 3.05]\", \"actual\": [95, \"spring\"], \"expected\": [90, \"spring\"], \"passed\": false}, {\"check\": \"tidal coefficient classification [5.2, 2.0, 2.1, 3.6, 3.05]\", \"actual\": [52, \"mean\"], \"expected\": [52, \"mean\"], \"passed\": true}, {\"check\": \"tidal coefficient classification [4.6, 2.6, 2.7, 3.6, 3.05]\", \"actual\": [33, \"neap\"], \"expected\": [32, \"neap\"], \"passed\": false}, {\"check\": \"tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]\", \"actual\": [120, \"exceptional\"], \"expected\": [118, \"exceptional\"], \"passed\": false}, {\"check\": \"tidal coefficient classification [7.9, 0.0, 0.0, 3.6, 3.05]\", \"actual\": [120, \"exceptional\"], \"expected\": [120, \"exceptional\"], \"passed\": true}, {\"check\": \"tidal coefficient classification [3.9, 3.0, 3.1, 3.6, 3.05]\", \"actual\": [20, \"neap\"], \"expected\": [20, \"neap\"], \"passed\": true}, {\"check\": \"tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]\", \"actual\": [79, \"spring\"], \"expected\": [70, \"spring\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.543,"exit_code":1,"observations":[{"actual":[120,"exceptional"],"check":"tidal coefficient classification [6.5, 0.9, 1.1, 3.6, 3.05]","expected":[90,"spring"],"passed":false},{"actual":[103,"spring"],"check":"tidal coefficient classification [5.2, 2.0, 2.1, 3.6, 3.05]","expected":[52,"mean"],"passed":false},{"actual":[64,"mean"],"check":"tidal coefficient classification [4.6, 2.6, 2.7, 3.6, 3.05]","expected":[32,"neap"],"passed":false},{"actual":[120,"exceptional"],"check":"tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]","expected":[118,"exceptional"],"passed":false},{"actual":[120,"exceptional"],"check":"tidal coefficient classification [7.9, 0.0, 0.0, 3.6, 3.05]","expected":[120,"exceptional"],"passed":true},{"actual":[28,"neap"],"check":"tidal coefficient classification [3.9, 3.0, 3.1, 3.6, 3.05]","expected":[20,"neap"],"passed":false},{"actual":[120,"exceptional"],"check":"tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]","expected":[70,"spring"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"tidal coefficient classification [6.5, 0.9, 1.1, 3.6, 3.05]\", \"actual\": [120, \"exceptional\"], \"expected\": [90, \"spring\"], \"passed\": false}, {\"check\": \"tidal coefficient classification [5.2, 2.0, 2.1, 3.6, 3.05]\", \"actual\": [103, \"spring\"], \"expected\": [52, \"mean\"], \"passed\": false}, {\"check\": \"tidal coefficient classification [4.6, 2.6, 2.7, 3.6, 3.05]\", \"actual\": [64, \"mean\"], \"expected\": [32, \"neap\"], \"passed\": false}, {\"check\": \"tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]\", \"actual\": [120, \"exceptional\"], \"expected\": [118, \"exceptional\"], \"passed\": false}, {\"check\": \"tidal coefficient classification [7.9, 0.0, 0.0, 3.6, 3.05]\", \"actual\": [120, \"exceptional\"], \"expected\": [120, \"exceptional\"], \"passed\": true}, {\"check\": \"tidal coefficient classification [3.9, 3.0, 3.1, 3.6, 3.05]\", \"actual\": [28, \"neap\"], \"expected\": [20, \"neap\"], \"passed\": false}, {\"check\": \"tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]\", \"actual\": [120, \"exceptional\"], \"expected\": [70, \"spring\"], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}