FAILURE MAP
← Case archive

FA-11801 / Document structure integrity / Open access

Nested list numbering survives a parent item advance · case 01

Nested list numbering survives a parent item advance in the controlled document model.

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

ROOT CAUSE

Counters are independent even though advancing an ancestor restarts descendant list levels.

VERIFIED REPAIR

Reset every deeper counter whenever a list item is emitted.

Unsuccessful approach: Resetting only the immediate child leaves skipped deeper levels stale.

Case contract

For levels 0 through 7, emit that level counter after incrementing it and reset all deeper counters to zero; skipped levels are legal.

Why this case matters

Structured editing must preserve document semantics independently of visual rendering.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(levels):
    counts=[0]*8
    out=[]
    for level in levels:
        counts[level]+=1
        out.append(counts[level])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [(([0,2,2,0,2]+[2]*N,),[1,1,2,2,1]+list(range(2,N+2))), (([],),[]), (([0,0],),[1,2]), (([1,2,1,2],),[1,1,2,1]), (([7,7],),[1,2]), (([0,1,2,0,2],),[1,1,1,2,1])]
for i, (args, expected) in enumerate(fixtures):
    check("document fixture " + str(i), 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
document fixture 0[1, 1, 2, 2, 3, 4][1, 1, 2, 2, 1, 2]Failed
document fixture 1[][]Passed
document fixture 2[1, 2][1, 2]Passed
document fixture 3[1, 1, 2, 2][1, 1, 2, 1]Failed
document fixture 4[1, 2][1, 2]Passed
document fixture 5[1, 1, 1, 2, 2][1, 1, 1, 2, 1]Failed

SHA-256 / ffafdcc11629dade75922d839622d933f8201668cb489cedc408dc81211ae200

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(levels):
    counts=[0]*8
    out=[]
    for level in levels:
        counts[level]+=1
        if level+1<8: counts[level+1]=0
        out.append(counts[level])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [(([0,2,2,0,2]+[2]*N,),[1,1,2,2,1]+list(range(2,N+2))), (([],),[]), (([0,0],),[1,2]), (([1,2,1,2],),[1,1,2,1]), (([7,7],),[1,2]), (([0,1,2,0,2],),[1,1,1,2,1])]
for i, (args, expected) in enumerate(fixtures):
    check("document fixture " + str(i), 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
document fixture 0[1, 1, 2, 2, 3, 4][1, 1, 2, 2, 1, 2]Failed
document fixture 1[][]Passed
document fixture 2[1, 2][1, 2]Passed
document fixture 3[1, 1, 2, 1][1, 1, 2, 1]Passed
document fixture 4[1, 2][1, 2]Passed
document fixture 5[1, 1, 1, 2, 2][1, 1, 1, 2, 1]Failed

SHA-256 / 82a65cbe2fb8d09dfc9ca45ed047ec992c20c1da78f5788247dc595da65488dc

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(levels):
    counts=[0]*8
    out=[]
    for level in levels:
        counts[level]+=1
        for child in range(level+1,8): counts[child]=0
        out.append(counts[level])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [(([0,2,2,0,2]+[2]*N,),[1,1,2,2,1]+list(range(2,N+2))), (([],),[]), (([0,0],),[1,2]), (([1,2,1,2],),[1,1,2,1]), (([7,7],),[1,2]), (([0,1,2,0,2],),[1,1,1,2,1])]
for i, (args, expected) in enumerate(fixtures):
    check("document fixture " + str(i), 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
document fixture 0[1, 1, 2, 2, 1, 2][1, 1, 2, 2, 1, 2]Passed
document fixture 1[][]Passed
document fixture 2[1, 2][1, 2]Passed
document fixture 3[1, 1, 2, 1][1, 1, 2, 1]Passed
document fixture 4[1, 2][1, 2]Passed
document fixture 5[1, 1, 1, 2, 1][1, 1, 1, 2, 1]Passed

SHA-256 / 3ada181f9e5013f3323ff979265171c134f0d78defa3e4b5531697fb810e9a6a

Verification & scope

An offline simplified document model, not a claim of conformance to any office file format. 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:38:51.124904+00:00.

Case digest / a923a92808334b7eef7dd60463e6d0b372c736bb4548098cebfdd94619eea43d