{"abstract":"An A major triad returns [9,13,16] instead of [9,1,4].","category":"Music interval and transposition theory","checks":8,"contract":"Input a chord symbol: root letter with optional # or b, a quality from \"\", m, dim, aug, 7, maj7, m7, m7b5, dim7, sus4, mMaj7, 6, and optionally \"/\" plus a bass note (letter with optional # or b and nothing else). Return pitch classes root-first in template order; for a slash chord the bass moves to the front (removed from its old position if it is a chord tone, otherwise added). Unknown or malformed symbols return None.","contract_signature":"x","evaluation_group":"w2-music-interval-chord-symbol","failed_approach":"Subtracting twelve only above twelve leaves a tone of exactly 12 unreduced.","family":"w2-music-interval-chord-symbol-pitch-class-reduction","id":"FA-81176","implementations":{"attempt":{"sha256":"8ef53d5298f31b8a21b6de321fc1fae5687adf8feb48bf4b2aad4c664c785ed4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    base = {'C': 0, 'D': 2, 'E': 4, 'F': 5, 'G': 7, 'A': 9, 'B': 11}\n    shapes = {'': [0, 4, 7], 'm': [0, 3, 7], 'dim': [0, 3, 6], 'aug': [0, 4, 8], '7': [0, 4, 7, 10], 'maj7': [0, 4, 7, 11], 'm7': [0, 3, 7, 10], 'm7b5': [0, 3, 6, 10], 'dim7': [0, 3, 6, 9], 'sus4': [0, 5, 7], 'mMaj7': [0, 3, 7, 11], '6': [0, 4, 7, 9]}\n    def root(s):\n        if not s or s[0] not in base:\n            return None, s\n        if s[1:2] in ('#', 'b'):\n            return (base[s[0]] + (1 if s[1] == '#' else -1)) % 12, s[2:]\n        return base[s[0]], s[1:]\n    if not isinstance(x, str):\n        return None\n    head, slash, tail = x.partition('/')\n    r, quality = root(head)\n    if r is None or quality not in shapes:\n        return None\n    tones = [(r + i) - 12 if r + i > 12 else r + i for i in shapes[quality]]\n    if slash:\n        b, rest = root(tail)\n        if b is None or rest:\n            return None\n        if b in tones:\n            tones.remove(b)\n        tones.insert(0, b)\n    return tones\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('C', [0, 4, 7]), ('Cm', [0, 3, 7]), ('Bb', [10, 2, 5]), ('Bb7', [10, 2, 5, 8]), ('F#m7b5', [6, 9, 0, 4]), ('Dsus4', [2, 7, 9]), ('C/E', [4, 0, 7]), ('E#', [5, 9, 0])], [('Bbm7', [10, 1, 5, 8]), ('F#m7b5', [6, 9, 0, 4]), ('C/E', [4, 0, 7]), ('C/G', [7, 0, 4]), ('C/Bb', [10, 0, 4, 7]), ('Am/G', [7, 9, 0, 4]), ('Cmaj7/B', [11, 0, 4, 7]), ('AmMaj7', [9, 0, 4, 8])], [('Bb7', [10, 2, 5, 8]), ('F#m7b5', [6, 9, 0, 4]), ('Ebmaj7', [3, 7, 10, 2]), ('F/A', [9, 5, 0]), ('Cmaj7/B', [11, 0, 4, 7]), ('C/E/G', None), ('C/Ebm', None), ('C/H', None)], [('F#m7b5', [6, 9, 0, 4]), ('Gdim7', [7, 10, 1, 4]), ('Am/G', [7, 9, 0, 4]), ('E#', [5, 9, 0]), ('C/H', None), ('H7', None), ('Cmin', None), ('D/F#', [6, 2, 9])], [('Ebmaj7', [3, 7, 10, 2]), ('Aaug', [9, 1, 5]), ('F/A', [9, 5, 0]), ('AmMaj7', [9, 0, 4, 8]), ('D/F#', [6, 2, 9]), ('Ebm/Gb', [6, 3, 10]), ('C/', None), ('Am/', None)]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"oracle %d\" % i, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"6626886892dd2f9b90d17292615038db6ce9fa58a4b7848d2c8e4f219d824d33","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    base = {'C': 0, 'D': 2, 'E': 4, 'F': 5, 'G': 7, 'A': 9, 'B': 11}\n    shapes = {'': [0, 4, 7], 'm': [0, 3, 7], 'dim': [0, 3, 6], 'aug': [0, 4, 8], '7': [0, 4, 7, 10], 'maj7': [0, 4, 7, 11], 'm7': [0, 3, 7, 10], 'm7b5': [0, 3, 6, 10], 'dim7': [0, 3, 6, 9], 'sus4': [0, 5, 7], 'mMaj7': [0, 3, 7, 11], '6': [0, 4, 7, 9]}\n    def root(s):\n        if not s or s[0] not in base:\n            return None, s\n        if s[1:2] in ('#', 'b'):\n            return (base[s[0]] + (1 if s[1] == '#' else -1)) % 12, s[2:]\n        return base[s[0]], s[1:]\n    if not isinstance(x, str):\n        return None\n    head, slash, tail = x.partition('/')\n    r, quality = root(head)\n    if r is None or quality not in shapes:\n        return None\n    tones = [r + i for i in shapes[quality]]\n    if slash:\n        b, rest = root(tail)\n        if b is None or rest:\n            return None\n        if b in tones:\n            tones.remove(b)\n        tones.insert(0, b)\n    return tones\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('C', [0, 4, 7]), ('Cm', [0, 3, 7]), ('Bb', [10, 2, 5]), ('Bb7', [10, 2, 5, 8]), ('F#m7b5', [6, 9, 0, 4]), ('Dsus4', [2, 7, 9]), ('C/E', [4, 0, 7]), ('E#', [5, 9, 0])], [('Bbm7', [10, 1, 5, 8]), ('F#m7b5', [6, 9, 0, 4]), ('C/E', [4, 0, 7]), ('C/G', [7, 0, 4]), ('C/Bb', [10, 0, 4, 7]), ('Am/G', [7, 9, 0, 4]), ('Cmaj7/B', [11, 0, 4, 7]), ('AmMaj7', [9, 0, 4, 8])], [('Bb7', [10, 2, 5, 8]), ('F#m7b5', [6, 9, 0, 4]), ('Ebmaj7', [3, 7, 10, 2]), ('F/A', [9, 5, 0]), ('Cmaj7/B', [11, 0, 4, 7]), ('C/E/G', None), ('C/Ebm', None), ('C/H', None)], [('F#m7b5', [6, 9, 0, 4]), ('Gdim7', [7, 10, 1, 4]), ('Am/G', [7, 9, 0, 4]), ('E#', [5, 9, 0]), ('C/H', None), ('H7', None), ('Cmin', None), ('D/F#', [6, 2, 9])], [('Ebmaj7', [3, 7, 10, 2]), ('Aaug', [9, 1, 5]), ('F/A', [9, 5, 0]), ('AmMaj7', [9, 0, 4, 8]), ('D/F#', [6, 2, 9]), ('Ebm/Gb', [6, 3, 10]), ('C/', None), ('Am/', None)]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"oracle %d\" % i, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic bounded teaching model with a stipulated toy contract; it is not a complete music notation or theory engine. 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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-music-interval-chord-symbol-pitch-class-reduction","generated_at":"2026-09-29T14:50:00.596672+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Lead-sheet, accompaniment and guitar-chart tools expand chord symbols into voicings.","root_cause":"Chord tones are formed by adding intervals to the root without reducing modulo twelve.","sha256":"afdaf25390ca358120053d41d5c5af3e50431d2c667cf0636843bd1bf5cc9b0f","title":"Chord symbol to pitch classes: chord tones above B not wrapped · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":42.617,"exit_code":1,"observations":[{"actual":[0,4,7],"check":"oracle 0","expected":[0,4,7],"passed":true},{"actual":[0,3,7],"check":"oracle 1","expected":[0,3,7],"passed":true},{"actual":[10,2,5],"check":"oracle 2","expected":[10,2,5],"passed":true},{"actual":[10,2,5,8],"check":"oracle 3","expected":[10,2,5,8],"passed":true},{"actual":[6,9,12,4],"check":"oracle 4","expected":[6,9,0,4],"passed":false},{"actual":[2,7,9],"check":"oracle 5","expected":[2,7,9],"passed":true},{"actual":[4,0,7],"check":"oracle 6","expected":[4,0,7],"passed":true},{"actual":[5,9,12],"check":"oracle 7","expected":[5,9,0],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"oracle 0\", \"actual\": [0, 4, 7], \"expected\": [0, 4, 7], \"passed\": true}, {\"check\": \"oracle 1\", \"actual\": [0, 3, 7], \"expected\": [0, 3, 7], \"passed\": true}, {\"check\": \"oracle 2\", \"actual\": [10, 2, 5], \"expected\": [10, 2, 5], \"passed\": true}, {\"check\": \"oracle 3\", \"actual\": [10, 2, 5, 8], \"expected\": [10, 2, 5, 8], \"passed\": true}, {\"check\": \"oracle 4\", \"actual\": [6, 9, 12, 4], \"expected\": [6, 9, 0, 4], \"passed\": false}, {\"check\": \"oracle 5\", \"actual\": [2, 7, 9], \"expected\": [2, 7, 9], \"passed\": true}, {\"check\": \"oracle 6\", \"actual\": [4, 0, 7], \"expected\": [4, 0, 7], \"passed\": true}, {\"check\": \"oracle 7\", \"actual\": [5, 9, 12], \"expected\": [5, 9, 0], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.449,"exit_code":1,"observations":[{"actual":[0,4,7],"check":"oracle 0","expected":[0,4,7],"passed":true},{"actual":[0,3,7],"check":"oracle 1","expected":[0,3,7],"passed":true},{"actual":[10,14,17],"check":"oracle 2","expected":[10,2,5],"passed":false},{"actual":[10,14,17,20],"check":"oracle 3","expected":[10,2,5,8],"passed":false},{"actual":[6,9,12,16],"check":"oracle 4","expected":[6,9,0,4],"passed":false},{"actual":[2,7,9],"check":"oracle 5","expected":[2,7,9],"passed":true},{"actual":[4,0,7],"check":"oracle 6","expected":[4,0,7],"passed":true},{"actual":[5,9,12],"check":"oracle 7","expected":[5,9,0],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"oracle 0\", \"actual\": [0, 4, 7], \"expected\": [0, 4, 7], \"passed\": true}, {\"check\": \"oracle 1\", \"actual\": [0, 3, 7], \"expected\": [0, 3, 7], \"passed\": true}, {\"check\": \"oracle 2\", \"actual\": [10, 14, 17], \"expected\": [10, 2, 5], \"passed\": false}, {\"check\": \"oracle 3\", \"actual\": [10, 14, 17, 20], \"expected\": [10, 2, 5, 8], \"passed\": false}, {\"check\": \"oracle 4\", \"actual\": [6, 9, 12, 16], \"expected\": [6, 9, 0, 4], \"passed\": false}, {\"check\": \"oracle 5\", \"actual\": [2, 7, 9], \"expected\": [2, 7, 9], \"passed\": true}, {\"check\": \"oracle 6\", \"actual\": [4, 0, 7], \"expected\": [4, 0, 7], \"passed\": true}, {\"check\": \"oracle 7\", \"actual\": [5, 9, 12], \"expected\": [5, 9, 0], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}