FA-74256 / Feature flag rollout bucketing / Open access
Bootstrapped flag payload merge: Deleted flags are still returned · case 01
Flags archived on the server keep appearing in the client flag list.
ROOT CAUSE
The final projection does not filter entries marked deleted.
VERIFIED REPAIR
Exclude merged entries whose deleted marker is set.
Unsuccessful approach: Popping flags on every incoming tombstone ignores the version rule and deletes newer local values.
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())
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]])],
[('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 6',
[{'version': 3,
'flags': {'c': {'value': True, 'version': 1},
'd': {'value': False, 'version': 1},
'a': {'value': 'x', 'version': 2}}},
{'version': 3, 'flags': {}}],
[['a', 'x'], ['c', True], ['d', False]]),
('payload pair sample 19',
[{'version': 3,
'flags': {'d': {'value': False, 'version': 0}, 'a': {'value': False, 'version': 0, 'deleted': True}}},
{'version': 2, 'flags': {'d': {'value': True, 'version': 1}}}],
[['d', False]]),
('payload pair sample 53',
[{'version': 3,
'flags': {'d': {'value': True, 'version': 3},
'b': {'value': 2, 'version': 0},
'a': {'value': 'x', 'version': 3}}},
{'version': 3, 'flags': {'a': {'value': 'x', 'version': 0, 'deleted': True}}}],
[['a', 'x'], ['b', 2], ['d', 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 36',
[{'version': 2, 'flags': {}},
{'version': 2,
'flags': {'c': {'value': 'x', 'version': 0},
'd': {'value': 2, 'version': 3},
'a': {'value': False, 'version': 1, 'deleted': True}}}],
[['c', 'x'], ['d', 2]]),
('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 16', [{'version': 2, 'flags': {}}, {'version': 3, 'flags': {}}], []),
('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]]),
('payload pair sample 48',
[{'version': 3,
'flags': {'c': {'value': True, 'version': 0, 'deleted': True},
'a': {'value': False, 'version': 3},
'b': {'value': True, 'version': 0}}},
{'version': 3, 'flags': {}}],
[['a', False], ['b', True]])],
[('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 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}}}],
[]),
('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]]),
('payload pair sample 54',
[{'version': 2, 'flags': {'b': {'value': 'x', 'version': 1}}},
{'version': 2, 'flags': {'b': {'value': True, 'version': 0, 'deleted': True}}}],
[['b', 'x']])]]
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 | [['a', None]] | [] | Failed |
| 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 / 0e44516fb5f66a0a2bf5202866a5d92be558fe731492027f6a96c48ff965fa04
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 f.get('deleted'):
merged.pop(k, None)
continue
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]])],
[('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 6',
[{'version': 3,
'flags': {'c': {'value': True, 'version': 1},
'd': {'value': False, 'version': 1},
'a': {'value': 'x', 'version': 2}}},
{'version': 3, 'flags': {}}],
[['a', 'x'], ['c', True], ['d', False]]),
('payload pair sample 19',
[{'version': 3,
'flags': {'d': {'value': False, 'version': 0}, 'a': {'value': False, 'version': 0, 'deleted': True}}},
{'version': 2, 'flags': {'d': {'value': True, 'version': 1}}}],
[['d', False]]),
('payload pair sample 53',
[{'version': 3,
'flags': {'d': {'value': True, 'version': 3},
'b': {'value': 2, 'version': 0},
'a': {'value': 'x', 'version': 3}}},
{'version': 3, 'flags': {'a': {'value': 'x', 'version': 0, 'deleted': True}}}],
[['a', 'x'], ['b', 2], ['d', 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 36',
[{'version': 2, 'flags': {}},
{'version': 2,
'flags': {'c': {'value': 'x', 'version': 0},
'd': {'value': 2, 'version': 3},
'a': {'value': False, 'version': 1, 'deleted': True}}}],
[['c', 'x'], ['d', 2]]),
('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 16', [{'version': 2, 'flags': {}}, {'version': 3, 'flags': {}}], []),
('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]]),
('payload pair sample 48',
[{'version': 3,
'flags': {'c': {'value': True, 'version': 0, 'deleted': True},
'a': {'value': False, 'version': 3},
'b': {'value': True, 'version': 0}}},
{'version': 3, 'flags': {}}],
[['a', False], ['b', True]])],
[('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 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}}}],
[]),
('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]]),
('payload pair sample 54',
[{'version': 2, 'flags': {'b': {'value': 'x', 'version': 1}}},
{'version': 2, 'flags': {'b': {'value': True, 'version': 0, 'deleted': True}}}],
[['b', 'x']])]]
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]] | Failed |
| 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 / 572d1654781a07ae3ab614b72d55872a74cd24ee52d7f7180e4e35d0916d5dd9
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]])],
[('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 6',
[{'version': 3,
'flags': {'c': {'value': True, 'version': 1},
'd': {'value': False, 'version': 1},
'a': {'value': 'x', 'version': 2}}},
{'version': 3, 'flags': {}}],
[['a', 'x'], ['c', True], ['d', False]]),
('payload pair sample 19',
[{'version': 3,
'flags': {'d': {'value': False, 'version': 0}, 'a': {'value': False, 'version': 0, 'deleted': True}}},
{'version': 2, 'flags': {'d': {'value': True, 'version': 1}}}],
[['d', False]]),
('payload pair sample 53',
[{'version': 3,
'flags': {'d': {'value': True, 'version': 3},
'b': {'value': 2, 'version': 0},
'a': {'value': 'x', 'version': 3}}},
{'version': 3, 'flags': {'a': {'value': 'x', 'version': 0, 'deleted': True}}}],
[['a', 'x'], ['b', 2], ['d', 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 36',
[{'version': 2, 'flags': {}},
{'version': 2,
'flags': {'c': {'value': 'x', 'version': 0},
'd': {'value': 2, 'version': 3},
'a': {'value': False, 'version': 1, 'deleted': True}}}],
[['c', 'x'], ['d', 2]]),
('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 16', [{'version': 2, 'flags': {}}, {'version': 3, 'flags': {}}], []),
('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]]),
('payload pair sample 48',
[{'version': 3,
'flags': {'c': {'value': True, 'version': 0, 'deleted': True},
'a': {'value': False, 'version': 3},
'b': {'value': True, 'version': 0}}},
{'version': 3, 'flags': {}}],
[['a', False], ['b', True]])],
[('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 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}}}],
[]),
('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]]),
('payload pair sample 54',
[{'version': 2, 'flags': {'b': {'value': 'x', 'version': 1}}},
{'version': 2, 'flags': {'b': {'value': True, 'version': 0, 'deleted': True}}}],
[['b', 'x']])]]
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 / 35cebbcca6b8213bc21d59bf373f56f719cd01cf610d0133f25647c3099980b7
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.021022+00:00.
Case digest / e42d69fd0598d0fc84a75f9bab94b2b292615323a4c1efe8040152eacb334713