FAILURE MAP
← Case archive

FA-23571 / Client state / Open access

Persisted client snapshot admission: Serialized field order · case 01

Serialized field order.

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

ROOT CAUSE

The serialized-field-order client decision evaluates `list(stored)` instead of `sorted(k for k in stored if k in allowed and k not in transient)`.

VERIFIED REPAIR

Apply the modeled serialized-field-order rule: `sorted(k for k in stored if k in allowed and k not in transient)`.

Unsuccessful approach: The partial repair `sorted(k for k in allowed if k not in transient)` still violates the explicit fixture contract.

Case contract

Persist only declared nontransient keys. Missing defaults are filled without replacing null/falsy data. Older schema versions migrate through each intermediate step; future versions stay read-only and keep their version stamp. Operation serialized-field-order has the six explicit input/output oracles below.

Why this case matters

An offline client lifecycle model that isolates a state-management defect without DOM rendering or network services.

1 / The failure

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

N = 1
observations = []
def solve(operation, s):
    stored, version, current, allowed, defaults, transient = s
    if operation == 'unknown-field-projection':
        return {k:v for k,v in stored.items() if k in allowed}
    if operation == 'default-overlay-order':
        return {**defaults,**stored}
    if operation == 'future-version-readonly':
        return version>current
    if operation == 'migration-step-list':
        return list(range(version,current)) if version<=current else []
    if operation == 'transient-exclusion':
        return {k:v for k,v in stored.items() if k not in transient}
    if operation == 'missing-default-identification':
        return sorted(set(defaults)-set(stored))
    if operation == 'nullable-persisted-value':
        return stored['a'] if 'a' in stored else defaults.get('a')
    if operation == 'write-version-stamp':
        return max(version,current)
    if operation == 'schema-fallback-policy':
        return 'read-only' if version>current else ('migrate' if version<current else 'load')
    if operation == 'serialized-field-order':
        return list(stored)
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('unknown-field-projection scenario 1', solve('unknown-field-projection', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), {'a':N,'b':False})
check('unknown-field-projection scenario 2', solve('unknown-field-projection', ({},2,2,['a'],{'a':N},[])), {})
check('unknown-field-projection scenario 3', solve('unknown-field-projection', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), {'a':None})
check('unknown-field-projection scenario 4', solve('unknown-field-projection', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), {'b':N})
check('unknown-field-projection scenario 5', solve('unknown-field-projection', ({'a':'','b':True},2,2,[],{},[])), {})
check('unknown-field-projection scenario 6', solve('unknown-field-projection', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), {'a':N})
check('default-overlay-order scenario 1', solve('default-overlay-order', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), {'a':N,'b':False,'temp':7})
check('default-overlay-order scenario 2', solve('default-overlay-order', ({},2,2,['a'],{'a':N},[])), {'a':N})
check('default-overlay-order scenario 3', solve('default-overlay-order', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), {'a':None,'extra':1})
check('default-overlay-order scenario 4', solve('default-overlay-order', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), {'b':N,'a':0})
check('default-overlay-order scenario 5', solve('default-overlay-order', ({'a':'','b':True},2,2,[],{},[])), {'a':'','b':True})
check('default-overlay-order scenario 6', solve('default-overlay-order', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), {'a':N,'temp':1})
check('future-version-readonly scenario 1', solve('future-version-readonly', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), False)
check('future-version-readonly scenario 2', solve('future-version-readonly', ({},2,2,['a'],{'a':N},[])), False)
check('future-version-readonly scenario 3', solve('future-version-readonly', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), True)
check('future-version-readonly scenario 4', solve('future-version-readonly', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), False)
check('future-version-readonly scenario 5', solve('future-version-readonly', ({'a':'','b':True},2,2,[],{},[])), False)
check('future-version-readonly scenario 6', solve('future-version-readonly', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), False)
check('migration-step-list scenario 1', solve('migration-step-list', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), [1])
check('migration-step-list scenario 2', solve('migration-step-list', ({},2,2,['a'],{'a':N},[])), [])
check('migration-step-list scenario 3', solve('migration-step-list', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), [])
check('migration-step-list scenario 4', solve('migration-step-list', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), [0,1])
check('migration-step-list scenario 5', solve('migration-step-list', ({'a':'','b':True},2,2,[],{},[])), [])
check('migration-step-list scenario 6', solve('migration-step-list', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), [])
check('transient-exclusion scenario 1', solve('transient-exclusion', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), {'a':N,'b':False})
check('transient-exclusion scenario 2', solve('transient-exclusion', ({},2,2,['a'],{'a':N},[])), {})
check('transient-exclusion scenario 3', solve('transient-exclusion', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), {'a':None})
check('transient-exclusion scenario 4', solve('transient-exclusion', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), {'b':N})
check('transient-exclusion scenario 5', solve('transient-exclusion', ({'a':'','b':True},2,2,[],{},[])), {'a':'','b':True})
check('transient-exclusion scenario 6', solve('transient-exclusion', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), {'a':N})
check('missing-default-identification scenario 1', solve('missing-default-identification', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), [])
check('missing-default-identification scenario 2', solve('missing-default-identification', ({},2,2,['a'],{'a':N},[])), ['a'])
check('missing-default-identification scenario 3', solve('missing-default-identification', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), [])
check('missing-default-identification scenario 4', solve('missing-default-identification', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), [])
check('missing-default-identification scenario 5', solve('missing-default-identification', ({'a':'','b':True},2,2,[],{},[])), [])
check('missing-default-identification scenario 6', solve('missing-default-identification', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), [])
check('nullable-persisted-value scenario 1', solve('nullable-persisted-value', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), N)
check('nullable-persisted-value scenario 2', solve('nullable-persisted-value', ({},2,2,['a'],{'a':N},[])), N)
check('nullable-persisted-value scenario 3', solve('nullable-persisted-value', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), None)
check('nullable-persisted-value scenario 4', solve('nullable-persisted-value', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), 0)
check('nullable-persisted-value scenario 5', solve('nullable-persisted-value', ({'a':'','b':True},2,2,[],{},[])), '')
check('nullable-persisted-value scenario 6', solve('nullable-persisted-value', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), N)
check('write-version-stamp scenario 1', solve('write-version-stamp', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), 2)
check('write-version-stamp scenario 2', solve('write-version-stamp', ({},2,2,['a'],{'a':N},[])), 2)
check('write-version-stamp scenario 3', solve('write-version-stamp', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), 3)
check('write-version-stamp scenario 4', solve('write-version-stamp', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), 2)
check('write-version-stamp scenario 5', solve('write-version-stamp', ({'a':'','b':True},2,2,[],{},[])), 2)
check('write-version-stamp scenario 6', solve('write-version-stamp', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), 1)
check('schema-fallback-policy scenario 1', solve('schema-fallback-policy', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), 'migrate')
check('schema-fallback-policy scenario 2', solve('schema-fallback-policy', ({},2,2,['a'],{'a':N},[])), 'load')
check('schema-fallback-policy scenario 3', solve('schema-fallback-policy', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), 'read-only')
check('schema-fallback-policy scenario 4', solve('schema-fallback-policy', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), 'migrate')
check('schema-fallback-policy scenario 5', solve('schema-fallback-policy', ({'a':'','b':True},2,2,[],{},[])), 'load')
check('schema-fallback-policy scenario 6', solve('schema-fallback-policy', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), 'load')
check('serialized-field-order scenario 1', solve('serialized-field-order', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), ['a','b'])
check('serialized-field-order scenario 2', solve('serialized-field-order', ({},2,2,['a'],{'a':N},[])), [])
check('serialized-field-order scenario 3', solve('serialized-field-order', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), ['a'])
check('serialized-field-order scenario 4', solve('serialized-field-order', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), ['b'])
check('serialized-field-order scenario 5', solve('serialized-field-order', ({'a':'','b':True},2,2,[],{},[])), [])
check('serialized-field-order scenario 6', solve('serialized-field-order', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), ['a'])
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
unknown-field-projection scenario 1{'a': 1, 'b': False}{'a': 1, 'b': False}Passed
unknown-field-projection scenario 2{}{}Passed
unknown-field-projection scenario 3{'a': None}{'a': None}Passed
unknown-field-projection scenario 4{'b': 1}{'b': 1}Passed
unknown-field-projection scenario 5{}{}Passed
unknown-field-projection scenario 6{'a': 1}{'a': 1}Passed
default-overlay-order scenario 1{'a': 1, 'b': False, 'temp': 7}{'a': 1, 'b': False, 'temp': 7}Passed
default-overlay-order scenario 2{'a': 1}{'a': 1}Passed
default-overlay-order scenario 3{'a': None, 'extra': 1}{'a': None, 'extra': 1}Passed
default-overlay-order scenario 4{'a': 0, 'b': 1}{'a': 0, 'b': 1}Passed
default-overlay-order scenario 5{'a': '', 'b': True}{'a': '', 'b': True}Passed
default-overlay-order scenario 6{'a': 1, 'temp': 1}{'a': 1, 'temp': 1}Passed
future-version-readonly scenario 1FalseFalsePassed
future-version-readonly scenario 2FalseFalsePassed
future-version-readonly scenario 3TrueTruePassed
future-version-readonly scenario 4FalseFalsePassed
future-version-readonly scenario 5FalseFalsePassed
future-version-readonly scenario 6FalseFalsePassed
migration-step-list scenario 1[1][1]Passed
migration-step-list scenario 2[][]Passed
migration-step-list scenario 3[][]Passed
migration-step-list scenario 4[0, 1][0, 1]Passed
migration-step-list scenario 5[][]Passed
migration-step-list scenario 6[][]Passed
transient-exclusion scenario 1{'a': 1, 'b': False}{'a': 1, 'b': False}Passed
transient-exclusion scenario 2{}{}Passed
transient-exclusion scenario 3{'a': None}{'a': None}Passed
transient-exclusion scenario 4{'b': 1}{'b': 1}Passed
transient-exclusion scenario 5{'a': '', 'b': True}{'a': '', 'b': True}Passed
transient-exclusion scenario 6{'a': 1}{'a': 1}Passed
missing-default-identification scenario 1[][]Passed
missing-default-identification scenario 2['a']['a']Passed
missing-default-identification scenario 3[][]Passed
missing-default-identification scenario 4[][]Passed
missing-default-identification scenario 5[][]Passed
missing-default-identification scenario 6[][]Passed
nullable-persisted-value scenario 111Passed
nullable-persisted-value scenario 211Passed
nullable-persisted-value scenario 3NoneNonePassed
nullable-persisted-value scenario 400Passed
nullable-persisted-value scenario 5Passed
nullable-persisted-value scenario 611Passed
write-version-stamp scenario 122Passed
write-version-stamp scenario 222Passed
write-version-stamp scenario 333Passed
write-version-stamp scenario 422Passed
write-version-stamp scenario 522Passed
write-version-stamp scenario 611Passed
schema-fallback-policy scenario 1migratemigratePassed
schema-fallback-policy scenario 2loadloadPassed
schema-fallback-policy scenario 3read-onlyread-onlyPassed
schema-fallback-policy scenario 4migratemigratePassed
schema-fallback-policy scenario 5loadloadPassed
schema-fallback-policy scenario 6loadloadPassed
serialized-field-order scenario 1['a', 'b', 'temp']['a', 'b']Failed
serialized-field-order scenario 2[][]Passed
serialized-field-order scenario 3['a', 'extra']['a']Failed
serialized-field-order scenario 4['a', 'b']['b']Failed
serialized-field-order scenario 5['a', 'b'][]Failed
serialized-field-order scenario 6['a', 'temp']['a']Failed

