FA-23571 / Client state / Open access
Persisted client snapshot admission: Serialized field order · case 01
Serialized field order.
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 1 | False | False | Passed |
| future-version-readonly scenario 2 | False | False | Passed |
| future-version-readonly scenario 3 | True | True | Passed |
| future-version-readonly scenario 4 | False | False | Passed |
| future-version-readonly scenario 5 | False | False | Passed |
| future-version-readonly scenario 6 | False | False | Passed |
| 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 1 | 1 | 1 | Passed |
| nullable-persisted-value scenario 2 | 1 | 1 | Passed |
| nullable-persisted-value scenario 3 | None | None | Passed |
| nullable-persisted-value scenario 4 | 0 | 0 | Passed |
| nullable-persisted-value scenario 5 | | | Passed |
| nullable-persisted-value scenario 6 | 1 | 1 | Passed |
| write-version-stamp scenario 1 | 2 | 2 | Passed |
| write-version-stamp scenario 2 | 2 | 2 | Passed |
| write-version-stamp scenario 3 | 3 | 3 | Passed |
| write-version-stamp scenario 4 | 2 | 2 | Passed |
| write-version-stamp scenario 5 | 2 | 2 | Passed |
| write-version-stamp scenario 6 | 1 | 1 | Passed |
| schema-fallback-policy scenario 1 | migrate | migrate | Passed |
| schema-fallback-policy scenario 2 | load | load | Passed |
| schema-fallback-policy scenario 3 | read-only | read-only | Passed |
| schema-fallback-policy scenario 4 | migrate | migrate | Passed |
| schema-fallback-policy scenario 5 | load | load | Passed |
| schema-fallback-policy scenario 6 | load | load | Passed |
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 1 | False | False | Passed |
| future-version-readonly scenario 2 | False | False | Passed |
| future-version-readonly scenario 3 | True | True | Passed |
| future-version-readonly scenario 4 | False | False | Passed |
| future-version-readonly scenario 5 | False | False | Passed |
| future-version-readonly scenario 6 | False | False | Passed |
| 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 1 | 1 | 1 | Passed |
| nullable-persisted-value scenario 2 | 1 | 1 | Passed |
| nullable-persisted-value scenario 3 | None | None | Passed |
| nullable-persisted-value scenario 4 | 0 | 0 | Passed |
| nullable-persisted-value scenario 5 | | | Passed |
| nullable-persisted-value scenario 6 | 1 | 1 | Passed |
| write-version-stamp scenario 1 | 2 | 2 | Passed |
| write-version-stamp scenario 2 | 2 | 2 | Passed |
| write-version-stamp scenario 3 | 3 | 3 | Passed |
| write-version-stamp scenario 4 | 2 | 2 | Passed |
| write-version-stamp scenario 5 | 2 | 2 | Passed |
| write-version-stamp scenario 6 | 1 | 1 | Passed |
| schema-fallback-policy scenario 1 | migrate | migrate | Passed |
| schema-fallback-policy scenario 2 | load | load | Passed |
| schema-fallback-policy scenario 3 | read-only | read-only | Passed |
| schema-fallback-policy scenario 4 | migrate | migrate | Passed |
| schema-fallback-policy scenario 5 | load | load | Passed |
| schema-fallback-policy scenario 6 | load | load | Passed |
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 1 | False | False | Passed |
| future-version-readonly scenario 2 | False | False | Passed |
| future-version-readonly scenario 3 | True | True | Passed |
| future-version-readonly scenario 4 | False | False | Passed |
| future-version-readonly scenario 5 | False | False | Passed |
| future-version-readonly scenario 6 | False | False | Passed |
| 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 1 | 1 | 1 | Passed |
| nullable-persisted-value scenario 2 | 1 | 1 | Passed |
| nullable-persisted-value scenario 3 | None | None | Passed |
| nullable-persisted-value scenario 4 | 0 | 0 | Passed |
| nullable-persisted-value scenario 5 | | | Passed |
| nullable-persisted-value scenario 6 | 1 | 1 | Passed |
| write-version-stamp scenario 1 | 2 | 2 | Passed |
| write-version-stamp scenario 2 | 2 | 2 | Passed |
| write-version-stamp scenario 3 | 3 | 3 | Passed |
| write-version-stamp scenario 4 | 2 | 2 | Passed |
| write-version-stamp scenario 5 | 2 | 2 | Passed |
| write-version-stamp scenario 6 | 1 | 1 | Passed |
| schema-fallback-policy scenario 1 | migrate | migrate | Passed |
| schema-fallback-policy scenario 2 | load | load | Passed |
| schema-fallback-policy scenario 3 | read-only | read-only | Passed |
| schema-fallback-policy scenario 4 | migrate | migrate | Passed |
| schema-fallback-policy scenario 5 | load | load | Passed |
| schema-fallback-policy scenario 6 | load | load | Passed |
| 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