{"abstract":"A 4+2 rib ends up with a multiple of 4, so it does not start and end on knit 2.","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":"Adding plus flips the residue for odd offsets.","family":"w2-knitting_and_sewing_pattern_grading-pick-up-stitches-rib-residue","id":"FA-97501","implementations":{"attempt":{"sha256":"cb20c80d7e915713797fa2c4b71a5a8cefc72bd238f8ccaec478f643f48fcb94","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(3 * n, 4) + 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: rib residue', [[['vertical', 7]], 6, 3], [5, 9]],\n  ['repair check: rib residue', [[['vertical', 30], ['vertical', 41], ['vertical', 10]], 6, 2], [62, 62]],\n  ['generated control 1', [[['horizontal', 13]], 6, 0], [13, 18]],\n  ['generated control 2', [[['diagonal', 41], ['horizontal', 10]], 2, 3], [47, 47]],\n  ['generated control 3',\n   [[['diagonal', 18], ['horizontal', 10], ['horizontal', 13], ['diagonal', 22]], 2, 2], [59, 60]]],\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: rib residue', [[['diagonal', 10]], 2, 1], [9, 9]],\n  ['repair check: rib residue', [[['vertical', 7], ['horizontal', 13], ['horizontal', 20]], 6, 1], [38, 43]],\n  ['generated control 1', [[['vertical', 20]], 6, 0], [15, 18]],\n  ['generated control 2', [[['horizontal', 18], ['diagonal', 7], ['vertical', 13], ['vertical', 13]], 6, 3],\n   [44, 45]],\n  ['generated control 3', [[['diagonal', 18]], 4, 1], [16, 17]]],\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: rib residue', [[['vertical', 22]], 4, 2], [17, 18]],\n  ['repair check: rib residue', [[['vertical', 7]], 6, 2], [5, 8]],\n  ['generated control 1', [[['vertical', 30], ['vertical', 30], ['vertical', 41]], 1, 2], [77, 77]],\n  ['generated control 2',\n   [[['vertical', 41], ['diagonal', 22], ['horizontal', 18], ['horizontal', 60]], 2, 0], [129, 130]],\n  ['generated control 3', [[['horizontal', 30], ['diagonal', 22], ['diagonal', 20]], 6, 3], [68, 69]]],\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: rib residue', [[['diagonal', 20]], 4, 2], [18, 18]],\n  ['repair check: rib residue',\n   [[['vertical', 18], ['diagonal', 60], ['vertical', 13], ['horizontal', 22]], 4, 3], [100, 103]],\n  ['generated control 1', [[['diagonal', 7]], 1, 0], [6, 6]],\n  ['generated control 2', [[['vertical', 22], ['diagonal', 7], ['horizontal', 30], ['diagonal', 22]], 6, 0],\n   [73, 78]],\n  ['generated control 3', [[['vertical', 22]], 2, 0], [17, 18]]],\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: rib residue', [[['diagonal', 22], ['vertical', 22]], 4, 3], [37, 39]],\n  ['repair check: rib residue',\n   [[['vertical', 22], ['vertical', 20], ['horizontal', 20], ['horizontal', 10]], 4, 1], [62, 65]],\n  ['generated control 1', [[['diagonal', 20]], 6, 3], [18, 21]],\n  ['generated control 2', [[['vertical', 10]], 1, 0], [8, 8]],\n  ['generated control 3', [[['diagonal', 10], ['vertical', 13], ['vertical', 13], ['horizontal', 22]], 6, 3],\n   [51, 51]]]]\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":"97c591a75b9dae1e8f1734e5b487273b876a3cd68cf8c235ec47e51f314b79d0","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(3 * n, 4) + 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 % 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: rib residue', [[['vertical', 7]], 6, 3], [5, 9]],\n  ['repair check: rib residue', [[['vertical', 30], ['vertical', 41], ['vertical', 10]], 6, 2], [62, 62]],\n  ['generated control 1', [[['horizontal', 13]], 6, 0], [13, 18]],\n  ['generated control 2', [[['diagonal', 41], ['horizontal', 10]], 2, 3], [47, 47]],\n  ['generated control 3',\n   [[['diagonal', 18], ['horizontal', 10], ['horizontal', 13], ['diagonal', 22]], 2, 2], [59, 60]]],\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: rib residue', [[['diagonal', 10]], 2, 1], [9, 9]],\n  ['repair check: rib residue', [[['vertical', 7], ['horizontal', 13], ['horizontal', 20]], 6, 1], [38, 43]],\n  ['generated control 1', [[['vertical', 20]], 6, 0], [15, 18]],\n  ['generated control 2', [[['horizontal', 18], ['diagonal', 7], ['vertical', 13], ['vertical', 13]], 6, 3],\n   [44, 45]],\n  ['generated control 3', [[['diagonal', 18]], 4, 1], [16, 17]]],\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: rib residue', [[['vertical', 22]], 4, 2], [17, 18]],\n  ['repair check: rib residue', [[['vertical', 7]], 6, 2], [5, 8]],\n  ['generated control 1', [[['vertical', 30], ['vertical', 30], ['vertical', 41]], 1, 2], [77, 77]],\n  ['generated control 2',\n   [[['vertical', 41], ['diagonal', 22], ['horizontal', 18], ['horizontal', 60]], 2, 0], [129, 130]],\n  ['generated control 3', [[['horizontal', 30], ['diagonal', 22], ['diagonal', 20]], 6, 3], [68, 69]]],\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: rib residue', [[['diagonal', 20]], 4, 2], [18, 18]],\n  ['repair check: rib residue',\n   [[['vertical', 18], ['diagonal', 60], ['vertical', 13], ['horizontal', 22]], 4, 3], [100, 103]],\n  ['generated control 1', [[['diagonal', 7]], 1, 0], [6, 6]],\n  ['generated control 2', [[['vertical', 22], ['diagonal', 7], ['horizontal', 30], ['diagonal', 22]], 6, 0],\n   [73, 78]],\n  ['generated control 3', [[['vertical', 22]], 2, 0], [17, 18]]],\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: rib residue', [[['diagonal', 22], ['vertical', 22]], 4, 3], [37, 39]],\n  ['repair check: rib residue',\n   [[['vertical', 22], ['vertical', 20], ['horizontal', 20], ['horizontal', 10]], 4, 1], [62, 65]],\n  ['generated control 1', [[['diagonal', 20]], 6, 3], [18, 21]],\n  ['generated control 2', [[['vertical', 10]], 1, 0], [8, 8]],\n  ['generated control 3', [[['diagonal', 10], ['vertical', 13], ['vertical', 13], ['horizontal', 22]], 6, 3],\n   [51, 51]]]]\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-rib-residue","generated_at":"2026-09-29T14:52:32.827481+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 residue ignores the +plus part of the rib formula.","sha256":"44213657d939c9baf4b3b7c931d6d51cfe6a79e18a670aa4f0fb4be7c56407a8","title":"Neckband pick-up counter: rib residue · 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.565,"exit_code":1,"observations":[{"actual":[82,82],"check":"front neck","expected":[82,82],"passed":true},{"actual":[22,22],"check":"already valid","expected":[22,22],"passed":true},{"actual":[12,12],"check":"diagonal edge","expected":[12,12],"passed":true},{"actual":[5,9],"check":"regression: rib residue","expected":[5,9],"passed":true},{"actual":[62,64],"check":"repair check: rib residue","expected":[62,62],"passed":false},{"actual":[13,18],"check":"generated control 1","expected":[13,18],"passed":true},{"actual":[47,47],"check":"generated control 2","expected":[47,47],"passed":true},{"actual":[59,60],"check":"generated control 3","expected":[59,60],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"front neck\", \"actual\": [82, 82], \"expected\": [82, 82], \"passed\": true}, {\"check\": \"already valid\", \"actual\": [22, 22], \"expected\": [22, 22], \"passed\": true}, {\"check\": \"diagonal edge\", \"actual\": [12, 12], \"expected\": [12, 12], \"passed\": true}, {\"check\": \"regression: rib residue\", \"actual\": [5, 9], \"expected\": [5, 9], \"passed\": true}, {\"check\": \"repair check: rib residue\", \"actual\": [62, 64], \"expected\": [62, 62], \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": [13, 18], \"expected\": [13, 18], \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": [47, 47], \"expected\": [47, 47], \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": [59, 60], \"expected\": [59, 60], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.755,"exit_code":1,"observations":[{"actual":[82,84],"check":"front neck","expected":[82,82],"passed":false},{"actual":[22,24],"check":"already valid","expected":[22,22],"passed":false},{"actual":[12,12],"check":"diagonal edge","expected":[12,12],"passed":true},{"actual":[5,6],"check":"regression: rib residue","expected":[5,9],"passed":false},{"actual":[62,66],"check":"repair check: rib residue","expected":[62,62],"passed":false},{"actual":[13,18],"check":"generated control 1","expected":[13,18],"passed":true},{"actual":[47,48],"check":"generated control 2","expected":[47,47],"passed":false},{"actual":[59,60],"check":"generated control 3","expected":[59,60],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"front neck\", \"actual\": [82, 84], \"expected\": [82, 82], \"passed\": false}, {\"check\": \"already valid\", \"actual\": [22, 24], \"expected\": [22, 22], \"passed\": false}, {\"check\": \"diagonal edge\", \"actual\": [12, 12], \"expected\": [12, 12], \"passed\": true}, {\"check\": \"regression: rib residue\", \"actual\": [5, 6], \"expected\": [5, 9], \"passed\": false}, {\"check\": \"repair check: rib residue\", \"actual\": [62, 66], \"expected\": [62, 62], \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": [13, 18], \"expected\": [13, 18], \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": [47, 48], \"expected\": [47, 47], \"passed\": false}, {\"check\": \"generated control 3\", \"actual\": [59, 60], \"expected\": [59, 60], \"passed\": true}], \"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."}}