FA-79906 / Typography line breaking / Open access
Total-fit paragraph demerits: compression ratio denominator · case 01
Compressed lines are rated with the stretch budget.
ROOT CAUSE
The negative shortfall is divided by stretch*gaps instead of shrink*gaps.
VERIFIED REPAIR
Divide compression by the shrink total of the line.
Unsuccessful approach: Dividing by the combined stretch and shrink still misrates tight lines.
Case contract
Input [word widths, [space, stretch, shrink] per gap, line width, line penalty]. A line i..j has gaps=j-i-1. The last line has zero badness when not overfull. Other lines use ratio shortfall/(stretch*gaps) or /(shrink*gaps); zero stretch with slack or compression past shrink is infeasible; badness=min(10000, floor(100|r|^3+1/2)) and must be <=1000. Fitness 0 tight (r<-1/2), 1 decent (r<=1/2), 2 loose (r<=1), 3 very loose; last line decent. Demerits (lp+b)^2 plus 3000 when adjacent fitness classes differ by more than 1, starting from decent. Return [min total demerits, break list] (ties: first found) or ["infeasible"].
Why this case matters
Line breaking decides where paragraphs wrap on screen and in print; a wrong decision point shifts every following line.
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(x):
words, glue, width, lp = x
sp, st, sh = glue
n = len(words)
def rate(i, j):
gaps = j - i - 1
nat = sum(words[i:j]) + sp * gaps
short = width - nat
if j == n and short >= 0:
return 0, 1
if short > 0:
if st * gaps == 0:
return None
r = Fraction(short, st * gaps)
elif short < 0:
if -short > sh * gaps:
return None
r = Fraction(short, st * gaps)
else:
r = Fraction(0)
b = min(10000, math.floor(100 * abs(r) ** 3 + Fraction(1, 2)))
if b > 1000:
return None
fit = 0 if r < Fraction(-1, 2) else 1 if r <= Fraction(1, 2) else 2 if r <= 1 else 3
return b, fit
best = {(0, 1): (0, [])}
for j in range(1, n + 1):
for i in range(j):
rated = rate(i, j)
if rated is None:
continue
b, fit = rated
for (pos, pfit), (dem, brk) in sorted(best.items()):
if pos != i:
continue
d = dem + (lp + b) ** 2
if abs(fit - pfit) > 1:
d += 3000
key = (j, fit)
if key not in best or d < best[key][0]:
best[key] = (d, brk + [j])
finals = [v for (pos, f), v in best.items() if pos == n]
if not finals:
return ['infeasible']
d, brk = min(finals)
return [d, brk]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('two-line paragraph with loose first line', [[4, 5, 3, 6], [2, 2, 1], 14, 10], [12200, [3, 4]]), ('regression: compression ratio denominator', [[5, 5, 6, 5, 3, 6, 2], [2, 1, 2], 23, 50], [8900, [4, 7]]), ('regression: compression ratio denominator', [[6, 1, 5, 1, 3, 7, 4], [2, 3, 2], 15, 1], [11, [3, 6, 7]]), ('regression: compression ratio denominator', [[6, 2, 3, 7, 4, 4], [3, 1, 2], 18, 50], [12433, [3, 6]]), ('last line overfull', [[5, 5, 5], [1, 1, 0], 9, 10], ['infeasible']), ('single word paragraph', [[7], [2, 2, 1], 10, 10], [100, [1]]), ('control layout', [[7, 1, 7, 1, 6], [3, 3, 0], 24, 50], [6469, [3, 5]]), ('control layout', [[5, 2, 7, 1], [3, 2, 1], 20, 10], [200, [3, 4]])], [('regression: compression ratio denominator', [[5, 1, 5], [2, 3, 2], 11, 10], [12100, [3]]), ('regression: compression ratio denominator', [[5, 3, 1, 4, 2, 7, 3, 6], [2, 2, 1], 15, 50], [28969, [3, 6, 8]]), ('regression: compression ratio denominator', [[3, 5, 5, 6, 7], [2, 1, 2], 22, 10], [629, [4, 5]]), ('partial-repair probe', [[2, 4, 6, 5, 5], [1, 3, 2], 19, 10], [200, [4, 5]]), ('two-line paragraph with loose first line', [[4, 5, 3, 6], [2, 2, 1], 14, 10], [12200, [3, 4]]), ('last line overfull', [[5, 5, 5], [1, 1, 0], 9, 10], ['infeasible']), ('control layout', [[5, 4, 5], [1, 3, 2], 20, 1], [1, [3]]), ('control layout', [[1, 3, 3], [3, 3, 0], 12, 50], [271669, [2, 3]])], [('regression: compression ratio denominator', [[2, 7, 4, 4, 2, 1, 1, 3], [1, 3, 2], 11, 10], [440, [2, 5, 8]]), ('regression: compression ratio denominator', [[3, 1, 2, 3, 2, 7, 4], [2, 3, 2], 11, 50], [11400, [4, 6, 7]]), ('regression: compression ratio denominator', [[7, 6, 7, 4, 4, 2], [2, 1, 2], 16, 10], [17904, [2, 5, 6]]), ('regression: compression ratio denominator', [[7, 7, 7, 6], [2, 3, 1], 24, 10], [629, [3, 4]]), ('tight then loose lines', [[3, 3, 3, 3, 3, 3, 3], [2, 2, 1], 11, 1], [20403, [3, 6, 7]]), ('single word paragraph', [[7], [2, 2, 1], 10, 10], [100, [1]]), ('control layout', [[5, 2, 3], [1, 1, 0], 23, 10], [100, [3]]), ('control layout', [[5, 5, 4], [1, 1, 2], 19, 1], [1, [3]])], [('regression: compression ratio denominator', [[1, 5, 1, 4, 5, 7], [1, 3, 2], 23, 50], [3969, [6]]), ('regression: compression ratio denominator', [[5, 1, 5], [2, 3, 2], 11, 10], [12100, [3]]), ('regression: compression ratio denominator', [[1, 7, 7, 2, 4, 1, 3, 4], [1, 1, 2], 13, 50], [27500, [3, 7, 8]]), ('partial-repair probe', [[6, 6, 7, 2], [2, 2, 2], 24, 10], [244, [3, 4]]), ('single word paragraph', [[7], [2, 2, 1], 10, 10], [100, [1]]), ('tight then loose lines', [[3, 3, 3, 3, 3, 3, 3], [2, 2, 1], 11, 1], [20403, [3, 6, 7]]), ('control layout', [[5, 4, 4, 1, 6], [2, 2, 0], 20, 10], [200, [4, 5]]), ('control layout', [[3, 7, 2], [1, 3, 1], 14, 1], [1, [3]])], [('regression: compression ratio denominator', [[5, 3, 6, 2], [2, 1, 2], 14, 1], [10202, [3, 4]]), ('regression: compression ratio denominator', [[1, 6, 5, 4, 7], [3, 3, 2], 11, 10], [825, [2, 4, 5]]), ('partial-repair probe', [[4, 6, 3, 7], [3, 3, 2], 15, 50], [8900, [2, 4]]), ('regression: compression ratio denominator', [[5, 4, 4, 7, 5, 3, 3], [2, 1, 2], 22, 10], [1700, [4, 7]]), ('single word paragraph', [[7], [2, 2, 1], 10, 10], [100, [1]]), ('two-line paragraph with loose first line', [[4, 5, 3, 6], [2, 2, 1], 14, 10], [12200, [3, 4]]), ('control layout', [[2, 6, 3, 3, 7, 7], [3, 3, 1], 12, 1], ['infeasible']), ('control layout', [[5, 5, 4], [1, 1, 2], 19, 1], [1, [3]])]]
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 |
|---|---|---|---|
| two-line paragraph with loose first line | [629, [3, 4]] | [12200, [3, 4]] | Failed |
| regression: compression ratio denominator | [84869, [4, 7]] | [8900, [4, 7]] | Failed |
| regression: compression ratio denominator | [3, [3, 6, 7]] | [11, [3, 6, 7]] | Failed |
| regression: compression ratio denominator | [154513, [3, 6]] | [12433, [3, 6]] | Failed |
| last line overfull | ['infeasible'] | ['infeasible'] | Passed |
| single word paragraph | [100, [1]] | [100, [1]] | Passed |
| control layout | [6469, [3, 5]] | [6469, [3, 5]] | Passed |
| control layout | [200, [3, 4]] | [200, [3, 4]] | Passed |
SHA-256 / ba91cae12f3ee9e769d434207e12a7d7b78e7732424dd0abd94ca4d3c464c1e9
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(x):
words, glue, width, lp = x
sp, st, sh = glue
n = len(words)
def rate(i, j):
gaps = j - i - 1
nat = sum(words[i:j]) + sp * gaps
short = width - nat
if j == n and short >= 0:
return 0, 1
if short > 0:
if st * gaps == 0:
return None
r = Fraction(short, st * gaps)
elif short < 0:
if -short > sh * gaps:
return None
r = Fraction(short, (sh + st) * gaps)
else:
r = Fraction(0)
b = min(10000, math.floor(100 * abs(r) ** 3 + Fraction(1, 2)))
if b > 1000:
return None
fit = 0 if r < Fraction(-1, 2) else 1 if r <= Fraction(1, 2) else 2 if r <= 1 else 3
return b, fit
best = {(0, 1): (0, [])}
for j in range(1, n + 1):
for i in range(j):
rated = rate(i, j)
if rated is None:
continue
b, fit = rated
for (pos, pfit), (dem, brk) in sorted(best.items()):
if pos != i:
continue
d = dem + (lp + b) ** 2
if abs(fit - pfit) > 1:
d += 3000
key = (j, fit)
if key not in best or d < best[key][0]:
best[key] = (d, brk + [j])
finals = [v for (pos, f), v in best.items() if pos == n]
if not finals:
return ['infeasible']
d, brk = min(finals)
return [d, brk]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('two-line paragraph with loose first line', [[4, 5, 3, 6], [2, 2, 1], 14, 10], [12200, [3, 4]]), ('regression: compression ratio denominator', [[5, 5, 6, 5, 3, 6, 2], [2, 1, 2], 23, 50], [8900, [4, 7]]), ('regression: compression ratio denominator', [[6, 1, 5, 1, 3, 7, 4], [2, 3, 2], 15, 1], [11, [3, 6, 7]]), ('regression: compression ratio denominator', [[6, 2, 3, 7, 4, 4], [3, 1, 2], 18, 50], [12433, [3, 6]]), ('last line overfull', [[5, 5, 5], [1, 1, 0], 9, 10], ['infeasible']), ('single word paragraph', [[7], [2, 2, 1], 10, 10], [100, [1]]), ('control layout', [[7, 1, 7, 1, 6], [3, 3, 0], 24, 50], [6469, [3, 5]]), ('control layout', [[5, 2, 7, 1], [3, 2, 1], 20, 10], [200, [3, 4]])], [('regression: compression ratio denominator', [[5, 1, 5], [2, 3, 2], 11, 10], [12100, [3]]), ('regression: compression ratio denominator', [[5, 3, 1, 4, 2, 7, 3, 6], [2, 2, 1], 15, 50], [28969, [3, 6, 8]]), ('regression: compression ratio denominator', [[3, 5, 5, 6, 7], [2, 1, 2], 22, 10], [629, [4, 5]]), ('partial-repair probe', [[2, 4, 6, 5, 5], [1, 3, 2], 19, 10], [200, [4, 5]]), ('two-line paragraph with loose first line', [[4, 5, 3, 6], [2, 2, 1], 14, 10], [12200, [3, 4]]), ('last line overfull', [[5, 5, 5], [1, 1, 0], 9, 10], ['infeasible']), ('control layout', [[5, 4, 5], [1, 3, 2], 20, 1], [1, [3]]), ('control layout', [[1, 3, 3], [3, 3, 0], 12, 50], [271669, [2, 3]])], [('regression: compression ratio denominator', [[2, 7, 4, 4, 2, 1, 1, 3], [1, 3, 2], 11, 10], [440, [2, 5, 8]]), ('regression: compression ratio denominator', [[3, 1, 2, 3, 2, 7, 4], [2, 3, 2], 11, 50], [11400, [4, 6, 7]]), ('regression: compression ratio denominator', [[7, 6, 7, 4, 4, 2], [2, 1, 2], 16, 10], [17904, [2, 5, 6]]), ('regression: compression ratio denominator', [[7, 7, 7, 6], [2, 3, 1], 24, 10], [629, [3, 4]]), ('tight then loose lines', [[3, 3, 3, 3, 3, 3, 3], [2, 2, 1], 11, 1], [20403, [3, 6, 7]]), ('single word paragraph', [[7], [2, 2, 1], 10, 10], [100, [1]]), ('control layout', [[5, 2, 3], [1, 1, 0], 23, 10], [100, [3]]), ('control layout', [[5, 5, 4], [1, 1, 2], 19, 1], [1, [3]])], [('regression: compression ratio denominator', [[1, 5, 1, 4, 5, 7], [1, 3, 2], 23, 50], [3969, [6]]), ('regression: compression ratio denominator', [[5, 1, 5], [2, 3, 2], 11, 10], [12100, [3]]), ('regression: compression ratio denominator', [[1, 7, 7, 2, 4, 1, 3, 4], [1, 1, 2], 13, 50], [27500, [3, 7, 8]]), ('partial-repair probe', [[6, 6, 7, 2], [2, 2, 2], 24, 10], [244, [3, 4]]), ('single word paragraph', [[7], [2, 2, 1], 10, 10], [100, [1]]), ('tight then loose lines', [[3, 3, 3, 3, 3, 3, 3], [2, 2, 1], 11, 1], [20403, [3, 6, 7]]), ('control layout', [[5, 4, 4, 1, 6], [2, 2, 0], 20, 10], [200, [4, 5]]), ('control layout', [[3, 7, 2], [1, 3, 1], 14, 1], [1, [3]])], [('regression: compression ratio denominator', [[5, 3, 6, 2], [2, 1, 2], 14, 1], [10202, [3, 4]]), ('regression: compression ratio denominator', [[1, 6, 5, 4, 7], [3, 3, 2], 11, 10], [825, [2, 4, 5]]), ('partial-repair probe', [[4, 6, 3, 7], [3, 3, 2], 15, 50], [8900, [2, 4]]), ('regression: compression ratio denominator', [[5, 4, 4, 7, 5, 3, 3], [2, 1, 2], 22, 10], [1700, [4, 7]]), ('single word paragraph', [[7], [2, 2, 1], 10, 10], [100, [1]]), ('two-line paragraph with loose first line', [[4, 5, 3, 6], [2, 2, 1], 14, 10], [12200, [3, 4]]), ('control layout', [[2, 6, 3, 3, 7, 7], [3, 3, 1], 12, 1], ['infeasible']), ('control layout', [[5, 5, 4], [1, 1, 2], 19, 1], [1, [3]])]]
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 |
|---|---|---|---|
| two-line paragraph with loose first line | [296, [3, 4]] | [12200, [3, 4]] | Failed |
| regression: compression ratio denominator | [5981, [4, 7]] | [8900, [4, 7]] | Failed |
| regression: compression ratio denominator | [3, [3, 6, 7]] | [11, [3, 6, 7]] | Failed |
| regression: compression ratio denominator | [7938, [3, 6]] | [12433, [3, 6]] | Failed |
| last line overfull | ['infeasible'] | ['infeasible'] | Passed |
| single word paragraph | [100, [1]] | [100, [1]] | Passed |
| control layout | [6469, [3, 5]] | [6469, [3, 5]] | Passed |
| control layout | [200, [3, 4]] | [200, [3, 4]] | Passed |
SHA-256 / 9c7df757d0de97b4e9485aab8849164e81c07e9b1bc1a773c728e268c3c9ddde
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(x):
words, glue, width, lp = x
sp, st, sh = glue
n = len(words)
def rate(i, j):
gaps = j - i - 1
nat = sum(words[i:j]) + sp * gaps
short = width - nat
if j == n and short >= 0:
return 0, 1
if short > 0:
if st * gaps == 0:
return None
r = Fraction(short, st * gaps)
elif short < 0:
if -short > sh * gaps:
return None
r = Fraction(short, sh * gaps)
else:
r = Fraction(0)
b = min(10000, math.floor(100 * abs(r) ** 3 + Fraction(1, 2)))
if b > 1000:
return None
fit = 0 if r < Fraction(-1, 2) else 1 if r <= Fraction(1, 2) else 2 if r <= 1 else 3
return b, fit
best = {(0, 1): (0, [])}
for j in range(1, n + 1):
for i in range(j):
rated = rate(i, j)
if rated is None:
continue
b, fit = rated
for (pos, pfit), (dem, brk) in sorted(best.items()):
if pos != i:
continue
d = dem + (lp + b) ** 2
if abs(fit - pfit) > 1:
d += 3000
key = (j, fit)
if key not in best or d < best[key][0]:
best[key] = (d, brk + [j])
finals = [v for (pos, f), v in best.items() if pos == n]
if not finals:
return ['infeasible']
d, brk = min(finals)
return [d, brk]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('two-line paragraph with loose first line', [[4, 5, 3, 6], [2, 2, 1], 14, 10], [12200, [3, 4]]), ('regression: compression ratio denominator', [[5, 5, 6, 5, 3, 6, 2], [2, 1, 2], 23, 50], [8900, [4, 7]]), ('regression: compression ratio denominator', [[6, 1, 5, 1, 3, 7, 4], [2, 3, 2], 15, 1], [11, [3, 6, 7]]), ('regression: compression ratio denominator', [[6, 2, 3, 7, 4, 4], [3, 1, 2], 18, 50], [12433, [3, 6]]), ('last line overfull', [[5, 5, 5], [1, 1, 0], 9, 10], ['infeasible']), ('single word paragraph', [[7], [2, 2, 1], 10, 10], [100, [1]]), ('control layout', [[7, 1, 7, 1, 6], [3, 3, 0], 24, 50], [6469, [3, 5]]), ('control layout', [[5, 2, 7, 1], [3, 2, 1], 20, 10], [200, [3, 4]])], [('regression: compression ratio denominator', [[5, 1, 5], [2, 3, 2], 11, 10], [12100, [3]]), ('regression: compression ratio denominator', [[5, 3, 1, 4, 2, 7, 3, 6], [2, 2, 1], 15, 50], [28969, [3, 6, 8]]), ('regression: compression ratio denominator', [[3, 5, 5, 6, 7], [2, 1, 2], 22, 10], [629, [4, 5]]), ('partial-repair probe', [[2, 4, 6, 5, 5], [1, 3, 2], 19, 10], [200, [4, 5]]), ('two-line paragraph with loose first line', [[4, 5, 3, 6], [2, 2, 1], 14, 10], [12200, [3, 4]]), ('last line overfull', [[5, 5, 5], [1, 1, 0], 9, 10], ['infeasible']), ('control layout', [[5, 4, 5], [1, 3, 2], 20, 1], [1, [3]]), ('control layout', [[1, 3, 3], [3, 3, 0], 12, 50], [271669, [2, 3]])], [('regression: compression ratio denominator', [[2, 7, 4, 4, 2, 1, 1, 3], [1, 3, 2], 11, 10], [440, [2, 5, 8]]), ('regression: compression ratio denominator', [[3, 1, 2, 3, 2, 7, 4], [2, 3, 2], 11, 50], [11400, [4, 6, 7]]), ('regression: compression ratio denominator', [[7, 6, 7, 4, 4, 2], [2, 1, 2], 16, 10], [17904, [2, 5, 6]]), ('regression: compression ratio denominator', [[7, 7, 7, 6], [2, 3, 1], 24, 10], [629, [3, 4]]), ('tight then loose lines', [[3, 3, 3, 3, 3, 3, 3], [2, 2, 1], 11, 1], [20403, [3, 6, 7]]), ('single word paragraph', [[7], [2, 2, 1], 10, 10], [100, [1]]), ('control layout', [[5, 2, 3], [1, 1, 0], 23, 10], [100, [3]]), ('control layout', [[5, 5, 4], [1, 1, 2], 19, 1], [1, [3]])], [('regression: compression ratio denominator', [[1, 5, 1, 4, 5, 7], [1, 3, 2], 23, 50], [3969, [6]]), ('regression: compression ratio denominator', [[5, 1, 5], [2, 3, 2], 11, 10], [12100, [3]]), ('regression: compression ratio denominator', [[1, 7, 7, 2, 4, 1, 3, 4], [1, 1, 2], 13, 50], [27500, [3, 7, 8]]), ('partial-repair probe', [[6, 6, 7, 2], [2, 2, 2], 24, 10], [244, [3, 4]]), ('single word paragraph', [[7], [2, 2, 1], 10, 10], [100, [1]]), ('tight then loose lines', [[3, 3, 3, 3, 3, 3, 3], [2, 2, 1], 11, 1], [20403, [3, 6, 7]]), ('control layout', [[5, 4, 4, 1, 6], [2, 2, 0], 20, 10], [200, [4, 5]]), ('control layout', [[3, 7, 2], [1, 3, 1], 14, 1], [1, [3]])], [('regression: compression ratio denominator', [[5, 3, 6, 2], [2, 1, 2], 14, 1], [10202, [3, 4]]), ('regression: compression ratio denominator', [[1, 6, 5, 4, 7], [3, 3, 2], 11, 10], [825, [2, 4, 5]]), ('partial-repair probe', [[4, 6, 3, 7], [3, 3, 2], 15, 50], [8900, [2, 4]]), ('regression: compression ratio denominator', [[5, 4, 4, 7, 5, 3, 3], [2, 1, 2], 22, 10], [1700, [4, 7]]), ('single word paragraph', [[7], [2, 2, 1], 10, 10], [100, [1]]), ('two-line paragraph with loose first line', [[4, 5, 3, 6], [2, 2, 1], 14, 10], [12200, [3, 4]]), ('control layout', [[2, 6, 3, 3, 7, 7], [3, 3, 1], 12, 1], ['infeasible']), ('control layout', [[5, 5, 4], [1, 1, 2], 19, 1], [1, [3]])]]
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 |
|---|---|---|---|
| two-line paragraph with loose first line | [12200, [3, 4]] | [12200, [3, 4]] | Passed |
| regression: compression ratio denominator | [8900, [4, 7]] | [8900, [4, 7]] | Passed |
| regression: compression ratio denominator | [11, [3, 6, 7]] | [11, [3, 6, 7]] | Passed |
| regression: compression ratio denominator | [12433, [3, 6]] | [12433, [3, 6]] | Passed |
| last line overfull | ['infeasible'] | ['infeasible'] | Passed |
| single word paragraph | [100, [1]] | [100, [1]] | Passed |
| control layout | [6469, [3, 5]] | [6469, [3, 5]] | Passed |
| control layout | [200, [3, 4]] | [200, [3, 4]] | Passed |
SHA-256 / ecfb3becf239f00ce41946b1e5ee59e05143d684fb210b3476d35b7516c7d0df
Verification & scope
A deterministic toy typesetting model with integer widths and a stipulated rule set; it does not claim conformance to any engine. 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:49:48.893765+00:00.
Case digest / f7a1f96c01e4cad178b29a48f0695ae48bd40b6a91bb69e4f55ea4623da984c4