{"abstract":"Yarn estimates from the stitch total are low.","category":"Knitting and sewing pattern grading","checks":8,"contract":"Base stitches per round: sc 6, hdc 8, dc 12 (others -> \"error: stitch\"). Each round adds one round height to the radius. rounds = ceiling(diameter/(2*height)). Round k has base*k stitches. Return [rounds, stitches in last round, total stitches base*rounds*(rounds+1)/2].","evaluation_group":"w2-knitting_and_sewing_pattern_grading-crochet-circle","failed_approach":"(rounds-1) drops the final round.","family":"w2-knitting_and_sewing_pattern_grading-crochet-circle-total-stitches","id":"FA-97651","implementations":{"attempt":{"sha256":"cc7ae1f21e6fd54169d0e2d7cb64e5e36413b14a8e54af518d3e3d8df5d68fde","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(stitch, diameter, round_height):\n    BASE = {'sc': 6, 'hdc': 8, 'dc': 12}\n    if stitch not in BASE:\n        return 'error: stitch'\n    h = Fraction(round_height)\n    rounds = math.ceil(Fraction(diameter) / (2 * h))\n    b = BASE[stitch]\n    return [rounds, b * rounds, b * rounds * (rounds - 1) // 2]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['coaster', ['sc', 10, '0.5'], [10, 60, 330]], ['dc mat', ['dc', 30, '1.5'], [10, 120, 660]],\n  ['treble unknown', ['tr', 10, '1'], 'error: stitch'],\n  ['regression: total stitches', ['hdc', 15, '0.5'], [15, 120, 960]],\n  ['repair check: total stitches', ['hdc', 15, '1'], [8, 64, 288]],\n  ['generated control 1', ['hdc', 10, '2'], [3, 24, 48]],\n  ['generated control 2', ['tr', 5, '2'], 'error: stitch'],\n  ['generated control 3', ['tr', 10, '1.5'], 'error: stitch']],\n [['dc mat', ['dc', 30, '1.5'], [10, 120, 660]], ['treble unknown', ['tr', 10, '1'], 'error: stitch'],\n  ['coaster', ['sc', 10, '0.5'], [10, 60, 330]], ['regression: total stitches', ['sc', 20, '2'], [5, 30, 90]],\n  ['repair check: total stitches', ['dc', 20, '2'], [5, 60, 180]],\n  ['generated control 1', ['dc', 12, '1.5'], [4, 48, 120]],\n  ['generated control 2', ['tr', 5, '2'], 'error: stitch'],\n  ['generated control 3', ['tr', 30, '2'], 'error: stitch']],\n [['treble unknown', ['tr', 10, '1'], 'error: stitch'], ['coaster', ['sc', 10, '0.5'], [10, 60, 330]],\n  ['dc mat', ['dc', 30, '1.5'], [10, 120, 660]],\n  ['regression: total stitches', ['dc', 15, '1'], [8, 96, 432]],\n  ['repair check: total stitches', ['dc', 12, '1'], [6, 72, 252]],\n  ['generated control 1', ['sc', 30, '0.5'], [30, 180, 2790]],\n  ['generated control 2', ['sc', 20, '1'], [10, 60, 330]],\n  ['generated control 3', ['tr', 15, '2'], 'error: stitch']],\n [['coaster', ['sc', 10, '0.5'], [10, 60, 330]], ['dc mat', ['dc', 30, '1.5'], [10, 120, 660]],\n  ['treble unknown', ['tr', 10, '1'], 'error: stitch'],\n  ['regression: total stitches', ['hdc', 12, '2'], [3, 24, 48]],\n  ['repair check: total stitches', ['dc', 15, '2'], [4, 48, 120]],\n  ['generated control 1', ['dc', 10, '1'], [5, 60, 180]],\n  ['generated control 2', ['sc', 5, '0.75'], [4, 24, 60]],\n  ['generated control 3', ['sc', 30, '1.5'], [10, 60, 330]]],\n [['dc mat', ['dc', 30, '1.5'], [10, 120, 660]], ['treble unknown', ['tr', 10, '1'], 'error: stitch'],\n  ['coaster', ['sc', 10, '0.5'], [10, 60, 330]],\n  ['regression: total stitches', ['dc', 5, '0.75'], [4, 48, 120]],\n  ['repair check: total stitches', ['sc', 20, '0.75'], [14, 84, 630]],\n  ['generated control 1', ['tr', 5, '1'], 'error: stitch'],\n  ['generated control 2', ['dc', 10, '1'], [5, 60, 180]],\n  ['generated control 3', ['sc', 15, '0.5'], [15, 90, 720]]]]\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":"2a63d6b350771242d194e0cdc972030c873b53274b09df9e4ec65cecbb325c8d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(stitch, diameter, round_height):\n    BASE = {'sc': 6, 'hdc': 8, 'dc': 12}\n    if stitch not in BASE:\n        return 'error: stitch'\n    h = Fraction(round_height)\n    rounds = math.ceil(Fraction(diameter) / (2 * h))\n    b = BASE[stitch]\n    return [rounds, b * rounds, b * rounds * rounds // 2]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['coaster', ['sc', 10, '0.5'], [10, 60, 330]], ['dc mat', ['dc', 30, '1.5'], [10, 120, 660]],\n  ['treble unknown', ['tr', 10, '1'], 'error: stitch'],\n  ['regression: total stitches', ['hdc', 15, '0.5'], [15, 120, 960]],\n  ['repair check: total stitches', ['hdc', 15, '1'], [8, 64, 288]],\n  ['generated control 1', ['hdc', 10, '2'], [3, 24, 48]],\n  ['generated control 2', ['tr', 5, '2'], 'error: stitch'],\n  ['generated control 3', ['tr', 10, '1.5'], 'error: stitch']],\n [['dc mat', ['dc', 30, '1.5'], [10, 120, 660]], ['treble unknown', ['tr', 10, '1'], 'error: stitch'],\n  ['coaster', ['sc', 10, '0.5'], [10, 60, 330]], ['regression: total stitches', ['sc', 20, '2'], [5, 30, 90]],\n  ['repair check: total stitches', ['dc', 20, '2'], [5, 60, 180]],\n  ['generated control 1', ['dc', 12, '1.5'], [4, 48, 120]],\n  ['generated control 2', ['tr', 5, '2'], 'error: stitch'],\n  ['generated control 3', ['tr', 30, '2'], 'error: stitch']],\n [['treble unknown', ['tr', 10, '1'], 'error: stitch'], ['coaster', ['sc', 10, '0.5'], [10, 60, 330]],\n  ['dc mat', ['dc', 30, '1.5'], [10, 120, 660]],\n  ['regression: total stitches', ['dc', 15, '1'], [8, 96, 432]],\n  ['repair check: total stitches', ['dc', 12, '1'], [6, 72, 252]],\n  ['generated control 1', ['sc', 30, '0.5'], [30, 180, 2790]],\n  ['generated control 2', ['sc', 20, '1'], [10, 60, 330]],\n  ['generated control 3', ['tr', 15, '2'], 'error: stitch']],\n [['coaster', ['sc', 10, '0.5'], [10, 60, 330]], ['dc mat', ['dc', 30, '1.5'], [10, 120, 660]],\n  ['treble unknown', ['tr', 10, '1'], 'error: stitch'],\n  ['regression: total stitches', ['hdc', 12, '2'], [3, 24, 48]],\n  ['repair check: total stitches', ['dc', 15, '2'], [4, 48, 120]],\n  ['generated control 1', ['dc', 10, '1'], [5, 60, 180]],\n  ['generated control 2', ['sc', 5, '0.75'], [4, 24, 60]],\n  ['generated control 3', ['sc', 30, '1.5'], [10, 60, 330]]],\n [['dc mat', ['dc', 30, '1.5'], [10, 120, 660]], ['treble unknown', ['tr', 10, '1'], 'error: stitch'],\n  ['coaster', ['sc', 10, '0.5'], [10, 60, 330]],\n  ['regression: total stitches', ['dc', 5, '0.75'], [4, 48, 120]],\n  ['repair check: total stitches', ['sc', 20, '0.75'], [14, 84, 630]],\n  ['generated control 1', ['tr', 5, '1'], 'error: stitch'],\n  ['generated control 2', ['dc', 10, '1'], [5, 60, 180]],\n  ['generated control 3', ['sc', 15, '0.5'], [15, 90, 720]]]]\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":"207f890a86be5a9d82553ab6b0f9135aacbe55995fd5cea89d84cbb69904230c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(stitch, diameter, round_height):\n    BASE = {'sc': 6, 'hdc': 8, 'dc': 12}\n    if stitch not in BASE:\n        return 'error: stitch'\n    h = Fraction(round_height)\n    rounds = math.ceil(Fraction(diameter) / (2 * h))\n    b = BASE[stitch]\n    return [rounds, b * rounds, b * rounds * (rounds + 1) // 2]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['coaster', ['sc', 10, '0.5'], [10, 60, 330]], ['dc mat', ['dc', 30, '1.5'], [10, 120, 660]],\n  ['treble unknown', ['tr', 10, '1'], 'error: stitch'],\n  ['regression: total stitches', ['hdc', 15, '0.5'], [15, 120, 960]],\n  ['repair check: total stitches', ['hdc', 15, '1'], [8, 64, 288]],\n  ['generated control 1', ['hdc', 10, '2'], [3, 24, 48]],\n  ['generated control 2', ['tr', 5, '2'], 'error: stitch'],\n  ['generated control 3', ['tr', 10, '1.5'], 'error: stitch']],\n [['dc mat', ['dc', 30, '1.5'], [10, 120, 660]], ['treble unknown', ['tr', 10, '1'], 'error: stitch'],\n  ['coaster', ['sc', 10, '0.5'], [10, 60, 330]], ['regression: total stitches', ['sc', 20, '2'], [5, 30, 90]],\n  ['repair check: total stitches', ['dc', 20, '2'], [5, 60, 180]],\n  ['generated control 1', ['dc', 12, '1.5'], [4, 48, 120]],\n  ['generated control 2', ['tr', 5, '2'], 'error: stitch'],\n  ['generated control 3', ['tr', 30, '2'], 'error: stitch']],\n [['treble unknown', ['tr', 10, '1'], 'error: stitch'], ['coaster', ['sc', 10, '0.5'], [10, 60, 330]],\n  ['dc mat', ['dc', 30, '1.5'], [10, 120, 660]],\n  ['regression: total stitches', ['dc', 15, '1'], [8, 96, 432]],\n  ['repair check: total stitches', ['dc', 12, '1'], [6, 72, 252]],\n  ['generated control 1', ['sc', 30, '0.5'], [30, 180, 2790]],\n  ['generated control 2', ['sc', 20, '1'], [10, 60, 330]],\n  ['generated control 3', ['tr', 15, '2'], 'error: stitch']],\n [['coaster', ['sc', 10, '0.5'], [10, 60, 330]], ['dc mat', ['dc', 30, '1.5'], [10, 120, 660]],\n  ['treble unknown', ['tr', 10, '1'], 'error: stitch'],\n  ['regression: total stitches', ['hdc', 12, '2'], [3, 24, 48]],\n  ['repair check: total stitches', ['dc', 15, '2'], [4, 48, 120]],\n  ['generated control 1', ['dc', 10, '1'], [5, 60, 180]],\n  ['generated control 2', ['sc', 5, '0.75'], [4, 24, 60]],\n  ['generated control 3', ['sc', 30, '1.5'], [10, 60, 330]]],\n [['dc mat', ['dc', 30, '1.5'], [10, 120, 660]], ['treble unknown', ['tr', 10, '1'], 'error: stitch'],\n  ['coaster', ['sc', 10, '0.5'], [10, 60, 330]],\n  ['regression: total stitches', ['dc', 5, '0.75'], [4, 48, 120]],\n  ['repair check: total stitches', ['sc', 20, '0.75'], [14, 84, 630]],\n  ['generated control 1', ['tr', 5, '1'], 'error: stitch'],\n  ['generated control 2', ['dc', 10, '1'], [5, 60, 180]],\n  ['generated control 3', ['sc', 15, '0.5'], [15, 90, 720]]]]\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 contract stated in full here; it is a bounded teaching model, not an authoritative reference or standards implementation. 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-knitting_and_sewing_pattern_grading-crochet-circle-total-stitches","generated_at":"2026-09-29T14:52:34.280961+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Amigurumi and rug patterns size flat circles by rounds of evenly spaced increases.","repair":"Total is base*rounds*(rounds+1)/2.","root_cause":"The triangular sum uses rounds squared over two.","sha256":"8cb7cf66c296fc28b99ddf808d8395f6270d12ef13b6a2ab2880e2a42ecc6a3c","title":"Flat crochet circle planner: total stitches · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.462,"exit_code":1,"observations":[{"actual":[10,60,270],"check":"coaster","expected":[10,60,330],"passed":false},{"actual":[10,120,540],"check":"dc mat","expected":[10,120,660],"passed":false},{"actual":"error: stitch","check":"treble unknown","expected":"error: stitch","passed":true},{"actual":[15,120,840],"check":"regression: total stitches","expected":[15,120,960],"passed":false},{"actual":[8,64,224],"check":"repair check: total stitches","expected":[8,64,288],"passed":false},{"actual":[3,24,24],"check":"generated control 1","expected":[3,24,48],"passed":false},{"actual":"error: stitch","check":"generated control 2","expected":"error: stitch","passed":true},{"actual":"error: stitch","check":"generated control 3","expected":"error: stitch","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"coaster\", \"actual\": [10, 60, 270], \"expected\": [10, 60, 330], \"passed\": false}, {\"check\": \"dc mat\", \"actual\": [10, 120, 540], \"expected\": [10, 120, 660], \"passed\": false}, {\"check\": \"treble unknown\", \"actual\": \"error: stitch\", \"expected\": \"error: stitch\", \"passed\": true}, {\"check\": \"regression: total stitches\", \"actual\": [15, 120, 840], \"expected\": [15, 120, 960], \"passed\": false}, {\"check\": \"repair check: total stitches\", \"actual\": [8, 64, 224], \"expected\": [8, 64, 288], \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": [3, 24, 24], \"expected\": [3, 24, 48], \"passed\": false}, {\"check\": \"generated control 2\", \"actual\": \"error: stitch\", \"expected\": \"error: stitch\", \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": \"error: stitch\", \"expected\": \"error: stitch\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.614,"exit_code":1,"observations":[{"actual":[10,60,300],"check":"coaster","expected":[10,60,330],"passed":false},{"actual":[10,120,600],"check":"dc mat","expected":[10,120,660],"passed":false},{"actual":"error: stitch","check":"treble unknown","expected":"error: stitch","passed":true},{"actual":[15,120,900],"check":"regression: total stitches","expected":[15,120,960],"passed":false},{"actual":[8,64,256],"check":"repair check: total stitches","expected":[8,64,288],"passed":false},{"actual":[3,24,36],"check":"generated control 1","expected":[3,24,48],"passed":false},{"actual":"error: stitch","check":"generated control 2","expected":"error: stitch","passed":true},{"actual":"error: stitch","check":"generated control 3","expected":"error: stitch","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"coaster\", \"actual\": [10, 60, 300], \"expected\": [10, 60, 330], \"passed\": false}, {\"check\": \"dc mat\", \"actual\": [10, 120, 600], \"expected\": [10, 120, 660], \"passed\": false}, {\"check\": \"treble unknown\", \"actual\": \"error: stitch\", \"expected\": \"error: stitch\", \"passed\": true}, {\"check\": \"regression: total stitches\", \"actual\": [15, 120, 900], \"expected\": [15, 120, 960], \"passed\": false}, {\"check\": \"repair check: total stitches\", \"actual\": [8, 64, 256], \"expected\": [8, 64, 288], \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": [3, 24, 36], \"expected\": [3, 24, 48], \"passed\": false}, {\"check\": \"generated control 2\", \"actual\": \"error: stitch\", \"expected\": \"error: stitch\", \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": \"error: stitch\", \"expected\": \"error: stitch\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.7,"exit_code":0,"observations":[{"actual":[10,60,330],"check":"coaster","expected":[10,60,330],"passed":true},{"actual":[10,120,660],"check":"dc mat","expected":[10,120,660],"passed":true},{"actual":"error: stitch","check":"treble unknown","expected":"error: stitch","passed":true},{"actual":[15,120,960],"check":"regression: total stitches","expected":[15,120,960],"passed":true},{"actual":[8,64,288],"check":"repair check: total stitches","expected":[8,64,288],"passed":true},{"actual":[3,24,48],"check":"generated control 1","expected":[3,24,48],"passed":true},{"actual":"error: stitch","check":"generated control 2","expected":"error: stitch","passed":true},{"actual":"error: stitch","check":"generated control 3","expected":"error: stitch","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"coaster\", \"actual\": [10, 60, 330], \"expected\": [10, 60, 330], \"passed\": true}, {\"check\": \"dc mat\", \"actual\": [10, 120, 660], \"expected\": [10, 120, 660], \"passed\": true}, {\"check\": \"treble unknown\", \"actual\": \"error: stitch\", \"expected\": \"error: stitch\", \"passed\": true}, {\"check\": \"regression: total stitches\", \"actual\": [15, 120, 960], \"expected\": [15, 120, 960], \"passed\": true}, {\"check\": \"repair check: total stitches\", \"actual\": [8, 64, 288], \"expected\": [8, 64, 288], \"passed\": true}, {\"check\": \"generated control 1\", \"actual\": [3, 24, 48], \"expected\": [3, 24, 48], \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": \"error: stitch\", \"expected\": \"error: stitch\", \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": \"error: stitch\", \"expected\": \"error: stitch\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}