FAILURE MAP
← Case archive

FA-24796 / Client state / Open access

Autosave coalescing drops a field edit made while its preceding value is in flight · case 01

Autosave coalescing drops a field edit made while its preceding value is in flight.

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

ROOT CAUSE

The faulty implementation violates While one autosave is in flight, coalesce newer edits to each field latest value, preserve first-edit field order, and remove a queued field only if its latest type/value equals the in-flight snapshot.

VERIFIED REPAIR

While one autosave is in flight, coalesce newer edits to each field latest value, preserve first-edit field order, and remove a queued field only if its latest type/value equals the in-flight snapshot.

Unsuccessful approach: The partial repair still violates at least one explicit regression oracle.

Case contract

While one autosave is in flight, coalesce newer edits to each field latest value, preserve first-edit field order, and remove a queued field only if its latest type/value equals the in-flight snapshot.

Why this case matters

A bounded offline client-state transition with explicit lifecycle inputs.

1 / The failure

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

N = 1
observations = []
def solve(inflight, edits):
    return [(field,value) for field,value in edits if field not in inflight]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('edited same field', solve({'a':1},[('a',2)]), [('a',2)])
check('coalesce same field', solve({},[('a',1),('a',N+2)]), [('a',N+2)])
check('returned to inflight value', solve({'a':1},[('a',2),('a',1)]), [])
check('new null', solve({},[('a',None)]), [('a',None)])
check('type distinction', solve({'a':False},[('a',0)]), [('a',0)])
check('stable first-edit field order', solve({},[('b',1),('a',2),('b',3)]), [('b',3),('a',2)])
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
edited same field[][['a', 2]]Failed
coalesce same field[['a', 1], ['a', 3]][['a', 3]]Failed
returned to inflight value[][]Passed
new null[['a', None]][['a', None]]Passed
type distinction[][['a', 0]]Failed
stable first-edit field order[['b', 1], ['a', 2], ['b', 3]][['b', 3], ['a', 2]]Failed

SHA-256 / a2d9d80a514220884971bab19a4f9363f9ee64502cfdd3ba956a1f242b354b69

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(inflight, edits):
    return [(field,value) for field,value in edits if inflight.get(field)!=value]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('edited same field', solve({'a':1},[('a',2)]), [('a',2)])
check('coalesce same field', solve({},[('a',1),('a',N+2)]), [('a',N+2)])
check('returned to inflight value', solve({'a':1},[('a',2),('a',1)]), [])
check('new null', solve({},[('a',None)]), [('a',None)])
check('type distinction', solve({'a':False},[('a',0)]), [('a',0)])
check('stable first-edit field order', solve({},[('b',1),('a',2),('b',3)]), [('b',3),('a',2)])
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
edited same field[['a', 2]][['a', 2]]Passed
coalesce same field[['a', 1], ['a', 3]][['a', 3]]Failed
returned to inflight value[['a', 2]][]Failed
new null[][['a', None]]Failed
type distinction[][['a', 0]]Failed
stable first-edit field order[['b', 1], ['a', 2], ['b', 3]][['b', 3], ['a', 2]]Failed

SHA-256 / decdb4f682748979de5c13df0c6280ea6a6fbb2e6acd9ab08848c99592b6185c

3 / The verified repair

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

N = 1
observations = []
def solve(inflight, edits):
    latest={}
    for field,value in edits: latest[field]=value
    return [(field,value) for field,value in latest.items() if field not in inflight or type(inflight[field])!=type(value) or inflight[field]!=value]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('edited same field', solve({'a':1},[('a',2)]), [('a',2)])
check('coalesce same field', solve({},[('a',1),('a',N+2)]), [('a',N+2)])
check('returned to inflight value', solve({'a':1},[('a',2),('a',1)]), [])
check('new null', solve({},[('a',None)]), [('a',None)])
check('type distinction', solve({'a':False},[('a',0)]), [('a',0)])
check('stable first-edit field order', solve({},[('b',1),('a',2),('b',3)]), [('b',3),('a',2)])
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
edited same field[['a', 2]][['a', 2]]Passed
coalesce same field[['a', 3]][['a', 3]]Passed
returned to inflight value[][]Passed
new null[['a', None]][['a', None]]Passed
type distinction[['a', 0]][['a', 0]]Passed
stable first-edit field order[['b', 3], ['a', 2]][['b', 3], ['a', 2]]Passed

SHA-256 / 9598b2ac1fb20e376607bbec0084d3df91313fb6fb43987092b7a6a89b601c7c

Verification & scope

This models the stated application policy only; no browser or framework conformance is claimed. 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:41:00.734157+00:00.

Case digest / 0779f410ad60963985afea63dba0f4f9894b16263665ac1bcaf51664698a856c