FAILURE MAP
← Case archive

FA-12461 / Molecular graph representation / Open access

Aromatic bond tags are inferred from atom flags · case 01

Aromatic bond tags are inferred from atom flags.

Verified by executionVariant 1 · 6 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

Two aromatic atom flags are treated as proof of an aromatic connecting bond.

THE FAILURE

Two aromatic atom flags are treated as proof of an aromatic connecting bond.

Unsuccessful approach: Requiring aromatic endpoints deletes explicit bond tags on partially annotated graphs.

Case contract

Return the explicit bond aromatic boolean unchanged. Atom aromatic flags are independent annotations and are never used to infer or override it.

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(left, right, bond, atom_id):
    return left and right
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('bridge between annotated atoms', solve(True,True,False,N), False)
check('explicit partial annotation', solve(True,False,True,N), True)
check('neither atom annotated', solve(False,False,True,N), True)
check('consistent aromatic', solve(True,True,bool(N % 2),N), bool(N % 2))
check('plain bond', solve(False,False,bool(N % 2),N), bool(N % 2))
check('single annotated atom', solve(False,True,False,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 fixtureActualExpectedOutcome
bridge between annotated atomsTrueFalseFailed
explicit partial annotationFalseTrueFailed
neither atom annotatedFalseTrueFailed
consistent aromaticTrueTruePassed
plain bondFalseTrueFailed
single annotated atomFalseFalsePassed

SHA-256 / e92f74106b389d85dd9a2b9b15f74c680e2620ff4971d2b1384a1a5edfd12bae

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(left, right, bond, atom_id):
    return bond and left and right
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('bridge between annotated atoms', solve(True,True,False,N), False)
check('explicit partial annotation', solve(True,False,True,N), True)
check('neither atom annotated', solve(False,False,True,N), True)
check('consistent aromatic', solve(True,True,bool(N % 2),N), bool(N % 2))
check('plain bond', solve(False,False,bool(N % 2),N), bool(N % 2))
check('single annotated atom', solve(False,True,False,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 fixtureActualExpectedOutcome
bridge between annotated atomsFalseFalsePassed
explicit partial annotationFalseTrueFailed
neither atom annotatedFalseTrueFailed
consistent aromaticTrueTruePassed
plain bondFalseTrueFailed
single annotated atomFalseFalsePassed

SHA-256 / bd1a970cf255848fad746332308d52392525591fca1539e06a7de6a9676a6668

HELD IN THE MEMBER ARCHIVE

The verified repair and its recorded checks are member-only.

This mechanism has 6 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

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.126118+00:00.

Case digest / 26ac1c7fb67a8bb45dd50fffbcc46b5ecca5cd53f01ca05562d74d57d01f2e44