FA-12486 / Molecular graph representation / Open access
An unspecified query charge becomes a neutral-only constraint · case 01
An unspecified query charge becomes a neutral-only constraint.
ROOT CAUSE
Missing query charge is defaulted to zero.
VERIFIED REPAIR
Implement the explicit toy representation contract: Query has element string or * wildcard and charge integer or None wildcard. Match target element and charge conjunctively, with only None disabling charge constraint.
Unsuccessful approach: Using truthiness makes an explicit neutral charge behave as a wildcard.
Case contract
Query has element string or * wildcard and charge integer or None wildcard. Match target element and charge conjunctively, with only None disabling charge constraint.
Why this case matters
Controlled molecular graph interchange model; tests isolate atom or bond representation errors without claiming chemical validity or production toolkit equivalence.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(element, charge, query_element, query_charge):
return (query_element == "*" or element == query_element) and charge == (query_charge or 0)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('wildcard charge', solve('N',N,'N',None), True)
check('explicit neutral rejects ion', solve('N',N,'N',0), False)
check('neutral matches', solve('N',0,'N',0), True)
check('element mismatch', solve('O',0,'N',None), False)
check('wildcard element exact charge', solve('O',-N,'*',-N), True)
check('wrong signed charge', solve('O',N,'*',-N), False)
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 |
|---|---|---|---|
| wildcard charge | False | True | Failed |
| explicit neutral rejects ion | False | False | Passed |
| neutral matches | True | True | Passed |
| element mismatch | False | False | Passed |
| wildcard element exact charge | True | True | Passed |
| wrong signed charge | False | False | Passed |
SHA-256 / 46cf09f619399c50f4000139744c70184291bd59b32c143e5217bf594412656f
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(element, charge, query_element, query_charge):
return (query_element == "*" or element == query_element) and (not query_charge or charge == query_charge)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('wildcard charge', solve('N',N,'N',None), True)
check('explicit neutral rejects ion', solve('N',N,'N',0), False)
check('neutral matches', solve('N',0,'N',0), True)
check('element mismatch', solve('O',0,'N',None), False)
check('wildcard element exact charge', solve('O',-N,'*',-N), True)
check('wrong signed charge', solve('O',N,'*',-N), False)
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 |
|---|---|---|---|
| wildcard charge | True | True | Passed |
| explicit neutral rejects ion | True | False | Failed |
| neutral matches | True | True | Passed |
| element mismatch | False | False | Passed |
| wildcard element exact charge | True | True | Passed |
| wrong signed charge | False | False | Passed |
SHA-256 / 4185754e7393e97cd754ee9e6aebe83a2267852137692993091394d6a8a20498
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(element, charge, query_element, query_charge):
return (query_element == "*" or element == query_element) and (query_charge is None or charge == query_charge)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('wildcard charge', solve('N',N,'N',None), True)
check('explicit neutral rejects ion', solve('N',N,'N',0), False)
check('neutral matches', solve('N',0,'N',0), True)
check('element mismatch', solve('O',0,'N',None), False)
check('wildcard element exact charge', solve('O',-N,'*',-N), True)
check('wrong signed charge', solve('O',N,'*',-N), False)
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 |
|---|---|---|---|
| wildcard charge | True | True | Passed |
| explicit neutral rejects ion | False | False | Passed |
| neutral matches | True | True | Passed |
| element mismatch | False | False | Passed |
| wildcard element exact charge | True | True | Passed |
| wrong signed charge | False | False | Passed |
SHA-256 / f044a9535b0b536fb5ee5a9773aeb1cb97f3264c3c941328f117498030857cbe
Verification & scope
Toy representation only; no valence inference, chemical sanitization, synthesis, or real molecular identity determination. 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:57.434750+00:00.
Case digest / 79131f4a619fe65e492e049fd47f49d5d8529247bbaf2210616a26bd90ae42bb