{"abstract":"Polynomial decay scales progress before subtracting from one.","category":"Learning rate schedules","checks":6,"contract":"Return base*max(0,1-step/total)**power for nonnegative step.","contract_signature":"step, base, total, power","evaluation_group":"lr-schedule-polynomial-decay","failed_approach":"Reducing the exponent by one still gives incorrect curvature for non-linear powers.","family":"w3-learning-rate-schedules-polynomial-decay","id":"FA-99076","implementations":{"attempt":{"sha256":"05a7515304e33f5d72a87ca9c21c9348fe0aa02a37c35ff13cca755bdcbd2a79","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(step, base, total, power):\n    return base*max(0,1-step/total)**(power-1)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('square midpoint',solve(2,16,4,2),4); check('start',solve(0,9,3,3),9); check('end',solve(3,9,3,2),0); check('after',solve(4,9,3,2),0); check('linear',solve(1,12,4,1),9); check('cube quarter',solve(1,8,4,3),3.375)\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":"16547ba5ca854ff5f053b1a50da87a778a37b0ff12514721807a7f8fc1fd06e7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(step, base, total, power):\n    return base*max(0,1-step/total*power)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('square midpoint',solve(2,16,4,2),4); check('start',solve(0,9,3,3),9); check('end',solve(3,9,3,2),0); check('after',solve(4,9,3,2),0); check('linear',solve(1,12,4,1),9); check('cube quarter',solve(1,8,4,3),3.375)\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":"These are toy scalar contracts with integer steps and finite parameters; they do not model framework defaults or optimizer state. 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":"w3-learning-rate-schedules-polynomial-decay","generated_at":"2026-09-30T16:48:19.909870+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic scalar schedule makes step-to-rate mapping explicit for a small training loop.","root_cause":"Power multiplies the progress fraction rather than shaping the remaining fraction.","sha256":"fdd50e1519f3d6430dc4dee23f97690c35487eb35f62b77cc702b29455aacdd8","title":"Polynomial decay scales progress before subtracting from one · case 01","variant":1,"variant_policy":"The same explicitly authored fixtures repeat across all five numbered records; runtime N is unused. These records share one mechanism and must remain together in evaluation splits.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":29.519,"exit_code":1,"observations":[{"actual":8.0,"check":"square midpoint","expected":4,"passed":false},{"actual":9.0,"check":"start","expected":9,"passed":true},{"actual":0,"check":"end","expected":0,"passed":true},{"actual":0,"check":"after","expected":0,"passed":true},{"actual":12.0,"check":"linear","expected":9,"passed":false},{"actual":4.5,"check":"cube quarter","expected":3.375,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"square midpoint\", \"actual\": 8.0, \"expected\": 4, \"passed\": false}, {\"check\": \"start\", \"actual\": 9.0, \"expected\": 9, \"passed\": true}, {\"check\": \"end\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"after\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"linear\", \"actual\": 12.0, \"expected\": 9, \"passed\": false}, {\"check\": \"cube quarter\", \"actual\": 4.5, \"expected\": 3.375, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":25.6,"exit_code":1,"observations":[{"actual":0,"check":"square midpoint","expected":4,"passed":false},{"actual":9.0,"check":"start","expected":9,"passed":true},{"actual":0,"check":"end","expected":0,"passed":true},{"actual":0,"check":"after","expected":0,"passed":true},{"actual":9.0,"check":"linear","expected":9,"passed":true},{"actual":2.0,"check":"cube quarter","expected":3.375,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"square midpoint\", \"actual\": 0, \"expected\": 4, \"passed\": false}, {\"check\": \"start\", \"actual\": 9.0, \"expected\": 9, \"passed\": true}, {\"check\": \"end\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"after\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"linear\", \"actual\": 9.0, \"expected\": 9, \"passed\": true}, {\"check\": \"cube quarter\", \"actual\": 2.0, \"expected\": 3.375, \"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."}}