FA-97376 / Knitting and sewing pattern grading / Open access
Evenly spaced increase row: trailing increase · case 01
A round of 8 increases only adds 7 stitches.
ROOT CAUSE
The final m1 is dropped for rounds as well as flat rows.
VERIFIED REPAIR
Drop the trailing m1 only for flat rows.
Unsuccessful approach: Dropping it only in the round leaves an edge increase on flat rows.
Case contract
Distribute increases (m1) evenly over stitches. Flat rows use increases+1 segments with no increase at the edges; rounds use `increases` segments each followed by m1. Segment length is stitches // segments; the remainder adds one stitch to segments in order: rounds from the start, flat rows alternating from the outside in (first, last, second, second-last...). Segments must hold at least one stitch, else "error: too many increases". 0 increases -> "k<n>"; negative counts or no stitches -> "error: counts". Output "k4, m1, k5, ...".
Why this case matters
Yoke, cuff-to-body and hem transitions ask knitters to increase evenly across a row.
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(stitches, increases, flat):
if stitches <= 0 or increases < 0:
return 'error: counts'
if increases == 0:
return 'k%d' % stitches
segs = increases + 1 if flat else increases
if segs > stitches:
return 'error: too many increases'
base, extra = divmod(stitches, segs)
lens = [base] * segs
if flat:
order = []
i, j = 0, segs - 1
while i <= j:
order.append(i)
if i != j:
order.append(j)
i += 1
j -= 1
else:
order = list(range(segs))
for idx in order[:extra]:
lens[idx] += 1
parts = []
for n in lens:
parts.append('k%d' % n)
parts.append('m1')
parts.pop()
return ', '.join(parts)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['round even split', [40, 8, False], 'k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1'],
['flat with remainder', [23, 3, True], 'k6, m1, k6, m1, k5, m1, k6'],
['no increases', [17, 0, True], 'k17'],
['regression: trailing increase', [40, 7, False], 'k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k5, m1, k5, m1'],
['repair check: trailing increase', [61, 10, False],
'k7, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1'],
['generated control 1', [17, 0, False], 'k17'],
['generated control 2', [10, 10, True], 'error: too many increases'],
['generated control 3', [9, 9, False],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1']],
[['flat with remainder', [23, 3, True], 'k6, m1, k6, m1, k5, m1, k6'],
['no increases', [17, 0, True], 'k17'],
['flat maximum', [10, 9, True],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1'],
['regression: trailing increase', [23, 5, False], 'k5, m1, k5, m1, k5, m1, k4, m1, k4, m1'],
['repair check: trailing increase', [72, 3, False], 'k24, m1, k24, m1, k24, m1'],
['generated control 1', [72, 8, True],
'k8, m1, k8, m1, k8, m1, k8, m1, k8, m1, k8, m1, k8, m1, k8, m1, k8'],
['generated control 2', [23, 7, False], 'k4, m1, k4, m1, k3, m1, k3, m1, k3, m1, k3, m1, k3, m1'],
['generated control 3', [48, 10, False],
'k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k4, m1, k4, m1']],
[['no increases', [17, 0, True], 'k17'],
['flat maximum', [10, 9, True],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1'],
['flat over maximum', [10, 10, True], 'error: too many increases'],
['regression: trailing increase', [17, 16, False],
'k2, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, '
'k1, m1, k1, m1, k1, m1'],
['repair check: trailing increase', [10, 1, True], 'k5, m1, k5'],
['generated control 1', [9, 4, True], 'k2, m1, k2, m1, k1, m1, k2, m1, k2'],
['generated control 2', [9, 2, False], 'k5, m1, k4, m1'],
['generated control 3', [17, 10, True],
'k2, m1, k2, m1, k2, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k2, m1, k2, m1, k2']],
[['flat maximum', [10, 9, True],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1'],
['flat over maximum', [10, 10, True], 'error: too many increases'],
['round even split', [40, 8, False], 'k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1'],
['regression: trailing increase', [10, 10, False],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1'],
['repair check: trailing increase', [72, 3, True], 'k18, m1, k18, m1, k18, m1, k18'],
['generated control 1', [6, 8, True], 'error: too many increases'],
['generated control 2', [61, 9, False],
'k7, m1, k7, m1, k7, m1, k7, m1, k7, m1, k7, m1, k7, m1, k6, m1, k6, m1'],
['generated control 3', [9, 2, False], 'k5, m1, k4, m1']],
[['flat over maximum', [10, 10, True], 'error: too many increases'],
['round even split', [40, 8, False], 'k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1'],
['flat with remainder', [23, 3, True], 'k6, m1, k6, m1, k5, m1, k6'],
['regression: trailing increase', [9, 9, False],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1'],
['repair check: trailing increase', [48, 3, True], 'k12, m1, k12, m1, k12, m1, k12'],
['generated control 1', [6, 4, True], 'k2, m1, k1, m1, k1, m1, k1, m1, k1'],
['generated control 2', [40, 5, False], 'k8, m1, k8, m1, k8, m1, k8, m1, k8, m1'],
['generated control 3', [9, 10, True], 'error: too many increases']]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| round even split | k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5 | k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1 | Failed |
| flat with remainder | k6, m1, k6, m1, k5, m1, k6 | k6, m1, k6, m1, k5, m1, k6 | Passed |
| no increases | k17 | k17 | Passed |
| regression: trailing increase | k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k5, m1, k5 | k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k5, m1, k5, m1 | Failed |
| repair check: trailing increase | k7, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6 | k7, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1 | Failed |
| generated control 1 | k17 | k17 | Passed |
| generated control 2 | error: too many increases | error: too many increases | Passed |
| generated control 3 | k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1 | k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1 | Failed |
SHA-256 / d1f0ada01a46052e2ed52d704514954392f2008cc620a5449577b1941c806688
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(stitches, increases, flat):
if stitches <= 0 or increases < 0:
return 'error: counts'
if increases == 0:
return 'k%d' % stitches
segs = increases + 1 if flat else increases
if segs > stitches:
return 'error: too many increases'
base, extra = divmod(stitches, segs)
lens = [base] * segs
if flat:
order = []
i, j = 0, segs - 1
while i <= j:
order.append(i)
if i != j:
order.append(j)
i += 1
j -= 1
else:
order = list(range(segs))
for idx in order[:extra]:
lens[idx] += 1
parts = []
for n in lens:
parts.append('k%d' % n)
parts.append('m1')
if not flat:
parts.pop()
return ', '.join(parts)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['round even split', [40, 8, False], 'k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1'],
['flat with remainder', [23, 3, True], 'k6, m1, k6, m1, k5, m1, k6'],
['no increases', [17, 0, True], 'k17'],
['regression: trailing increase', [40, 7, False], 'k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k5, m1, k5, m1'],
['repair check: trailing increase', [61, 10, False],
'k7, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1'],
['generated control 1', [17, 0, False], 'k17'],
['generated control 2', [10, 10, True], 'error: too many increases'],
['generated control 3', [9, 9, False],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1']],
[['flat with remainder', [23, 3, True], 'k6, m1, k6, m1, k5, m1, k6'],
['no increases', [17, 0, True], 'k17'],
['flat maximum', [10, 9, True],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1'],
['regression: trailing increase', [23, 5, False], 'k5, m1, k5, m1, k5, m1, k4, m1, k4, m1'],
['repair check: trailing increase', [72, 3, False], 'k24, m1, k24, m1, k24, m1'],
['generated control 1', [72, 8, True],
'k8, m1, k8, m1, k8, m1, k8, m1, k8, m1, k8, m1, k8, m1, k8, m1, k8'],
['generated control 2', [23, 7, False], 'k4, m1, k4, m1, k3, m1, k3, m1, k3, m1, k3, m1, k3, m1'],
['generated control 3', [48, 10, False],
'k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k4, m1, k4, m1']],
[['no increases', [17, 0, True], 'k17'],
['flat maximum', [10, 9, True],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1'],
['flat over maximum', [10, 10, True], 'error: too many increases'],
['regression: trailing increase', [17, 16, False],
'k2, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, '
'k1, m1, k1, m1, k1, m1'],
['repair check: trailing increase', [10, 1, True], 'k5, m1, k5'],
['generated control 1', [9, 4, True], 'k2, m1, k2, m1, k1, m1, k2, m1, k2'],
['generated control 2', [9, 2, False], 'k5, m1, k4, m1'],
['generated control 3', [17, 10, True],
'k2, m1, k2, m1, k2, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k2, m1, k2, m1, k2']],
[['flat maximum', [10, 9, True],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1'],
['flat over maximum', [10, 10, True], 'error: too many increases'],
['round even split', [40, 8, False], 'k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1'],
['regression: trailing increase', [10, 10, False],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1'],
['repair check: trailing increase', [72, 3, True], 'k18, m1, k18, m1, k18, m1, k18'],
['generated control 1', [6, 8, True], 'error: too many increases'],
['generated control 2', [61, 9, False],
'k7, m1, k7, m1, k7, m1, k7, m1, k7, m1, k7, m1, k7, m1, k6, m1, k6, m1'],
['generated control 3', [9, 2, False], 'k5, m1, k4, m1']],
[['flat over maximum', [10, 10, True], 'error: too many increases'],
['round even split', [40, 8, False], 'k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1'],
['flat with remainder', [23, 3, True], 'k6, m1, k6, m1, k5, m1, k6'],
['regression: trailing increase', [9, 9, False],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1'],
['repair check: trailing increase', [48, 3, True], 'k12, m1, k12, m1, k12, m1, k12'],
['generated control 1', [6, 4, True], 'k2, m1, k1, m1, k1, m1, k1, m1, k1'],
['generated control 2', [40, 5, False], 'k8, m1, k8, m1, k8, m1, k8, m1, k8, m1'],
['generated control 3', [9, 10, True], 'error: too many increases']]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| round even split | k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5 | k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1 | Failed |
| flat with remainder | k6, m1, k6, m1, k5, m1, k6, m1 | k6, m1, k6, m1, k5, m1, k6 | Failed |
| no increases | k17 | k17 | Passed |
| regression: trailing increase | k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k5, m1, k5 | k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k5, m1, k5, m1 | Failed |
| repair check: trailing increase | k7, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6 | k7, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1 | Failed |
| generated control 1 | k17 | k17 | Passed |
| generated control 2 | error: too many increases | error: too many increases | Passed |
| generated control 3 | k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1 | k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1 | Failed |
SHA-256 / 66c8d062e71809850133b0530c359ede457db50e32a4f6686ddf525b8fe30232
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(stitches, increases, flat):
if stitches <= 0 or increases < 0:
return 'error: counts'
if increases == 0:
return 'k%d' % stitches
segs = increases + 1 if flat else increases
if segs > stitches:
return 'error: too many increases'
base, extra = divmod(stitches, segs)
lens = [base] * segs
if flat:
order = []
i, j = 0, segs - 1
while i <= j:
order.append(i)
if i != j:
order.append(j)
i += 1
j -= 1
else:
order = list(range(segs))
for idx in order[:extra]:
lens[idx] += 1
parts = []
for n in lens:
parts.append('k%d' % n)
parts.append('m1')
if flat:
parts.pop()
return ', '.join(parts)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['round even split', [40, 8, False], 'k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1'],
['flat with remainder', [23, 3, True], 'k6, m1, k6, m1, k5, m1, k6'],
['no increases', [17, 0, True], 'k17'],
['regression: trailing increase', [40, 7, False], 'k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k5, m1, k5, m1'],
['repair check: trailing increase', [61, 10, False],
'k7, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1'],
['generated control 1', [17, 0, False], 'k17'],
['generated control 2', [10, 10, True], 'error: too many increases'],
['generated control 3', [9, 9, False],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1']],
[['flat with remainder', [23, 3, True], 'k6, m1, k6, m1, k5, m1, k6'],
['no increases', [17, 0, True], 'k17'],
['flat maximum', [10, 9, True],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1'],
['regression: trailing increase', [23, 5, False], 'k5, m1, k5, m1, k5, m1, k4, m1, k4, m1'],
['repair check: trailing increase', [72, 3, False], 'k24, m1, k24, m1, k24, m1'],
['generated control 1', [72, 8, True],
'k8, m1, k8, m1, k8, m1, k8, m1, k8, m1, k8, m1, k8, m1, k8, m1, k8'],
['generated control 2', [23, 7, False], 'k4, m1, k4, m1, k3, m1, k3, m1, k3, m1, k3, m1, k3, m1'],
['generated control 3', [48, 10, False],
'k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k4, m1, k4, m1']],
[['no increases', [17, 0, True], 'k17'],
['flat maximum', [10, 9, True],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1'],
['flat over maximum', [10, 10, True], 'error: too many increases'],
['regression: trailing increase', [17, 16, False],
'k2, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, '
'k1, m1, k1, m1, k1, m1'],
['repair check: trailing increase', [10, 1, True], 'k5, m1, k5'],
['generated control 1', [9, 4, True], 'k2, m1, k2, m1, k1, m1, k2, m1, k2'],
['generated control 2', [9, 2, False], 'k5, m1, k4, m1'],
['generated control 3', [17, 10, True],
'k2, m1, k2, m1, k2, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k2, m1, k2, m1, k2']],
[['flat maximum', [10, 9, True],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1'],
['flat over maximum', [10, 10, True], 'error: too many increases'],
['round even split', [40, 8, False], 'k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1'],
['regression: trailing increase', [10, 10, False],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1'],
['repair check: trailing increase', [72, 3, True], 'k18, m1, k18, m1, k18, m1, k18'],
['generated control 1', [6, 8, True], 'error: too many increases'],
['generated control 2', [61, 9, False],
'k7, m1, k7, m1, k7, m1, k7, m1, k7, m1, k7, m1, k7, m1, k6, m1, k6, m1'],
['generated control 3', [9, 2, False], 'k5, m1, k4, m1']],
[['flat over maximum', [10, 10, True], 'error: too many increases'],
['round even split', [40, 8, False], 'k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1'],
['flat with remainder', [23, 3, True], 'k6, m1, k6, m1, k5, m1, k6'],
['regression: trailing increase', [9, 9, False],
'k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1'],
['repair check: trailing increase', [48, 3, True], 'k12, m1, k12, m1, k12, m1, k12'],
['generated control 1', [6, 4, True], 'k2, m1, k1, m1, k1, m1, k1, m1, k1'],
['generated control 2', [40, 5, False], 'k8, m1, k8, m1, k8, m1, k8, m1, k8, m1'],
['generated control 3', [9, 10, True], 'error: too many increases']]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| round even split | k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1 | k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1, k5, m1 | Passed |
| flat with remainder | k6, m1, k6, m1, k5, m1, k6 | k6, m1, k6, m1, k5, m1, k6 | Passed |
| no increases | k17 | k17 | Passed |
| regression: trailing increase | k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k5, m1, k5, m1 | k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k5, m1, k5, m1 | Passed |
| repair check: trailing increase | k7, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1 | k7, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1, k6, m1 | Passed |
| generated control 1 | k17 | k17 | Passed |
| generated control 2 | error: too many increases | error: too many increases | Passed |
| generated control 3 | k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1 | k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1, k1, m1 | Passed |
SHA-256 / 8a5fddc262290a013bf1ba737a0d6bf41c30d12a2717a7f153bdf07eef0f82fb
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:31.646439+00:00.
Case digest / a0e960e6e647a750256cb46f9f98f104db8953348c847f3f1b3d012bdb16e68b