FA-78036 / Subtitle cue timing / Open access
Subtitle reading-speed check: zero duration rule · case 01
Zero-length cues with a few characters are reported as readable.
ROOT CAUSE
Zero-duration cues are only flagged if they contain more than max_cps characters.
VERIFIED REPAIR
Flag any zero or negative duration cue that has a counted character.
Unsuccessful approach: Requiring more than one character still accepts single-character zero-length cues.
Case contract
For cues [start,end,text] return the 1-based indices whose reading speed exceeds max_cps. Tags <...> are removed, CRLF is treated as one line break, line breaks are not counted, all other characters (including spaces) count. The test is chars*1000 > max_cps*duration; a cue with duration <= 0 is flagged iff it has any counted character.
Why this case matters
Subtitle timing defects shift, hide or overlap captions that viewers depend on for comprehension and accessibility.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import re
N = 1
observations = []
def solve(cues, max_cps):
flagged=[]
for idx,(start,end,text) in enumerate(cues,1):
visible=re.sub(r'<[^>]*>','',text)
visible=visible.replace('\r\n','\n')
chars=len(visible.replace('\n',''))
dur=end-start
if dur<=0:
if chars>max_cps: flagged.append(idx)
continue
if chars*1000>max_cps*dur:
flagged.append(idx)
return flagged
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: zero duration rule', [[[0, 0, 'a']], 17], [1]), ('regression variant: zero duration rule', [[[7799, 7899, ''], [6867, 9867, 'Hello'], [1132, 1132, '<c.yellow>Cue</c> text'], [3310, 3310, 'a']], 17], [3, 4]), ('partial repair probe: zero duration rule', [[[6795, 6795, 'x\n']], 17], [1]), ('partial repair variant: zero duration rule', [[[7418, 10218, '<font color="red">Red</font>'], [2978, 3978, 'x\ny\nz'], [9027, 9828, 'Hi there'], [6361, 6361, 'x\n']], 10], [4]), ('boundary control', [[[0, 1000, 'abcdefghij']], 10], []), ('boundary control', [[[0, 0, '']], 17], []), ('normal control', [[[0, 500, 'a\r\nb']], 5], []), ('normal control', [[[839, 3839, 'I'], [4652, 6652, 'x\ny\nz']], 17], []), ('normal control', [[[1726, 1992, 'a<b>b</b>c<i>d</i>'], [9258, 10258, '<i>A</i>']], 15], [1])], [('regression: zero duration rule', [[[2569, 2769, 'A\r\nB\r\nC'], [1782, 1782, 'x\ny\nz']], 15], [2]), ('regression variant: zero duration rule', [[[1285, 1285, '<c.yellow>Cue</c> text'], [4496, 4596, '<i>A</i>'], [6179, 6169, 'Hello']], 20], [1, 3]), ('partial repair probe: zero duration rule', [[[6795, 6795, 'x\n']], 17], [1]), ('partial repair variant: zero duration rule', [[[3245, 3446, 'x\n'], [8378, 8478, '<c.yellow>Cue</c> text'], [5335, 5335, 'a'], [744, 744, ''], [9295, 10095, 'Two\nlines']], 10], [2, 3]), ('boundary control', [[[0, 0, '']], 17], []), ('boundary control', [[[0, 500, 'a\r\nb']], 5], []), ('normal control', [[[7732, 8133, '<i>A</i>'], [2534, 2634, 'Two\r\nlines']], 20], [2]), ('normal control', [[[5514, 5765, 'Hello']], 20], []), ('normal control', [[[893, 1893, '<c.yellow>Cue</c> text']], 10], [])], [('regression: zero duration rule', [[[8781, 9781, 'x\ny\nz'], [6605, 6664, 'x\n'], [733, 723, '<font color="red">Red</font>'], [2157, 2147, 'a']], 17], [3, 4]), ('regression variant: zero duration rule', [[[3439, 3939, 'a<b>b</b>c<i>d</i>'], [7218, 9218, '<c.yellow>Cue</c> text'], [9347, 11347, 'Two\r\nlines'], [1314, 1314, 'A\r\nB\r\nC'], [1557, 3557, 'x\ny\nz']], 10], [4]), ('partial repair probe: zero duration rule', [[[5357, 5357, 'a']], 20], [1]), ('partial repair variant: zero duration rule', [[[2531, 2531, 'a'], [8471, 9137, ' spaced '], [7985, 8651, 'Two\r\nlines'], [8197, 8197, 'Hello']], 15], [1, 2, 4]), ('boundary control', [[[0, 500, 'a\r\nb']], 5], []), ('boundary control', [[[0, 1000, 'abcdefghij']], 10], []), ('normal control', [[[540, 607, 'a'], [5643, 7643, '<i>Italic</i> text']], 15], []), ('normal control', [[[7326, 7326, ''], [6999, 7058, 'a'], [7165, 7635, '<c.yellow>Cue</c> text'], [2882, 4882, 'a<b>b</b>c<i>d</i>']], 17], [3]), ('normal control', [[[4903, 5303, 'Two\r\nlines'], [7669, 7920, 'Hello'], [9175, 12175, 'Two\nlines']], 20], [])], [('regression: zero duration rule', [[[1857, 1857, 'x\ny\nz']], 10], [1]), ('regression variant: zero duration rule', [[[5207, 5208, ''], [8379, 8879, ' spaced '], [9114, 9365, 'x\ny\nz'], [2354, 2344, 'Hi there'], [3706, 3756, 'x\n']], 20], [4]), ('partial repair probe: zero duration rule', [[[7961, 7961, 'x\n'], [4865, 5399, 'Hi there'], [9675, 12675, ''], [2209, 3410, 'a<b>b</b>c<i>d</i>'], [4016, 4116, 'a<b>b</b>c<i>d</i>']], 15], [1, 5]), ('partial repair variant: zero duration rule', [[[4622, 4612, 'x\n']], 17], [1]), ('boundary control', [[[0, 1000, 'abcdefghij']], 10], []), ('boundary control', [[[0, 0, '']], 17], []), ('normal control', [[[4743, 5143, '<i>A</i>'], [1982, 2982, 'Hi there'], [5318, 5468, '<font color="red">Red</font>'], [4990, 5140, '<font color="red">Red</font>'], [1465, 1965, '<i>A</i>']], 20], []), ('normal control', [[[7253, 10253, '<c.yellow>Cue</c> text'], [7954, 8954, 'x\ny\nz'], [4376, 4476, 'x\ny\nz'], [5892, 6892, 'Hi there']], 15], [3]), ('normal control', [[[4014, 4081, 'a'], [3684, 6684, 'Hi there']], 15], [])], [('regression: zero duration rule', [[[2260, 3260, ' spaced '], [770, 770, '<font color="red">Red</font>'], [4134, 4201, 'a'], [6488, 9488, '<c.yellow>Cue</c> text']], 15], [2]), ('regression variant: zero duration rule', [[[5029, 5019, 'a<b>b</b>c<i>d</i>']], 20], [1]), ('partial repair probe: zero duration rule', [[[5112, 5760, '<i>Italic</i> text'], [2636, 2931, 'Hello'], [1678, 1778, 'Two\r\nlines'], [6527, 6586, 'a'], [9403, 9403, 'x\n']], 17], [3, 5]), ('partial repair variant: zero duration rule', [[[629, 629, 'I'], [6687, 9687, 'a<b>b</b>c<i>d</i>']], 10], [1]), ('boundary control', [[[0, 0, '']], 17], []), ('boundary control', [[[0, 500, 'a\r\nb']], 5], []), ('normal control', [[[7923, 7913, ''], [9749, 10249, 'I'], [364, 2364, 'x\n'], [2736, 3736, ' spaced ']], 17], []), ('normal control', [[[3769, 4036, 'a<b>b</b>c<i>d</i>']], 15], []), ('normal control', [[[4985, 5280, 'x\ny\nz'], [9931, 10402, 'Two\r\nlines'], [4982, 4982, 'Long line of dialogue here']], 17], [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 |
|---|---|---|---|
| regression: zero duration rule | [] | [1] | Failed |
| regression variant: zero duration rule | [] | [3, 4] | Failed |
| partial repair probe: zero duration rule | [] | [1] | Failed |
| partial repair variant: zero duration rule | [] | [4] | Failed |
| boundary control | [] | [] | Passed |
| boundary control | [] | [] | Passed |
| normal control | [] | [] | Passed |
| normal control | [] | [] | Passed |
| normal control | [1] | [1] | Passed |
SHA-256 / b20d12b1b9893bf3c525ab7699dfcc296d43fa39f227fdfcca84d2803c8b1a9d
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import re
N = 1
observations = []
def solve(cues, max_cps):
flagged=[]
for idx,(start,end,text) in enumerate(cues,1):
visible=re.sub(r'<[^>]*>','',text)
visible=visible.replace('\r\n','\n')
chars=len(visible.replace('\n',''))
dur=end-start
if dur<=0:
if chars>1: flagged.append(idx)
continue
if chars*1000>max_cps*dur:
flagged.append(idx)
return flagged
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: zero duration rule', [[[0, 0, 'a']], 17], [1]), ('regression variant: zero duration rule', [[[7799, 7899, ''], [6867, 9867, 'Hello'], [1132, 1132, '<c.yellow>Cue</c> text'], [3310, 3310, 'a']], 17], [3, 4]), ('partial repair probe: zero duration rule', [[[6795, 6795, 'x\n']], 17], [1]), ('partial repair variant: zero duration rule', [[[7418, 10218, '<font color="red">Red</font>'], [2978, 3978, 'x\ny\nz'], [9027, 9828, 'Hi there'], [6361, 6361, 'x\n']], 10], [4]), ('boundary control', [[[0, 1000, 'abcdefghij']], 10], []), ('boundary control', [[[0, 0, '']], 17], []), ('normal control', [[[0, 500, 'a\r\nb']], 5], []), ('normal control', [[[839, 3839, 'I'], [4652, 6652, 'x\ny\nz']], 17], []), ('normal control', [[[1726, 1992, 'a<b>b</b>c<i>d</i>'], [9258, 10258, '<i>A</i>']], 15], [1])], [('regression: zero duration rule', [[[2569, 2769, 'A\r\nB\r\nC'], [1782, 1782, 'x\ny\nz']], 15], [2]), ('regression variant: zero duration rule', [[[1285, 1285, '<c.yellow>Cue</c> text'], [4496, 4596, '<i>A</i>'], [6179, 6169, 'Hello']], 20], [1, 3]), ('partial repair probe: zero duration rule', [[[6795, 6795, 'x\n']], 17], [1]), ('partial repair variant: zero duration rule', [[[3245, 3446, 'x\n'], [8378, 8478, '<c.yellow>Cue</c> text'], [5335, 5335, 'a'], [744, 744, ''], [9295, 10095, 'Two\nlines']], 10], [2, 3]), ('boundary control', [[[0, 0, '']], 17], []), ('boundary control', [[[0, 500, 'a\r\nb']], 5], []), ('normal control', [[[7732, 8133, '<i>A</i>'], [2534, 2634, 'Two\r\nlines']], 20], [2]), ('normal control', [[[5514, 5765, 'Hello']], 20], []), ('normal control', [[[893, 1893, '<c.yellow>Cue</c> text']], 10], [])], [('regression: zero duration rule', [[[8781, 9781, 'x\ny\nz'], [6605, 6664, 'x\n'], [733, 723, '<font color="red">Red</font>'], [2157, 2147, 'a']], 17], [3, 4]), ('regression variant: zero duration rule', [[[3439, 3939, 'a<b>b</b>c<i>d</i>'], [7218, 9218, '<c.yellow>Cue</c> text'], [9347, 11347, 'Two\r\nlines'], [1314, 1314, 'A\r\nB\r\nC'], [1557, 3557, 'x\ny\nz']], 10], [4]), ('partial repair probe: zero duration rule', [[[5357, 5357, 'a']], 20], [1]), ('partial repair variant: zero duration rule', [[[2531, 2531, 'a'], [8471, 9137, ' spaced '], [7985, 8651, 'Two\r\nlines'], [8197, 8197, 'Hello']], 15], [1, 2, 4]), ('boundary control', [[[0, 500, 'a\r\nb']], 5], []), ('boundary control', [[[0, 1000, 'abcdefghij']], 10], []), ('normal control', [[[540, 607, 'a'], [5643, 7643, '<i>Italic</i> text']], 15], []), ('normal control', [[[7326, 7326, ''], [6999, 7058, 'a'], [7165, 7635, '<c.yellow>Cue</c> text'], [2882, 4882, 'a<b>b</b>c<i>d</i>']], 17], [3]), ('normal control', [[[4903, 5303, 'Two\r\nlines'], [7669, 7920, 'Hello'], [9175, 12175, 'Two\nlines']], 20], [])], [('regression: zero duration rule', [[[1857, 1857, 'x\ny\nz']], 10], [1]), ('regression variant: zero duration rule', [[[5207, 5208, ''], [8379, 8879, ' spaced '], [9114, 9365, 'x\ny\nz'], [2354, 2344, 'Hi there'], [3706, 3756, 'x\n']], 20], [4]), ('partial repair probe: zero duration rule', [[[7961, 7961, 'x\n'], [4865, 5399, 'Hi there'], [9675, 12675, ''], [2209, 3410, 'a<b>b</b>c<i>d</i>'], [4016, 4116, 'a<b>b</b>c<i>d</i>']], 15], [1, 5]), ('partial repair variant: zero duration rule', [[[4622, 4612, 'x\n']], 17], [1]), ('boundary control', [[[0, 1000, 'abcdefghij']], 10], []), ('boundary control', [[[0, 0, '']], 17], []), ('normal control', [[[4743, 5143, '<i>A</i>'], [1982, 2982, 'Hi there'], [5318, 5468, '<font color="red">Red</font>'], [4990, 5140, '<font color="red">Red</font>'], [1465, 1965, '<i>A</i>']], 20], []), ('normal control', [[[7253, 10253, '<c.yellow>Cue</c> text'], [7954, 8954, 'x\ny\nz'], [4376, 4476, 'x\ny\nz'], [5892, 6892, 'Hi there']], 15], [3]), ('normal control', [[[4014, 4081, 'a'], [3684, 6684, 'Hi there']], 15], [])], [('regression: zero duration rule', [[[2260, 3260, ' spaced '], [770, 770, '<font color="red">Red</font>'], [4134, 4201, 'a'], [6488, 9488, '<c.yellow>Cue</c> text']], 15], [2]), ('regression variant: zero duration rule', [[[5029, 5019, 'a<b>b</b>c<i>d</i>']], 20], [1]), ('partial repair probe: zero duration rule', [[[5112, 5760, '<i>Italic</i> text'], [2636, 2931, 'Hello'], [1678, 1778, 'Two\r\nlines'], [6527, 6586, 'a'], [9403, 9403, 'x\n']], 17], [3, 5]), ('partial repair variant: zero duration rule', [[[629, 629, 'I'], [6687, 9687, 'a<b>b</b>c<i>d</i>']], 10], [1]), ('boundary control', [[[0, 0, '']], 17], []), ('boundary control', [[[0, 500, 'a\r\nb']], 5], []), ('normal control', [[[7923, 7913, ''], [9749, 10249, 'I'], [364, 2364, 'x\n'], [2736, 3736, ' spaced ']], 17], []), ('normal control', [[[3769, 4036, 'a<b>b</b>c<i>d</i>']], 15], []), ('normal control', [[[4985, 5280, 'x\ny\nz'], [9931, 10402, 'Two\r\nlines'], [4982, 4982, 'Long line of dialogue here']], 17], [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 |
|---|---|---|---|
| regression: zero duration rule | [] | [1] | Failed |
| regression variant: zero duration rule | [3] | [3, 4] | Failed |
| partial repair probe: zero duration rule | [] | [1] | Failed |
| partial repair variant: zero duration rule | [] | [4] | Failed |
| boundary control | [] | [] | Passed |
| boundary control | [] | [] | Passed |
| normal control | [] | [] | Passed |
| normal control | [] | [] | Passed |
| normal control | [1] | [1] | Passed |
SHA-256 / 09d87bd0bc3ff88be30187fb6563865fc33c40131c36df589751e7b1067df5cb
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import re
N = 1
observations = []
def solve(cues, max_cps):
flagged=[]
for idx,(start,end,text) in enumerate(cues,1):
visible=re.sub(r'<[^>]*>','',text)
visible=visible.replace('\r\n','\n')
chars=len(visible.replace('\n',''))
dur=end-start
if dur<=0:
if chars>0: flagged.append(idx)
continue
if chars*1000>max_cps*dur:
flagged.append(idx)
return flagged
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: zero duration rule', [[[0, 0, 'a']], 17], [1]), ('regression variant: zero duration rule', [[[7799, 7899, ''], [6867, 9867, 'Hello'], [1132, 1132, '<c.yellow>Cue</c> text'], [3310, 3310, 'a']], 17], [3, 4]), ('partial repair probe: zero duration rule', [[[6795, 6795, 'x\n']], 17], [1]), ('partial repair variant: zero duration rule', [[[7418, 10218, '<font color="red">Red</font>'], [2978, 3978, 'x\ny\nz'], [9027, 9828, 'Hi there'], [6361, 6361, 'x\n']], 10], [4]), ('boundary control', [[[0, 1000, 'abcdefghij']], 10], []), ('boundary control', [[[0, 0, '']], 17], []), ('normal control', [[[0, 500, 'a\r\nb']], 5], []), ('normal control', [[[839, 3839, 'I'], [4652, 6652, 'x\ny\nz']], 17], []), ('normal control', [[[1726, 1992, 'a<b>b</b>c<i>d</i>'], [9258, 10258, '<i>A</i>']], 15], [1])], [('regression: zero duration rule', [[[2569, 2769, 'A\r\nB\r\nC'], [1782, 1782, 'x\ny\nz']], 15], [2]), ('regression variant: zero duration rule', [[[1285, 1285, '<c.yellow>Cue</c> text'], [4496, 4596, '<i>A</i>'], [6179, 6169, 'Hello']], 20], [1, 3]), ('partial repair probe: zero duration rule', [[[6795, 6795, 'x\n']], 17], [1]), ('partial repair variant: zero duration rule', [[[3245, 3446, 'x\n'], [8378, 8478, '<c.yellow>Cue</c> text'], [5335, 5335, 'a'], [744, 744, ''], [9295, 10095, 'Two\nlines']], 10], [2, 3]), ('boundary control', [[[0, 0, '']], 17], []), ('boundary control', [[[0, 500, 'a\r\nb']], 5], []), ('normal control', [[[7732, 8133, '<i>A</i>'], [2534, 2634, 'Two\r\nlines']], 20], [2]), ('normal control', [[[5514, 5765, 'Hello']], 20], []), ('normal control', [[[893, 1893, '<c.yellow>Cue</c> text']], 10], [])], [('regression: zero duration rule', [[[8781, 9781, 'x\ny\nz'], [6605, 6664, 'x\n'], [733, 723, '<font color="red">Red</font>'], [2157, 2147, 'a']], 17], [3, 4]), ('regression variant: zero duration rule', [[[3439, 3939, 'a<b>b</b>c<i>d</i>'], [7218, 9218, '<c.yellow>Cue</c> text'], [9347, 11347, 'Two\r\nlines'], [1314, 1314, 'A\r\nB\r\nC'], [1557, 3557, 'x\ny\nz']], 10], [4]), ('partial repair probe: zero duration rule', [[[5357, 5357, 'a']], 20], [1]), ('partial repair variant: zero duration rule', [[[2531, 2531, 'a'], [8471, 9137, ' spaced '], [7985, 8651, 'Two\r\nlines'], [8197, 8197, 'Hello']], 15], [1, 2, 4]), ('boundary control', [[[0, 500, 'a\r\nb']], 5], []), ('boundary control', [[[0, 1000, 'abcdefghij']], 10], []), ('normal control', [[[540, 607, 'a'], [5643, 7643, '<i>Italic</i> text']], 15], []), ('normal control', [[[7326, 7326, ''], [6999, 7058, 'a'], [7165, 7635, '<c.yellow>Cue</c> text'], [2882, 4882, 'a<b>b</b>c<i>d</i>']], 17], [3]), ('normal control', [[[4903, 5303, 'Two\r\nlines'], [7669, 7920, 'Hello'], [9175, 12175, 'Two\nlines']], 20], [])], [('regression: zero duration rule', [[[1857, 1857, 'x\ny\nz']], 10], [1]), ('regression variant: zero duration rule', [[[5207, 5208, ''], [8379, 8879, ' spaced '], [9114, 9365, 'x\ny\nz'], [2354, 2344, 'Hi there'], [3706, 3756, 'x\n']], 20], [4]), ('partial repair probe: zero duration rule', [[[7961, 7961, 'x\n'], [4865, 5399, 'Hi there'], [9675, 12675, ''], [2209, 3410, 'a<b>b</b>c<i>d</i>'], [4016, 4116, 'a<b>b</b>c<i>d</i>']], 15], [1, 5]), ('partial repair variant: zero duration rule', [[[4622, 4612, 'x\n']], 17], [1]), ('boundary control', [[[0, 1000, 'abcdefghij']], 10], []), ('boundary control', [[[0, 0, '']], 17], []), ('normal control', [[[4743, 5143, '<i>A</i>'], [1982, 2982, 'Hi there'], [5318, 5468, '<font color="red">Red</font>'], [4990, 5140, '<font color="red">Red</font>'], [1465, 1965, '<i>A</i>']], 20], []), ('normal control', [[[7253, 10253, '<c.yellow>Cue</c> text'], [7954, 8954, 'x\ny\nz'], [4376, 4476, 'x\ny\nz'], [5892, 6892, 'Hi there']], 15], [3]), ('normal control', [[[4014, 4081, 'a'], [3684, 6684, 'Hi there']], 15], [])], [('regression: zero duration rule', [[[2260, 3260, ' spaced '], [770, 770, '<font color="red">Red</font>'], [4134, 4201, 'a'], [6488, 9488, '<c.yellow>Cue</c> text']], 15], [2]), ('regression variant: zero duration rule', [[[5029, 5019, 'a<b>b</b>c<i>d</i>']], 20], [1]), ('partial repair probe: zero duration rule', [[[5112, 5760, '<i>Italic</i> text'], [2636, 2931, 'Hello'], [1678, 1778, 'Two\r\nlines'], [6527, 6586, 'a'], [9403, 9403, 'x\n']], 17], [3, 5]), ('partial repair variant: zero duration rule', [[[629, 629, 'I'], [6687, 9687, 'a<b>b</b>c<i>d</i>']], 10], [1]), ('boundary control', [[[0, 0, '']], 17], []), ('boundary control', [[[0, 500, 'a\r\nb']], 5], []), ('normal control', [[[7923, 7913, ''], [9749, 10249, 'I'], [364, 2364, 'x\n'], [2736, 3736, ' spaced ']], 17], []), ('normal control', [[[3769, 4036, 'a<b>b</b>c<i>d</i>']], 15], []), ('normal control', [[[4985, 5280, 'x\ny\nz'], [9931, 10402, 'Two\r\nlines'], [4982, 4982, 'Long line of dialogue here']], 17], [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 |
|---|---|---|---|
| regression: zero duration rule | [1] | [1] | Passed |
| regression variant: zero duration rule | [3, 4] | [3, 4] | Passed |
| partial repair probe: zero duration rule | [1] | [1] | Passed |
| partial repair variant: zero duration rule | [4] | [4] | Passed |
| boundary control | [] | [] | Passed |
| boundary control | [] | [] | Passed |
| normal control | [] | [] | Passed |
| normal control | [] | [] | Passed |
| normal control | [1] | [1] | Passed |
SHA-256 / 4880b645b4e448d8dd69fb90c19285cef2452f0fdce58e1b4cd4642455b06532
Verification & scope
A deterministic bounded teaching model with a stipulated toy contract; it does not claim conformance to any subtitle standard. 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:31.398765+00:00.
Case digest / 071303f5be944174a92b389043050235a71e4c59251df6fc24557e9d2c893f1b