FAILURE MAP
← Case archive

FA-97466 / Knitting and sewing pattern grading / Open access

Knitting chart row reader: wrong-side parity · case 01

Row 1 of a chart starting on the right side is read as a wrong-side row.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The parity test marks odd rows as WS, confusing 0- and 1-based numbering.

THE FAILURE

The parity test marks odd rows as WS, confusing 0- and 1-based numbering.

Unsuccessful approach: Ignoring start_ws misreads charts that begin on the wrong side.

Case contract

chart rows are listed bottom-up (row 1 first), cells left-to-right as drawn. Rounds and RS rows read right-to-left unchanged. Flat WS rows (even rows, or odd rows when start_ws) read left-to-right with swaps k<->p, k2tog->p2tog, ssk->ssp, yo stays. Runs of identical stitches merge: k/p as "k3", others as "yo" or "yo x2". Row outside 1..len -> error.

Why this case matters

Chart readers must flip reading direction and stitch meaning on wrong-side rows.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(chart, row, in_round, start_ws):
    SWAP = {'k': 'p', 'p': 'k', 'k2tog': 'p2tog', 'ssk': 'ssp', 'yo': 'yo'}
    if not 1 <= row <= len(chart):
        return 'error: no such row'
    cells = list(chart[row - 1])
    ws = (not in_round) and ((row % 2 == 1) != start_ws)
    if ws:
        seq = [SWAP.get(c, c) for c in cells]
    else:
        seq = cells[::-1]
    out = []
    for c in seq:
        if out and out[-1][0] == c:
            out[-1][1] += 1
        else:
            out.append([c, 1])
    return ', '.join(c + str(n) if c in ('k', 'p') else (c if n == 1 else '%s x%d' % (c, n)) for c, n in out)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['RS row', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'k', 'k']], 1, False, False],
   'k2tog, yo, p1, k2'],
  ['WS row swapped', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'ssk', 'k']], 2, False, False],
   'k2, p1, ssp, p1'],
  ['in the round', [[['k', 'p'], ['ssk', 'k']], 2, True, False], 'k1, ssk'],
  ['regression: wrong-side parity',
   [[['yo', 'yo', 'yo', 'yo', 'k2tog', 'yo'], ['k', 'k', 'p', 'ssk', 'yo', 'p'],
     ['k', 'k2tog', 'yo', 'k', 'yo', 'p'], ['yo', 'yo', 'k2tog', 'yo', 'k', 'k'],
     ['k2tog', 'ssk', 'k2tog', 'k2tog', 'p', 'yo']],
    2, False, True],
   'p1, yo, ssk, p1, k2'],
  ['repair check: wrong-side parity',
   [[['p', 'p', 'p', 'ssk', 'p', 'k2tog'], ['ssk', 'k', 'k2tog', 'k2tog', 'k2tog', 'yo'],
     ['yo', 'k', 'k2tog', 'yo', 'k2tog', 'p'], ['k', 'k2tog', 'yo', 'yo', 'k', 'k']],
    4, False, True],
   'k2, yo x2, k2tog, k1'],
  ['generated control 1',
   [[['p', 'k2tog', 'k', 'k', 'ssk', 'p', 'yo'], ['ssk', 'k', 'k', 'p', 'k', 'k2tog', 'ssk'],
     ['p', 'k', 'yo', 'k', 'p', 'ssk', 'ssk']],
    1, True, False],
   'yo, p1, ssk, k2, k2tog, p1'],
  ['generated control 2',
   [[['yo', 'yo', 'k2tog'], ['k2tog', 'k2tog', 'ssk'], ['p', 'yo', 'k2tog'], ['k2tog', 'k2tog', 'k2tog'],
     ['p', 'k', 'k2tog'], ['k', 'ssk', 'yo']],
    4, True, True],
   'k2tog x3'],
  ['generated control 3',
   [[['k2tog', 'p', 'p'], ['ssk', 'yo', 'yo'], ['k', 'k2tog', 'k2tog'], ['k2tog', 'k', 'yo'],
     ['yo', 'yo', 'k']],
    2, False, False],
   'ssp, yo x2']],
 [['WS row swapped', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'ssk', 'k']], 2, False, False],
   'k2, p1, ssp, p1'],
  ['in the round', [[['k', 'p'], ['ssk', 'k']], 2, True, False], 'k1, ssk'],
  ['out of range', [[['k']], 3, False, False], 'error: no such row'],
  ['regression: wrong-side parity',
   [[['p', 'k2tog', 'p', 'yo', 'p', 'p', 'k', 'k'], ['k', 'k', 'k2tog', 'yo', 'p', 'k', 'ssk', 'ssk'],
     ['ssk', 'p', 'ssk', 'p', 'k', 'yo', 'k', 'k'], ['p', 'p', 'k2tog', 'ssk', 'k2tog', 'k2tog', 'p', 'k'],
     ['p', 'p', 'k', 'ssk', 'ssk', 'k2tog', 'k2tog', 'k2tog'],
     ['yo', 'k', 'k2tog', 'p', 'k', 'yo', 'k2tog', 'k2tog']],
    6, False, False],
   'yo, p1, p2tog, k1, p1, yo, p2tog x2'],
  ['repair check: wrong-side parity',
   [[['k', 'yo', 'yo'], ['k2tog', 'p', 'p'], ['k2tog', 'k', 'ssk'], ['ssk', 'yo', 'yo'], ['yo', 'k', 'p']], 2,
    False, True],
   'p2, k2tog'],
  ['generated control 1',
   [[['ssk', 'k', 'k', 'k', 'ssk', 'yo', 'k2tog', 'k'], ['yo', 'p', 'k2tog', 'k', 'p', 'ssk', 'yo', 'yo'],
     ['ssk', 'ssk', 'k', 'ssk', 'k2tog', 'k', 'ssk', 'k2tog'],
     ['ssk', 'p', 'k', 'p', 'k2tog', 'k', 'ssk', 'k2tog'],
     ['k2tog', 'p', 'ssk', 'k', 'ssk', 'ssk', 'p', 'p']],
    3, True, False],
   'k2tog, ssk, k1, k2tog, ssk, k1, ssk x2'],
  ['generated control 2',
   [[['yo', 'yo', 'ssk', 'ssk'], ['k', 'k', 'k', 'p'], ['k', 'p', 'k', 'ssk'], ['p', 'ssk', 'k', 'k2tog']], 1,
    True, False],
   'ssk x2, yo x2'],
  ['generated control 3',
   [[['k', 'yo', 'yo', 'k', 'k2tog', 'k2tog', 'k2tog'], ['p', 'k2tog', 'ssk', 'yo', 'k', 'k2tog', 'k2tog']],
    1, True, True],
   'k2tog x3, k1, yo x2, k1']],
 [['in the round', [[['k', 'p'], ['ssk', 'k']], 2, True, False], 'k1, ssk'],
  ['out of range', [[['k']], 3, False, False], 'error: no such row'],
  ['RS row', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'k', 'k']], 1, False, False],
   'k2tog, yo, p1, k2'],
  ['regression: wrong-side parity',
   [[['k', 'k', 'yo', 'k', 'ssk', 'yo', 'k2tog'], ['k2tog', 'yo', 'k2tog', 'ssk', 'yo', 'k', 'k2tog']], 2,
    False, True],
   'k2tog, k1, yo, ssk, k2tog, yo, k2tog'],
  ['repair check: wrong-side parity',
   [[['p', 'yo', 'ssk', 'k', 'p', 'p'], ['k2tog', 'ssk', 'ssk', 'k', 'ssk', 'p'],
     ['yo', 'yo', 'ssk', 'k2tog', 'yo', 'ssk'], ['k', 'k2tog', 'k2tog', 'p', 'ssk', 'k'],
     ['k2tog', 'k', 'ssk', 'k', 'k2tog', 'p']],
    2, False, True],
   'p1, ssk, k1, ssk x2, k2tog'],
  ['generated control 1',
   [[['k', 'k2tog', 'yo', 'k', 'yo', 'p', 'k2tog'], ['p', 'p', 'k', 'k', 'yo', 'p', 'k'],
     ['k2tog', 'k', 'ssk', 'yo', 'ssk', 'yo', 'p'], ['k2tog', 'k2tog', 'p', 'k2tog', 'p', 'p', 'k'],
     ['k', 'k2tog', 'ssk', 'p', 'yo', 'k2tog', 'k2tog'], ['ssk', 'k2tog', 'k', 'ssk', 'p', 'ssk', 'ssk']],
    5, True, True],
   'k2tog x2, yo, p1, ssk, k2tog, k1'],
  ['generated control 2',
   [[['yo', 'ssk', 'k2tog', 'k2tog', 'yo', 'yo', 'p', 'yo'],
     ['p', 'k2tog', 'k2tog', 'ssk', 'k', 'k2tog', 'p', 'ssk'], ['k', 'k', 'yo', 'p', 'p', 'p', 'yo', 'ssk'],
     ['p', 'ssk', 'k2tog', 'k', 'p', 'yo', 'k', 'ssk']],
    1, False, False],
   'yo, p1, yo x2, k2tog x2, ssk, yo'],
  ['generated control 3',
   [[['yo', 'yo', 'yo'], ['ssk', 'k2tog', 'yo'], ['k2tog', 'yo', 'yo']], 1, True, False], 'yo x3']],
 [['out of range', [[['k']], 3, False, False], 'error: no such row'],
  ['RS row', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'k', 'k']], 1, False, False],
   'k2tog, yo, p1, k2'],
  ['WS row swapped', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'ssk', 'k']], 2, False, False],
   'k2, p1, ssp, p1'],
  ['regression: wrong-side parity',
   [[['yo', 'p', 'ssk', 'yo', 'k2tog'], ['k', 'p', 'p', 'p', 'yo'], ['k', 'k', 'k2tog', 'p', 'k2tog']], 1,
    False, False],
   'k2tog, yo, ssk, p1, yo'],
  ['repair check: wrong-side parity',
   [[['ssk', 'yo', 'k'], ['k2tog', 'k2tog', 'yo'], ['k2tog', 'ssk', 'p'], ['k', 'p', 'p'],
     ['ssk', 'k', 'ssk']],
    5, False, True],
   'ssp, p1, ssp'],
  ['generated control 1',
   [[['yo', 'yo', 'k', 'yo', 'yo', 'yo', 'k'], ['k2tog', 'ssk', 'k', 'k2tog', 'k2tog', 'ssk', 'ssk'],
     ['ssk', 'yo', 'ssk', 'yo', 'yo', 'yo', 'yo']],
    3, True, True],
   'yo x4, ssk, yo, ssk'],
  ['generated control 2',
   [[['k', 'k2tog', 'ssk', 'yo', 'yo', 'p', 'yo'], ['k2tog', 'k2tog', 'yo', 'k', 'k', 'k2tog', 'p'],
     ['yo', 'k2tog', 'k', 'k2tog', 'k2tog', 'p', 'k2tog'], ['p', 'k2tog', 'yo', 'k2tog', 'k2tog', 'ssk', 'k'],
     ['yo', 'yo', 'yo', 'yo', 'p', 'p', 'p']],
    1, True, False],
   'yo, p1, yo x2, ssk, k2tog, k1'],
  ['generated control 3', [[['yo', 'yo', 'ssk'], ['ssk', 'p', 'ssk']], 2, False, False], 'ssp, k1, ssp']],
 [['RS row', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'k', 'k']], 1, False, False],
   'k2tog, yo, p1, k2'],
  ['WS row swapped', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'ssk', 'k']], 2, False, False],
   'k2, p1, ssp, p1'],
  ['in the round', [[['k', 'p'], ['ssk', 'k']], 2, True, False], 'k1, ssk'],
  ['regression: wrong-side parity',
   [[['p', 'k', 'k', 'k2tog', 'k2tog', 'k2tog', 'yo', 'yo'],
     ['ssk', 'k2tog', 'k2tog', 'p', 'ssk', 'k', 'yo', 'p'], ['k', 'yo', 'k', 'p', 'p', 'k', 'k', 'yo'],
     ['yo', 'yo', 'p', 'ssk', 'yo', 'ssk', 'k', 'k2tog']],
    1, False, True],
   'k1, p2, p2tog x3, yo x2'],
  ['repair check: wrong-side parity',
   [[['k2tog', 'k2tog', 'yo'], ['ssk', 'k2tog', 'yo'], ['k', 'k', 'k2tog']], 1, False, True],
   'p2tog x2, yo'],
  ['generated control 1',
   [[['yo', 'p', 'k', 'yo', 'yo', 'yo', 'ssk'], ['ssk', 'k2tog', 'p', 'p', 'k2tog', 'ssk', 'p'],
     ['p', 'ssk', 'p', 'p', 'p', 'k2tog', 'p'], ['ssk', 'k2tog', 'k2tog', 'p', 'p', 'ssk', 'yo'],
     ['k', 'k', 'ssk', 'ssk', 'yo', 'k', 'k2tog'], ['ssk', 'k2tog', 'yo', 'yo', 'k2tog', 'p', 'k']],
    4, False, False],
   'ssp, p2tog x2, k2, ssp, yo'],
  ['generated control 2',
   [[['p', 'k', 'k2tog', 'yo', 'yo', 'ssk', 'p'], ['k2tog', 'ssk', 'p', 'yo', 'yo', 'ssk', 'p']], 2, False,
    False],
   'p2tog, ssp, k1, yo x2, ssp, k1'],
  ['generated control 3', [[['k', 'k2tog', 'p'], ['ssk', 'ssk', 'yo']], 2, False, False], 'ssp x2, yo']]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
