FA-11821 / Document structure integrity / Open access
Deleted runs leak into the accepted revision view · case 01
Deleted runs leak into the accepted revision view in the controlled document model.
ROOT CAUSE
Visible content is assembled without interpreting revision run kinds.
VERIFIED REPAIR
Choose included revision kinds according to the requested revision decision.
Unsuccessful approach: Always accepting revisions gives the wrong document when rejecting them.
Case contract
Runs have kind plain, insert, or delete. Accept includes plain and insert; reject includes plain and delete, preserving order.
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(runs, accept):
return ''.join(text for kind,text in runs)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [(( [('plain','a'),('delete','d'*N),('insert','i')],True),'ai'), (([('plain','a'),('delete','d'*N),('insert','i')],False),'a'+'d'*N), (([],True),''), (([('insert','x')],False),''), (([('delete','x')],True),''), (([('plain','x')],False),'x')]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| document fixture 0 | adi | ai | Failed |
| document fixture 1 | adi | ad | Failed |
| document fixture 2 | | | Passed |
| document fixture 3 | x | | Failed |
| document fixture 4 | x | | Failed |
| document fixture 5 | x | x | Passed |
SHA-256 / cc48470769a154783ff3f04719a85cc0ac380b720c529fffc12b22873d26839e
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(runs, accept):
return ''.join(text for kind,text in runs if kind!='delete')
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [(( [('plain','a'),('delete','d'*N),('insert','i')],True),'ai'), (([('plain','a'),('delete','d'*N),('insert','i')],False),'a'+'d'*N), (([],True),''), (([('insert','x')],False),''), (([('delete','x')],True),''), (([('plain','x')],False),'x')]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| document fixture 0 | ai | ai | Passed |
| document fixture 1 | ai | ad | Failed |
| document fixture 2 | | | Passed |
| document fixture 3 | x | | Failed |
| document fixture 4 | | | Passed |
| document fixture 5 | x | x | Passed |
SHA-256 / 61ff642ef6deadd8f4f78f5768581666631dfdd6ba39148107ab326899d5e922
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(runs, accept):
return ''.join(text for kind,text in runs if kind=='plain' or kind==('insert' if accept else 'delete'))
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [(( [('plain','a'),('delete','d'*N),('insert','i')],True),'ai'), (([('plain','a'),('delete','d'*N),('insert','i')],False),'a'+'d'*N), (([],True),''), (([('insert','x')],False),''), (([('delete','x')],True),''), (([('plain','x')],False),'x')]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| document fixture 0 | ai | ai | Passed |
| document fixture 1 | ad | ad | Passed |
| document fixture 2 | | | Passed |
| document fixture 3 | | | Passed |
| document fixture 4 | | | Passed |
| document fixture 5 | x | x | Passed |
SHA-256 / d04ffcca769a9387db045424e70cab19821ef96f0ebbb13d9cfead9c57cce9b0
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.217567+00:00.
Case digest / 7b59f5910faa6991a1064bd7f31f068a0bb688193924ffc335af2e7eaa87936d