{"abstract":"Older ages are improved at the younger age's rate.","category":"Actuarial life tables","checks":7,"contract":"Input q {age: per 100000 at base_year}, aa {age: annual improvement per 10000}, age, year, n, mode static|generational. For k<n: attained age age+k, projection year = year+k (generational) or year (static); q = min(1, q_base*(1-AA)^(year-base)) with negative exponents de-improving. Missing age -> 'missing age <a>'. Return rates rounded to 8.","contract_signature":"x","evaluation_group":"w2-actuarial_life_tables-mortality-improvement","failed_approach":"Reading the next age's rate is an off-by-one lookup.","family":"w2-actuarial_life_tables-mortality-improvement-improvement-scale-age","id":"FA-63571","implementations":{"attempt":{"sha256":"96e1923f56a4b76b28ec85ce0b2add1e3b688f797d84ca3936fdf14d72e9e396","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    out=[]\n    for k in range(x['n']):\n        age=x['age']+k\n        yr=x['year']+k if x['mode']=='generational' else x['year']\n        key=str(age)\n        if key not in x['q'] or key not in x['aa']: return 'missing age '+key\n        f=(1-Fraction(x['aa'].get(str(age+1),x['aa'][key]),10000))**(yr-x['base_year'])\n        q=min(Fraction(1),Fraction(x['q'][key],100000)*f)\n        out.append(round(float(q),8))\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['generational projection', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, [0.00464535, 0.00541411, 0.00617001, 0.00691562, 0.00765345]], ['static projection', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 61, 'year': 2030, 'n': 4, 'mode': 'static', 'base_year': 2020}, [0.00510686, 0.00591448, 0.00673016, 0.00755396]], ['before base year', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 63, 'year': 2014, 'n': 3, 'mode': 'generational', 'base_year': 2020}, [0.00836511, 0.00919216, 0.01000074]], ['de-improvement near one', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 73, 'year': 2000, 'n': 2, 'mode': 'static', 'base_year': 2020}, [0.01982084, 1.0]], ['base year exactly', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2020, 'n': 3, 'mode': 'static', 'base_year': 2020}, [0.00681, 0.00771, 0.00861]], ['missing age', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 72, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, 'missing age 75'], ['long generational', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2021, 'n': 8, 'mode': 'generational', 'base_year': 2020}, [0.00493485, 0.00573985, 0.00652797, 0.00730202, 0.00806471, 0.00881867, 0.00956642, 0.01031041]]], [['generational projection', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, [0.00635578, 0.00711541, 0.00786552, 0.00860862, 0.00934717]], ['static projection', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2030, 'n': 4, 'mode': 'static', 'base_year': 2020}, [0.00431585, 0.0051155, 0.00592316, 0.00673889]], ['before base year', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 61, 'year': 2014, 'n': 3, 'mode': 'generational', 'base_year': 2020}, [0.00646222, 0.00731812, 0.00815134]], ['de-improvement near one', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 73, 'year': 2000, 'n': 2, 'mode': 'static', 'base_year': 2020}, [0.0198327, 1.0]], ['base year exactly', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2020, 'n': 3, 'mode': 'static', 'base_year': 2020}, [0.00682, 0.00772, 0.00862]], ['missing age', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 72, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, 'missing age 75'], ['long generational', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2021, 'n': 8, 'mode': 'generational', 'base_year': 2020}, [0.0049447, 0.00574956, 0.00653755, 0.00731149, 0.00807408, 0.00882794, 0.00957561, 0.01031953]]], [['generational projection', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, [0.0063651, 0.00712463, 0.00787464, 0.00861767, 0.00935614]], ['static projection', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 63, 'year': 2030, 'n': 4, 'mode': 'static', 'base_year': 2020}, [0.00674762, 0.00757151, 0.00840357, 0.00924387]], ['before base year', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 61, 'year': 2014, 'n': 3, 'mode': 'generational', 'base_year': 2020}, [0.00647314, 0.00732885, 0.0081619]], ['de-improvement near one', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 73, 'year': 2000, 'n': 2, 'mode': 'static', 'base_year': 2020}, [0.01984456, 1.0]], ['base year exactly', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2020, 'n': 3, 'mode': 'static', 'base_year': 2020}, [0.00683, 0.00773, 0.00863]], ['missing age', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 72, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, 'missing age 75'], ['long generational', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2021, 'n': 8, 'mode': 'generational', 'base_year': 2020}, [0.00495455, 0.00575928, 0.00654714, 0.00732096, 0.00808345, 0.00883722, 0.0095848, 0.01032864]]], [['generational projection', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 63, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, [0.00723147, 0.00798761, 0.00873591, 0.00947886, 0.01021888]], ['static projection', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2030, 'n': 4, 'mode': 'static', 'base_year': 2020}, [0.00594053, 0.00675635, 0.00758028, 0.00841239]], ['before base year', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 64, 'year': 2014, 'n': 3, 'mode': 'generational', 'base_year': 2020}, [0.00934568, 0.01015928, 0.01095652]], ['de-improvement near one', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 73, 'year': 2000, 'n': 2, 'mode': 'static', 'base_year': 2020}, [0.01985643, 1.0]], ['base year exactly', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2020, 'n': 3, 'mode': 'static', 'base_year': 2020}, [0.00684, 0.00774, 0.00864]], ['missing age', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 72, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, 'missing age 75'], ['long generational', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2021, 'n': 8, 'mode': 'generational', 'base_year': 2020}, [0.0049644, 0.00576899, 0.00655672, 0.00733043, 0.00809281, 0.00884649, 0.00959399, 0.01033776]]], [['generational projection', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, [0.00638374, 0.00714306, 0.00789289, 0.00863575, 0.00937408]], ['static projection', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2030, 'n': 4, 'mode': 'static', 'base_year': 2020}, [0.00434164, 0.00514142, 0.00594922, 0.00676507]], ['before base year', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2014, 'n': 3, 'mode': 'generational', 'base_year': 2020}, [0.00552935, 0.00640079, 0.00724741]], ['de-improvement near one', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 73, 'year': 2000, 'n': 2, 'mode': 'static', 'base_year': 2020}, [0.01986829, 1.0]], ['base year exactly', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2020, 'n': 3, 'mode': 'static', 'base_year': 2020}, [0.00685, 0.00775, 0.00865]], ['missing age', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 72, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, 'missing age 75'], ['long generational', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2021, 'n': 8, 'mode': 'generational', 'base_year': 2020}, [0.00497425, 0.0057787, 0.00656631, 0.0073399, 0.00810218, 0.00885576, 0.00960318, 0.01034688]]]]\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":"3dc64e4c2d6d5b31ed1d26b9b06f332b42f8a6cf5c6b98196819e6c6bd8f7bfe","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    out=[]\n    for k in range(x['n']):\n        age=x['age']+k\n        yr=x['year']+k if x['mode']=='generational' else x['year']\n        key=str(age)\n        if key not in x['q'] or key not in x['aa']: return 'missing age '+key\n        f=(1-Fraction(x['aa'][str(x['age'])],10000))**(yr-x['base_year'])\n        q=min(Fraction(1),Fraction(x['q'][key],100000)*f)\n        out.append(round(float(q),8))\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['generational projection', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, [0.00464535, 0.00541411, 0.00617001, 0.00691562, 0.00765345]], ['static projection', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 61, 'year': 2030, 'n': 4, 'mode': 'static', 'base_year': 2020}, [0.00510686, 0.00591448, 0.00673016, 0.00755396]], ['before base year', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 63, 'year': 2014, 'n': 3, 'mode': 'generational', 'base_year': 2020}, [0.00836511, 0.00919216, 0.01000074]], ['de-improvement near one', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 73, 'year': 2000, 'n': 2, 'mode': 'static', 'base_year': 2020}, [0.01982084, 1.0]], ['base year exactly', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2020, 'n': 3, 'mode': 'static', 'base_year': 2020}, [0.00681, 0.00771, 0.00861]], ['missing age', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 72, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, 'missing age 75'], ['long generational', {'q': {'60': 501, '61': 591, '62': 681, '63': 771, '64': 861, '65': 951, '66': 1041, '67': 1131, '68': 1221, '69': 1311, '70': 1401, '71': 1491, '72': 1581, '73': 1671, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2021, 'n': 8, 'mode': 'generational', 'base_year': 2020}, [0.00493485, 0.00573985, 0.00652797, 0.00730202, 0.00806471, 0.00881867, 0.00956642, 0.01031041]]], [['generational projection', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, [0.00635578, 0.00711541, 0.00786552, 0.00860862, 0.00934717]], ['static projection', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2030, 'n': 4, 'mode': 'static', 'base_year': 2020}, [0.00431585, 0.0051155, 0.00592316, 0.00673889]], ['before base year', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 61, 'year': 2014, 'n': 3, 'mode': 'generational', 'base_year': 2020}, [0.00646222, 0.00731812, 0.00815134]], ['de-improvement near one', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 73, 'year': 2000, 'n': 2, 'mode': 'static', 'base_year': 2020}, [0.0198327, 1.0]], ['base year exactly', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2020, 'n': 3, 'mode': 'static', 'base_year': 2020}, [0.00682, 0.00772, 0.00862]], ['missing age', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 72, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, 'missing age 75'], ['long generational', {'q': {'60': 502, '61': 592, '62': 682, '63': 772, '64': 862, '65': 952, '66': 1042, '67': 1132, '68': 1222, '69': 1312, '70': 1402, '71': 1492, '72': 1582, '73': 1672, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2021, 'n': 8, 'mode': 'generational', 'base_year': 2020}, [0.0049447, 0.00574956, 0.00653755, 0.00731149, 0.00807408, 0.00882794, 0.00957561, 0.01031953]]], [['generational projection', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, [0.0063651, 0.00712463, 0.00787464, 0.00861767, 0.00935614]], ['static projection', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 63, 'year': 2030, 'n': 4, 'mode': 'static', 'base_year': 2020}, [0.00674762, 0.00757151, 0.00840357, 0.00924387]], ['before base year', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 61, 'year': 2014, 'n': 3, 'mode': 'generational', 'base_year': 2020}, [0.00647314, 0.00732885, 0.0081619]], ['de-improvement near one', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 73, 'year': 2000, 'n': 2, 'mode': 'static', 'base_year': 2020}, [0.01984456, 1.0]], ['base year exactly', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2020, 'n': 3, 'mode': 'static', 'base_year': 2020}, [0.00683, 0.00773, 0.00863]], ['missing age', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 72, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, 'missing age 75'], ['long generational', {'q': {'60': 503, '61': 593, '62': 683, '63': 773, '64': 863, '65': 953, '66': 1043, '67': 1133, '68': 1223, '69': 1313, '70': 1403, '71': 1493, '72': 1583, '73': 1673, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2021, 'n': 8, 'mode': 'generational', 'base_year': 2020}, [0.00495455, 0.00575928, 0.00654714, 0.00732096, 0.00808345, 0.00883722, 0.0095848, 0.01032864]]], [['generational projection', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 63, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, [0.00723147, 0.00798761, 0.00873591, 0.00947886, 0.01021888]], ['static projection', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2030, 'n': 4, 'mode': 'static', 'base_year': 2020}, [0.00594053, 0.00675635, 0.00758028, 0.00841239]], ['before base year', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 64, 'year': 2014, 'n': 3, 'mode': 'generational', 'base_year': 2020}, [0.00934568, 0.01015928, 0.01095652]], ['de-improvement near one', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 73, 'year': 2000, 'n': 2, 'mode': 'static', 'base_year': 2020}, [0.01985643, 1.0]], ['base year exactly', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2020, 'n': 3, 'mode': 'static', 'base_year': 2020}, [0.00684, 0.00774, 0.00864]], ['missing age', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 72, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, 'missing age 75'], ['long generational', {'q': {'60': 504, '61': 594, '62': 684, '63': 774, '64': 864, '65': 954, '66': 1044, '67': 1134, '68': 1224, '69': 1314, '70': 1404, '71': 1494, '72': 1584, '73': 1674, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2021, 'n': 8, 'mode': 'generational', 'base_year': 2020}, [0.0049644, 0.00576899, 0.00655672, 0.00733043, 0.00809281, 0.00884649, 0.00959399, 0.01033776]]], [['generational projection', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, [0.00638374, 0.00714306, 0.00789289, 0.00863575, 0.00937408]], ['static projection', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2030, 'n': 4, 'mode': 'static', 'base_year': 2020}, [0.00434164, 0.00514142, 0.00594922, 0.00676507]], ['before base year', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2014, 'n': 3, 'mode': 'generational', 'base_year': 2020}, [0.00552935, 0.00640079, 0.00724741]], ['de-improvement near one', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 73, 'year': 2000, 'n': 2, 'mode': 'static', 'base_year': 2020}, [0.01986829, 1.0]], ['base year exactly', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 62, 'year': 2020, 'n': 3, 'mode': 'static', 'base_year': 2020}, [0.00685, 0.00775, 0.00865]], ['missing age', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 72, 'year': 2025, 'n': 5, 'mode': 'generational', 'base_year': 2020}, 'missing age 75'], ['long generational', {'q': {'60': 505, '61': 595, '62': 685, '63': 775, '64': 865, '65': 955, '66': 1045, '67': 1135, '68': 1225, '69': 1315, '70': 1405, '71': 1495, '72': 1585, '73': 1675, '74': 99000}, 'aa': {'60': 150, '61': 145, '62': 140, '63': 135, '64': 130, '65': 125, '66': 120, '67': 115, '68': 110, '69': 105, '70': 100, '71': 95, '72': 90, '73': 85, '74': 80}, 'age': 60, 'year': 2021, 'n': 8, 'mode': 'generational', 'base_year': 2020}, [0.00497425, 0.0057787, 0.00656631, 0.0073399, 0.00810218, 0.00885576, 0.00960318, 0.01034688]]]]\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 actuarial contract. Rates are small synthetic tables, exact rationals are used where practical and floats are rounded at the output; it makes no claim of conformance with any published table, standard of practice or regulation. 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-actuarial_life_tables-mortality-improvement-improvement-scale-age","generated_at":"2026-09-29T14:47:15.780007+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Life-table arithmetic compounds across ages, so one misplaced index or assumption shifts every downstream value.","root_cause":"The AA lookup ignores attained age.","sha256":"41a17e8d1ec8f39642107b961f15725be4289ffc9376b003996b97271481cbaf","title":"Mortality improvement projection: Improvement scale is read at the starting age · 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":47.033,"exit_code":1,"observations":[{"actual":[0.00465716,0.00543061,0.00619194,0.00694371,0.00768842],"check":"generational projection","expected":[0.00464535,0.00541411,0.00617001,0.00691562,0.00765345],"passed":false},{"actual":[0.00513283,0.00594454,0.00676435,0.00759231],"check":"static projection","expected":[0.00510686,0.00591448,0.00673016,0.00755396],"passed":false},{"actual":[0.00833972,0.00916891,0.00998051],"check":"before base year","expected":[0.00836511,0.00919216,0.01000074],"passed":false},{"actual":[0.01962199,1.0],"check":"de-improvement near one","expected":[0.01982084,1.0],"passed":false},{"actual":[0.00681,0.00771,0.00861],"check":"base year exactly","expected":[0.00681,0.00771,0.00861],"passed":true},{"actual":"missing age 75","check":"missing age","expected":"missing age 75","passed":true},{"actual":[0.00493736,0.00574568,0.0065379,0.00731683,0.00808516,0.0088455,0.00960036,0.01035221],"check":"long generational","expected":[0.00493485,0.00573985,0.00652797,0.00730202,0.00806471,0.00881867,0.00956642,0.01031041],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"generational projection\", \"actual\": [0.00465716, 0.00543061, 0.00619194, 0.00694371, 0.00768842], \"expected\": [0.00464535, 0.00541411, 0.00617001, 0.00691562, 0.00765345], \"passed\": false}, {\"check\": \"static projection\", \"actual\": [0.00513283, 0.00594454, 0.00676435, 0.00759231], \"expected\": [0.00510686, 0.00591448, 0.00673016, 0.00755396], \"passed\": false}, {\"check\": \"before base year\", \"actual\": [0.00833972, 0.00916891, 0.00998051], \"expected\": [0.00836511, 0.00919216, 0.01000074], \"passed\": false}, {\"check\": \"de-improvement near one\", \"actual\": [0.01962199, 1.0], \"expected\": [0.01982084, 1.0], \"passed\": false}, {\"check\": \"base year exactly\", \"actual\": [0.00681, 0.00771, 0.00861], \"expected\": [0.00681, 0.00771, 0.00861], \"passed\": true}, {\"check\": \"missing age\", \"actual\": \"missing age 75\", \"expected\": \"missing age 75\", \"passed\": true}, {\"check\": \"long generational\", \"actual\": [0.00493736, 0.00574568, 0.0065379, 0.00731683, 0.00808516, 0.0088455, 0.00960036, 0.01035221], \"expected\": [0.00493485, 0.00573985, 0.00652797, 0.00730202, 0.00806471, 0.00881867, 0.00956642, 0.01031041], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.755,"exit_code":1,"observations":[{"actual":[0.00464535,0.00539765,0.00612633,0.00683194,0.007515],"check":"generational projection","expected":[0.00464535,0.00541411,0.00617001,0.00691562,0.00765345],"passed":false},{"actual":[0.00510686,0.00588455,0.00666225,0.00743994],"check":"static projection","expected":[0.00510686,0.00591448,0.00673016,0.00755396],"passed":false},{"actual":[0.00836511,0.00921547,0.01004135],"check":"before base year","expected":[0.00836511,0.00919216,0.01000074],"passed":false},{"actual":[0.01982084,1.0],"check":"de-improvement near one","expected":[0.01982084,1.0],"passed":true},{"actual":[0.00681,0.00771,0.00861],"check":"base year exactly","expected":[0.00681,0.00771,0.00861],"passed":true},{"actual":"missing age 75","check":"missing age","expected":"missing age 75","passed":true},{"actual":[0.00493485,0.00573403,0.00650812,0.0072577,0.00798333,0.00868556,0.00936493,0.01002196],"check":"long generational","expected":[0.00493485,0.00573985,0.00652797,0.00730202,0.00806471,0.00881867,0.00956642,0.01031041],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"generational projection\", \"actual\": [0.00464535, 0.00539765, 0.00612633, 0.00683194, 0.007515], \"expected\": [0.00464535, 0.00541411, 0.00617001, 0.00691562, 0.00765345], \"passed\": false}, {\"check\": \"static projection\", \"actual\": [0.00510686, 0.00588455, 0.00666225, 0.00743994], \"expected\": [0.00510686, 0.00591448, 0.00673016, 0.00755396], \"passed\": false}, {\"check\": \"before base year\", \"actual\": [0.00836511, 0.00921547, 0.01004135], \"expected\": [0.00836511, 0.00919216, 0.01000074], \"passed\": false}, {\"check\": \"de-improvement near one\", \"actual\": [0.01982084, 1.0], \"expected\": [0.01982084, 1.0], \"passed\": true}, {\"check\": \"base year exactly\", \"actual\": [0.00681, 0.00771, 0.00861], \"expected\": [0.00681, 0.00771, 0.00861], \"passed\": true}, {\"check\": \"missing age\", \"actual\": \"missing age 75\", \"expected\": \"missing age 75\", \"passed\": true}, {\"check\": \"long generational\", \"actual\": [0.00493485, 0.00573403, 0.00650812, 0.0072577, 0.00798333, 0.00868556, 0.00936493, 0.01002196], \"expected\": [0.00493485, 0.00573985, 0.00652797, 0.00730202, 0.00806471, 0.00881867, 0.00956642, 0.01031041], \"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."}}