{"abstract":"Borderline spring tides are labelled mean.","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":"Fixing the spring boundary while making the neap test strict mislabels coefficient 45.","family":"w2-tide_and_marine_navigation_tables-coefficient-spring-threshold","id":"FA-69156","implementations":{"attempt":{"sha256":"da204b6eed09265fd3e1684917c05f4d9147d39c322caa6de31f64572711c6b9","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/2)/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.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 [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 [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 [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 [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 [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, 2.255, 2.255, 3.6, 3.05]', [5.0, 2.255, 2.255, 3.6, 3.05], [45, '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.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 [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 [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.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 [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 [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 [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 [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']), ('tidal coefficient classification [5.6, 0.9, 0.9, 3.2, 2.0]', [5.6, 0.9, 0.9, 3.2, 2.0], [117, '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":"2297695112db37598edb76a27a3cf1714020af2c366010f0618fc2a91e3c04d1","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/2)/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.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 [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 [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 [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 [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 [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, 2.255, 2.255, 3.6, 3.05]', [5.0, 2.255, 2.255, 3.6, 3.05], [45, '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.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 [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 [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.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 [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 [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 [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 [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']), ('tidal coefficient classification [5.6, 0.9, 0.9, 3.2, 2.0]', [5.6, 0.9, 0.9, 3.2, 2.0], [117, '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-spring-threshold","generated_at":"2026-09-29T14:48:08.777713+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 spring test uses c>70.","sha256":"dd9d8932e5b7cdcebd0511d9589a6650251d4a17c19e1ceb9751bdf3ff8b3b99","title":"Tidal coefficient classification: Coefficient 70 is not classed as spring · 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":38.394,"exit_code":1,"observations":[{"actual":[70,"spring"],"check":"tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]","expected":[70,"spring"],"passed":true},{"actual":[45,"mean"],"check":"tidal coefficient classification [5.0, 2.255, 2.255, 3.6, 3.05]","expected":[45,"neap"],"passed":false},{"actual":[90,"spring"],"check":"tidal coefficient classification [6.5, 0.9, 1.1, 3.6, 3.05]","expected":[90,"spring"],"passed":true},{"actual":[52,"mean"],"check":"tidal coefficient classification [5.2, 2.0, 2.1, 3.6, 3.05]","expected":[52,"mean"],"passed":true},{"actual":[32,"neap"],"check":"tidal coefficient classification [4.6, 2.6, 2.7, 3.6, 3.05]","expected":[32,"neap"],"passed":true},{"actual":[118,"exceptional"],"check":"tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]","expected":[118,"exceptional"],"passed":true},{"actual":[120,"exceptional"],"check":"tidal coefficient classification [7.9, 0.0, 0.0, 3.6, 3.05]","expected":[120,"exceptional"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]\", \"actual\": [70, \"spring\"], \"expected\": [70, \"spring\"], \"passed\": true}, {\"check\": \"tidal coefficient classification [5.0, 2.255, 2.255, 3.6, 3.05]\", \"actual\": [45, \"mean\"], \"expected\": [45, \"neap\"], \"passed\": false}, {\"check\": \"tidal coefficient classification [6.5, 0.9, 1.1, 3.6, 3.05]\", \"actual\": [90, \"spring\"], \"expected\": [90, \"spring\"], \"passed\": true}, {\"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\": [32, \"neap\"], \"expected\": [32, \"neap\"], \"passed\": true}, {\"check\": \"tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]\", \"actual\": [118, \"exceptional\"], \"expected\": [118, \"exceptional\"], \"passed\": true}, {\"check\": \"tidal coefficient classification [7.9, 0.0, 0.0, 3.6, 3.05]\", \"actual\": [120, \"exceptional\"], \"expected\": [120, \"exceptional\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.103,"exit_code":1,"observations":[{"actual":[70,"mean"],"check":"tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]","expected":[70,"spring"],"passed":false},{"actual":[45,"neap"],"check":"tidal coefficient classification [5.0, 2.255, 2.255, 3.6, 3.05]","expected":[45,"neap"],"passed":true},{"actual":[90,"spring"],"check":"tidal coefficient classification [6.5, 0.9, 1.1, 3.6, 3.05]","expected":[90,"spring"],"passed":true},{"actual":[52,"mean"],"check":"tidal coefficient classification [5.2, 2.0, 2.1, 3.6, 3.05]","expected":[52,"mean"],"passed":true},{"actual":[32,"neap"],"check":"tidal coefficient classification [4.6, 2.6, 2.7, 3.6, 3.05]","expected":[32,"neap"],"passed":true},{"actual":[118,"exceptional"],"check":"tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]","expected":[118,"exceptional"],"passed":true},{"actual":[120,"exceptional"],"check":"tidal coefficient classification [7.9, 0.0, 0.0, 3.6, 3.05]","expected":[120,"exceptional"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"tidal coefficient classification [6.0, 1.73, 1.73, 3.6, 3.05]\", \"actual\": [70, \"mean\"], \"expected\": [70, \"spring\"], \"passed\": false}, {\"check\": \"tidal coefficient classification [5.0, 2.255, 2.255, 3.6, 3.05]\", \"actual\": [45, \"neap\"], \"expected\": [45, \"neap\"], \"passed\": true}, {\"check\": \"tidal coefficient classification [6.5, 0.9, 1.1, 3.6, 3.05]\", \"actual\": [90, \"spring\"], \"expected\": [90, \"spring\"], \"passed\": true}, {\"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\": [32, \"neap\"], \"expected\": [32, \"neap\"], \"passed\": true}, {\"check\": \"tidal coefficient classification [7.4, 0.1, 0.3, 3.6, 3.05]\", \"actual\": [118, \"exceptional\"], \"expected\": [118, \"exceptional\"], \"passed\": true}, {\"check\": \"tidal coefficient classification [7.9, 0.0, 0.0, 3.6, 3.05]\", \"actual\": [120, \"exceptional\"], \"expected\": [120, \"exceptional\"], \"passed\": true}], \"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."}}