FA-80241 / Typography line breaking / Open access
Hanging-indent list labels: label clearance · case 01
Labels exactly as wide as the hang touch the text.
ROOT CAUSE
The clearance test ignores the one-space gap after the label.
VERIFIED REPAIR
Require label width plus one space to fit inside the hang.
Unsuccessful approach: Tolerating a label one wider than the hang overprints the text.
Case contract
Input [label, words, width, hang]. The label starts at column 0; first-line text starts at column hang when label+1 space fits, else right after label plus one space. Continuation lines are indented by hang. Greedy fill with unit spaces measuring absolute columns. Return padded lines.
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
N = 1
observations = []
def solve(x):
label, words, width, hang = x
lines = []
first = True
start = hang if len(label) <= hang else len(label) + 1
cur = []
col = start
for w in words:
need = col + len(w) if not cur else col + 1 + len(w)
if cur and need > width:
prefix = label.ljust(start) if first else ' ' * hang
lines.append(prefix + ' '.join(cur))
first = False
cur = [w]
col = hang + len(w)
else:
cur.append(w)
col = need
if cur:
prefix = label.ljust(start) if first else ' ' * hang
lines.append(prefix + ' '.join(cur))
return lines
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: label clearance', ['Note:', ['type', 'x'], 12, 5], ['Note: type x']), ('regression: label clearance', ['A.1.2', ['x', 'a', 'grid', 'baseline', 'a', 'on', 'x'], 12, 5], ['A.1.2 x a', ' grid', ' baseline', ' a on x']), ('regression: label clearance', ['(a)', ['type', 'is', 'at', 'on'], 20, 3], ['(a) type is at on']), ('regression: label clearance', ['1.', ['type', 'serif', 'a', 'the', 'at', 'kerning', 'at'], 17, 2], ['1. type serif a', ' the at kerning', ' at']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('control layout', ['(a)', ['ink', 'baseline', 'serif', 'on'], 16, 4], ['(a) ink baseline', ' serif on']), ('control layout', ['(a)', ['x', 'x', 'type'], 14, 5], ['(a) x x type'])], [('regression: label clearance', ['Note:', ['baseline', 'baseline', 'at', 'grid', 'ink', 'type'], 21, 5], ['Note: baseline', ' baseline at grid', ' ink type']), ('regression: label clearance', ['1.', ['measure', 'grid', 'kerning'], 13, 2], ['1. measure', ' grid', ' kerning']), ('regression: label clearance', ['1.', ['x', 'the', 'kerning', 'x', 'baseline', 'grid'], 20, 2], ['1. x the kerning x', ' baseline grid']), ('regression: label clearance', ['Note:', ['baseline', 'serif', 'x', 'grid', 'serif', 'x', 'type'], 18, 5], ['Note: baseline', ' serif x grid', ' serif x type']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('control layout', ['1.', ['ink', 'kerning'], 22, 5], ['1. ink kerning']), ('control layout', ['A.1.2', ['x', 'ink', 'on'], 15, 3], ['A.1.2 x ink on'])], [('regression: label clearance', ['A.1.2', ['kerning', 'x', 'the', 'measure', 'ink', 'measure'], 13, 5], ['A.1.2 kerning', ' x the', ' measure', ' ink', ' measure']), ('regression: label clearance', ['10.', ['grid', 'is', 'type', 'of', 'of', 'of', 'a', 'on', 'ink'], 19, 3], ['10. grid is type of', ' of of a on ink']), ('regression: label clearance', ['iv.', ['x', 'x'], 13, 3], ['iv. x x']), ('regression: label clearance', ['(a)', ['of', 'of', 'grid', 'grid'], 15, 3], ['(a) of of grid', ' grid']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('control layout', ['A.1.2', ['ink', 'ink', 'on', 'serif', 'is', 'baseline', 'a', 'on', 'serif'], 16, 2], ['A.1.2 ink ink on', ' serif is', ' baseline a on', ' serif']), ('control layout', ['•', ['baseline', 'is', 'at'], 15, 2], ['• baseline is', ' at'])], [('regression: label clearance', ['(a)', ['at', 'on', 'of', 'grid', 'at', 'a', 'type', 'measure', 'grid'], 18, 3], ['(a) at on of grid', ' at a type', ' measure grid']), ('regression: label clearance', ['A.1.2', ['of', 'serif', 'at', 'serif', 'of', 'is'], 19, 5], ['A.1.2 of serif at', ' serif of is']), ('regression: label clearance', ['(a)', ['serif', 'x'], 19, 3], ['(a) serif x']), ('partial-repair probe', ['Note:', ['grid', 'on', 'at'], 22, 4], ['Note: grid on at']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('control layout', ['iv.', ['of', 'is'], 17, 4], ['iv. of is']), ('control layout', ['10.', ['measure', 'of', 'x', 'of', 'kerning', 'a', 'serif', 'baseline'], 20, 4], ['10. measure of x of', ' kerning a serif', ' baseline'])], [('regression: label clearance', ['A.1.2', ['at', 'of', 'ink', 'x', 'is', 'type', 'grid'], 18, 5], ['A.1.2 at of ink x', ' is type grid']), ('regression: label clearance', ['(a)', ['serif', 'x'], 19, 3], ['(a) serif x']), ('regression: label clearance', ['1.', ['x', 'type', 'baseline'], 22, 2], ['1. x type baseline']), ('regression: label clearance', ['(a)', ['at', 'on', 'of', 'grid', 'at', 'a', 'type', 'measure', 'grid'], 18, 3], ['(a) at on of grid', ' at a type', ' measure grid']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('control layout', ['(a)', ['type', 'on', 'the', 'measure'], 16, 5], ['(a) type on the', ' measure']), ('control layout', ['Note:', ['at', 'of'], 16, 2], ['Note: at of'])]]
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 |
|---|---|---|---|
| regression: label clearance | ['Note:type x'] | ['Note: type x'] | Failed |
| regression: label clearance | ['A.1.2x a', ' grid', ' baseline', ' a on x'] | ['A.1.2 x a', ' grid', ' baseline', ' a on x'] | Failed |
| regression: label clearance | ['(a)type is at on'] | ['(a) type is at on'] | Failed |
| regression: label clearance | ['1.type serif a', ' the at kerning', ' at'] | ['1. type serif a', ' the at kerning', ' at'] | Failed |
| label overflows hang | ['Note: the type', ' grid is on', ' serif'] | ['Note: the type', ' grid is on', ' serif'] | Passed |
| label exactly one short of hang | ['1. the type', ' grid is', ' on'] | ['1. the type', ' grid is', ' on'] | Passed |
| control layout | ['(a) ink baseline', ' serif on'] | ['(a) ink baseline', ' serif on'] | Passed |
| control layout | ['(a) x x type'] | ['(a) x x type'] | Passed |
SHA-256 / c51cf830c5cf6ba8e8b03a5f7b69bb7fa366651d736a7d8cf338b2e355a91d7b
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
label, words, width, hang = x
lines = []
first = True
start = hang if len(label) <= hang + 1 else len(label) + 1
cur = []
col = start
for w in words:
need = col + len(w) if not cur else col + 1 + len(w)
if cur and need > width:
prefix = label.ljust(start) if first else ' ' * hang
lines.append(prefix + ' '.join(cur))
first = False
cur = [w]
col = hang + len(w)
else:
cur.append(w)
col = need
if cur:
prefix = label.ljust(start) if first else ' ' * hang
lines.append(prefix + ' '.join(cur))
return lines
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: label clearance', ['Note:', ['type', 'x'], 12, 5], ['Note: type x']), ('regression: label clearance', ['A.1.2', ['x', 'a', 'grid', 'baseline', 'a', 'on', 'x'], 12, 5], ['A.1.2 x a', ' grid', ' baseline', ' a on x']), ('regression: label clearance', ['(a)', ['type', 'is', 'at', 'on'], 20, 3], ['(a) type is at on']), ('regression: label clearance', ['1.', ['type', 'serif', 'a', 'the', 'at', 'kerning', 'at'], 17, 2], ['1. type serif a', ' the at kerning', ' at']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('control layout', ['(a)', ['ink', 'baseline', 'serif', 'on'], 16, 4], ['(a) ink baseline', ' serif on']), ('control layout', ['(a)', ['x', 'x', 'type'], 14, 5], ['(a) x x type'])], [('regression: label clearance', ['Note:', ['baseline', 'baseline', 'at', 'grid', 'ink', 'type'], 21, 5], ['Note: baseline', ' baseline at grid', ' ink type']), ('regression: label clearance', ['1.', ['measure', 'grid', 'kerning'], 13, 2], ['1. measure', ' grid', ' kerning']), ('regression: label clearance', ['1.', ['x', 'the', 'kerning', 'x', 'baseline', 'grid'], 20, 2], ['1. x the kerning x', ' baseline grid']), ('regression: label clearance', ['Note:', ['baseline', 'serif', 'x', 'grid', 'serif', 'x', 'type'], 18, 5], ['Note: baseline', ' serif x grid', ' serif x type']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('control layout', ['1.', ['ink', 'kerning'], 22, 5], ['1. ink kerning']), ('control layout', ['A.1.2', ['x', 'ink', 'on'], 15, 3], ['A.1.2 x ink on'])], [('regression: label clearance', ['A.1.2', ['kerning', 'x', 'the', 'measure', 'ink', 'measure'], 13, 5], ['A.1.2 kerning', ' x the', ' measure', ' ink', ' measure']), ('regression: label clearance', ['10.', ['grid', 'is', 'type', 'of', 'of', 'of', 'a', 'on', 'ink'], 19, 3], ['10. grid is type of', ' of of a on ink']), ('regression: label clearance', ['iv.', ['x', 'x'], 13, 3], ['iv. x x']), ('regression: label clearance', ['(a)', ['of', 'of', 'grid', 'grid'], 15, 3], ['(a) of of grid', ' grid']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('control layout', ['A.1.2', ['ink', 'ink', 'on', 'serif', 'is', 'baseline', 'a', 'on', 'serif'], 16, 2], ['A.1.2 ink ink on', ' serif is', ' baseline a on', ' serif']), ('control layout', ['•', ['baseline', 'is', 'at'], 15, 2], ['• baseline is', ' at'])], [('regression: label clearance', ['(a)', ['at', 'on', 'of', 'grid', 'at', 'a', 'type', 'measure', 'grid'], 18, 3], ['(a) at on of grid', ' at a type', ' measure grid']), ('regression: label clearance', ['A.1.2', ['of', 'serif', 'at', 'serif', 'of', 'is'], 19, 5], ['A.1.2 of serif at', ' serif of is']), ('regression: label clearance', ['(a)', ['serif', 'x'], 19, 3], ['(a) serif x']), ('partial-repair probe', ['Note:', ['grid', 'on', 'at'], 22, 4], ['Note: grid on at']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('control layout', ['iv.', ['of', 'is'], 17, 4], ['iv. of is']), ('control layout', ['10.', ['measure', 'of', 'x', 'of', 'kerning', 'a', 'serif', 'baseline'], 20, 4], ['10. measure of x of', ' kerning a serif', ' baseline'])], [('regression: label clearance', ['A.1.2', ['at', 'of', 'ink', 'x', 'is', 'type', 'grid'], 18, 5], ['A.1.2 at of ink x', ' is type grid']), ('regression: label clearance', ['(a)', ['serif', 'x'], 19, 3], ['(a) serif x']), ('regression: label clearance', ['1.', ['x', 'type', 'baseline'], 22, 2], ['1. x type baseline']), ('regression: label clearance', ['(a)', ['at', 'on', 'of', 'grid', 'at', 'a', 'type', 'measure', 'grid'], 18, 3], ['(a) at on of grid', ' at a type', ' measure grid']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('control layout', ['(a)', ['type', 'on', 'the', 'measure'], 16, 5], ['(a) type on the', ' measure']), ('control layout', ['Note:', ['at', 'of'], 16, 2], ['Note: at of'])]]
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 |
|---|---|---|---|
| regression: label clearance | ['Note:type x'] | ['Note: type x'] | Failed |
| regression: label clearance | ['A.1.2x a', ' grid', ' baseline', ' a on x'] | ['A.1.2 x a', ' grid', ' baseline', ' a on x'] | Failed |
| regression: label clearance | ['(a)type is at on'] | ['(a) type is at on'] | Failed |
| regression: label clearance | ['1.type serif a', ' the at kerning', ' at'] | ['1. type serif a', ' the at kerning', ' at'] | Failed |
| label overflows hang | ['Note: the type', ' grid is on', ' serif'] | ['Note: the type', ' grid is on', ' serif'] | Passed |
| label exactly one short of hang | ['1. the type', ' grid is', ' on'] | ['1. the type', ' grid is', ' on'] | Passed |
| control layout | ['(a) ink baseline', ' serif on'] | ['(a) ink baseline', ' serif on'] | Passed |
| control layout | ['(a) x x type'] | ['(a) x x type'] | Passed |
SHA-256 / 491bfa270a968c346746722dfe98a4c8038ada91223e7f4da6a318327bc4b2a7
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
label, words, width, hang = x
lines = []
first = True
start = hang if len(label) + 1 <= hang else len(label) + 1
cur = []
col = start
for w in words:
need = col + len(w) if not cur else col + 1 + len(w)
if cur and need > width:
prefix = label.ljust(start) if first else ' ' * hang
lines.append(prefix + ' '.join(cur))
first = False
cur = [w]
col = hang + len(w)
else:
cur.append(w)
col = need
if cur:
prefix = label.ljust(start) if first else ' ' * hang
lines.append(prefix + ' '.join(cur))
return lines
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: label clearance', ['Note:', ['type', 'x'], 12, 5], ['Note: type x']), ('regression: label clearance', ['A.1.2', ['x', 'a', 'grid', 'baseline', 'a', 'on', 'x'], 12, 5], ['A.1.2 x a', ' grid', ' baseline', ' a on x']), ('regression: label clearance', ['(a)', ['type', 'is', 'at', 'on'], 20, 3], ['(a) type is at on']), ('regression: label clearance', ['1.', ['type', 'serif', 'a', 'the', 'at', 'kerning', 'at'], 17, 2], ['1. type serif a', ' the at kerning', ' at']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('control layout', ['(a)', ['ink', 'baseline', 'serif', 'on'], 16, 4], ['(a) ink baseline', ' serif on']), ('control layout', ['(a)', ['x', 'x', 'type'], 14, 5], ['(a) x x type'])], [('regression: label clearance', ['Note:', ['baseline', 'baseline', 'at', 'grid', 'ink', 'type'], 21, 5], ['Note: baseline', ' baseline at grid', ' ink type']), ('regression: label clearance', ['1.', ['measure', 'grid', 'kerning'], 13, 2], ['1. measure', ' grid', ' kerning']), ('regression: label clearance', ['1.', ['x', 'the', 'kerning', 'x', 'baseline', 'grid'], 20, 2], ['1. x the kerning x', ' baseline grid']), ('regression: label clearance', ['Note:', ['baseline', 'serif', 'x', 'grid', 'serif', 'x', 'type'], 18, 5], ['Note: baseline', ' serif x grid', ' serif x type']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('control layout', ['1.', ['ink', 'kerning'], 22, 5], ['1. ink kerning']), ('control layout', ['A.1.2', ['x', 'ink', 'on'], 15, 3], ['A.1.2 x ink on'])], [('regression: label clearance', ['A.1.2', ['kerning', 'x', 'the', 'measure', 'ink', 'measure'], 13, 5], ['A.1.2 kerning', ' x the', ' measure', ' ink', ' measure']), ('regression: label clearance', ['10.', ['grid', 'is', 'type', 'of', 'of', 'of', 'a', 'on', 'ink'], 19, 3], ['10. grid is type of', ' of of a on ink']), ('regression: label clearance', ['iv.', ['x', 'x'], 13, 3], ['iv. x x']), ('regression: label clearance', ['(a)', ['of', 'of', 'grid', 'grid'], 15, 3], ['(a) of of grid', ' grid']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('control layout', ['A.1.2', ['ink', 'ink', 'on', 'serif', 'is', 'baseline', 'a', 'on', 'serif'], 16, 2], ['A.1.2 ink ink on', ' serif is', ' baseline a on', ' serif']), ('control layout', ['•', ['baseline', 'is', 'at'], 15, 2], ['• baseline is', ' at'])], [('regression: label clearance', ['(a)', ['at', 'on', 'of', 'grid', 'at', 'a', 'type', 'measure', 'grid'], 18, 3], ['(a) at on of grid', ' at a type', ' measure grid']), ('regression: label clearance', ['A.1.2', ['of', 'serif', 'at', 'serif', 'of', 'is'], 19, 5], ['A.1.2 of serif at', ' serif of is']), ('regression: label clearance', ['(a)', ['serif', 'x'], 19, 3], ['(a) serif x']), ('partial-repair probe', ['Note:', ['grid', 'on', 'at'], 22, 4], ['Note: grid on at']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('control layout', ['iv.', ['of', 'is'], 17, 4], ['iv. of is']), ('control layout', ['10.', ['measure', 'of', 'x', 'of', 'kerning', 'a', 'serif', 'baseline'], 20, 4], ['10. measure of x of', ' kerning a serif', ' baseline'])], [('regression: label clearance', ['A.1.2', ['at', 'of', 'ink', 'x', 'is', 'type', 'grid'], 18, 5], ['A.1.2 at of ink x', ' is type grid']), ('regression: label clearance', ['(a)', ['serif', 'x'], 19, 3], ['(a) serif x']), ('regression: label clearance', ['1.', ['x', 'type', 'baseline'], 22, 2], ['1. x type baseline']), ('regression: label clearance', ['(a)', ['at', 'on', 'of', 'grid', 'at', 'a', 'type', 'measure', 'grid'], 18, 3], ['(a) at on of grid', ' at a type', ' measure grid']), ('label overflows hang', ['Note:', ['the', 'type', 'grid', 'is', 'on', 'serif'], 14, 3], ['Note: the type', ' grid is on', ' serif']), ('label exactly one short of hang', ['1.', ['the', 'type', 'grid', 'is', 'on'], 12, 3], ['1. the type', ' grid is', ' on']), ('control layout', ['(a)', ['type', 'on', 'the', 'measure'], 16, 5], ['(a) type on the', ' measure']), ('control layout', ['Note:', ['at', 'of'], 16, 2], ['Note: at of'])]]
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 |
|---|---|---|---|
| regression: label clearance | ['Note: type x'] | ['Note: type x'] | Passed |
| regression: label clearance | ['A.1.2 x a', ' grid', ' baseline', ' a on x'] | ['A.1.2 x a', ' grid', ' baseline', ' a on x'] | Passed |
| regression: label clearance | ['(a) type is at on'] | ['(a) type is at on'] | Passed |
| regression: label clearance | ['1. type serif a', ' the at kerning', ' at'] | ['1. type serif a', ' the at kerning', ' at'] | Passed |
| label overflows hang | ['Note: the type', ' grid is on', ' serif'] | ['Note: the type', ' grid is on', ' serif'] | Passed |
| label exactly one short of hang | ['1. the type', ' grid is', ' on'] | ['1. the type', ' grid is', ' on'] | Passed |
| control layout | ['(a) ink baseline', ' serif on'] | ['(a) ink baseline', ' serif on'] | Passed |
| control layout | ['(a) x x type'] | ['(a) x x type'] | Passed |
SHA-256 / 55cbcd01e9a859a2a9684305732ba2e7fa186b67f7dbf018a9a13c60342c62d1
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:52.159397+00:00.
Case digest / c6de3132beeea2c60b7d6c21c0f5399379b1e4517afdc861bdc04da0a00681a6