FA-74251 / Feature flag rollout bucketing / Open access
Bootstrapped flag payload merge: Equal flag versions overwrite local values · case 01
A replayed stream event with the same flag version flips the value back to an older payload.
ROOT CAUSE
Replacement uses >= on flag versions.
VERIFIED REPAIR
Replace a flag only when the incoming flag version is strictly higher.
Unsuccessful approach: Comparing payload versions instead of flag versions lets any newer payload overwrite every flag.
Case contract
Payloads are {version, flags: {key: {value, version, deleted?}}}. An incoming payload with a lower payload version than local is ignored entirely. Otherwise each incoming flag replaces the local entry only when the key is new or its flag version is strictly higher; deleted tombstones follow the same rule. Return sorted [key, value] pairs for merged flags that are not deleted.
Why this case matters
Clients bootstrap from HTML-embedded flags and then stream updates; stale data must not win.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(local, incoming):
merged = dict(local['flags'])
if incoming['version'] >= local['version']:
for k, f in incoming['flags'].items():
cur = merged.get(k)
if cur is None or f['version'] >= cur['version']:
merged[k] = f
return sorted([k, f['value']] for k, f in merged.items() if not f.get('deleted'))
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('equal flag version keeps the local value',
[{'version': 1, 'flags': {'a': {'value': 'local', 'version': 2}}},
{'version': 2, 'flags': {'a': {'value': 'remote', 'version': 2}}}],
[['a', 'local']]),
('newer tombstone deletes the flag',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': None, 'version': 2, 'deleted': True}}}],
[]),
('older tombstone is ignored',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 3}}},
{'version': 2, 'flags': {'a': {'value': None, 'version': 1, 'deleted': True}}}],
[['a', True]]),
('equal payload version still merges',
[{'version': 2, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 2}}}],
[['a', 2]]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('payload pair sample 1',
[{'version': 3, 'flags': {'d': {'value': 'x', 'version': 1}, 'a': {'value': True, 'version': 0}}},
{'version': 1,
'flags': {'d': {'value': False, 'version': 1}, 'a': {'value': 2, 'version': 2, 'deleted': True}}}],
[['a', True], ['d', 'x']]),
('payload pair sample 2', [{'version': 2, 'flags': {}}, {'version': 3, 'flags': {}}], []),
('payload pair sample 3',
[{'version': 3, 'flags': {'a': {'value': 2, 'version': 3}}},
{'version': 2,
'flags': {'b': {'value': False, 'version': 0, 'deleted': True},
'd': {'value': 2, 'version': 3, 'deleted': True},
'c': {'value': 2, 'version': 2, 'deleted': True}}}],
[['a', 2]])],
[('equal flag version keeps the local value',
[{'version': 1, 'flags': {'a': {'value': 'local', 'version': 2}}},
{'version': 2, 'flags': {'a': {'value': 'remote', 'version': 2}}}],
[['a', 'local']]),
('newer tombstone deletes the flag',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': None, 'version': 2, 'deleted': True}}}],
[]),
('older tombstone is ignored',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 3}}},
{'version': 2, 'flags': {'a': {'value': None, 'version': 1, 'deleted': True}}}],
[['a', True]]),
('equal payload version still merges',
[{'version': 2, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 2}}}],
[['a', 2]]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('new flag with version zero is adopted',
[{'version': 1, 'flags': {}}, {'version': 1, 'flags': {'b': {'value': 'on', 'version': 0}}}],
[['b', 'on']]),
('payload pair sample 11',
[{'version': 2,
'flags': {'d': {'value': 2, 'version': 2, 'deleted': True},
'b': {'value': 'x', 'version': 2},
'a': {'value': False, 'version': 1}}},
{'version': 3,
'flags': {'d': {'value': 2, 'version': 2},
'a': {'value': 2, 'version': 2},
'b': {'value': False, 'version': 0}}}],
[['a', 2], ['b', 'x']]),
('payload pair sample 22',
[{'version': 1,
'flags': {'b': {'value': 2, 'version': 1}, 'a': {'value': 2, 'version': 1, 'deleted': True}}},
{'version': 2,
'flags': {'b': {'value': True, 'version': 0, 'deleted': True}, 'c': {'value': True, 'version': 3}}}],
[['b', 2], ['c', True]])],
[('older tombstone is ignored',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 3}}},
{'version': 2, 'flags': {'a': {'value': None, 'version': 1, 'deleted': True}}}],
[['a', True]]),
('equal payload version still merges',
[{'version': 2, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 2}}}],
[['a', 2]]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('new flag with version zero is adopted',
[{'version': 1, 'flags': {}}, {'version': 1, 'flags': {'b': {'value': 'on', 'version': 0}}}],
[['b', 'on']]),
('output is sorted by key',
[{'version': 1, 'flags': {'c': {'value': 3, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': 1, 'version': 1}, 'b': {'value': 2, 'version': 1}}}],
[['a', 1], ['b', 2], ['c', 3]]),
('payload pair sample 11',
[{'version': 2,
'flags': {'d': {'value': 2, 'version': 2, 'deleted': True},
'b': {'value': 'x', 'version': 2},
'a': {'value': False, 'version': 1}}},
{'version': 3,
'flags': {'d': {'value': 2, 'version': 2},
'a': {'value': 2, 'version': 2},
'b': {'value': False, 'version': 0}}}],
[['a', 2], ['b', 'x']]),
('payload pair sample 12',
[{'version': 3,
'flags': {'c': {'value': True, 'version': 3},
'd': {'value': 'x', 'version': 0, 'deleted': True},
'a': {'value': False, 'version': 0}}},
{'version': 1,
'flags': {'b': {'value': False, 'version': 2},
'd': {'value': True, 'version': 0},
'a': {'value': True, 'version': 1, 'deleted': True}}}],
[['a', False], ['c', True]]),
('payload pair sample 60',
[{'version': 1, 'flags': {'c': {'value': 2, 'version': 3}, 'b': {'value': 2, 'version': 2}}},
{'version': 1,
'flags': {'c': {'value': 2, 'version': 2},
'b': {'value': 2, 'version': 2, 'deleted': True},
'd': {'value': False, 'version': 2}}}],
[['b', 2], ['c', 2], ['d', False]])],
[('equal flag version keeps the local value',
[{'version': 1, 'flags': {'a': {'value': 'local', 'version': 2}}},
{'version': 2, 'flags': {'a': {'value': 'remote', 'version': 2}}}],
[['a', 'local']]),
('equal payload version still merges',
[{'version': 2, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 2}}}],
[['a', 2]]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('new flag with version zero is adopted',
[{'version': 1, 'flags': {}}, {'version': 1, 'flags': {'b': {'value': 'on', 'version': 0}}}],
[['b', 'on']]),
('output is sorted by key',
[{'version': 1, 'flags': {'c': {'value': 3, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': 1, 'version': 1}, 'b': {'value': 2, 'version': 1}}}],
[['a', 1], ['b', 2], ['c', 3]]),
('payload pair sample 5',
[{'version': 2, 'flags': {'b': {'value': 2, 'version': 3}}},
{'version': 2,
'flags': {'c': {'value': False, 'version': 1},
'b': {'value': True, 'version': 3},
'a': {'value': False, 'version': 1, 'deleted': True}}}],
[['b', 2], ['c', False]]),
('payload pair sample 16', [{'version': 2, 'flags': {}}, {'version': 3, 'flags': {}}], []),
('payload pair sample 40',
[{'version': 2,
'flags': {'d': {'value': 'x', 'version': 0},
'c': {'value': False, 'version': 1, 'deleted': True},
'b': {'value': 2, 'version': 2}}},
{'version': 3,
'flags': {'b': {'value': True, 'version': 1}, 'c': {'value': False, 'version': 0, 'deleted': True}}}],
[['b', 2], ['d', 'x']])],
[('equal flag version keeps the local value',
[{'version': 1, 'flags': {'a': {'value': 'local', 'version': 2}}},
{'version': 2, 'flags': {'a': {'value': 'remote', 'version': 2}}}],
[['a', 'local']]),
('newer tombstone deletes the flag',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': None, 'version': 2, 'deleted': True}}}],
[]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('new flag with version zero is adopted',
[{'version': 1, 'flags': {}}, {'version': 1, 'flags': {'b': {'value': 'on', 'version': 0}}}],
[['b', 'on']]),
('output is sorted by key',
[{'version': 1, 'flags': {'c': {'value': 3, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': 1, 'version': 1}, 'b': {'value': 2, 'version': 1}}}],
[['a', 1], ['b', 2], ['c', 3]]),
('payload pair sample 10',
[{'version': 3, 'flags': {'d': {'value': True, 'version': 0}, 'c': {'value': 2, 'version': 3}}},
{'version': 3, 'flags': {'a': {'value': True, 'version': 1}, 'd': {'value': 'x', 'version': 3}}}],
[['a', True], ['c', 2], ['d', 'x']]),
('payload pair sample 15',
[{'version': 1,
'flags': {'a': {'value': True, 'version': 0},
'c': {'value': True, 'version': 1},
'd': {'value': 2, 'version': 3}}},
{'version': 1,
'flags': {'d': {'value': 'x', 'version': 3},
'a': {'value': False, 'version': 2},
'b': {'value': True, 'version': 2}}}],
[['a', False], ['b', True], ['c', True], ['d', 2]]),
('payload pair sample 21',
[{'version': 2,
'flags': {'a': {'value': False, 'version': 2, 'deleted': True},
'b': {'value': False, 'version': 1, 'deleted': True}}},
{'version': 1,
'flags': {'d': {'value': True, 'version': 0},
'c': {'value': False, 'version': 3},
'b': {'value': True, 'version': 3}}}],
[])]]
for label, args, expected in fixtures[N - 1]:
check(label, 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 |
|---|---|---|---|
| equal flag version keeps the local value | [['a', 'remote']] | [['a', 'local']] | Failed |
| newer tombstone deletes the flag | [] | [] | Passed |
| older tombstone is ignored | [['a', True]] | [['a', True]] | Passed |
| equal payload version still merges | [['a', 2]] | [['a', 2]] | Passed |
| stale payload is ignored | [['a', 1]] | [['a', 1]] | Passed |
| payload pair sample 1 | [['a', True], ['d', 'x']] | [['a', True], ['d', 'x']] | Passed |
| payload pair sample 2 | [] | [] | Passed |
| payload pair sample 3 | [['a', 2]] | [['a', 2]] | Passed |
SHA-256 / dd3b0e3e0875cde48af8ac7ca7883ccdf8e7964271457db794bcc120540eb59e
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(local, incoming):
merged = dict(local['flags'])
if incoming['version'] >= local['version']:
for k, f in incoming['flags'].items():
cur = merged.get(k)
if cur is None or incoming['version'] > local['version']:
merged[k] = f
return sorted([k, f['value']] for k, f in merged.items() if not f.get('deleted'))
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('equal flag version keeps the local value',
[{'version': 1, 'flags': {'a': {'value': 'local', 'version': 2}}},
{'version': 2, 'flags': {'a': {'value': 'remote', 'version': 2}}}],
[['a', 'local']]),
('newer tombstone deletes the flag',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': None, 'version': 2, 'deleted': True}}}],
[]),
('older tombstone is ignored',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 3}}},
{'version': 2, 'flags': {'a': {'value': None, 'version': 1, 'deleted': True}}}],
[['a', True]]),
('equal payload version still merges',
[{'version': 2, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 2}}}],
[['a', 2]]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('payload pair sample 1',
[{'version': 3, 'flags': {'d': {'value': 'x', 'version': 1}, 'a': {'value': True, 'version': 0}}},
{'version': 1,
'flags': {'d': {'value': False, 'version': 1}, 'a': {'value': 2, 'version': 2, 'deleted': True}}}],
[['a', True], ['d', 'x']]),
('payload pair sample 2', [{'version': 2, 'flags': {}}, {'version': 3, 'flags': {}}], []),
('payload pair sample 3',
[{'version': 3, 'flags': {'a': {'value': 2, 'version': 3}}},
{'version': 2,
'flags': {'b': {'value': False, 'version': 0, 'deleted': True},
'd': {'value': 2, 'version': 3, 'deleted': True},
'c': {'value': 2, 'version': 2, 'deleted': True}}}],
[['a', 2]])],
[('equal flag version keeps the local value',
[{'version': 1, 'flags': {'a': {'value': 'local', 'version': 2}}},
{'version': 2, 'flags': {'a': {'value': 'remote', 'version': 2}}}],
[['a', 'local']]),
('newer tombstone deletes the flag',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': None, 'version': 2, 'deleted': True}}}],
[]),
('older tombstone is ignored',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 3}}},
{'version': 2, 'flags': {'a': {'value': None, 'version': 1, 'deleted': True}}}],
[['a', True]]),
('equal payload version still merges',
[{'version': 2, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 2}}}],
[['a', 2]]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('new flag with version zero is adopted',
[{'version': 1, 'flags': {}}, {'version': 1, 'flags': {'b': {'value': 'on', 'version': 0}}}],
[['b', 'on']]),
('payload pair sample 11',
[{'version': 2,
'flags': {'d': {'value': 2, 'version': 2, 'deleted': True},
'b': {'value': 'x', 'version': 2},
'a': {'value': False, 'version': 1}}},
{'version': 3,
'flags': {'d': {'value': 2, 'version': 2},
'a': {'value': 2, 'version': 2},
'b': {'value': False, 'version': 0}}}],
[['a', 2], ['b', 'x']]),
('payload pair sample 22',
[{'version': 1,
'flags': {'b': {'value': 2, 'version': 1}, 'a': {'value': 2, 'version': 1, 'deleted': True}}},
{'version': 2,
'flags': {'b': {'value': True, 'version': 0, 'deleted': True}, 'c': {'value': True, 'version': 3}}}],
[['b', 2], ['c', True]])],
[('older tombstone is ignored',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 3}}},
{'version': 2, 'flags': {'a': {'value': None, 'version': 1, 'deleted': True}}}],
[['a', True]]),
('equal payload version still merges',
[{'version': 2, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 2}}}],
[['a', 2]]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('new flag with version zero is adopted',
[{'version': 1, 'flags': {}}, {'version': 1, 'flags': {'b': {'value': 'on', 'version': 0}}}],
[['b', 'on']]),
('output is sorted by key',
[{'version': 1, 'flags': {'c': {'value': 3, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': 1, 'version': 1}, 'b': {'value': 2, 'version': 1}}}],
[['a', 1], ['b', 2], ['c', 3]]),
('payload pair sample 11',
[{'version': 2,
'flags': {'d': {'value': 2, 'version': 2, 'deleted': True},
'b': {'value': 'x', 'version': 2},
'a': {'value': False, 'version': 1}}},
{'version': 3,
'flags': {'d': {'value': 2, 'version': 2},
'a': {'value': 2, 'version': 2},
'b': {'value': False, 'version': 0}}}],
[['a', 2], ['b', 'x']]),
('payload pair sample 12',
[{'version': 3,
'flags': {'c': {'value': True, 'version': 3},
'd': {'value': 'x', 'version': 0, 'deleted': True},
'a': {'value': False, 'version': 0}}},
{'version': 1,
'flags': {'b': {'value': False, 'version': 2},
'd': {'value': True, 'version': 0},
'a': {'value': True, 'version': 1, 'deleted': True}}}],
[['a', False], ['c', True]]),
('payload pair sample 60',
[{'version': 1, 'flags': {'c': {'value': 2, 'version': 3}, 'b': {'value': 2, 'version': 2}}},
{'version': 1,
'flags': {'c': {'value': 2, 'version': 2},
'b': {'value': 2, 'version': 2, 'deleted': True},
'd': {'value': False, 'version': 2}}}],
[['b', 2], ['c', 2], ['d', False]])],
[('equal flag version keeps the local value',
[{'version': 1, 'flags': {'a': {'value': 'local', 'version': 2}}},
{'version': 2, 'flags': {'a': {'value': 'remote', 'version': 2}}}],
[['a', 'local']]),
('equal payload version still merges',
[{'version': 2, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 2}}}],
[['a', 2]]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('new flag with version zero is adopted',
[{'version': 1, 'flags': {}}, {'version': 1, 'flags': {'b': {'value': 'on', 'version': 0}}}],
[['b', 'on']]),
('output is sorted by key',
[{'version': 1, 'flags': {'c': {'value': 3, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': 1, 'version': 1}, 'b': {'value': 2, 'version': 1}}}],
[['a', 1], ['b', 2], ['c', 3]]),
('payload pair sample 5',
[{'version': 2, 'flags': {'b': {'value': 2, 'version': 3}}},
{'version': 2,
'flags': {'c': {'value': False, 'version': 1},
'b': {'value': True, 'version': 3},
'a': {'value': False, 'version': 1, 'deleted': True}}}],
[['b', 2], ['c', False]]),
('payload pair sample 16', [{'version': 2, 'flags': {}}, {'version': 3, 'flags': {}}], []),
('payload pair sample 40',
[{'version': 2,
'flags': {'d': {'value': 'x', 'version': 0},
'c': {'value': False, 'version': 1, 'deleted': True},
'b': {'value': 2, 'version': 2}}},
{'version': 3,
'flags': {'b': {'value': True, 'version': 1}, 'c': {'value': False, 'version': 0, 'deleted': True}}}],
[['b', 2], ['d', 'x']])],
[('equal flag version keeps the local value',
[{'version': 1, 'flags': {'a': {'value': 'local', 'version': 2}}},
{'version': 2, 'flags': {'a': {'value': 'remote', 'version': 2}}}],
[['a', 'local']]),
('newer tombstone deletes the flag',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': None, 'version': 2, 'deleted': True}}}],
[]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('new flag with version zero is adopted',
[{'version': 1, 'flags': {}}, {'version': 1, 'flags': {'b': {'value': 'on', 'version': 0}}}],
[['b', 'on']]),
('output is sorted by key',
[{'version': 1, 'flags': {'c': {'value': 3, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': 1, 'version': 1}, 'b': {'value': 2, 'version': 1}}}],
[['a', 1], ['b', 2], ['c', 3]]),
('payload pair sample 10',
[{'version': 3, 'flags': {'d': {'value': True, 'version': 0}, 'c': {'value': 2, 'version': 3}}},
{'version': 3, 'flags': {'a': {'value': True, 'version': 1}, 'd': {'value': 'x', 'version': 3}}}],
[['a', True], ['c', 2], ['d', 'x']]),
('payload pair sample 15',
[{'version': 1,
'flags': {'a': {'value': True, 'version': 0},
'c': {'value': True, 'version': 1},
'd': {'value': 2, 'version': 3}}},
{'version': 1,
'flags': {'d': {'value': 'x', 'version': 3},
'a': {'value': False, 'version': 2},
'b': {'value': True, 'version': 2}}}],
[['a', False], ['b', True], ['c', True], ['d', 2]]),
('payload pair sample 21',
[{'version': 2,
'flags': {'a': {'value': False, 'version': 2, 'deleted': True},
'b': {'value': False, 'version': 1, 'deleted': True}}},
{'version': 1,
'flags': {'d': {'value': True, 'version': 0},
'c': {'value': False, 'version': 3},
'b': {'value': True, 'version': 3}}}],
[])]]
for label, args, expected in fixtures[N - 1]:
check(label, 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 |
|---|---|---|---|
| equal flag version keeps the local value | [['a', 'remote']] | [['a', 'local']] | Failed |
| newer tombstone deletes the flag | [['a', True]] | [] | Failed |
| older tombstone is ignored | [] | [['a', True]] | Failed |
| equal payload version still merges | [['a', 1]] | [['a', 2]] | Failed |
| stale payload is ignored | [['a', 1]] | [['a', 1]] | Passed |
| payload pair sample 1 | [['a', True], ['d', 'x']] | [['a', True], ['d', 'x']] | Passed |
| payload pair sample 2 | [] | [] | Passed |
| payload pair sample 3 | [['a', 2]] | [['a', 2]] | Passed |
SHA-256 / f96387b3a7b36dee61398ac269a610fd97390cc6c3b78e09b426fc521e099353
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(local, incoming):
merged = dict(local['flags'])
if incoming['version'] >= local['version']:
for k, f in incoming['flags'].items():
cur = merged.get(k)
if cur is None or f['version'] > cur['version']:
merged[k] = f
return sorted([k, f['value']] for k, f in merged.items() if not f.get('deleted'))
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('equal flag version keeps the local value',
[{'version': 1, 'flags': {'a': {'value': 'local', 'version': 2}}},
{'version': 2, 'flags': {'a': {'value': 'remote', 'version': 2}}}],
[['a', 'local']]),
('newer tombstone deletes the flag',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': None, 'version': 2, 'deleted': True}}}],
[]),
('older tombstone is ignored',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 3}}},
{'version': 2, 'flags': {'a': {'value': None, 'version': 1, 'deleted': True}}}],
[['a', True]]),
('equal payload version still merges',
[{'version': 2, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 2}}}],
[['a', 2]]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('payload pair sample 1',
[{'version': 3, 'flags': {'d': {'value': 'x', 'version': 1}, 'a': {'value': True, 'version': 0}}},
{'version': 1,
'flags': {'d': {'value': False, 'version': 1}, 'a': {'value': 2, 'version': 2, 'deleted': True}}}],
[['a', True], ['d', 'x']]),
('payload pair sample 2', [{'version': 2, 'flags': {}}, {'version': 3, 'flags': {}}], []),
('payload pair sample 3',
[{'version': 3, 'flags': {'a': {'value': 2, 'version': 3}}},
{'version': 2,
'flags': {'b': {'value': False, 'version': 0, 'deleted': True},
'd': {'value': 2, 'version': 3, 'deleted': True},
'c': {'value': 2, 'version': 2, 'deleted': True}}}],
[['a', 2]])],
[('equal flag version keeps the local value',
[{'version': 1, 'flags': {'a': {'value': 'local', 'version': 2}}},
{'version': 2, 'flags': {'a': {'value': 'remote', 'version': 2}}}],
[['a', 'local']]),
('newer tombstone deletes the flag',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': None, 'version': 2, 'deleted': True}}}],
[]),
('older tombstone is ignored',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 3}}},
{'version': 2, 'flags': {'a': {'value': None, 'version': 1, 'deleted': True}}}],
[['a', True]]),
('equal payload version still merges',
[{'version': 2, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 2}}}],
[['a', 2]]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('new flag with version zero is adopted',
[{'version': 1, 'flags': {}}, {'version': 1, 'flags': {'b': {'value': 'on', 'version': 0}}}],
[['b', 'on']]),
('payload pair sample 11',
[{'version': 2,
'flags': {'d': {'value': 2, 'version': 2, 'deleted': True},
'b': {'value': 'x', 'version': 2},
'a': {'value': False, 'version': 1}}},
{'version': 3,
'flags': {'d': {'value': 2, 'version': 2},
'a': {'value': 2, 'version': 2},
'b': {'value': False, 'version': 0}}}],
[['a', 2], ['b', 'x']]),
('payload pair sample 22',
[{'version': 1,
'flags': {'b': {'value': 2, 'version': 1}, 'a': {'value': 2, 'version': 1, 'deleted': True}}},
{'version': 2,
'flags': {'b': {'value': True, 'version': 0, 'deleted': True}, 'c': {'value': True, 'version': 3}}}],
[['b', 2], ['c', True]])],
[('older tombstone is ignored',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 3}}},
{'version': 2, 'flags': {'a': {'value': None, 'version': 1, 'deleted': True}}}],
[['a', True]]),
('equal payload version still merges',
[{'version': 2, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 2}}}],
[['a', 2]]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('new flag with version zero is adopted',
[{'version': 1, 'flags': {}}, {'version': 1, 'flags': {'b': {'value': 'on', 'version': 0}}}],
[['b', 'on']]),
('output is sorted by key',
[{'version': 1, 'flags': {'c': {'value': 3, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': 1, 'version': 1}, 'b': {'value': 2, 'version': 1}}}],
[['a', 1], ['b', 2], ['c', 3]]),
('payload pair sample 11',
[{'version': 2,
'flags': {'d': {'value': 2, 'version': 2, 'deleted': True},
'b': {'value': 'x', 'version': 2},
'a': {'value': False, 'version': 1}}},
{'version': 3,
'flags': {'d': {'value': 2, 'version': 2},
'a': {'value': 2, 'version': 2},
'b': {'value': False, 'version': 0}}}],
[['a', 2], ['b', 'x']]),
('payload pair sample 12',
[{'version': 3,
'flags': {'c': {'value': True, 'version': 3},
'd': {'value': 'x', 'version': 0, 'deleted': True},
'a': {'value': False, 'version': 0}}},
{'version': 1,
'flags': {'b': {'value': False, 'version': 2},
'd': {'value': True, 'version': 0},
'a': {'value': True, 'version': 1, 'deleted': True}}}],
[['a', False], ['c', True]]),
('payload pair sample 60',
[{'version': 1, 'flags': {'c': {'value': 2, 'version': 3}, 'b': {'value': 2, 'version': 2}}},
{'version': 1,
'flags': {'c': {'value': 2, 'version': 2},
'b': {'value': 2, 'version': 2, 'deleted': True},
'd': {'value': False, 'version': 2}}}],
[['b', 2], ['c', 2], ['d', False]])],
[('equal flag version keeps the local value',
[{'version': 1, 'flags': {'a': {'value': 'local', 'version': 2}}},
{'version': 2, 'flags': {'a': {'value': 'remote', 'version': 2}}}],
[['a', 'local']]),
('equal payload version still merges',
[{'version': 2, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 2}}}],
[['a', 2]]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('new flag with version zero is adopted',
[{'version': 1, 'flags': {}}, {'version': 1, 'flags': {'b': {'value': 'on', 'version': 0}}}],
[['b', 'on']]),
('output is sorted by key',
[{'version': 1, 'flags': {'c': {'value': 3, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': 1, 'version': 1}, 'b': {'value': 2, 'version': 1}}}],
[['a', 1], ['b', 2], ['c', 3]]),
('payload pair sample 5',
[{'version': 2, 'flags': {'b': {'value': 2, 'version': 3}}},
{'version': 2,
'flags': {'c': {'value': False, 'version': 1},
'b': {'value': True, 'version': 3},
'a': {'value': False, 'version': 1, 'deleted': True}}}],
[['b', 2], ['c', False]]),
('payload pair sample 16', [{'version': 2, 'flags': {}}, {'version': 3, 'flags': {}}], []),
('payload pair sample 40',
[{'version': 2,
'flags': {'d': {'value': 'x', 'version': 0},
'c': {'value': False, 'version': 1, 'deleted': True},
'b': {'value': 2, 'version': 2}}},
{'version': 3,
'flags': {'b': {'value': True, 'version': 1}, 'c': {'value': False, 'version': 0, 'deleted': True}}}],
[['b', 2], ['d', 'x']])],
[('equal flag version keeps the local value',
[{'version': 1, 'flags': {'a': {'value': 'local', 'version': 2}}},
{'version': 2, 'flags': {'a': {'value': 'remote', 'version': 2}}}],
[['a', 'local']]),
('newer tombstone deletes the flag',
[{'version': 1, 'flags': {'a': {'value': True, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': None, 'version': 2, 'deleted': True}}}],
[]),
('stale payload is ignored',
[{'version': 3, 'flags': {'a': {'value': 1, 'version': 1}}},
{'version': 2, 'flags': {'a': {'value': 2, 'version': 5}}}],
[['a', 1]]),
('new flag with version zero is adopted',
[{'version': 1, 'flags': {}}, {'version': 1, 'flags': {'b': {'value': 'on', 'version': 0}}}],
[['b', 'on']]),
('output is sorted by key',
[{'version': 1, 'flags': {'c': {'value': 3, 'version': 1}}},
{'version': 1, 'flags': {'a': {'value': 1, 'version': 1}, 'b': {'value': 2, 'version': 1}}}],
[['a', 1], ['b', 2], ['c', 3]]),
('payload pair sample 10',
[{'version': 3, 'flags': {'d': {'value': True, 'version': 0}, 'c': {'value': 2, 'version': 3}}},
{'version': 3, 'flags': {'a': {'value': True, 'version': 1}, 'd': {'value': 'x', 'version': 3}}}],
[['a', True], ['c', 2], ['d', 'x']]),
('payload pair sample 15',
[{'version': 1,
'flags': {'a': {'value': True, 'version': 0},
'c': {'value': True, 'version': 1},
'd': {'value': 2, 'version': 3}}},
{'version': 1,
'flags': {'d': {'value': 'x', 'version': 3},
'a': {'value': False, 'version': 2},
'b': {'value': True, 'version': 2}}}],
[['a', False], ['b', True], ['c', True], ['d', 2]]),
('payload pair sample 21',
[{'version': 2,
'flags': {'a': {'value': False, 'version': 2, 'deleted': True},
'b': {'value': False, 'version': 1, 'deleted': True}}},
{'version': 1,
'flags': {'d': {'value': True, 'version': 0},
'c': {'value': False, 'version': 3},
'b': {'value': True, 'version': 3}}}],
[])]]
for label, args, expected in fixtures[N - 1]:
check(label, 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 |
|---|---|---|---|
| equal flag version keeps the local value | [['a', 'local']] | [['a', 'local']] | Passed |
| newer tombstone deletes the flag | [] | [] | Passed |
| older tombstone is ignored | [['a', True]] | [['a', True]] | Passed |
| equal payload version still merges | [['a', 2]] | [['a', 2]] | Passed |
| stale payload is ignored | [['a', 1]] | [['a', 1]] | Passed |
| payload pair sample 1 | [['a', True], ['d', 'x']] | [['a', True], ['d', 'x']] | Passed |
| payload pair sample 2 | [] | [] | Passed |
| payload pair sample 3 | [['a', 2]] | [['a', 2]] | Passed |
SHA-256 / cb51501f2c4abcdcc76a142f08409bf35a7f539442e9c687a1cbb61855d09152
Verification & scope
A deterministic toy flag-evaluation model with a stipulated contract; it does not reproduce any vendor SDK byte for byte. 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:48:55.020138+00:00.
Case digest / 1ce9c44a473368baa712503fe94063cd3827f6290e795363c2efb4670eb9a588