FA-45596 / Data systems / Open access
Default materialization discards explicitly provided columns · case 01
Default materialization discards explicitly provided columns.
ROOT CAUSE
default-column-dependencies: Default materialization discards explicitly provided columns.
VERIFIED REPAIR
Preserve the stated physical representation and operation order: Materialize missing columns using ordered default rules [target,source-or-None,constant]. A constant rule writes constant; a dependent rule writes source+constant, propagating explicit null. Existing columns including None and zero never change. Resolve forward dependencies to a fixed point; unresolved dependencies return DEFAULT_CYCLE.
Unsuccessful approach: Keeping only columns named by default rules drops unrelated supplied data.
Case contract
Materialize missing columns using ordered default rules [target,source-or-None,constant]. A constant rule writes constant; a dependent rule writes source+constant, propagating explicit null. Existing columns including None and zero never change. Resolve forward dependencies to a fixed point; unresolved dependencies return DEFAULT_CYCLE.
Why this case matters
A bounded deterministic data engine model makes representation and changelog faults reproducible.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
try:
row,rules=d
result={}
pending=[rule for rule in rules if rule[0] not in result]
while pending:
progressed=False; later=[]
for target,source,constant in pending:
if source is not None and source not in result:
later.append([target,source,constant]); continue
result[target]=constant if source is None else (None if result[source] is None else result[source]+constant)
progressed=True
if not progressed: return 'DEFAULT_CYCLE'
pending=later
return result
except (IndexError, KeyError, ValueError, StopIteration) as exc:
return {"representation_error": type(exc).__name__}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 1]]]), {'a': 1, 'b': 3})
check('explicit null', solve([{'a': None}, [['a', None, 1], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 1], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 1}, [['a', None, 2]]]), {'x': 1, 'a': 2})
check('source provided', solve([{'a': 1}, [['b', 'a', 3]]]), {'a': 1, 'b': 4})
check('no defaults', solve([{'a': 1}, []]), {'a': 1})
elif N == 2:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 2]]]), {'a': 2, 'b': 4})
check('explicit null', solve([{'a': None}, [['a', None, 2], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 2], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 2}, [['a', None, 3]]]), {'x': 2, 'a': 3})
check('source provided', solve([{'a': 2}, [['b', 'a', 3]]]), {'a': 2, 'b': 5})
check('no defaults', solve([{'a': 2}, []]), {'a': 2})
elif N == 3:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 3]]]), {'a': 3, 'b': 5})
check('explicit null', solve([{'a': None}, [['a', None, 3], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 3], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 3}, [['a', None, 4]]]), {'x': 3, 'a': 4})
check('source provided', solve([{'a': 3}, [['b', 'a', 3]]]), {'a': 3, 'b': 6})
check('no defaults', solve([{'a': 3}, []]), {'a': 3})
elif N == 4:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 4]]]), {'a': 4, 'b': 6})
check('explicit null', solve([{'a': None}, [['a', None, 4], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 4], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 4}, [['a', None, 5]]]), {'x': 4, 'a': 5})
check('source provided', solve([{'a': 4}, [['b', 'a', 3]]]), {'a': 4, 'b': 7})
check('no defaults', solve([{'a': 4}, []]), {'a': 4})
elif N == 5:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 5]]]), {'a': 5, 'b': 7})
check('explicit null', solve([{'a': None}, [['a', None, 5], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 5], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 5}, [['a', None, 6]]]), {'x': 5, 'a': 6})
check('source provided', solve([{'a': 5}, [['b', 'a', 3]]]), {'a': 5, 'b': 8})
check('no defaults', solve([{'a': 5}, []]), {'a': 5})
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 |
|---|---|---|---|
| forward dependency | {'a': 1, 'b': 3} | {'a': 1, 'b': 3} | Passed |
| explicit null | {'a': 1, 'b': 2} | {'a': None, 'b': None} | Failed |
| explicit zero | {'a': 1, 'b': 3} | {'a': 0, 'b': 2} | Failed |
| dependency cycle | DEFAULT_CYCLE | DEFAULT_CYCLE | Passed |
| provided unrelated | {'a': 2} | {'a': 2, 'x': 1} | Failed |
| source provided | DEFAULT_CYCLE | {'a': 1, 'b': 4} | Failed |
| no defaults | {} | {'a': 1} | Failed |
SHA-256 / cd3b0687ee3aaf6ce9dd9a964b68dbd401da89300214fbc13bced1ef677e70a0
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
try:
row,rules=d
result={k:v for k,v in row.items() if any(k==r[0] for r in rules)}
pending=[rule for rule in rules if rule[0] not in result]
while pending:
progressed=False; later=[]
for target,source,constant in pending:
if source is not None and source not in result:
later.append([target,source,constant]); continue
result[target]=constant if source is None else (None if result[source] is None else result[source]+constant)
progressed=True
if not progressed: return 'DEFAULT_CYCLE'
pending=later
return result
except (IndexError, KeyError, ValueError, StopIteration) as exc:
return {"representation_error": type(exc).__name__}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 1]]]), {'a': 1, 'b': 3})
check('explicit null', solve([{'a': None}, [['a', None, 1], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 1], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 1}, [['a', None, 2]]]), {'x': 1, 'a': 2})
check('source provided', solve([{'a': 1}, [['b', 'a', 3]]]), {'a': 1, 'b': 4})
check('no defaults', solve([{'a': 1}, []]), {'a': 1})
elif N == 2:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 2]]]), {'a': 2, 'b': 4})
check('explicit null', solve([{'a': None}, [['a', None, 2], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 2], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 2}, [['a', None, 3]]]), {'x': 2, 'a': 3})
check('source provided', solve([{'a': 2}, [['b', 'a', 3]]]), {'a': 2, 'b': 5})
check('no defaults', solve([{'a': 2}, []]), {'a': 2})
elif N == 3:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 3]]]), {'a': 3, 'b': 5})
check('explicit null', solve([{'a': None}, [['a', None, 3], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 3], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 3}, [['a', None, 4]]]), {'x': 3, 'a': 4})
check('source provided', solve([{'a': 3}, [['b', 'a', 3]]]), {'a': 3, 'b': 6})
check('no defaults', solve([{'a': 3}, []]), {'a': 3})
elif N == 4:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 4]]]), {'a': 4, 'b': 6})
check('explicit null', solve([{'a': None}, [['a', None, 4], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 4], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 4}, [['a', None, 5]]]), {'x': 4, 'a': 5})
check('source provided', solve([{'a': 4}, [['b', 'a', 3]]]), {'a': 4, 'b': 7})
check('no defaults', solve([{'a': 4}, []]), {'a': 4})
elif N == 5:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 5]]]), {'a': 5, 'b': 7})
check('explicit null', solve([{'a': None}, [['a', None, 5], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 5], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 5}, [['a', None, 6]]]), {'x': 5, 'a': 6})
check('source provided', solve([{'a': 5}, [['b', 'a', 3]]]), {'a': 5, 'b': 8})
check('no defaults', solve([{'a': 5}, []]), {'a': 5})
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 |
|---|---|---|---|
| forward dependency | {'a': 1, 'b': 3} | {'a': 1, 'b': 3} | Passed |
| explicit null | {'a': None, 'b': None} | {'a': None, 'b': None} | Passed |
| explicit zero | {'a': 0, 'b': 2} | {'a': 0, 'b': 2} | Passed |
| dependency cycle | DEFAULT_CYCLE | DEFAULT_CYCLE | Passed |
| provided unrelated | {'a': 2} | {'a': 2, 'x': 1} | Failed |
| source provided | DEFAULT_CYCLE | {'a': 1, 'b': 4} | Failed |
| no defaults | {} | {'a': 1} | Failed |
SHA-256 / 1e501a0d36e796e988db8a130c937c4ccaa1225ed17a067c2d9ad17c01b5b3de
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
try:
row,rules=d
result=dict(row)
pending=[rule for rule in rules if rule[0] not in result]
while pending:
progressed=False; later=[]
for target,source,constant in pending:
if source is not None and source not in result:
later.append([target,source,constant]); continue
result[target]=constant if source is None else (None if result[source] is None else result[source]+constant)
progressed=True
if not progressed: return 'DEFAULT_CYCLE'
pending=later
return result
except (IndexError, KeyError, ValueError, StopIteration) as exc:
return {"representation_error": type(exc).__name__}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 1]]]), {'a': 1, 'b': 3})
check('explicit null', solve([{'a': None}, [['a', None, 1], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 1], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 1}, [['a', None, 2]]]), {'x': 1, 'a': 2})
check('source provided', solve([{'a': 1}, [['b', 'a', 3]]]), {'a': 1, 'b': 4})
check('no defaults', solve([{'a': 1}, []]), {'a': 1})
elif N == 2:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 2]]]), {'a': 2, 'b': 4})
check('explicit null', solve([{'a': None}, [['a', None, 2], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 2], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 2}, [['a', None, 3]]]), {'x': 2, 'a': 3})
check('source provided', solve([{'a': 2}, [['b', 'a', 3]]]), {'a': 2, 'b': 5})
check('no defaults', solve([{'a': 2}, []]), {'a': 2})
elif N == 3:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 3]]]), {'a': 3, 'b': 5})
check('explicit null', solve([{'a': None}, [['a', None, 3], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 3], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 3}, [['a', None, 4]]]), {'x': 3, 'a': 4})
check('source provided', solve([{'a': 3}, [['b', 'a', 3]]]), {'a': 3, 'b': 6})
check('no defaults', solve([{'a': 3}, []]), {'a': 3})
elif N == 4:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 4]]]), {'a': 4, 'b': 6})
check('explicit null', solve([{'a': None}, [['a', None, 4], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 4], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 4}, [['a', None, 5]]]), {'x': 4, 'a': 5})
check('source provided', solve([{'a': 4}, [['b', 'a', 3]]]), {'a': 4, 'b': 7})
check('no defaults', solve([{'a': 4}, []]), {'a': 4})
elif N == 5:
check('forward dependency', solve([{}, [['b', 'a', 2], ['a', None, 5]]]), {'a': 5, 'b': 7})
check('explicit null', solve([{'a': None}, [['a', None, 5], ['b', 'a', 1]]]), {'a': None, 'b': None})
check('explicit zero', solve([{'a': 0}, [['a', None, 5], ['b', 'a', 2]]]), {'a': 0, 'b': 2})
check('dependency cycle', solve([{}, [['a', 'b', 1], ['b', 'a', 1]]]), 'DEFAULT_CYCLE')
check('provided unrelated', solve([{'x': 5}, [['a', None, 6]]]), {'x': 5, 'a': 6})
check('source provided', solve([{'a': 5}, [['b', 'a', 3]]]), {'a': 5, 'b': 8})
check('no defaults', solve([{'a': 5}, []]), {'a': 5})
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 |
|---|---|---|---|
| forward dependency | {'a': 1, 'b': 3} | {'a': 1, 'b': 3} | Passed |
| explicit null | {'a': None, 'b': None} | {'a': None, 'b': None} | Passed |
| explicit zero | {'a': 0, 'b': 2} | {'a': 0, 'b': 2} | Passed |
| dependency cycle | DEFAULT_CYCLE | DEFAULT_CYCLE | Passed |
| provided unrelated | {'a': 2, 'x': 1} | {'a': 2, 'x': 1} | Passed |
| source provided | {'a': 1, 'b': 4} | {'a': 1, 'b': 4} | Passed |
| no defaults | {'a': 1} | {'a': 1} | Passed |
SHA-256 / 138b8bca3f384e9751924b70f36f2a59c6e5b1fcb25fb0ec286710d4c91a291f
Verification & scope
Offline stipulated semantics over valid small inputs; no performance, concurrency, or production-engine conformance claim. 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:44:23.812041+00:00.
Case digest / 1a245f3898e1d3308a2d012c999b32d5a27ea04cf076ec828604e623a4d0390e