SHA-256 / 63dededb03c4863d251becdeaa88a1c70febb7ce37eb49eb9b6a6e1d870d9e37

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(operation, s):
    stored, version, current, allowed, defaults, transient = s
    if operation == 'unknown-field-projection':
        return {k:v for k,v in stored.items() if k in allowed}
    if operation == 'default-overlay-order':
        return {**defaults,**stored}
    if operation == 'future-version-readonly':
        return version>current
    if operation == 'migration-step-list':
        return list(range(version,current)) if version<=current else []
    if operation == 'transient-exclusion':
        return {k:v for k,v in stored.items() if k not in transient}
    if operation == 'missing-default-identification':
        return sorted(set(defaults)-set(stored))
    if operation == 'nullable-persisted-value':
        return stored['a'] if 'a' in stored else defaults.get('a')
    if operation == 'write-version-stamp':
        return max(version,current)
    if operation == 'schema-fallback-policy':
        return 'read-only' if version>current else ('migrate' if version<current else 'load')
    if operation == 'serialized-field-order':
        return sorted(k for k in allowed if k not in transient)
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('unknown-field-projection scenario 1', solve('unknown-field-projection', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), {'a':N,'b':False})
check('unknown-field-projection scenario 2', solve('unknown-field-projection', ({},2,2,['a'],{'a':N},[])), {})
check('unknown-field-projection scenario 3', solve('unknown-field-projection', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), {'a':None})
check('unknown-field-projection scenario 4', solve('unknown-field-projection', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), {'b':N})
check('unknown-field-projection scenario 5', solve('unknown-field-projection', ({'a':'','b':True},2,2,[],{},[])), {})
check('unknown-field-projection scenario 6', solve('unknown-field-projection', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), {'a':N})
check('default-overlay-order scenario 1', solve('default-overlay-order', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), {'a':N,'b':False,'temp':7})
check('default-overlay-order scenario 2', solve('default-overlay-order', ({},2,2,['a'],{'a':N},[])), {'a':N})
check('default-overlay-order scenario 3', solve('default-overlay-order', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), {'a':None,'extra':1})
check('default-overlay-order scenario 4', solve('default-overlay-order', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), {'b':N,'a':0})
check('default-overlay-order scenario 5', solve('default-overlay-order', ({'a':'','b':True},2,2,[],{},[])), {'a':'','b':True})
check('default-overlay-order scenario 6', solve('default-overlay-order', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), {'a':N,'temp':1})
check('future-version-readonly scenario 1', solve('future-version-readonly', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), False)
check('future-version-readonly scenario 2', solve('future-version-readonly', ({},2,2,['a'],{'a':N},[])), False)
check('future-version-readonly scenario 3', solve('future-version-readonly', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), True)
check('future-version-readonly scenario 4', solve('future-version-readonly', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), False)
check('future-version-readonly scenario 5', solve('future-version-readonly', ({'a':'','b':True},2,2,[],{},[])), False)
check('future-version-readonly scenario 6', solve('future-version-readonly', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), False)
check('migration-step-list scenario 1', solve('migration-step-list', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), [1])
check('migration-step-list scenario 2', solve('migration-step-list', ({},2,2,['a'],{'a':N},[])), [])
check('migration-step-list scenario 3', solve('migration-step-list', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), [])
check('migration-step-list scenario 4', solve('migration-step-list', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), [0,1])
check('migration-step-list scenario 5', solve('migration-step-list', ({'a':'','b':True},2,2,[],{},[])), [])
check('migration-step-list scenario 6', solve('migration-step-list', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), [])
check('transient-exclusion scenario 1', solve('transient-exclusion', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), {'a':N,'b':False})
check('transient-exclusion scenario 2', solve('transient-exclusion', ({},2,2,['a'],{'a':N},[])), {})
check('transient-exclusion scenario 3', solve('transient-exclusion', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), {'a':None})
check('transient-exclusion scenario 4', solve('transient-exclusion', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), {'b':N})
check('transient-exclusion scenario 5', solve('transient-exclusion', ({'a':'','b':True},2,2,[],{},[])), {'a':'','b':True})
check('transient-exclusion scenario 6', solve('transient-exclusion', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), {'a':N})
check('missing-default-identification scenario 1', solve('missing-default-identification', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), [])
check('missing-default-identification scenario 2', solve('missing-default-identification', ({},2,2,['a'],{'a':N},[])), ['a'])
check('missing-default-identification scenario 3', solve('missing-default-identification', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), [])
check('missing-default-identification scenario 4', solve('missing-default-identification', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), [])
check('missing-default-identification scenario 5', solve('missing-default-identification', ({'a':'','b':True},2,2,[],{},[])), [])
check('missing-default-identification scenario 6', solve('missing-default-identification', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), [])
check('nullable-persisted-value scenario 1', solve('nullable-persisted-value', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), N)
check('nullable-persisted-value scenario 2', solve('nullable-persisted-value', ({},2,2,['a'],{'a':N},[])), N)
check('nullable-persisted-value scenario 3', solve('nullable-persisted-value', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), None)
check('nullable-persisted-value scenario 4', solve('nullable-persisted-value', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), 0)
check('nullable-persisted-value scenario 5', solve('nullable-persisted-value', ({'a':'','b':True},2,2,[],{},[])), '')
check('nullable-persisted-value scenario 6', solve('nullable-persisted-value', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), N)
check('write-version-stamp scenario 1', solve('write-version-stamp', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), 2)
check('write-version-stamp scenario 2', solve('write-version-stamp', ({},2,2,['a'],{'a':N},[])), 2)
check('write-version-stamp scenario 3', solve('write-version-stamp', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), 3)
check('write-version-stamp scenario 4', solve('write-version-stamp', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), 2)
check('write-version-stamp scenario 5', solve('write-version-stamp', ({'a':'','b':True},2,2,[],{},[])), 2)
check('write-version-stamp scenario 6', solve('write-version-stamp', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), 1)
check('schema-fallback-policy scenario 1', solve('schema-fallback-policy', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), 'migrate')
check('schema-fallback-policy scenario 2', solve('schema-fallback-policy', ({},2,2,['a'],{'a':N},[])), 'load')
check('schema-fallback-policy scenario 3', solve('schema-fallback-policy', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), 'read-only')
check('schema-fallback-policy scenario 4', solve('schema-fallback-policy', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), 'migrate')
check('schema-fallback-policy scenario 5', solve('schema-fallback-policy', ({'a':'','b':True},2,2,[],{},[])), 'load')
check('schema-fallback-policy scenario 6', solve('schema-fallback-policy', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), 'load')
check('serialized-field-order scenario 1', solve('serialized-field-order', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), ['a','b'])
check('serialized-field-order scenario 2', solve('serialized-field-order', ({},2,2,['a'],{'a':N},[])), [])
check('serialized-field-order scenario 3', solve('serialized-field-order', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), ['a'])
check('serialized-field-order scenario 4', solve('serialized-field-order', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), ['b'])
check('serialized-field-order scenario 5', solve('serialized-field-order', ({'a':'','b':True},2,2,[],{},[])), [])
check('serialized-field-order scenario 6', solve('serialized-field-order', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), ['a'])
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
unknown-field-projection scenario 1{'a': 1, 'b': False}{'a': 1, 'b': False}Passed
unknown-field-projection scenario 2{}{}Passed
unknown-field-projection scenario 3{'a': None}{'a': None}Passed
unknown-field-projection scenario 4{'b': 1}{'b': 1}Passed
unknown-field-projection scenario 5{}{}Passed
unknown-field-projection scenario 6{'a': 1}{'a': 1}Passed
default-overlay-order scenario 1{'a': 1, 'b': False, 'temp': 7}{'a': 1, 'b': False, 'temp': 7}Passed
default-overlay-order scenario 2{'a': 1}{'a': 1}Passed
default-overlay-order scenario 3{'a': None, 'extra': 1}{'a': None, 'extra': 1}Passed
default-overlay-order scenario 4{'a': 0, 'b': 1}{'a': 0, 'b': 1}Passed
default-overlay-order scenario 5{'a': '', 'b': True}{'a': '', 'b': True}Passed
default-overlay-order scenario 6{'a': 1, 'temp': 1}{'a': 1, 'temp': 1}Passed
future-version-readonly scenario 1FalseFalsePassed
future-version-readonly scenario 2FalseFalsePassed
future-version-readonly scenario 3TrueTruePassed
future-version-readonly scenario 4FalseFalsePassed
future-version-readonly scenario 5FalseFalsePassed
future-version-readonly scenario 6FalseFalsePassed
migration-step-list scenario 1[1][1]Passed
migration-step-list scenario 2[][]Passed
migration-step-list scenario 3[][]Passed
migration-step-list scenario 4[0, 1][0, 1]Passed
migration-step-list scenario 5[][]Passed
migration-step-list scenario 6[][]Passed
transient-exclusion scenario 1{'a': 1, 'b': False}{'a': 1, 'b': False}Passed
transient-exclusion scenario 2{}{}Passed
transient-exclusion scenario 3{'a': None}{'a': None}Passed
transient-exclusion scenario 4{'b': 1}{'b': 1}Passed
transient-exclusion scenario 5{'a': '', 'b': True}{'a': '', 'b': True}Passed
transient-exclusion scenario 6{'a': 1}{'a': 1}Passed
missing-default-identification scenario 1[][]Passed
missing-default-identification scenario 2['a']['a']Passed
missing-default-identification scenario 3[][]Passed
missing-default-identification scenario 4[][]Passed
missing-default-identification scenario 5[][]Passed
missing-default-identification scenario 6[][]Passed
nullable-persisted-value scenario 111Passed
nullable-persisted-value scenario 211Passed
nullable-persisted-value scenario 3NoneNonePassed
nullable-persisted-value scenario 400Passed
nullable-persisted-value scenario 5Passed
nullable-persisted-value scenario 611Passed
write-version-stamp scenario 122Passed
write-version-stamp scenario 222Passed
write-version-stamp scenario 333Passed
write-version-stamp scenario 422Passed
write-version-stamp scenario 522Passed
write-version-stamp scenario 611Passed
schema-fallback-policy scenario 1migratemigratePassed
schema-fallback-policy scenario 2loadloadPassed
schema-fallback-policy scenario 3read-onlyread-onlyPassed
schema-fallback-policy scenario 4migratemigratePassed
schema-fallback-policy scenario 5loadloadPassed
schema-fallback-policy scenario 6loadloadPassed
serialized-field-order scenario 1['a', 'b']['a', 'b']Passed
serialized-field-order scenario 2['a'][]Failed
serialized-field-order scenario 3['a']['a']Passed
serialized-field-order scenario 4['b']['b']Passed
serialized-field-order scenario 5[][]Passed
serialized-field-order scenario 6['a']['a']Passed

