FA-9421 / Configuration / Open access
Layered dependency override resolution: Explicit empty overrides are silently ignored · case 01
Explicit empty overrides are silently ignored.
ROOT CAUSE
The implementation substitutes if not value: for if value is None:, so explicit empty overrides are silently ignored.
VERIFIED REPAIR
Treat only None as deletion.
Unsuccessful approach: The attempted repair substitutes if value in (None, False, ''):. Fixture 4 still yields 'base' instead of ''.
Case contract
Apply global then workspace then package overrides. Only exact package keys participate; None deletes an override and empty string is a preserved explicit value. Return base if deleted or absent.
Why this case matters
An offline model of layered dependency override resolution, suitable for testing build and release tooling without external services.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(name, base, layers):
result = base
for layer in layers:
if name not in layer: continue
value = layer[name]
if not value: result = base
else: result = value
return result
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve('a', 'base', []), 'base')
check('fixture 2', solve('a', 'base', [{'a': 'one'}, {'a': 'two'}]), 'two')
check('fixture 3', solve('a', 'base', [{'a': 'one'}, {'a': None}]), 'base')
check('fixture 4', solve('a', 'base', [{'a': ''}]), '')
check('fixture 5', solve('a', 'base', [{'b': 'other'}]), 'base')
check('fixture 6', solve('a', 'base', [{'a': None}, {'a': 'three'}]), 'three')
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 |
|---|---|---|---|
| fixture 1 | base | base | Passed |
| fixture 2 | two | two | Passed |
| fixture 3 | base | base | Passed |
| fixture 4 | base | | Failed |
| fixture 5 | base | base | Passed |
| fixture 6 | three | three | Passed |
SHA-256 / 31d598bbe511b85c0c7af6e022006a3ff286b75331b247e178cb182bbd962d29
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(name, base, layers):
result = base
for layer in layers:
if name not in layer: continue
value = layer[name]
if value in (None, False, ''): result = base
else: result = value
return result
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve('a', 'base', []), 'base')
check('fixture 2', solve('a', 'base', [{'a': 'one'}, {'a': 'two'}]), 'two')
check('fixture 3', solve('a', 'base', [{'a': 'one'}, {'a': None}]), 'base')
check('fixture 4', solve('a', 'base', [{'a': ''}]), '')
check('fixture 5', solve('a', 'base', [{'b': 'other'}]), 'base')
check('fixture 6', solve('a', 'base', [{'a': None}, {'a': 'three'}]), 'three')
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 |
|---|---|---|---|
| fixture 1 | base | base | Passed |
| fixture 2 | two | two | Passed |
| fixture 3 | base | base | Passed |
| fixture 4 | base | | Failed |
| fixture 5 | base | base | Passed |
| fixture 6 | three | three | Passed |
SHA-256 / 13aa9eaaedb2dd87ad676495a74832343232ebb2963ed95146275e9327e0e324
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(name, base, layers):
result = base
for layer in layers:
if name not in layer: continue
value = layer[name]
if value is None: result = base
else: result = value
return result
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('fixture 1', solve('a', 'base', []), 'base')
check('fixture 2', solve('a', 'base', [{'a': 'one'}, {'a': 'two'}]), 'two')
check('fixture 3', solve('a', 'base', [{'a': 'one'}, {'a': None}]), 'base')
check('fixture 4', solve('a', 'base', [{'a': ''}]), '')
check('fixture 5', solve('a', 'base', [{'b': 'other'}]), 'base')
check('fixture 6', solve('a', 'base', [{'a': None}, {'a': 'three'}]), 'three')
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 |
|---|---|---|---|
| fixture 1 | base | base | Passed |
| fixture 2 | two | two | Passed |
| fixture 3 | base | base | Passed |
| fixture 4 | | | Passed |
| fixture 5 | base | base | Passed |
| fixture 6 | three | three | Passed |
SHA-256 / 36ce0fe2809da06d5d3a70aa9a0815abf59954b0bb9d2efafe03fab413103961
Verification & scope
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:38:29.796646+00:00.
Case digest / 5933b967c3c51e77e9aebf391dae8491ec88129dd439d7e7bdb48dd0d3a9bcc7