{"abstract":"Early insurer-initiated cancellations retain a minimum earned premium.","category":"Insurance premium rating","checks":10,"contract":"Input premium, term_days, days_in_force d, initiator, min_earned_permille. d<0 or term<=0 -> 'invalid'; d>=term -> 0; d==0 (flat cancel) returns the full premium. Otherwise unearned = premium*(term-d)/term; the insurer returns it in full; an insured cancellation returns 90% of unearned but never more than premium minus the minimum earned premium. Round half-up once.","evaluation_group":"w2-insurance_premium_rating-cancellation-return","failed_approach":"Halving the minimum for insurer cancellations still withholds premium the insurer must return.","family":"w2-insurance_premium_rating-cancellation-return-minimum-earned-scope","id":"FA-62921","implementations":{"attempt":{"sha256":"1ea8d8251c0289d6f936bd7c3869f953351fabc2969f29a2fe48289c13fe8581","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    p=x['premium']; t=x['term_days']; d=x['days_in_force']\n    if d<0 or t<=0: return 'invalid'\n    if d>=t: return 0\n    if d==0: return p\n    unearned=Fraction(p*(t-d),t)\n    if x['initiator']=='insured':\n        ret=unearned*Fraction(90,100)\n        ret=min(ret,p-Fraction(p*x['min_earned_permille'],1000))\n    else:\n        ret=min(unearned,p-Fraction(p*x['min_earned_permille'],2000))\n    return math.floor(ret+Fraction(1,2))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['insured cancels mid-term', {'premium': 167157, 'term_days': 365, 'days_in_force': 113, 'initiator': 'insured', 'min_earned_permille': 100}, 103866], ['insurer cancels mid-term', {'premium': 107827, 'term_days': 365, 'days_in_force': 285, 'initiator': 'insurer', 'min_earned_permille': 250}, 23633], ['insurer cancel early with minimum on file', {'premium': 135423, 'term_days': 365, 'days_in_force': 32, 'initiator': 'insurer', 'min_earned_permille': 400}, 123550], ['insured minimum earned binds', {'premium': 102264, 'term_days': 365, 'days_in_force': 24, 'initiator': 'insured', 'min_earned_permille': 300}, 71585], ['flat cancel by insured', {'premium': 246750, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 250}, 246750], ['flat cancel by insurer', {'premium': 77604, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 77604], ['one day in force', {'premium': 285647, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 284060], ['expiry day', {'premium': 163861, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 253298, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 250}, 'invalid'], ['six month policy insured cancel', {'premium': 169415, 'term_days': 182, 'days_in_force': 105, 'initiator': 'insured', 'min_earned_permille': 100}, 64508]], [['insured cancels mid-term', {'premium': 136580, 'term_days': 365, 'days_in_force': 120, 'initiator': 'insured', 'min_earned_permille': 100}, 82509], ['insurer cancels mid-term', {'premium': 142197, 'term_days': 365, 'days_in_force': 42, 'initiator': 'insurer', 'min_earned_permille': 100}, 125835], ['insurer cancel early with minimum on file', {'premium': 130516, 'term_days': 365, 'days_in_force': 22, 'initiator': 'insurer', 'min_earned_permille': 400}, 122649], ['insured minimum earned binds', {'premium': 155356, 'term_days': 365, 'days_in_force': 30, 'initiator': 'insured', 'min_earned_permille': 300}, 108749], ['flat cancel by insured', {'premium': 128340, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 250}, 128340], ['flat cancel by insurer', {'premium': 205493, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 250}, 205493], ['one day in force', {'premium': 125332, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 124636], ['expiry day', {'premium': 149858, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 143435, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 250}, 'invalid'], ['six month policy insured cancel', {'premium': 219606, 'term_days': 182, 'days_in_force': 115, 'initiator': 'insured', 'min_earned_permille': 100}, 72760]], [['insured cancels mid-term', {'premium': 236883, 'term_days': 365, 'days_in_force': 198, 'initiator': 'insured', 'min_earned_permille': 100}, 97544], ['insurer cancels mid-term', {'premium': 224272, 'term_days': 365, 'days_in_force': 89, 'initiator': 'insurer', 'min_earned_permille': 100}, 169586], ['insurer cancel early with minimum on file', {'premium': 271417, 'term_days': 365, 'days_in_force': 21, 'initiator': 'insurer', 'min_earned_permille': 400}, 255801], ['insured minimum earned binds', {'premium': 236806, 'term_days': 365, 'days_in_force': 27, 'initiator': 'insured', 'min_earned_permille': 300}, 165764], ['flat cancel by insured', {'premium': 50665, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 50665], ['flat cancel by insurer', {'premium': 266999, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 250}, 266999], ['one day in force', {'premium': 51282, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 250}, 50997], ['expiry day', {'premium': 202320, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 67184, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 241675, 'term_days': 182, 'days_in_force': 118, 'initiator': 'insured', 'min_earned_permille': 100}, 76486]], [['insured cancels mid-term', {'premium': 82503, 'term_days': 365, 'days_in_force': 154, 'initiator': 'insured', 'min_earned_permille': 100}, 42924], ['insurer cancels mid-term', {'premium': 137193, 'term_days': 365, 'days_in_force': 295, 'initiator': 'insurer', 'min_earned_permille': 100}, 26311], ['insurer cancel early with minimum on file', {'premium': 157674, 'term_days': 365, 'days_in_force': 15, 'initiator': 'insurer', 'min_earned_permille': 400}, 151194], ['insured minimum earned binds', {'premium': 283617, 'term_days': 365, 'days_in_force': 21, 'initiator': 'insured', 'min_earned_permille': 300}, 198532], ['flat cancel by insured', {'premium': 97666, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 97666], ['flat cancel by insurer', {'premium': 137018, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 137018], ['one day in force', {'premium': 261346, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 259894], ['expiry day', {'premium': 135749, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 260111, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 289415, 'term_days': 182, 'days_in_force': 81, 'initiator': 'insured', 'min_earned_permille': 100}, 144548]], [['insured cancels mid-term', {'premium': 59284, 'term_days': 365, 'days_in_force': 188, 'initiator': 'insured', 'min_earned_permille': 100}, 25874], ['insurer cancels mid-term', {'premium': 88844, 'term_days': 365, 'days_in_force': 105, 'initiator': 'insurer', 'min_earned_permille': 100}, 63286], ['insurer cancel early with minimum on file', {'premium': 70835, 'term_days': 365, 'days_in_force': 24, 'initiator': 'insurer', 'min_earned_permille': 400}, 66177], ['insured minimum earned binds', {'premium': 148105, 'term_days': 365, 'days_in_force': 29, 'initiator': 'insured', 'min_earned_permille': 300}, 103674], ['flat cancel by insured', {'premium': 267217, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 267217], ['flat cancel by insurer', {'premium': 201088, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 201088], ['one day in force', {'premium': 293778, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 250}, 292146], ['expiry day', {'premium': 81772, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 193452, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 273407, 'term_days': 182, 'days_in_force': 107, 'initiator': 'insured', 'min_earned_permille': 100}, 101401]]]\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":"fc237235b213045c953795a5763f40b40184fa9e09318b62ad1b468724b099d5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    p=x['premium']; t=x['term_days']; d=x['days_in_force']\n    if d<0 or t<=0: return 'invalid'\n    if d>=t: return 0\n    if d==0: return p\n    unearned=Fraction(p*(t-d),t)\n    if x['initiator']=='insured':\n        ret=unearned*Fraction(90,100)\n    else:\n        ret=unearned\n    ret=min(ret,p-Fraction(p*x['min_earned_permille'],1000))\n    return math.floor(ret+Fraction(1,2))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['insured cancels mid-term', {'premium': 167157, 'term_days': 365, 'days_in_force': 113, 'initiator': 'insured', 'min_earned_permille': 100}, 103866], ['insurer cancels mid-term', {'premium': 107827, 'term_days': 365, 'days_in_force': 285, 'initiator': 'insurer', 'min_earned_permille': 250}, 23633], ['insurer cancel early with minimum on file', {'premium': 135423, 'term_days': 365, 'days_in_force': 32, 'initiator': 'insurer', 'min_earned_permille': 400}, 123550], ['insured minimum earned binds', {'premium': 102264, 'term_days': 365, 'days_in_force': 24, 'initiator': 'insured', 'min_earned_permille': 300}, 71585], ['flat cancel by insured', {'premium': 246750, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 250}, 246750], ['flat cancel by insurer', {'premium': 77604, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 77604], ['one day in force', {'premium': 285647, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 284060], ['expiry day', {'premium': 163861, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 253298, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 250}, 'invalid'], ['six month policy insured cancel', {'premium': 169415, 'term_days': 182, 'days_in_force': 105, 'initiator': 'insured', 'min_earned_permille': 100}, 64508]], [['insured cancels mid-term', {'premium': 136580, 'term_days': 365, 'days_in_force': 120, 'initiator': 'insured', 'min_earned_permille': 100}, 82509], ['insurer cancels mid-term', {'premium': 142197, 'term_days': 365, 'days_in_force': 42, 'initiator': 'insurer', 'min_earned_permille': 100}, 125835], ['insurer cancel early with minimum on file', {'premium': 130516, 'term_days': 365, 'days_in_force': 22, 'initiator': 'insurer', 'min_earned_permille': 400}, 122649], ['insured minimum earned binds', {'premium': 155356, 'term_days': 365, 'days_in_force': 30, 'initiator': 'insured', 'min_earned_permille': 300}, 108749], ['flat cancel by insured', {'premium': 128340, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 250}, 128340], ['flat cancel by insurer', {'premium': 205493, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 250}, 205493], ['one day in force', {'premium': 125332, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 124636], ['expiry day', {'premium': 149858, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 143435, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 250}, 'invalid'], ['six month policy insured cancel', {'premium': 219606, 'term_days': 182, 'days_in_force': 115, 'initiator': 'insured', 'min_earned_permille': 100}, 72760]], [['insured cancels mid-term', {'premium': 236883, 'term_days': 365, 'days_in_force': 198, 'initiator': 'insured', 'min_earned_permille': 100}, 97544], ['insurer cancels mid-term', {'premium': 224272, 'term_days': 365, 'days_in_force': 89, 'initiator': 'insurer', 'min_earned_permille': 100}, 169586], ['insurer cancel early with minimum on file', {'premium': 271417, 'term_days': 365, 'days_in_force': 21, 'initiator': 'insurer', 'min_earned_permille': 400}, 255801], ['insured minimum earned binds', {'premium': 236806, 'term_days': 365, 'days_in_force': 27, 'initiator': 'insured', 'min_earned_permille': 300}, 165764], ['flat cancel by insured', {'premium': 50665, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 50665], ['flat cancel by insurer', {'premium': 266999, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 250}, 266999], ['one day in force', {'premium': 51282, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 250}, 50997], ['expiry day', {'premium': 202320, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 67184, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 241675, 'term_days': 182, 'days_in_force': 118, 'initiator': 'insured', 'min_earned_permille': 100}, 76486]], [['insured cancels mid-term', {'premium': 82503, 'term_days': 365, 'days_in_force': 154, 'initiator': 'insured', 'min_earned_permille': 100}, 42924], ['insurer cancels mid-term', {'premium': 137193, 'term_days': 365, 'days_in_force': 295, 'initiator': 'insurer', 'min_earned_permille': 100}, 26311], ['insurer cancel early with minimum on file', {'premium': 157674, 'term_days': 365, 'days_in_force': 15, 'initiator': 'insurer', 'min_earned_permille': 400}, 151194], ['insured minimum earned binds', {'premium': 283617, 'term_days': 365, 'days_in_force': 21, 'initiator': 'insured', 'min_earned_permille': 300}, 198532], ['flat cancel by insured', {'premium': 97666, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 97666], ['flat cancel by insurer', {'premium': 137018, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 137018], ['one day in force', {'premium': 261346, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 259894], ['expiry day', {'premium': 135749, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 260111, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 289415, 'term_days': 182, 'days_in_force': 81, 'initiator': 'insured', 'min_earned_permille': 100}, 144548]], [['insured cancels mid-term', {'premium': 59284, 'term_days': 365, 'days_in_force': 188, 'initiator': 'insured', 'min_earned_permille': 100}, 25874], ['insurer cancels mid-term', {'premium': 88844, 'term_days': 365, 'days_in_force': 105, 'initiator': 'insurer', 'min_earned_permille': 100}, 63286], ['insurer cancel early with minimum on file', {'premium': 70835, 'term_days': 365, 'days_in_force': 24, 'initiator': 'insurer', 'min_earned_permille': 400}, 66177], ['insured minimum earned binds', {'premium': 148105, 'term_days': 365, 'days_in_force': 29, 'initiator': 'insured', 'min_earned_permille': 300}, 103674], ['flat cancel by insured', {'premium': 267217, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 267217], ['flat cancel by insurer', {'premium': 201088, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 201088], ['one day in force', {'premium': 293778, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 250}, 292146], ['expiry day', {'premium': 81772, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 193452, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 273407, 'term_days': 182, 'days_in_force': 107, 'initiator': 'insured', 'min_earned_permille': 100}, 101401]]]\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"},"fixed":{"sha256":"8c6d8f7d5b6d5cb471c05c630920bceb4897fca789049505fe23d6fafbd9ece3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    p=x['premium']; t=x['term_days']; d=x['days_in_force']\n    if d<0 or t<=0: return 'invalid'\n    if d>=t: return 0\n    if d==0: return p\n    unearned=Fraction(p*(t-d),t)\n    if x['initiator']=='insured':\n        ret=unearned*Fraction(90,100)\n        ret=min(ret,p-Fraction(p*x['min_earned_permille'],1000))\n    else:\n        ret=unearned\n    return math.floor(ret+Fraction(1,2))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['insured cancels mid-term', {'premium': 167157, 'term_days': 365, 'days_in_force': 113, 'initiator': 'insured', 'min_earned_permille': 100}, 103866], ['insurer cancels mid-term', {'premium': 107827, 'term_days': 365, 'days_in_force': 285, 'initiator': 'insurer', 'min_earned_permille': 250}, 23633], ['insurer cancel early with minimum on file', {'premium': 135423, 'term_days': 365, 'days_in_force': 32, 'initiator': 'insurer', 'min_earned_permille': 400}, 123550], ['insured minimum earned binds', {'premium': 102264, 'term_days': 365, 'days_in_force': 24, 'initiator': 'insured', 'min_earned_permille': 300}, 71585], ['flat cancel by insured', {'premium': 246750, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 250}, 246750], ['flat cancel by insurer', {'premium': 77604, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 77604], ['one day in force', {'premium': 285647, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 284060], ['expiry day', {'premium': 163861, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 253298, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 250}, 'invalid'], ['six month policy insured cancel', {'premium': 169415, 'term_days': 182, 'days_in_force': 105, 'initiator': 'insured', 'min_earned_permille': 100}, 64508]], [['insured cancels mid-term', {'premium': 136580, 'term_days': 365, 'days_in_force': 120, 'initiator': 'insured', 'min_earned_permille': 100}, 82509], ['insurer cancels mid-term', {'premium': 142197, 'term_days': 365, 'days_in_force': 42, 'initiator': 'insurer', 'min_earned_permille': 100}, 125835], ['insurer cancel early with minimum on file', {'premium': 130516, 'term_days': 365, 'days_in_force': 22, 'initiator': 'insurer', 'min_earned_permille': 400}, 122649], ['insured minimum earned binds', {'premium': 155356, 'term_days': 365, 'days_in_force': 30, 'initiator': 'insured', 'min_earned_permille': 300}, 108749], ['flat cancel by insured', {'premium': 128340, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 250}, 128340], ['flat cancel by insurer', {'premium': 205493, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 250}, 205493], ['one day in force', {'premium': 125332, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 124636], ['expiry day', {'premium': 149858, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 143435, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 250}, 'invalid'], ['six month policy insured cancel', {'premium': 219606, 'term_days': 182, 'days_in_force': 115, 'initiator': 'insured', 'min_earned_permille': 100}, 72760]], [['insured cancels mid-term', {'premium': 236883, 'term_days': 365, 'days_in_force': 198, 'initiator': 'insured', 'min_earned_permille': 100}, 97544], ['insurer cancels mid-term', {'premium': 224272, 'term_days': 365, 'days_in_force': 89, 'initiator': 'insurer', 'min_earned_permille': 100}, 169586], ['insurer cancel early with minimum on file', {'premium': 271417, 'term_days': 365, 'days_in_force': 21, 'initiator': 'insurer', 'min_earned_permille': 400}, 255801], ['insured minimum earned binds', {'premium': 236806, 'term_days': 365, 'days_in_force': 27, 'initiator': 'insured', 'min_earned_permille': 300}, 165764], ['flat cancel by insured', {'premium': 50665, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 50665], ['flat cancel by insurer', {'premium': 266999, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 250}, 266999], ['one day in force', {'premium': 51282, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 250}, 50997], ['expiry day', {'premium': 202320, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 67184, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 241675, 'term_days': 182, 'days_in_force': 118, 'initiator': 'insured', 'min_earned_permille': 100}, 76486]], [['insured cancels mid-term', {'premium': 82503, 'term_days': 365, 'days_in_force': 154, 'initiator': 'insured', 'min_earned_permille': 100}, 42924], ['insurer cancels mid-term', {'premium': 137193, 'term_days': 365, 'days_in_force': 295, 'initiator': 'insurer', 'min_earned_permille': 100}, 26311], ['insurer cancel early with minimum on file', {'premium': 157674, 'term_days': 365, 'days_in_force': 15, 'initiator': 'insurer', 'min_earned_permille': 400}, 151194], ['insured minimum earned binds', {'premium': 283617, 'term_days': 365, 'days_in_force': 21, 'initiator': 'insured', 'min_earned_permille': 300}, 198532], ['flat cancel by insured', {'premium': 97666, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 97666], ['flat cancel by insurer', {'premium': 137018, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 137018], ['one day in force', {'premium': 261346, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 100}, 259894], ['expiry day', {'premium': 135749, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 260111, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 289415, 'term_days': 182, 'days_in_force': 81, 'initiator': 'insured', 'min_earned_permille': 100}, 144548]], [['insured cancels mid-term', {'premium': 59284, 'term_days': 365, 'days_in_force': 188, 'initiator': 'insured', 'min_earned_permille': 100}, 25874], ['insurer cancels mid-term', {'premium': 88844, 'term_days': 365, 'days_in_force': 105, 'initiator': 'insurer', 'min_earned_permille': 100}, 63286], ['insurer cancel early with minimum on file', {'premium': 70835, 'term_days': 365, 'days_in_force': 24, 'initiator': 'insurer', 'min_earned_permille': 400}, 66177], ['insured minimum earned binds', {'premium': 148105, 'term_days': 365, 'days_in_force': 29, 'initiator': 'insured', 'min_earned_permille': 300}, 103674], ['flat cancel by insured', {'premium': 267217, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insured', 'min_earned_permille': 100}, 267217], ['flat cancel by insurer', {'premium': 201088, 'term_days': 365, 'days_in_force': 0, 'initiator': 'insurer', 'min_earned_permille': 100}, 201088], ['one day in force', {'premium': 293778, 'term_days': 180, 'days_in_force': 1, 'initiator': 'insurer', 'min_earned_permille': 250}, 292146], ['expiry day', {'premium': 81772, 'term_days': 365, 'days_in_force': 365, 'initiator': 'insured', 'min_earned_permille': 100}, 0], ['negative days rejected', {'premium': 193452, 'term_days': 365, 'days_in_force': -1, 'initiator': 'insured', 'min_earned_permille': 100}, 'invalid'], ['six month policy insured cancel', {'premium': 273407, 'term_days': 182, 'days_in_force': 107, 'initiator': 'insured', 'min_earned_permille': 100}, 101401]]]\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 bounded teaching model of a stipulated toy rating contract. Amounts are integer cents and factors exact rationals; it makes no claim of conformance with any filed rating plan, bureau manual or jurisdiction. 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-insurance_premium_rating-cancellation-return-minimum-earned-scope","generated_at":"2026-09-29T14:47:09.428598+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Premium rating engines apply ordered tabular rules where one misplaced boundary or step silently misprices policies.","repair":"Apply the minimum earned premium only when the insured cancels.","root_cause":"The minimum earned cap was moved out of the insured branch.","sha256":"4e37073c86b33c9c3ec27a4206b63d53ee2b1fc34a5f404c04ce123194ca3ee8","title":"Short-rate cancellation return premium: Minimum earned premium is applied to insurer cancellations · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":47.299,"exit_code":1,"observations":[{"actual":103866,"check":"insured cancels mid-term","expected":103866,"passed":true},{"actual":23633,"check":"insurer cancels mid-term","expected":23633,"passed":true},{"actual":108338,"check":"insurer cancel early with minimum on file","expected":123550,"passed":false},{"actual":71585,"check":"insured minimum earned binds","expected":71585,"passed":true},{"actual":246750,"check":"flat cancel by insured","expected":246750,"passed":true},{"actual":77604,"check":"flat cancel by insurer","expected":77604,"passed":true},{"actual":271365,"check":"one day in force","expected":284060,"passed":false},{"actual":0,"check":"expiry day","expected":0,"passed":true},{"actual":"invalid","check":"negative days rejected","expected":"invalid","passed":true},{"actual":64508,"check":"six month policy insured cancel","expected":64508,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"insured cancels mid-term\", \"actual\": 103866, \"expected\": 103866, \"passed\": true}, {\"check\": \"insurer cancels mid-term\", \"actual\": 23633, \"expected\": 23633, \"passed\": true}, {\"check\": \"insurer cancel early with minimum on file\", \"actual\": 108338, \"expected\": 123550, \"passed\": false}, {\"check\": \"insured minimum earned binds\", \"actual\": 71585, \"expected\": 71585, \"passed\": true}, {\"check\": \"flat cancel by insured\", \"actual\": 246750, \"expected\": 246750, \"passed\": true}, {\"check\": \"flat cancel by insurer\", \"actual\": 77604, \"expected\": 77604, \"passed\": true}, {\"check\": \"one day in force\", \"actual\": 271365, \"expected\": 284060, \"passed\": false}, {\"check\": \"expiry day\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"negative days rejected\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"six month policy insured cancel\", \"actual\": 64508, \"expected\": 64508, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":46.819,"exit_code":1,"observations":[{"actual":103866,"check":"insured cancels mid-term","expected":103866,"passed":true},{"actual":23633,"check":"insurer cancels mid-term","expected":23633,"passed":true},{"actual":81254,"check":"insurer cancel early with minimum on file","expected":123550,"passed":false},{"actual":71585,"check":"insured minimum earned binds","expected":71585,"passed":true},{"actual":246750,"check":"flat cancel by insured","expected":246750,"passed":true},{"actual":77604,"check":"flat cancel by insurer","expected":77604,"passed":true},{"actual":257082,"check":"one day in force","expected":284060,"passed":false},{"actual":0,"check":"expiry day","expected":0,"passed":true},{"actual":"invalid","check":"negative days rejected","expected":"invalid","passed":true},{"actual":64508,"check":"six month policy insured cancel","expected":64508,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"insured cancels mid-term\", \"actual\": 103866, \"expected\": 103866, \"passed\": true}, {\"check\": \"insurer cancels mid-term\", \"actual\": 23633, \"expected\": 23633, \"passed\": true}, {\"check\": \"insurer cancel early with minimum on file\", \"actual\": 81254, \"expected\": 123550, \"passed\": false}, {\"check\": \"insured minimum earned binds\", \"actual\": 71585, \"expected\": 71585, \"passed\": true}, {\"check\": \"flat cancel by insured\", \"actual\": 246750, \"expected\": 246750, \"passed\": true}, {\"check\": \"flat cancel by insurer\", \"actual\": 77604, \"expected\": 77604, \"passed\": true}, {\"check\": \"one day in force\", \"actual\": 257082, \"expected\": 284060, \"passed\": false}, {\"check\": \"expiry day\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"negative days rejected\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"six month policy insured cancel\", \"actual\": 64508, \"expected\": 64508, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.409,"exit_code":0,"observations":[{"actual":103866,"check":"insured cancels mid-term","expected":103866,"passed":true},{"actual":23633,"check":"insurer cancels mid-term","expected":23633,"passed":true},{"actual":123550,"check":"insurer cancel early with minimum on file","expected":123550,"passed":true},{"actual":71585,"check":"insured minimum earned binds","expected":71585,"passed":true},{"actual":246750,"check":"flat cancel by insured","expected":246750,"passed":true},{"actual":77604,"check":"flat cancel by insurer","expected":77604,"passed":true},{"actual":284060,"check":"one day in force","expected":284060,"passed":true},{"actual":0,"check":"expiry day","expected":0,"passed":true},{"actual":"invalid","check":"negative days rejected","expected":"invalid","passed":true},{"actual":64508,"check":"six month policy insured cancel","expected":64508,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"insured cancels mid-term\", \"actual\": 103866, \"expected\": 103866, \"passed\": true}, {\"check\": \"insurer cancels mid-term\", \"actual\": 23633, \"expected\": 23633, \"passed\": true}, {\"check\": \"insurer cancel early with minimum on file\", \"actual\": 123550, \"expected\": 123550, \"passed\": true}, {\"check\": \"insured minimum earned binds\", \"actual\": 71585, \"expected\": 71585, \"passed\": true}, {\"check\": \"flat cancel by insured\", \"actual\": 246750, \"expected\": 246750, \"passed\": true}, {\"check\": \"flat cancel by insurer\", \"actual\": 77604, \"expected\": 77604, \"passed\": true}, {\"check\": \"one day in force\", \"actual\": 284060, \"expected\": 284060, \"passed\": true}, {\"check\": \"expiry day\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"negative days rejected\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"six month policy insured cancel\", \"actual\": 64508, \"expected\": 64508, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}