FA-74246 / Feature flag rollout bucketing / Open access
Flag override resolution: Environment booleans accept any text · case 01
FLAG_BETA=TRUE disables the flag and FLAG_BETA=yes silently means false.
ROOT CAUSE
The env string is compared to "true" exactly and every other string is a valid false.
THE FAILURE
The env string is compared to "true" exactly and every other string is a valid false.
Unsuccessful approach: Lowercasing fixes the case but still treats arbitrary text as a valid false.
Case contract
Layers in precedence order: env var FLAG_<KEY uppercased with "-" -> "_">, local overrides[key], remote[key], then the default. A layer is used only if its value is valid for the default's type, else the next layer is tried. Non-env values must have exactly the default's type (bool is not int). Env strings: bool defaults accept "true"/"false" case-insensitively; int defaults accept digits with an optional leading "-"; str defaults accept any string. Return [value, source].
Why this case matters
Local and environment overrides are how operators pin flags during incidents; precedence must be exact.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(key, default, remote, overrides, env):
def coerce(v, from_env):
if from_env:
if isinstance(default, bool):
low = v.lower()
return (True, v == 'true')
if isinstance(default, int):
body = v[1:] if v.startswith('-') else v
return (True, int(v)) if body.isdigit() else (False, None)
return (True, v)
return (True, v) if type(v) is type(default) else (False, None)
name = 'FLAG_' + key.upper().replace('-', '_')
layers = [('env', env, name, True), ('override', overrides, key, False), ('remote', remote, key, False)]
for source, table, k, from_env in layers:
if k in table:
ok, value = coerce(table[k], from_env)
if ok:
return [value, source]
return [default, 'default']
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('boolean remote value rejected for integer flag', ['beta', 3, {'beta': True}, {}, {}], [3, 'default']),
('environment beats local override',
['new-ui', False, {}, {'new-ui': False}, {'FLAG_NEW_UI': 'true'}],
[True, 'env']),
('dashed key maps to underscored env name',
['dark-mode-v2', 'blue', {}, {}, {'FLAG_DARK_MODE_V2': 'green'}],
['green', 'env']),
('invalid env value falls through to remote',
['beta', 0, {'beta': 5}, {}, {'FLAG_BETA': 'lots'}],
[5, 'remote']),
('negative integer from env', ['beta', 0, {}, {}, {'FLAG_BETA': '-3'}], [-3, 'env']),
('env boolean is case-insensitive', ['beta', False, {}, {}, {'FLAG_BETA': 'TRUE'}], [True, 'env']),
('non-boolean env text is invalid for boolean flag',
['beta', True, {'beta': True}, {}, {'FLAG_BETA': 'yes'}],
[True, 'remote']),
('override layer sample 1', ['beta', 7, {'beta': 1}, {}, {}], [1, 'remote'])],
[('environment beats local override',
['new-ui', False, {}, {'new-ui': False}, {'FLAG_NEW_UI': 'true'}],
[True, 'env']),
('dashed key maps to underscored env name',
['dark-mode-v2', 'blue', {}, {}, {'FLAG_DARK_MODE_V2': 'green'}],
['green', 'env']),
('invalid env value falls through to remote',
['beta', 0, {'beta': 5}, {}, {'FLAG_BETA': 'lots'}],
[5, 'remote']),
('negative integer from env', ['beta', 0, {}, {}, {'FLAG_BETA': '-3'}], [-3, 'env']),
('plus sign is not a valid integer', ['beta', 0, {'beta': 9}, {}, {'FLAG_BETA': '+4'}], [9, 'remote']),
('non-boolean env text is invalid for boolean flag',
['beta', True, {'beta': True}, {}, {'FLAG_BETA': 'yes'}],
[True, 'remote']),
('override layer sample 49', ['beta', True, {'beta': 'red'}, {}, {'FLAG_BETA': 'yes'}], [True, 'default']),
('override layer sample 55', ['beta', False, {'beta': True}, {}, {'FLAG_BETA': 'yes'}], [True, 'remote'])],
[('dashed key maps to underscored env name',
['dark-mode-v2', 'blue', {}, {}, {'FLAG_DARK_MODE_V2': 'green'}],
['green', 'env']),
('invalid env value falls through to remote',
['beta', 0, {'beta': 5}, {}, {'FLAG_BETA': 'lots'}],
[5, 'remote']),
('negative integer from env', ['beta', 0, {}, {}, {'FLAG_BETA': '-3'}], [-3, 'env']),
('plus sign is not a valid integer', ['beta', 0, {'beta': 9}, {}, {'FLAG_BETA': '+4'}], [9, 'remote']),
('env boolean is case-insensitive', ['beta', False, {}, {}, {'FLAG_BETA': 'TRUE'}], [True, 'env']),
('override layer sample 11', ['beta', True, {'beta': -2}, {'beta': 0}, {}], [True, 'default']),
('override layer sample 49', ['beta', True, {'beta': 'red'}, {}, {'FLAG_BETA': 'yes'}], [True, 'default']),
('override layer sample 55', ['beta', False, {'beta': True}, {}, {'FLAG_BETA': 'yes'}], [True, 'remote'])],
[('invalid env value falls through to remote',
['beta', 0, {'beta': 5}, {}, {'FLAG_BETA': 'lots'}],
[5, 'remote']),
('negative integer from env', ['beta', 0, {}, {}, {'FLAG_BETA': '-3'}], [-3, 'env']),
('plus sign is not a valid integer', ['beta', 0, {'beta': 9}, {}, {'FLAG_BETA': '+4'}], [9, 'remote']),
('env boolean is case-insensitive', ['beta', False, {}, {}, {'FLAG_BETA': 'TRUE'}], [True, 'env']),
('non-boolean env text is invalid for boolean flag',
['beta', True, {'beta': True}, {}, {'FLAG_BETA': 'yes'}],
[True, 'remote']),
('override layer sample 16', ['dark-mode-v2', 'blue', {'dark-mode-v2': 1}, {}, {}], ['blue', 'default']),
('override layer sample 17',
['dark-mode-v2', 'blue', {'dark-mode-v2': 'red'}, {'dark-mode-v2': 'red'}, {'FLAG_DARK-MODE-V2': 'yes'}],
['red', 'override']),
('override layer sample 18',
['dark-mode-v2', 0, {}, {'dark-mode-v2': True}, {'FLAG_DARK_MODE_V2': 'true'}],
[0, 'default'])],
[('negative integer from env', ['beta', 0, {}, {}, {'FLAG_BETA': '-3'}], [-3, 'env']),
('plus sign is not a valid integer', ['beta', 0, {'beta': 9}, {}, {'FLAG_BETA': '+4'}], [9, 'remote']),
('env boolean is case-insensitive', ['beta', False, {}, {}, {'FLAG_BETA': 'TRUE'}], [True, 'env']),
('non-boolean env text is invalid for boolean flag',
['beta', True, {'beta': True}, {}, {'FLAG_BETA': 'yes'}],
[True, 'remote']),
('local override beats remote', ['beta', 'a', {'beta': 'b'}, {'beta': 'c'}, {}], ['c', 'override']),
('override layer sample 21',
['dark-mode-v2', False, {}, {}, {'FLAG_DARK-MODE-V2': 'true'}],
[False, 'default']),
('override layer sample 22',
['dark-mode-v2', 'blue', {'dark-mode-v2': 1}, {}, {'FLAG_dark_mode_v2': 'True'}],
['blue', 'default']),
('override layer sample 49', ['beta', True, {'beta': 'red'}, {}, {'FLAG_BETA': 'yes'}], [True, 'default'])]]
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 |
|---|---|---|---|
| boolean remote value rejected for integer flag | [3, 'default'] | [3, 'default'] | Passed |
| environment beats local override | [True, 'env'] | [True, 'env'] | Passed |
| dashed key maps to underscored env name | ['green', 'env'] | ['green', 'env'] | Passed |
| invalid env value falls through to remote | [5, 'remote'] | [5, 'remote'] | Passed |
| negative integer from env | [-3, 'env'] | [-3, 'env'] | Passed |
| env boolean is case-insensitive | [False, 'env'] | [True, 'env'] | Failed |
| non-boolean env text is invalid for boolean flag | [False, 'env'] | [True, 'remote'] | Failed |
| override layer sample 1 | [1, 'remote'] | [1, 'remote'] | Passed |
SHA-256 / 94e8c2546de274b1a0f6b943d472c2a90fabed1ca329cb3a4c0aea19c8c8d744
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(key, default, remote, overrides, env):
def coerce(v, from_env):
if from_env:
if isinstance(default, bool):
low = v.lower()
return (True, low == 'true')
if isinstance(default, int):
body = v[1:] if v.startswith('-') else v
return (True, int(v)) if body.isdigit() else (False, None)
return (True, v)
return (True, v) if type(v) is type(default) else (False, None)
name = 'FLAG_' + key.upper().replace('-', '_')
layers = [('env', env, name, True), ('override', overrides, key, False), ('remote', remote, key, False)]
for source, table, k, from_env in layers:
if k in table:
ok, value = coerce(table[k], from_env)
if ok:
return [value, source]
return [default, 'default']
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('boolean remote value rejected for integer flag', ['beta', 3, {'beta': True}, {}, {}], [3, 'default']),
('environment beats local override',
['new-ui', False, {}, {'new-ui': False}, {'FLAG_NEW_UI': 'true'}],
[True, 'env']),
('dashed key maps to underscored env name',
['dark-mode-v2', 'blue', {}, {}, {'FLAG_DARK_MODE_V2': 'green'}],
['green', 'env']),
('invalid env value falls through to remote',
['beta', 0, {'beta': 5}, {}, {'FLAG_BETA': 'lots'}],
[5, 'remote']),
('negative integer from env', ['beta', 0, {}, {}, {'FLAG_BETA': '-3'}], [-3, 'env']),
('env boolean is case-insensitive', ['beta', False, {}, {}, {'FLAG_BETA': 'TRUE'}], [True, 'env']),
('non-boolean env text is invalid for boolean flag',
['beta', True, {'beta': True}, {}, {'FLAG_BETA': 'yes'}],
[True, 'remote']),
('override layer sample 1', ['beta', 7, {'beta': 1}, {}, {}], [1, 'remote'])],
[('environment beats local override',
['new-ui', False, {}, {'new-ui': False}, {'FLAG_NEW_UI': 'true'}],
[True, 'env']),
('dashed key maps to underscored env name',
['dark-mode-v2', 'blue', {}, {}, {'FLAG_DARK_MODE_V2': 'green'}],
['green', 'env']),
('invalid env value falls through to remote',
['beta', 0, {'beta': 5}, {}, {'FLAG_BETA': 'lots'}],
[5, 'remote']),
('negative integer from env', ['beta', 0, {}, {}, {'FLAG_BETA': '-3'}], [-3, 'env']),
('plus sign is not a valid integer', ['beta', 0, {'beta': 9}, {}, {'FLAG_BETA': '+4'}], [9, 'remote']),
('non-boolean env text is invalid for boolean flag',
['beta', True, {'beta': True}, {}, {'FLAG_BETA': 'yes'}],
[True, 'remote']),
('override layer sample 49', ['beta', True, {'beta': 'red'}, {}, {'FLAG_BETA': 'yes'}], [True, 'default']),
('override layer sample 55', ['beta', False, {'beta': True}, {}, {'FLAG_BETA': 'yes'}], [True, 'remote'])],
[('dashed key maps to underscored env name',
['dark-mode-v2', 'blue', {}, {}, {'FLAG_DARK_MODE_V2': 'green'}],
['green', 'env']),
('invalid env value falls through to remote',
['beta', 0, {'beta': 5}, {}, {'FLAG_BETA': 'lots'}],
[5, 'remote']),
('negative integer from env', ['beta', 0, {}, {}, {'FLAG_BETA': '-3'}], [-3, 'env']),
('plus sign is not a valid integer', ['beta', 0, {'beta': 9}, {}, {'FLAG_BETA': '+4'}], [9, 'remote']),
('env boolean is case-insensitive', ['beta', False, {}, {}, {'FLAG_BETA': 'TRUE'}], [True, 'env']),
('override layer sample 11', ['beta', True, {'beta': -2}, {'beta': 0}, {}], [True, 'default']),
('override layer sample 49', ['beta', True, {'beta': 'red'}, {}, {'FLAG_BETA': 'yes'}], [True, 'default']),
('override layer sample 55', ['beta', False, {'beta': True}, {}, {'FLAG_BETA': 'yes'}], [True, 'remote'])],
[('invalid env value falls through to remote',
['beta', 0, {'beta': 5}, {}, {'FLAG_BETA': 'lots'}],
[5, 'remote']),
('negative integer from env', ['beta', 0, {}, {}, {'FLAG_BETA': '-3'}], [-3, 'env']),
('plus sign is not a valid integer', ['beta', 0, {'beta': 9}, {}, {'FLAG_BETA': '+4'}], [9, 'remote']),
('env boolean is case-insensitive', ['beta', False, {}, {}, {'FLAG_BETA': 'TRUE'}], [True, 'env']),
('non-boolean env text is invalid for boolean flag',
['beta', True, {'beta': True}, {}, {'FLAG_BETA': 'yes'}],
[True, 'remote']),
('override layer sample 16', ['dark-mode-v2', 'blue', {'dark-mode-v2': 1}, {}, {}], ['blue', 'default']),
('override layer sample 17',
['dark-mode-v2', 'blue', {'dark-mode-v2': 'red'}, {'dark-mode-v2': 'red'}, {'FLAG_DARK-MODE-V2': 'yes'}],
['red', 'override']),
('override layer sample 18',
['dark-mode-v2', 0, {}, {'dark-mode-v2': True}, {'FLAG_DARK_MODE_V2': 'true'}],
[0, 'default'])],
[('negative integer from env', ['beta', 0, {}, {}, {'FLAG_BETA': '-3'}], [-3, 'env']),
('plus sign is not a valid integer', ['beta', 0, {'beta': 9}, {}, {'FLAG_BETA': '+4'}], [9, 'remote']),
('env boolean is case-insensitive', ['beta', False, {}, {}, {'FLAG_BETA': 'TRUE'}], [True, 'env']),
('non-boolean env text is invalid for boolean flag',
['beta', True, {'beta': True}, {}, {'FLAG_BETA': 'yes'}],
[True, 'remote']),
('local override beats remote', ['beta', 'a', {'beta': 'b'}, {'beta': 'c'}, {}], ['c', 'override']),
('override layer sample 21',
['dark-mode-v2', False, {}, {}, {'FLAG_DARK-MODE-V2': 'true'}],
[False, 'default']),
('override layer sample 22',
['dark-mode-v2', 'blue', {'dark-mode-v2': 1}, {}, {'FLAG_dark_mode_v2': 'True'}],
['blue', 'default']),
('override layer sample 49', ['beta', True, {'beta': 'red'}, {}, {'FLAG_BETA': 'yes'}], [True, 'default'])]]
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 |
|---|---|---|---|
| boolean remote value rejected for integer flag | [3, 'default'] | [3, 'default'] | Passed |
| environment beats local override | [True, 'env'] | [True, 'env'] | Passed |
| dashed key maps to underscored env name | ['green', 'env'] | ['green', 'env'] | Passed |
| invalid env value falls through to remote | [5, 'remote'] | [5, 'remote'] | Passed |
| negative integer from env | [-3, 'env'] | [-3, 'env'] | Passed |
| env boolean is case-insensitive | [True, 'env'] | [True, 'env'] | Passed |
| non-boolean env text is invalid for boolean flag | [False, 'env'] | [True, 'remote'] | Failed |
| override layer sample 1 | [1, 'remote'] | [1, 'remote'] | Passed |
SHA-256 / 16c65bb6fd13c608d398ef5e4cc118115c5ce4d4eff1f126e9b66ef21fdb3df4
HELD IN THE MEMBER ARCHIVE
The verified repair and its recorded checks are member-only.
This mechanism has 8 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.
Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.
Member access is invitation-based. Sign in with your invited account to inspect the repair.
Sign in to the archive ↗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:54.900292+00:00.
Case digest / 21acf4a5b76d2088e8f294222c892aefc88b91dc04fa7e933766401f988c4a6f