SHA-256 / 3068b7489a0113e783a2f555d2391b14e514f802aa2bcf62e8f4282c84a2e6b1

3 / The verified repair

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

N = 1
observations = []
def solve(operation, s):
    stored, version, current, allowed, defaults, transient = s
    if operation == 'unknown-field-projection':
        return {k:v for k,v in stored.items() if k in allowed}
    if operation == 'default-overlay-order':
        return {**defaults,**stored}
    if operation == 'future-version-readonly':
        return version>current
    if operation == 'migration-step-list':
        return list(range(version,current)) if version<=current else []
    if operation == 'transient-exclusion':
        return {k:v for k,v in stored.items() if k not in transient}
    if operation == 'missing-default-identification':
        return sorted(set(defaults)-set(stored))
    if operation == 'nullable-persisted-value':
        return stored['a'] if 'a' in stored else defaults.get('a')
    if operation == 'write-version-stamp':
        return max(version,current)
    if operation == 'schema-fallback-policy':
        return 'read-only' if version>current else ('migrate' if version<current else 'load')
    if operation == 'serialized-field-order':
        return sorted(k for k in stored if k in allowed and k not in transient)
    raise ValueError('unknown modeled operation')
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('unknown-field-projection scenario 1', solve('unknown-field-projection', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), {'a':N,'b':False})
check('unknown-field-projection scenario 2', solve('unknown-field-projection', ({},2,2,['a'],{'a':N},[])), {})
check('unknown-field-projection scenario 3', solve('unknown-field-projection', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), {'a':None})
check('unknown-field-projection scenario 4', solve('unknown-field-projection', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), {'b':N})
check('unknown-field-projection scenario 5', solve('unknown-field-projection', ({'a':'','b':True},2,2,[],{},[])), {})
check('unknown-field-projection scenario 6', solve('unknown-field-projection', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), {'a':N})
check('default-overlay-order scenario 1', solve('default-overlay-order', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), {'a':N,'b':False,'temp':7})
check('default-overlay-order scenario 2', solve('default-overlay-order', ({},2,2,['a'],{'a':N},[])), {'a':N})
check('default-overlay-order scenario 3', solve('default-overlay-order', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), {'a':None,'extra':1})
check('default-overlay-order scenario 4', solve('default-overlay-order', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), {'b':N,'a':0})
check('default-overlay-order scenario 5', solve('default-overlay-order', ({'a':'','b':True},2,2,[],{},[])), {'a':'','b':True})
check('default-overlay-order scenario 6', solve('default-overlay-order', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), {'a':N,'temp':1})
check('future-version-readonly scenario 1', solve('future-version-readonly', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), False)
check('future-version-readonly scenario 2', solve('future-version-readonly', ({},2,2,['a'],{'a':N},[])), False)
check('future-version-readonly scenario 3', solve('future-version-readonly', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), True)
check('future-version-readonly scenario 4', solve('future-version-readonly', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), False)
check('future-version-readonly scenario 5', solve('future-version-readonly', ({'a':'','b':True},2,2,[],{},[])), False)
check('future-version-readonly scenario 6', solve('future-version-readonly', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), False)
check('migration-step-list scenario 1', solve('migration-step-list', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), [1])
check('migration-step-list scenario 2', solve('migration-step-list', ({},2,2,['a'],{'a':N},[])), [])
check('migration-step-list scenario 3', solve('migration-step-list', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), [])
check('migration-step-list scenario 4', solve('migration-step-list', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), [0,1])
check('migration-step-list scenario 5', solve('migration-step-list', ({'a':'','b':True},2,2,[],{},[])), [])
check('migration-step-list scenario 6', solve('migration-step-list', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), [])
check('transient-exclusion scenario 1', solve('transient-exclusion', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), {'a':N,'b':False})
check('transient-exclusion scenario 2', solve('transient-exclusion', ({},2,2,['a'],{'a':N},[])), {})
check('transient-exclusion scenario 3', solve('transient-exclusion', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), {'a':None})
check('transient-exclusion scenario 4', solve('transient-exclusion', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), {'b':N})
check('transient-exclusion scenario 5', solve('transient-exclusion', ({'a':'','b':True},2,2,[],{},[])), {'a':'','b':True})
check('transient-exclusion scenario 6', solve('transient-exclusion', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), {'a':N})
check('missing-default-identification scenario 1', solve('missing-default-identification', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), [])
check('missing-default-identification scenario 2', solve('missing-default-identification', ({},2,2,['a'],{'a':N},[])), ['a'])
check('missing-default-identification scenario 3', solve('missing-default-identification', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), [])
check('missing-default-identification scenario 4', solve('missing-default-identification', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), [])
check('missing-default-identification scenario 5', solve('missing-default-identification', ({'a':'','b':True},2,2,[],{},[])), [])
check('missing-default-identification scenario 6', solve('missing-default-identification', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), [])
check('nullable-persisted-value scenario 1', solve('nullable-persisted-value', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), N)
check('nullable-persisted-value scenario 2', solve('nullable-persisted-value', ({},2,2,['a'],{'a':N},[])), N)
check('nullable-persisted-value scenario 3', solve('nullable-persisted-value', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), None)
check('nullable-persisted-value scenario 4', solve('nullable-persisted-value', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), 0)
check('nullable-persisted-value scenario 5', solve('nullable-persisted-value', ({'a':'','b':True},2,2,[],{},[])), '')
check('nullable-persisted-value scenario 6', solve('nullable-persisted-value', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), N)
check('write-version-stamp scenario 1', solve('write-version-stamp', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), 2)
check('write-version-stamp scenario 2', solve('write-version-stamp', ({},2,2,['a'],{'a':N},[])), 2)
check('write-version-stamp scenario 3', solve('write-version-stamp', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), 3)
check('write-version-stamp scenario 4', solve('write-version-stamp', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), 2)
check('write-version-stamp scenario 5', solve('write-version-stamp', ({'a':'','b':True},2,2,[],{},[])), 2)
check('write-version-stamp scenario 6', solve('write-version-stamp', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), 1)
check('schema-fallback-policy scenario 1', solve('schema-fallback-policy', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), 'migrate')
check('schema-fallback-policy scenario 2', solve('schema-fallback-policy', ({},2,2,['a'],{'a':N},[])), 'load')
check('schema-fallback-policy scenario 3', solve('schema-fallback-policy', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), 'read-only')
check('schema-fallback-policy scenario 4', solve('schema-fallback-policy', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), 'migrate')
check('schema-fallback-policy scenario 5', solve('schema-fallback-policy', ({'a':'','b':True},2,2,[],{},[])), 'load')
check('schema-fallback-policy scenario 6', solve('schema-fallback-policy', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), 'load')
check('serialized-field-order scenario 1', solve('serialized-field-order', ({'a':N,'b':False,'temp':7},1,2,['a','b'],{'a':0,'b':True},['temp'])), ['a','b'])
check('serialized-field-order scenario 2', solve('serialized-field-order', ({},2,2,['a'],{'a':N},[])), [])
check('serialized-field-order scenario 3', solve('serialized-field-order', ({'a':None,'extra':1},3,2,['a'],{'a':N},['extra'])), ['a'])
check('serialized-field-order scenario 4', solve('serialized-field-order', ({'a':0,'b':N},0,2,['b'],{'b':9},['a'])), ['b'])
check('serialized-field-order scenario 5', solve('serialized-field-order', ({'a':'','b':True},2,2,[],{},[])), [])
check('serialized-field-order scenario 6', solve('serialized-field-order', ({'a':N,'temp':1},1,1,['a'],{},['temp'])), ['a'])
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
unknown-field-projection scenario 1{'a': 1, 'b': False}{'a': 1, 'b': False}Passed
unknown-field-projection scenario 2{}{}Passed
unknown-field-projection scenario 3{'a': None}{'a': None}Passed
unknown-field-projection scenario 4{'b': 1}{'b': 1}Passed
unknown-field-projection scenario 5{}{}Passed
unknown-field-projection scenario 6{'a': 1}{'a': 1}Passed
default-overlay-order scenario 1{'a': 1, 'b': False, 'temp': 7}{'a': 1, 'b': False, 'temp': 7}Passed
default-overlay-order scenario 2{'a': 1}{'a': 1}Passed
default-overlay-order scenario 3{'a': None, 'extra': 1}{'a': None, 'extra': 1}Passed
default-overlay-order scenario 4{'a': 0, 'b': 1}{'a': 0, 'b': 1}Passed
default-overlay-order scenario 5{'a': '', 'b': True}{'a': '', 'b': True}Passed
default-overlay-order scenario 6{'a': 1, 'temp': 1}{'a': 1, 'temp': 1}Passed
future-version-readonly scenario 1FalseFalsePassed
future-version-readonly scenario 2FalseFalsePassed
future-version-readonly scenario 3TrueTruePassed
future-version-readonly scenario 4FalseFalsePassed
future-version-readonly scenario 5FalseFalsePassed
future-version-readonly scenario 6FalseFalsePassed
migration-step-list scenario 1[1][1]Passed
migration-step-list scenario 2[][]Passed
migration-step-list scenario 3[][]Passed
migration-step-list scenario 4[0, 1][0, 1]Passed
migration-step-list scenario 5[][]Passed
migration-step-list scenario 6[][]Passed
transient-exclusion scenario 1{'a': 1, 'b': False}{'a': 1, 'b': False}Passed
transient-exclusion scenario 2{}{}Passed
transient-exclusion scenario 3{'a': None}{'a': None}Passed
transient-exclusion scenario 4{'b': 1}{'b': 1}Passed
transient-exclusion scenario 5{'a': '', 'b': True}{'a': '', 'b': True}Passed
transient-exclusion scenario 6{'a': 1}{'a': 1}Passed
missing-default-identification scenario 1[][]Passed
missing-default-identification scenario 2['a']['a']Passed
missing-default-identification scenario 3[][]Passed
missing-default-identification scenario 4[][]Passed
missing-default-identification scenario 5[][]Passed
missing-default-identification scenario 6[][]Passed
nullable-persisted-value scenario 111Passed
nullable-persisted-value scenario 211Passed
nullable-persisted-value scenario 3NoneNonePassed
nullable-persisted-value scenario 400Passed
nullable-persisted-value scenario 5Passed
nullable-persisted-value scenario 611Passed
write-version-stamp scenario 122Passed
write-version-stamp scenario 222Passed
write-version-stamp scenario 333Passed
write-version-stamp scenario 422Passed
write-version-stamp scenario 522Passed
write-version-stamp scenario 611Passed
schema-fallback-policy scenario 1migratemigratePassed
schema-fallback-policy scenario 2loadloadPassed
schema-fallback-policy scenario 3read-onlyread-onlyPassed
schema-fallback-policy scenario 4migratemigratePassed
schema-fallback-policy scenario 5loadloadPassed
schema-fallback-policy scenario 6loadloadPassed
serialized-field-order scenario 1['a', 'b']['a', 'b']Passed
serialized-field-order scenario 2[][]Passed
serialized-field-order scenario 3['a']['a']Passed
serialized-field-order scenario 4['b']['b']Passed
serialized-field-order scenario 5[][]Passed
serialized-field-order scenario 6['a']['a']Passed

SHA-256 / da385ab115a80ae9393753f5da3f79c8eac83b1f27db61c76cf18fc3c1d62ec8

Verification & scope

Only the explicitly specified operations and finite deterministic records are modeled; 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:40:49.036390+00:00.

Case digest / 5c311a46e88f8c5506a903c46e51da231ec6a102a8b06d65819cbc05c9eacb4e