{"abstract":"In C# major, middle C is spelled B#4, an octave above the sounding pitch, instead of B#3.","category":"Music interval and transposition theory","checks":8,"contract":"Input [midi, fifths] with midi 0..127 and fifths -7..7. Use flat names when fifths < 0, sharp names otherwise; in keys with at least six sharps pitch class 5 is E#, with seven sharps pitch class 0 is B# of the previous octave, and with at least six flats pitch class 11 is Cb of the next octave. Octave -1 starts at key 0. Invalid input returns None.","evaluation_group":"w2-music-interval-midi-spelling-key","failed_approach":"Adjusting the octave in the wrong direction yields B#5, two octaves from the spelled register.","family":"w2-music-interval-midi-spelling-key-b-sharp-octave-carry","id":"FA-80881","implementations":{"attempt":{"sha256":"bfc8d7c66f0c0585cbb90dd2f63730a10cc76318b80a3a475a904078680f0a20","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    if not isinstance(x, list) or len(x) != 2:\n        return None\n    m, f = x\n    if not isinstance(m, int) or m < 0 or m > 127:\n        return None\n    if not isinstance(f, int) or f < -7 or f > 7:\n        return None\n    sharps = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']\n    flats = ['C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A', 'Bb', 'B']\n    table = flats if f < 0 else sharps\n    pc = m % 12\n    octave = m // 12 - 1\n    name = table[pc]\n    if f >= 6 and pc == 5:\n        name = 'E#'\n    if f == 7 and pc == 0:\n        name = 'B#'\n        octave += 1\n    if f <= -6 and pc == 11:\n        name = 'Cb'\n        octave += 1\n    return name + str(octave)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[([60, 0], 'C4'), ([61, 0], 'C#4'), ([61, -1], 'Db4'), ([61, 1], 'C#4'), ([70, -2], 'Bb4'), ([60, 7], 'B#3'), ([72, 7], 'B#4'), ([0, 7], 'B#-2')], [([61, 1], 'C#4'), ([70, -2], 'Bb4'), ([70, 2], 'A#4'), ([65, 6], 'E#4'), ([65, 5], 'F4'), ([60, 7], 'B#3'), ([48, 7], 'B#2'), ([0, 7], 'B#-2')], [([65, 6], 'E#4'), ([65, 5], 'F4'), ([65, 7], 'E#4'), ([65, -6], 'F4'), ([60, 7], 'B#3'), ([48, 7], 'B#2'), ([71, -6], 'Cb5'), ([72, 7], 'B#4')], [([65, -6], 'F4'), ([48, 7], 'B#2'), ([71, -6], 'Cb5'), ([71, -7], 'Cb5'), ([59, -6], 'Cb4'), ([0, 0], 'C-1'), ([72, 7], 'B#4'), ([0, 7], 'B#-2')], [([60, 7], 'B#3'), ([59, -6], 'Cb4'), ([0, 0], 'C-1'), ([1, -3], 'Db-1'), ([11, 0], 'B-1'), ([127, 0], 'G9'), ([72, 7], 'B#4'), ([0, 7], 'B#-2')]]\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":"64a550cb2624e264a1295038a9e96b7451699222d75dcc4304348d4b2503eb66","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    if not isinstance(x, list) or len(x) != 2:\n        return None\n    m, f = x\n    if not isinstance(m, int) or m < 0 or m > 127:\n        return None\n    if not isinstance(f, int) or f < -7 or f > 7:\n        return None\n    sharps = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']\n    flats = ['C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A', 'Bb', 'B']\n    table = flats if f < 0 else sharps\n    pc = m % 12\n    octave = m // 12 - 1\n    name = table[pc]\n    if f >= 6 and pc == 5:\n        name = 'E#'\n    if f == 7 and pc == 0:\n        name = 'B#'\n    if f <= -6 and pc == 11:\n        name = 'Cb'\n        octave += 1\n    return name + str(octave)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[([60, 0], 'C4'), ([61, 0], 'C#4'), ([61, -1], 'Db4'), ([61, 1], 'C#4'), ([70, -2], 'Bb4'), ([60, 7], 'B#3'), ([72, 7], 'B#4'), ([0, 7], 'B#-2')], [([61, 1], 'C#4'), ([70, -2], 'Bb4'), ([70, 2], 'A#4'), ([65, 6], 'E#4'), ([65, 5], 'F4'), ([60, 7], 'B#3'), ([48, 7], 'B#2'), ([0, 7], 'B#-2')], [([65, 6], 'E#4'), ([65, 5], 'F4'), ([65, 7], 'E#4'), ([65, -6], 'F4'), ([60, 7], 'B#3'), ([48, 7], 'B#2'), ([71, -6], 'Cb5'), ([72, 7], 'B#4')], [([65, -6], 'F4'), ([48, 7], 'B#2'), ([71, -6], 'Cb5'), ([71, -7], 'Cb5'), ([59, -6], 'Cb4'), ([0, 0], 'C-1'), ([72, 7], 'B#4'), ([0, 7], 'B#-2')], [([60, 7], 'B#3'), ([59, -6], 'Cb4'), ([0, 0], 'C-1'), ([1, -3], 'Db-1'), ([11, 0], 'B-1'), ([127, 0], 'G9'), ([72, 7], 'B#4'), ([0, 7], 'B#-2')]]\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"},"fixed":{"sha256":"b041d3978623e67ade7b8c9e69ff8a08fa4ac118460f0f46014e94dbf44cff20","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    if not isinstance(x, list) or len(x) != 2:\n        return None\n    m, f = x\n    if not isinstance(m, int) or m < 0 or m > 127:\n        return None\n    if not isinstance(f, int) or f < -7 or f > 7:\n        return None\n    sharps = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']\n    flats = ['C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A', 'Bb', 'B']\n    table = flats if f < 0 else sharps\n    pc = m % 12\n    octave = m // 12 - 1\n    name = table[pc]\n    if f >= 6 and pc == 5:\n        name = 'E#'\n    if f == 7 and pc == 0:\n        name = 'B#'\n        octave -= 1\n    if f <= -6 and pc == 11:\n        name = 'Cb'\n        octave += 1\n    return name + str(octave)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[([60, 0], 'C4'), ([61, 0], 'C#4'), ([61, -1], 'Db4'), ([61, 1], 'C#4'), ([70, -2], 'Bb4'), ([60, 7], 'B#3'), ([72, 7], 'B#4'), ([0, 7], 'B#-2')], [([61, 1], 'C#4'), ([70, -2], 'Bb4'), ([70, 2], 'A#4'), ([65, 6], 'E#4'), ([65, 5], 'F4'), ([60, 7], 'B#3'), ([48, 7], 'B#2'), ([0, 7], 'B#-2')], [([65, 6], 'E#4'), ([65, 5], 'F4'), ([65, 7], 'E#4'), ([65, -6], 'F4'), ([60, 7], 'B#3'), ([48, 7], 'B#2'), ([71, -6], 'Cb5'), ([72, 7], 'B#4')], [([65, -6], 'F4'), ([48, 7], 'B#2'), ([71, -6], 'Cb5'), ([71, -7], 'Cb5'), ([59, -6], 'Cb4'), ([0, 0], 'C-1'), ([72, 7], 'B#4'), ([0, 7], 'B#-2')], [([60, 7], 'B#3'), ([59, -6], 'Cb4'), ([0, 0], 'C-1'), ([1, -3], 'Db-1'), ([11, 0], 'B-1'), ([127, 0], 'G9'), ([72, 7], 'B#4'), ([0, 7], 'B#-2')]]\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-midi-spelling-key-b-sharp-octave-carry","generated_at":"2026-09-29T14:49:57.989223+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Pitch spelling and interval arithmetic decide the notes that notation, transposition and analysis tools display or play.","repair":"Restore the B sharp octave carry step so that it reads `name = 'B#'\n    octave -= 1`.","root_cause":"After respelling pitch class 0 as B#, the octave is not moved down to the octave of the letter B.","sha256":"47989c0074e9fc464d3bff1b1ee32e9176d85205050dca12c3dac4d7984c9796","title":"Key-aware MIDI note spelling: B sharp keeps the sounding octave number · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.259,"exit_code":1,"observations":[{"actual":"C4","check":"oracle 0","expected":"C4","passed":true},{"actual":"C#4","check":"oracle 1","expected":"C#4","passed":true},{"actual":"Db4","check":"oracle 2","expected":"Db4","passed":true},{"actual":"C#4","check":"oracle 3","expected":"C#4","passed":true},{"actual":"Bb4","check":"oracle 4","expected":"Bb4","passed":true},{"actual":"B#5","check":"oracle 5","expected":"B#3","passed":false},{"actual":"B#6","check":"oracle 6","expected":"B#4","passed":false},{"actual":"B#0","check":"oracle 7","expected":"B#-2","passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"oracle 0\", \"actual\": \"C4\", \"expected\": \"C4\", \"passed\": true}, {\"check\": \"oracle 1\", \"actual\": \"C#4\", \"expected\": \"C#4\", \"passed\": true}, {\"check\": \"oracle 2\", \"actual\": \"Db4\", \"expected\": \"Db4\", \"passed\": true}, {\"check\": \"oracle 3\", \"actual\": \"C#4\", \"expected\": \"C#4\", \"passed\": true}, {\"check\": \"oracle 4\", \"actual\": \"Bb4\", \"expected\": \"Bb4\", \"passed\": true}, {\"check\": \"oracle 5\", \"actual\": \"B#5\", \"expected\": \"B#3\", \"passed\": false}, {\"check\": \"oracle 6\", \"actual\": \"B#6\", \"expected\": \"B#4\", \"passed\": false}, {\"check\": \"oracle 7\", \"actual\": \"B#0\", \"expected\": \"B#-2\", \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.197,"exit_code":1,"observations":[{"actual":"C4","check":"oracle 0","expected":"C4","passed":true},{"actual":"C#4","check":"oracle 1","expected":"C#4","passed":true},{"actual":"Db4","check":"oracle 2","expected":"Db4","passed":true},{"actual":"C#4","check":"oracle 3","expected":"C#4","passed":true},{"actual":"Bb4","check":"oracle 4","expected":"Bb4","passed":true},{"actual":"B#4","check":"oracle 5","expected":"B#3","passed":false},{"actual":"B#5","check":"oracle 6","expected":"B#4","passed":false},{"actual":"B#-1","check":"oracle 7","expected":"B#-2","passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"oracle 0\", \"actual\": \"C4\", \"expected\": \"C4\", \"passed\": true}, {\"check\": \"oracle 1\", \"actual\": \"C#4\", \"expected\": \"C#4\", \"passed\": true}, {\"check\": \"oracle 2\", \"actual\": \"Db4\", \"expected\": \"Db4\", \"passed\": true}, {\"check\": \"oracle 3\", \"actual\": \"C#4\", \"expected\": \"C#4\", \"passed\": true}, {\"check\": \"oracle 4\", \"actual\": \"Bb4\", \"expected\": \"Bb4\", \"passed\": true}, {\"check\": \"oracle 5\", \"actual\": \"B#4\", \"expected\": \"B#3\", \"passed\": false}, {\"check\": \"oracle 6\", \"actual\": \"B#5\", \"expected\": \"B#4\", \"passed\": false}, {\"check\": \"oracle 7\", \"actual\": \"B#-1\", \"expected\": \"B#-2\", \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.348,"exit_code":0,"observations":[{"actual":"C4","check":"oracle 0","expected":"C4","passed":true},{"actual":"C#4","check":"oracle 1","expected":"C#4","passed":true},{"actual":"Db4","check":"oracle 2","expected":"Db4","passed":true},{"actual":"C#4","check":"oracle 3","expected":"C#4","passed":true},{"actual":"Bb4","check":"oracle 4","expected":"Bb4","passed":true},{"actual":"B#3","check":"oracle 5","expected":"B#3","passed":true},{"actual":"B#4","check":"oracle 6","expected":"B#4","passed":true},{"actual":"B#-2","check":"oracle 7","expected":"B#-2","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"oracle 0\", \"actual\": \"C4\", \"expected\": \"C4\", \"passed\": true}, {\"check\": \"oracle 1\", \"actual\": \"C#4\", \"expected\": \"C#4\", \"passed\": true}, {\"check\": \"oracle 2\", \"actual\": \"Db4\", \"expected\": \"Db4\", \"passed\": true}, {\"check\": \"oracle 3\", \"actual\": \"C#4\", \"expected\": \"C#4\", \"passed\": true}, {\"check\": \"oracle 4\", \"actual\": \"Bb4\", \"expected\": \"Bb4\", \"passed\": true}, {\"check\": \"oracle 5\", \"actual\": \"B#3\", \"expected\": \"B#3\", \"passed\": true}, {\"check\": \"oracle 6\", \"actual\": \"B#4\", \"expected\": \"B#4\", \"passed\": true}, {\"check\": \"oracle 7\", \"actual\": \"B#-2\", \"expected\": \"B#-2\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}