{"abstract":"A 40-row edge picks up 53 stitches instead of 30, flaring the band.","category":"Knitting and sewing pattern grading","checks":8,"contract":"Edges [kind, count]: vertical picks up 3 per 4 rows, diagonal 9 per 10 rows, each rounded half-up per edge; horizontal picks 1 per stitch; other kinds -> \"error: edge\". The rib needs a count of multiple*k + plus; adjust the total up to the next such count (unchanged if already valid). Return [raw_total, adjusted].","contract_signature":"edges, multiple, plus","evaluation_group":"w2-knitting_and_sewing_pattern_grading-pick-up-stitches","failed_approach":"The 2-in-3 garter ratio does not match the stockinette contract.","family":"w2-knitting_and_sewing_pattern_grading-pick-up-stitches-vertical-ratio","id":"FA-97491","implementations":{"attempt":{"sha256":"932f86e0b4880a8ba3718b813f3dd77d2bcf5a0da7f45554bb7aff12dc5f14bd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(edges, multiple, plus):\n    total = 0\n    for kind, n in edges:\n        if kind == 'vertical':\n            total += math.floor(Fraction(2 * n, 3) + Fraction(1, 2))\n        elif kind == 'horizontal':\n            total += n\n        elif kind == 'diagonal':\n            total += math.floor(Fraction(9 * n, 10) + Fraction(1, 2))\n        else:\n            return 'error: edge'\n    r = (total - plus) % multiple\n    adjusted = total if r == 0 else total + (multiple - r)\n    return [total, adjusted]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['front neck', [[['vertical', 40], ['horizontal', 22], ['vertical', 40]], 4, 2], [82, 82]],\n  ['already valid', [[['horizontal', 22]], 4, 2], [22, 22]],\n  ['diagonal edge', [[['diagonal', 13]], 2, 0], [12, 12]],\n  ['regression: vertical ratio', [[['vertical', 30], ['vertical', 41]], 1, 3], [54, 54]],\n  ['repair check: vertical ratio',\n   [[['vertical', 20], ['vertical', 41], ['horizontal', 20], ['diagonal', 7]], 4, 2], [72, 74]],\n  ['generated control 1', [[['vertical', 20]], 2, 0], [15, 16]],\n  ['generated control 2', [[['vertical', 20], ['vertical', 7]], 2, 1], [20, 21]],\n  ['generated control 3', [[['diagonal', 60], ['vertical', 30], ['vertical', 22], ['horizontal', 22]], 6, 3],\n   [116, 117]]],\n [['already valid', [[['horizontal', 22]], 4, 2], [22, 22]],\n  ['diagonal edge', [[['diagonal', 13]], 2, 0], [12, 12]],\n  ['unknown edge', [[['curve', 10]], 2, 0], 'error: edge'],\n  ['regression: vertical ratio',\n   [[['vertical', 18], ['diagonal', 60], ['vertical', 18], ['horizontal', 22]], 6, 2], [104, 104]],\n  ['repair check: vertical ratio', [[['vertical', 22], ['horizontal', 13], ['vertical', 20]], 2, 1],\n   [45, 45]],\n  ['generated control 1', [[['horizontal', 20], ['diagonal', 60]], 6, 0], [74, 78]],\n  ['generated control 2', [[['diagonal', 60]], 4, 2], [54, 54]],\n  ['generated control 3', [[['vertical', 20], ['vertical', 18]], 6, 1], [29, 31]]],\n [['diagonal edge', [[['diagonal', 13]], 2, 0], [12, 12]],\n  ['unknown edge', [[['curve', 10]], 2, 0], 'error: edge'],\n  ['front neck', [[['vertical', 40], ['horizontal', 22], ['vertical', 40]], 4, 2], [82, 82]],\n  ['regression: vertical ratio', [[['horizontal', 10], ['vertical', 10]], 4, 1], [18, 21]],\n  ['repair check: vertical ratio', [[['vertical', 18]], 4, 1], [14, 17]],\n  ['generated control 1', [[['horizontal', 7], ['diagonal', 7], ['vertical', 7]], 4, 2], [18, 18]],\n  ['generated control 2', [[['vertical', 18], ['horizontal', 18]], 4, 2], [32, 34]],\n  ['generated control 3', [[['horizontal', 60], ['diagonal', 20], ['vertical', 20]], 4, 1], [93, 93]]],\n [['unknown edge', [[['curve', 10]], 2, 0], 'error: edge'],\n  ['front neck', [[['vertical', 40], ['horizontal', 22], ['vertical', 40]], 4, 2], [82, 82]],\n  ['already valid', [[['horizontal', 22]], 4, 2], [22, 22]],\n  ['regression: vertical ratio',\n   [[['vertical', 60], ['vertical', 10], ['horizontal', 30], ['vertical', 7]], 2, 2], [88, 88]],\n  ['repair check: vertical ratio', [[['vertical', 20], ['diagonal', 41], ['diagonal', 10]], 6, 2], [61, 62]],\n  ['generated control 1', [[['horizontal', 22]], 2, 2], [22, 22]],\n  ['generated control 2', [[['diagonal', 60], ['vertical', 18], ['diagonal', 41], ['vertical', 22]], 1, 2],\n   [122, 122]],\n  ['generated control 3', [[['horizontal', 7], ['horizontal', 22], ['vertical', 41], ['vertical', 41]], 1, 1],\n   [91, 91]]],\n [['front neck', [[['vertical', 40], ['horizontal', 22], ['vertical', 40]], 4, 2], [82, 82]],\n  ['already valid', [[['horizontal', 22]], 4, 2], [22, 22]],\n  ['diagonal edge', [[['diagonal', 13]], 2, 0], [12, 12]],\n  ['regression: vertical ratio', [[['horizontal', 7], ['vertical', 13]], 2, 2], [17, 18]],\n  ['repair check: vertical ratio', [[['vertical', 22], ['horizontal', 18]], 1, 3], [35, 35]],\n  ['generated control 1',\n   [[['vertical', 18], ['vertical', 13], ['diagonal', 41], ['horizontal', 41], ['curve', 10]], 2, 2],\n   'error: edge'],\n  ['generated control 2', [[['vertical', 41], ['horizontal', 13], ['vertical', 20], ['vertical', 7]], 1, 0],\n   [64, 64]],\n  ['generated control 3', [[['horizontal', 41]], 6, 3], [41, 45]]]]\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":"ddbcd54ee35d6d36fc0b233201e7da2d4bbb3a20f88e514ce985a67bd05b0568","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(edges, multiple, plus):\n    total = 0\n    for kind, n in edges:\n        if kind == 'vertical':\n            total += math.floor(Fraction(4 * n, 3) + Fraction(1, 2))\n        elif kind == 'horizontal':\n            total += n\n        elif kind == 'diagonal':\n            total += math.floor(Fraction(9 * n, 10) + Fraction(1, 2))\n        else:\n            return 'error: edge'\n    r = (total - plus) % multiple\n    adjusted = total if r == 0 else total + (multiple - r)\n    return [total, adjusted]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['front neck', [[['vertical', 40], ['horizontal', 22], ['vertical', 40]], 4, 2], [82, 82]],\n  ['already valid', [[['horizontal', 22]], 4, 2], [22, 22]],\n  ['diagonal edge', [[['diagonal', 13]], 2, 0], [12, 12]],\n  ['regression: vertical ratio', [[['vertical', 30], ['vertical', 41]], 1, 3], [54, 54]],\n  ['repair check: vertical ratio',\n   [[['vertical', 20], ['vertical', 41], ['horizontal', 20], ['diagonal', 7]], 4, 2], [72, 74]],\n  ['generated control 1', [[['vertical', 20]], 2, 0], [15, 16]],\n  ['generated control 2', [[['vertical', 20], ['vertical', 7]], 2, 1], [20, 21]],\n  ['generated control 3', [[['diagonal', 60], ['vertical', 30], ['vertical', 22], ['horizontal', 22]], 6, 3],\n   [116, 117]]],\n [['already valid', [[['horizontal', 22]], 4, 2], [22, 22]],\n  ['diagonal edge', [[['diagonal', 13]], 2, 0], [12, 12]],\n  ['unknown edge', [[['curve', 10]], 2, 0], 'error: edge'],\n  ['regression: vertical ratio',\n   [[['vertical', 18], ['diagonal', 60], ['vertical', 18], ['horizontal', 22]], 6, 2], [104, 104]],\n  ['repair check: vertical ratio', [[['vertical', 22], ['horizontal', 13], ['vertical', 20]], 2, 1],\n   [45, 45]],\n  ['generated control 1', [[['horizontal', 20], ['diagonal', 60]], 6, 0], [74, 78]],\n  ['generated control 2', [[['diagonal', 60]], 4, 2], [54, 54]],\n  ['generated control 3', [[['vertical', 20], ['vertical', 18]], 6, 1], [29, 31]]],\n [['diagonal edge', [[['diagonal', 13]], 2, 0], [12, 12]],\n  ['unknown edge', [[['curve', 10]], 2, 0], 'error: edge'],\n  ['front neck', [[['vertical', 40], ['horizontal', 22], ['vertical', 40]], 4, 2], [82, 82]],\n  ['regression: vertical ratio', [[['horizontal', 10], ['vertical', 10]], 4, 1], [18, 21]],\n  ['repair check: vertical ratio', [[['vertical', 18]], 4, 1], [14, 17]],\n  ['generated control 1', [[['horizontal', 7], ['diagonal', 7], ['vertical', 7]], 4, 2], [18, 18]],\n  ['generated control 2', [[['vertical', 18], ['horizontal', 18]], 4, 2], [32, 34]],\n  ['generated control 3', [[['horizontal', 60], ['diagonal', 20], ['vertical', 20]], 4, 1], [93, 93]]],\n [['unknown edge', [[['curve', 10]], 2, 0], 'error: edge'],\n  ['front neck', [[['vertical', 40], ['horizontal', 22], ['vertical', 40]], 4, 2], [82, 82]],\n  ['already valid', [[['horizontal', 22]], 4, 2], [22, 22]],\n  ['regression: vertical ratio',\n   [[['vertical', 60], ['vertical', 10], ['horizontal', 30], ['vertical', 7]], 2, 2], [88, 88]],\n  ['repair check: vertical ratio', [[['vertical', 20], ['diagonal', 41], ['diagonal', 10]], 6, 2], [61, 62]],\n  ['generated control 1', [[['horizontal', 22]], 2, 2], [22, 22]],\n  ['generated control 2', [[['diagonal', 60], ['vertical', 18], ['diagonal', 41], ['vertical', 22]], 1, 2],\n   [122, 122]],\n  ['generated control 3', [[['horizontal', 7], ['horizontal', 22], ['vertical', 41], ['vertical', 41]], 1, 1],\n   [91, 91]]],\n [['front neck', [[['vertical', 40], ['horizontal', 22], ['vertical', 40]], 4, 2], [82, 82]],\n  ['already valid', [[['horizontal', 22]], 4, 2], [22, 22]],\n  ['diagonal edge', [[['diagonal', 13]], 2, 0], [12, 12]],\n  ['regression: vertical ratio', [[['horizontal', 7], ['vertical', 13]], 2, 2], [17, 18]],\n  ['repair check: vertical ratio', [[['vertical', 22], ['horizontal', 18]], 1, 3], [35, 35]],\n  ['generated control 1',\n   [[['vertical', 18], ['vertical', 13], ['diagonal', 41], ['horizontal', 41], ['curve', 10]], 2, 2],\n   'error: edge'],\n  ['generated control 2', [[['vertical', 41], ['horizontal', 13], ['vertical', 20], ['vertical', 7]], 1, 0],\n   [64, 64]],\n  ['generated control 3', [[['horizontal', 41]], 6, 3], [41, 45]]]]\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-pick-up-stitches-vertical-ratio","generated_at":"2026-09-29T14:52:32.746471+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Neckbands and button bands pick up stitches at edge ratios and must fit the rib repeat.","root_cause":"The 3-per-4-rows ratio is inverted.","sha256":"7ecb639fa2c1965a5b579a93b012b4630f64af41e74c5c3195c1aaf90c02f3dc","title":"Neckband pick-up counter: vertical ratio · 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":43.437,"exit_code":1,"observations":[{"actual":[76,78],"check":"front neck","expected":[82,82],"passed":false},{"actual":[22,22],"check":"already valid","expected":[22,22],"passed":true},{"actual":[12,12],"check":"diagonal edge","expected":[12,12],"passed":true},{"actual":[47,47],"check":"regression: vertical ratio","expected":[54,54],"passed":false},{"actual":[66,66],"check":"repair check: vertical ratio","expected":[72,74],"passed":false},{"actual":[13,14],"check":"generated control 1","expected":[15,16],"passed":false},{"actual":[18,19],"check":"generated control 2","expected":[20,21],"passed":false},{"actual":[111,111],"check":"generated control 3","expected":[116,117],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"front neck\", \"actual\": [76, 78], \"expected\": [82, 82], \"passed\": false}, {\"check\": \"already valid\", \"actual\": [22, 22], \"expected\": [22, 22], \"passed\": true}, {\"check\": \"diagonal edge\", \"actual\": [12, 12], \"expected\": [12, 12], \"passed\": true}, {\"check\": \"regression: vertical ratio\", \"actual\": [47, 47], \"expected\": [54, 54], \"passed\": false}, {\"check\": \"repair check: vertical ratio\", \"actual\": [66, 66], \"expected\": [72, 74], \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": [13, 14], \"expected\": [15, 16], \"passed\": false}, {\"check\": \"generated control 2\", \"actual\": [18, 19], \"expected\": [20, 21], \"passed\": false}, {\"check\": \"generated control 3\", \"actual\": [111, 111], \"expected\": [116, 117], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.036,"exit_code":1,"observations":[{"actual":[128,130],"check":"front neck","expected":[82,82],"passed":false},{"actual":[22,22],"check":"already valid","expected":[22,22],"passed":true},{"actual":[12,12],"check":"diagonal edge","expected":[12,12],"passed":true},{"actual":[95,95],"check":"regression: vertical ratio","expected":[54,54],"passed":false},{"actual":[108,110],"check":"repair check: vertical ratio","expected":[72,74],"passed":false},{"actual":[27,28],"check":"generated control 1","expected":[15,16],"passed":false},{"actual":[36,37],"check":"generated control 2","expected":[20,21],"passed":false},{"actual":[145,147],"check":"generated control 3","expected":[116,117],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"front neck\", \"actual\": [128, 130], \"expected\": [82, 82], \"passed\": false}, {\"check\": \"already valid\", \"actual\": [22, 22], \"expected\": [22, 22], \"passed\": true}, {\"check\": \"diagonal edge\", \"actual\": [12, 12], \"expected\": [12, 12], \"passed\": true}, {\"check\": \"regression: vertical ratio\", \"actual\": [95, 95], \"expected\": [54, 54], \"passed\": false}, {\"check\": \"repair check: vertical ratio\", \"actual\": [108, 110], \"expected\": [72, 74], \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": [27, 28], \"expected\": [15, 16], \"passed\": false}, {\"check\": \"generated control 2\", \"actual\": [36, 37], \"expected\": [20, 21], \"passed\": false}, {\"check\": \"generated control 3\", \"actual\": [145, 147], \"expected\": [116, 117], \"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."}}