RS rowp2, k1, yo, p2togk2tog, yo, p1, k2Failed
WS row swappedk1, ssk, k1, p2k2, p1, ssp, p1Failed
in the roundk1, sskk1, sskPassed
regression: wrong-side parityp2, k1, ssp, yo, k1p1, yo, ssk, p1, k2Failed
repair check: wrong-side parityp1, p2tog, yo x2, p2k2, yo x2, k2tog, k1Failed
generated control 1yo, p1, ssk, k2, k2tog, p1yo, p1, ssk, k2, k2tog, p1Passed
generated control 2k2tog x3k2tog x3Passed
generated control 3yo x2, sskssp, yo x2Failed

SHA-256 / 1ca145720d68731a847d0d3dbf534d36eb128c63cd9ecaa14790cb6feff39cbe

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(chart, row, in_round, start_ws):
    SWAP = {'k': 'p', 'p': 'k', 'k2tog': 'p2tog', 'ssk': 'ssp', 'yo': 'yo'}
    if not 1 <= row <= len(chart):
        return 'error: no such row'
    cells = list(chart[row - 1])
    ws = (not in_round) and (row % 2 == 0)
    if ws:
        seq = [SWAP.get(c, c) for c in cells]
    else:
        seq = cells[::-1]
    out = []
    for c in seq:
        if out and out[-1][0] == c:
            out[-1][1] += 1
        else:
            out.append([c, 1])
    return ', '.join(c + str(n) if c in ('k', 'p') else (c if n == 1 else '%s x%d' % (c, n)) for c, n in out)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['RS row', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'k', 'k']], 1, False, False],
   'k2tog, yo, p1, k2'],
  ['WS row swapped', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'ssk', 'k']], 2, False, False],
   'k2, p1, ssp, p1'],
  ['in the round', [[['k', 'p'], ['ssk', 'k']], 2, True, False], 'k1, ssk'],
  ['regression: wrong-side parity',
   [[['yo', 'yo', 'yo', 'yo', 'k2tog', 'yo'], ['k', 'k', 'p', 'ssk', 'yo', 'p'],
     ['k', 'k2tog', 'yo', 'k', 'yo', 'p'], ['yo', 'yo', 'k2tog', 'yo', 'k', 'k'],
     ['k2tog', 'ssk', 'k2tog', 'k2tog', 'p', 'yo']],
    2, False, True],
   'p1, yo, ssk, p1, k2'],
  ['repair check: wrong-side parity',
   [[['p', 'p', 'p', 'ssk', 'p', 'k2tog'], ['ssk', 'k', 'k2tog', 'k2tog', 'k2tog', 'yo'],
     ['yo', 'k', 'k2tog', 'yo', 'k2tog', 'p'], ['k', 'k2tog', 'yo', 'yo', 'k', 'k']],
    4, False, True],
   'k2, yo x2, k2tog, k1'],
  ['generated control 1',
   [[['p', 'k2tog', 'k', 'k', 'ssk', 'p', 'yo'], ['ssk', 'k', 'k', 'p', 'k', 'k2tog', 'ssk'],
     ['p', 'k', 'yo', 'k', 'p', 'ssk', 'ssk']],
    1, True, False],
   'yo, p1, ssk, k2, k2tog, p1'],
  ['generated control 2',
   [[['yo', 'yo', 'k2tog'], ['k2tog', 'k2tog', 'ssk'], ['p', 'yo', 'k2tog'], ['k2tog', 'k2tog', 'k2tog'],
     ['p', 'k', 'k2tog'], ['k', 'ssk', 'yo']],
    4, True, True],
   'k2tog x3'],
  ['generated control 3',
   [[['k2tog', 'p', 'p'], ['ssk', 'yo', 'yo'], ['k', 'k2tog', 'k2tog'], ['k2tog', 'k', 'yo'],
     ['yo', 'yo', 'k']],
    2, False, False],
   'ssp, yo x2']],
 [['WS row swapped', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'ssk', 'k']], 2, False, False],
   'k2, p1, ssp, p1'],
  ['in the round', [[['k', 'p'], ['ssk', 'k']], 2, True, False], 'k1, ssk'],
  ['out of range', [[['k']], 3, False, False], 'error: no such row'],
  ['regression: wrong-side parity',
   [[['p', 'k2tog', 'p', 'yo', 'p', 'p', 'k', 'k'], ['k', 'k', 'k2tog', 'yo', 'p', 'k', 'ssk', 'ssk'],
     ['ssk', 'p', 'ssk', 'p', 'k', 'yo', 'k', 'k'], ['p', 'p', 'k2tog', 'ssk', 'k2tog', 'k2tog', 'p', 'k'],
     ['p', 'p', 'k', 'ssk', 'ssk', 'k2tog', 'k2tog', 'k2tog'],
     ['yo', 'k', 'k2tog', 'p', 'k', 'yo', 'k2tog', 'k2tog']],
    6, False, False],
   'yo, p1, p2tog, k1, p1, yo, p2tog x2'],
  ['repair check: wrong-side parity',
   [[['k', 'yo', 'yo'], ['k2tog', 'p', 'p'], ['k2tog', 'k', 'ssk'], ['ssk', 'yo', 'yo'], ['yo', 'k', 'p']], 2,
    False, True],
   'p2, k2tog'],
  ['generated control 1',
   [[['ssk', 'k', 'k', 'k', 'ssk', 'yo', 'k2tog', 'k'], ['yo', 'p', 'k2tog', 'k', 'p', 'ssk', 'yo', 'yo'],
     ['ssk', 'ssk', 'k', 'ssk', 'k2tog', 'k', 'ssk', 'k2tog'],
     ['ssk', 'p', 'k', 'p', 'k2tog', 'k', 'ssk', 'k2tog'],
     ['k2tog', 'p', 'ssk', 'k', 'ssk', 'ssk', 'p', 'p']],
    3, True, False],
   'k2tog, ssk, k1, k2tog, ssk, k1, ssk x2'],
  ['generated control 2',
   [[['yo', 'yo', 'ssk', 'ssk'], ['k', 'k', 'k', 'p'], ['k', 'p', 'k', 'ssk'], ['p', 'ssk', 'k', 'k2tog']], 1,
    True, False],
   'ssk x2, yo x2'],
  ['generated control 3',
   [[['k', 'yo', 'yo', 'k', 'k2tog', 'k2tog', 'k2tog'], ['p', 'k2tog', 'ssk', 'yo', 'k', 'k2tog', 'k2tog']],
    1, True, True],
   'k2tog x3, k1, yo x2, k1']],
 [['in the round', [[['k', 'p'], ['ssk', 'k']], 2, True, False], 'k1, ssk'],
  ['out of range', [[['k']], 3, False, False], 'error: no such row'],
  ['RS row', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'k', 'k']], 1, False, False],
   'k2tog, yo, p1, k2'],
  ['regression: wrong-side parity',
   [[['k', 'k', 'yo', 'k', 'ssk', 'yo', 'k2tog'], ['k2tog', 'yo', 'k2tog', 'ssk', 'yo', 'k', 'k2tog']], 2,
    False, True],
   'k2tog, k1, yo, ssk, k2tog, yo, k2tog'],
  ['repair check: wrong-side parity',
   [[['p', 'yo', 'ssk', 'k', 'p', 'p'], ['k2tog', 'ssk', 'ssk', 'k', 'ssk', 'p'],
     ['yo', 'yo', 'ssk', 'k2tog', 'yo', 'ssk'], ['k', 'k2tog', 'k2tog', 'p', 'ssk', 'k'],
     ['k2tog', 'k', 'ssk', 'k', 'k2tog', 'p']],
    2, False, True],
   'p1, ssk, k1, ssk x2, k2tog'],
  ['generated control 1',
   [[['k', 'k2tog', 'yo', 'k', 'yo', 'p', 'k2tog'], ['p', 'p', 'k', 'k', 'yo', 'p', 'k'],
     ['k2tog', 'k', 'ssk', 'yo', 'ssk', 'yo', 'p'], ['k2tog', 'k2tog', 'p', 'k2tog', 'p', 'p', 'k'],
     ['k', 'k2tog', 'ssk', 'p', 'yo', 'k2tog', 'k2tog'], ['ssk', 'k2tog', 'k', 'ssk', 'p', 'ssk', 'ssk']],
    5, True, True],
   'k2tog x2, yo, p1, ssk, k2tog, k1'],
  ['generated control 2',
   [[['yo', 'ssk', 'k2tog', 'k2tog', 'yo', 'yo', 'p', 'yo'],
     ['p', 'k2tog', 'k2tog', 'ssk', 'k', 'k2tog', 'p', 'ssk'], ['k', 'k', 'yo', 'p', 'p', 'p', 'yo', 'ssk'],
     ['p', 'ssk', 'k2tog', 'k', 'p', 'yo', 'k', 'ssk']],
    1, False, False],
   'yo, p1, yo x2, k2tog x2, ssk, yo'],
  ['generated control 3',
   [[['yo', 'yo', 'yo'], ['ssk', 'k2tog', 'yo'], ['k2tog', 'yo', 'yo']], 1, True, False], 'yo x3']],
 [['out of range', [[['k']], 3, False, False], 'error: no such row'],
  ['RS row', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'k', 'k']], 1, False, False],
   'k2tog, yo, p1, k2'],
  ['WS row swapped', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'ssk', 'k']], 2, False, False],
   'k2, p1, ssp, p1'],
  ['regression: wrong-side parity',
   [[['yo', 'p', 'ssk', 'yo', 'k2tog'], ['k', 'p', 'p', 'p', 'yo'], ['k', 'k', 'k2tog', 'p', 'k2tog']], 1,
    False, False],
   'k2tog, yo, ssk, p1, yo'],
  ['repair check: wrong-side parity',
   [[['ssk', 'yo', 'k'], ['k2tog', 'k2tog', 'yo'], ['k2tog', 'ssk', 'p'], ['k', 'p', 'p'],
     ['ssk', 'k', 'ssk']],
    5, False, True],
   'ssp, p1, ssp'],
  ['generated control 1',
   [[['yo', 'yo', 'k', 'yo', 'yo', 'yo', 'k'], ['k2tog', 'ssk', 'k', 'k2tog', 'k2tog', 'ssk', 'ssk'],
     ['ssk', 'yo', 'ssk', 'yo', 'yo', 'yo', 'yo']],
    3, True, True],
   'yo x4, ssk, yo, ssk'],
  ['generated control 2',
   [[['k', 'k2tog', 'ssk', 'yo', 'yo', 'p', 'yo'], ['k2tog', 'k2tog', 'yo', 'k', 'k', 'k2tog', 'p'],
     ['yo', 'k2tog', 'k', 'k2tog', 'k2tog', 'p', 'k2tog'], ['p', 'k2tog', 'yo', 'k2tog', 'k2tog', 'ssk', 'k'],
     ['yo', 'yo', 'yo', 'yo', 'p', 'p', 'p']],
    1, True, False],
   'yo, p1, yo x2, ssk, k2tog, k1'],
  ['generated control 3', [[['yo', 'yo', 'ssk'], ['ssk', 'p', 'ssk']], 2, False, False], 'ssp, k1, ssp']],
 [['RS row', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'k', 'k']], 1, False, False],
   'k2tog, yo, p1, k2'],
  ['WS row swapped', [[['k', 'k', 'p', 'yo', 'k2tog'], ['p', 'p', 'k', 'ssk', 'k']], 2, False, False],
   'k2, p1, ssp, p1'],
  ['in the round', [[['k', 'p'], ['ssk', 'k']], 2, True, False], 'k1, ssk'],
  ['regression: wrong-side parity',
   [[['p', 'k', 'k', 'k2tog', 'k2tog', 'k2tog', 'yo', 'yo'],
     ['ssk', 'k2tog', 'k2tog', 'p', 'ssk', 'k', 'yo', 'p'], ['k', 'yo', 'k', 'p', 'p', 'k', 'k', 'yo'],
     ['yo', 'yo', 'p', 'ssk', 'yo', 'ssk', 'k', 'k2tog']],
    1, False, True],
   'k1, p2, p2tog x3, yo x2'],
  ['repair check: wrong-side parity',
   [[['k2tog', 'k2tog', 'yo'], ['ssk', 'k2tog', 'yo'], ['k', 'k', 'k2tog']], 1, False, True],
   'p2tog x2, yo'],
  ['generated control 1',
   [[['yo', 'p', 'k', 'yo', 'yo', 'yo', 'ssk'], ['ssk', 'k2tog', 'p', 'p', 'k2tog', 'ssk', 'p'],
     ['p', 'ssk', 'p', 'p', 'p', 'k2tog', 'p'], ['ssk', 'k2tog', 'k2tog', 'p', 'p', 'ssk', 'yo'],
     ['k', 'k', 'ssk', 'ssk', 'yo', 'k', 'k2tog'], ['ssk', 'k2tog', 'yo', 'yo', 'k2tog', 'p', 'k']],
    4, False, False],
   'ssp, p2tog x2, k2, ssp, yo'],
  ['generated control 2',
   [[['p', 'k', 'k2tog', 'yo', 'yo', 'ssk', 'p'], ['k2tog', 'ssk', 'p', 'yo', 'yo', 'ssk', 'p']], 2, False,
    False],
   'p2tog, ssp, k1, yo x2, ssp, k1'],
  ['generated control 3', [[['k', 'k2tog', 'p'], ['ssk', 'ssk', 'yo']], 2, False, False], 'ssp x2, yo']]]
for label, args, expected in fixtures[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
RS rowk2tog, yo, p1, k2k2tog, yo, p1, k2Passed
WS row swappedk2, p1, ssp, p1k2, p1, ssp, p1Passed
in the roundk1, sskk1, sskPassed
regression: wrong-side parityp2, k1, ssp, yo, k1p1, yo, ssk, p1, k2Failed
repair check: wrong-side parityp1, p2tog, yo x2, p2k2, yo x2, k2tog, k1Failed
generated control 1yo, p1, ssk, k2, k2tog, p1yo, p1, ssk, k2, k2tog, p1Passed
generated control 2k2tog x3k2tog x3Passed
generated control 3ssp, yo x2ssp, yo x2Passed

SHA-256 / ba73c8f35bc0bdbedd0b1fd33d0122ef83d8181faf2e4799feb68bf158c7cf2c

HELD IN THE MEMBER ARCHIVE

The verified repair and its recorded checks are member-only.

This mechanism has 8 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.

Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.

Member access is invitation-based. Sign in with your invited account to inspect the repair.

Sign in to the archive ↗

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:52:32.425223+00:00.

Case digest / f711d43a241d8616647d052859d91cfbd923e500cfb55bccf34e0fc1531e36da