{"abstract":"Non-ionian modes come out as the major scale of the tonic because the pitch advance follows the letter names.","category":"Music interval and transposition theory","checks":8,"contract":"Input [tonic, mode]: tonic is a letter plus optional accidental from \"\", #, b, x, bb; mode is one of the seven church modes ionian..locrian. The step pattern is the major pattern 2 2 1 2 2 2 1 rotated left by the mode index. Each degree uses the next letter; its alteration is the pitch-class difference from the natural letter folded into -6..5. Return the seven names, or None if any alteration exceeds two or input is invalid.","evaluation_group":"w2-music-interval-modal-scale-spelling","failed_approach":"Using the rotated pattern but indexing it by the absolute letter still misaligns every mode whose tonic is not C.","family":"w2-music-interval-modal-scale-spelling-step-accumulation","id":"FA-81016","implementations":{"attempt":{"sha256":"a7b7dc24b3130cfedd2d7b67c05187a6f8a66a0d0e743f8e44150d3bddcdbc3d","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    modes = ['ionian', 'dorian', 'phrygian', 'lydian', 'mixolydian', 'aeolian', 'locrian']\n    if not isinstance(x, list) or len(x) != 2:\n        return None\n    tonic, mode = x\n    if mode not in modes or not isinstance(tonic, str) or not tonic or tonic[0] not in base:\n        return None\n    signs = {'': 0, '#': 1, 'b': -1, 'x': 2, 'bb': -2}\n    if tonic[1:] not in signs:\n        return None\n    steps = [2, 2, 1, 2, 2, 2, 1]\n    k = modes.index(mode)\n    steps = steps[k:] + steps[:k]\n    pc = base[tonic[0]] + signs[tonic[1:]]\n    li = 'CDEFGAB'.index(tonic[0])\n    out = []\n    for step in steps:\n        letter = 'CDEFGAB'[li % 7]\n        alter = (pc - base[letter] + 6) % 12 - 6\n        if abs(alter) > 2:\n            return None\n        out.append(letter + {0: '', 1: '#', -1: 'b', 2: 'x', -2: 'bb'}[alter])\n        pc += steps[li % 7]\n        li += 1\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[(['C', 'ionian'], ['C', 'D', 'E', 'F', 'G', 'A', 'B']), (['D', 'dorian'], ['D', 'E', 'F', 'G', 'A', 'B', 'C']), (['G', 'mixolydian'], ['G', 'A', 'B', 'C', 'D', 'E', 'F']), (['C', 'dorian'], ['C', 'D', 'Eb', 'F', 'G', 'A', 'Bb']), (['C', 'lydian'], ['C', 'D', 'E', 'F#', 'G', 'A', 'B']), (['D', 'major'], None), (['H', 'ionian'], None), (['Cq', 'ionian'], None)], [(['D', 'dorian'], ['D', 'E', 'F', 'G', 'A', 'B', 'C']), (['E', 'phrygian'], ['E', 'F', 'G', 'A', 'B', 'C', 'D']), (['F', 'lydian'], ['F', 'G', 'A', 'B', 'C', 'D', 'E']), (['G', 'mixolydian'], ['G', 'A', 'B', 'C', 'D', 'E', 'F']), (['A', 'aeolian'], ['A', 'B', 'C', 'D', 'E', 'F', 'G']), (['C', 'phrygian'], ['C', 'Db', 'Eb', 'F', 'G', 'Ab', 'Bb']), (['C', 'locrian'], ['C', 'Db', 'Eb', 'F', 'Gb', 'Ab', 'Bb']), (['Cq', 'ionian'], None)], [(['F', 'lydian'], ['F', 'G', 'A', 'B', 'C', 'D', 'E']), (['G', 'mixolydian'], ['G', 'A', 'B', 'C', 'D', 'E', 'F']), (['A', 'aeolian'], ['A', 'B', 'C', 'D', 'E', 'F', 'G']), (['B', 'locrian'], ['B', 'C', 'D', 'E', 'F', 'G', 'A']), (['C', 'dorian'], ['C', 'D', 'Eb', 'F', 'G', 'A', 'Bb']), (['C', 'phrygian'], ['C', 'Db', 'Eb', 'F', 'G', 'Ab', 'Bb']), (['C', 'lydian'], ['C', 'D', 'E', 'F#', 'G', 'A', 'B']), (['Eb', 'aeolian'], ['Eb', 'F', 'Gb', 'Ab', 'Bb', 'Cb', 'Db'])], [(['G', 'mixolydian'], ['G', 'A', 'B', 'C', 'D', 'E', 'F']), (['B', 'locrian'], ['B', 'C', 'D', 'E', 'F', 'G', 'A']), (['C', 'dorian'], ['C', 'D', 'Eb', 'F', 'G', 'A', 'Bb']), (['C', 'phrygian'], ['C', 'Db', 'Eb', 'F', 'G', 'Ab', 'Bb']), (['C', 'lydian'], ['C', 'D', 'E', 'F#', 'G', 'A', 'B']), (['C', 'locrian'], ['C', 'Db', 'Eb', 'F', 'Gb', 'Ab', 'Bb']), (['Eb', 'aeolian'], ['Eb', 'F', 'Gb', 'Ab', 'Bb', 'Cb', 'Db']), (['F#', 'ionian'], ['F#', 'G#', 'A#', 'B', 'C#', 'D#', 'E#'])], [(['A', 'aeolian'], ['A', 'B', 'C', 'D', 'E', 'F', 'G']), (['C', 'lydian'], ['C', 'D', 'E', 'F#', 'G', 'A', 'B']), (['C', 'locrian'], ['C', 'Db', 'Eb', 'F', 'Gb', 'Ab', 'Bb']), (['Eb', 'aeolian'], ['Eb', 'F', 'Gb', 'Ab', 'Bb', 'Cb', 'Db']), (['F#', 'ionian'], ['F#', 'G#', 'A#', 'B', 'C#', 'D#', 'E#']), (['Bb', 'mixolydian'], ['Bb', 'C', 'D', 'Eb', 'F', 'G', 'Ab']), (['C#', 'locrian'], ['C#', 'D', 'E', 'F#', 'G', 'A', 'B']), (['Gb', 'lydian'], ['Gb', 'Ab', 'Bb', 'C', 'Db', 'Eb', 'F'])]]\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":"2aaf92206d70ff9c7cff75362a2dacb84ef9c6d6c9e57ea70ae43d073bf6b366","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    modes = ['ionian', 'dorian', 'phrygian', 'lydian', 'mixolydian', 'aeolian', 'locrian']\n    if not isinstance(x, list) or len(x) != 2:\n        return None\n    tonic, mode = x\n    if mode not in modes or not isinstance(tonic, str) or not tonic or tonic[0] not in base:\n        return None\n    signs = {'': 0, '#': 1, 'b': -1, 'x': 2, 'bb': -2}\n    if tonic[1:] not in signs:\n        return None\n    steps = [2, 2, 1, 2, 2, 2, 1]\n    k = modes.index(mode)\n    steps = steps[k:] + steps[:k]\n    pc = base[tonic[0]] + signs[tonic[1:]]\n    li = 'CDEFGAB'.index(tonic[0])\n    out = []\n    for step in steps:\n        letter = 'CDEFGAB'[li % 7]\n        alter = (pc - base[letter] + 6) % 12 - 6\n        if abs(alter) > 2:\n            return None\n        out.append(letter + {0: '', 1: '#', -1: 'b', 2: 'x', -2: 'bb'}[alter])\n        pc += [2, 2, 1, 2, 2, 2, 1][li % 7]\n        li += 1\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[(['C', 'ionian'], ['C', 'D', 'E', 'F', 'G', 'A', 'B']), (['D', 'dorian'], ['D', 'E', 'F', 'G', 'A', 'B', 'C']), (['G', 'mixolydian'], ['G', 'A', 'B', 'C', 'D', 'E', 'F']), (['C', 'dorian'], ['C', 'D', 'Eb', 'F', 'G', 'A', 'Bb']), (['C', 'lydian'], ['C', 'D', 'E', 'F#', 'G', 'A', 'B']), (['D', 'major'], None), (['H', 'ionian'], None), (['Cq', 'ionian'], None)], [(['D', 'dorian'], ['D', 'E', 'F', 'G', 'A', 'B', 'C']), (['E', 'phrygian'], ['E', 'F', 'G', 'A', 'B', 'C', 'D']), (['F', 'lydian'], ['F', 'G', 'A', 'B', 'C', 'D', 'E']), (['G', 'mixolydian'], ['G', 'A', 'B', 'C', 'D', 'E', 'F']), (['A', 'aeolian'], ['A', 'B', 'C', 'D', 'E', 'F', 'G']), (['C', 'phrygian'], ['C', 'Db', 'Eb', 'F', 'G', 'Ab', 'Bb']), (['C', 'locrian'], ['C', 'Db', 'Eb', 'F', 'Gb', 'Ab', 'Bb']), (['Cq', 'ionian'], None)], [(['F', 'lydian'], ['F', 'G', 'A', 'B', 'C', 'D', 'E']), (['G', 'mixolydian'], ['G', 'A', 'B', 'C', 'D', 'E', 'F']), (['A', 'aeolian'], ['A', 'B', 'C', 'D', 'E', 'F', 'G']), (['B', 'locrian'], ['B', 'C', 'D', 'E', 'F', 'G', 'A']), (['C', 'dorian'], ['C', 'D', 'Eb', 'F', 'G', 'A', 'Bb']), (['C', 'phrygian'], ['C', 'Db', 'Eb', 'F', 'G', 'Ab', 'Bb']), (['C', 'lydian'], ['C', 'D', 'E', 'F#', 'G', 'A', 'B']), (['Eb', 'aeolian'], ['Eb', 'F', 'Gb', 'Ab', 'Bb', 'Cb', 'Db'])], [(['G', 'mixolydian'], ['G', 'A', 'B', 'C', 'D', 'E', 'F']), (['B', 'locrian'], ['B', 'C', 'D', 'E', 'F', 'G', 'A']), (['C', 'dorian'], ['C', 'D', 'Eb', 'F', 'G', 'A', 'Bb']), (['C', 'phrygian'], ['C', 'Db', 'Eb', 'F', 'G', 'Ab', 'Bb']), (['C', 'lydian'], ['C', 'D', 'E', 'F#', 'G', 'A', 'B']), (['C', 'locrian'], ['C', 'Db', 'Eb', 'F', 'Gb', 'Ab', 'Bb']), (['Eb', 'aeolian'], ['Eb', 'F', 'Gb', 'Ab', 'Bb', 'Cb', 'Db']), (['F#', 'ionian'], ['F#', 'G#', 'A#', 'B', 'C#', 'D#', 'E#'])], [(['A', 'aeolian'], ['A', 'B', 'C', 'D', 'E', 'F', 'G']), (['C', 'lydian'], ['C', 'D', 'E', 'F#', 'G', 'A', 'B']), (['C', 'locrian'], ['C', 'Db', 'Eb', 'F', 'Gb', 'Ab', 'Bb']), (['Eb', 'aeolian'], ['Eb', 'F', 'Gb', 'Ab', 'Bb', 'Cb', 'Db']), (['F#', 'ionian'], ['F#', 'G#', 'A#', 'B', 'C#', 'D#', 'E#']), (['Bb', 'mixolydian'], ['Bb', 'C', 'D', 'Eb', 'F', 'G', 'Ab']), (['C#', 'locrian'], ['C#', 'D', 'E', 'F#', 'G', 'A', 'B']), (['Gb', 'lydian'], ['Gb', 'Ab', 'Bb', 'C', 'Db', 'Eb', 'F'])]]\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":"0c07a97367dc1b412bf274ddc280f7537d199a821a57278edf7b2cdc44d0a056","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    modes = ['ionian', 'dorian', 'phrygian', 'lydian', 'mixolydian', 'aeolian', 'locrian']\n    if not isinstance(x, list) or len(x) != 2:\n        return None\n    tonic, mode = x\n    if mode not in modes or not isinstance(tonic, str) or not tonic or tonic[0] not in base:\n        return None\n    signs = {'': 0, '#': 1, 'b': -1, 'x': 2, 'bb': -2}\n    if tonic[1:] not in signs:\n        return None\n    steps = [2, 2, 1, 2, 2, 2, 1]\n    k = modes.index(mode)\n    steps = steps[k:] + steps[:k]\n    pc = base[tonic[0]] + signs[tonic[1:]]\n    li = 'CDEFGAB'.index(tonic[0])\n    out = []\n    for step in steps:\n        letter = 'CDEFGAB'[li % 7]\n        alter = (pc - base[letter] + 6) % 12 - 6\n        if abs(alter) > 2:\n            return None\n        out.append(letter + {0: '', 1: '#', -1: 'b', 2: 'x', -2: 'bb'}[alter])\n        pc += step\n        li += 1\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[(['C', 'ionian'], ['C', 'D', 'E', 'F', 'G', 'A', 'B']), (['D', 'dorian'], ['D', 'E', 'F', 'G', 'A', 'B', 'C']), (['G', 'mixolydian'], ['G', 'A', 'B', 'C', 'D', 'E', 'F']), (['C', 'dorian'], ['C', 'D', 'Eb', 'F', 'G', 'A', 'Bb']), (['C', 'lydian'], ['C', 'D', 'E', 'F#', 'G', 'A', 'B']), (['D', 'major'], None), (['H', 'ionian'], None), (['Cq', 'ionian'], None)], [(['D', 'dorian'], ['D', 'E', 'F', 'G', 'A', 'B', 'C']), (['E', 'phrygian'], ['E', 'F', 'G', 'A', 'B', 'C', 'D']), (['F', 'lydian'], ['F', 'G', 'A', 'B', 'C', 'D', 'E']), (['G', 'mixolydian'], ['G', 'A', 'B', 'C', 'D', 'E', 'F']), (['A', 'aeolian'], ['A', 'B', 'C', 'D', 'E', 'F', 'G']), (['C', 'phrygian'], ['C', 'Db', 'Eb', 'F', 'G', 'Ab', 'Bb']), (['C', 'locrian'], ['C', 'Db', 'Eb', 'F', 'Gb', 'Ab', 'Bb']), (['Cq', 'ionian'], None)], [(['F', 'lydian'], ['F', 'G', 'A', 'B', 'C', 'D', 'E']), (['G', 'mixolydian'], ['G', 'A', 'B', 'C', 'D', 'E', 'F']), (['A', 'aeolian'], ['A', 'B', 'C', 'D', 'E', 'F', 'G']), (['B', 'locrian'], ['B', 'C', 'D', 'E', 'F', 'G', 'A']), (['C', 'dorian'], ['C', 'D', 'Eb', 'F', 'G', 'A', 'Bb']), (['C', 'phrygian'], ['C', 'Db', 'Eb', 'F', 'G', 'Ab', 'Bb']), (['C', 'lydian'], ['C', 'D', 'E', 'F#', 'G', 'A', 'B']), (['Eb', 'aeolian'], ['Eb', 'F', 'Gb', 'Ab', 'Bb', 'Cb', 'Db'])], [(['G', 'mixolydian'], ['G', 'A', 'B', 'C', 'D', 'E', 'F']), (['B', 'locrian'], ['B', 'C', 'D', 'E', 'F', 'G', 'A']), (['C', 'dorian'], ['C', 'D', 'Eb', 'F', 'G', 'A', 'Bb']), (['C', 'phrygian'], ['C', 'Db', 'Eb', 'F', 'G', 'Ab', 'Bb']), (['C', 'lydian'], ['C', 'D', 'E', 'F#', 'G', 'A', 'B']), (['C', 'locrian'], ['C', 'Db', 'Eb', 'F', 'Gb', 'Ab', 'Bb']), (['Eb', 'aeolian'], ['Eb', 'F', 'Gb', 'Ab', 'Bb', 'Cb', 'Db']), (['F#', 'ionian'], ['F#', 'G#', 'A#', 'B', 'C#', 'D#', 'E#'])], [(['A', 'aeolian'], ['A', 'B', 'C', 'D', 'E', 'F', 'G']), (['C', 'lydian'], ['C', 'D', 'E', 'F#', 'G', 'A', 'B']), (['C', 'locrian'], ['C', 'Db', 'Eb', 'F', 'Gb', 'Ab', 'Bb']), (['Eb', 'aeolian'], ['Eb', 'F', 'Gb', 'Ab', 'Bb', 'Cb', 'Db']), (['F#', 'ionian'], ['F#', 'G#', 'A#', 'B', 'C#', 'D#', 'E#']), (['Bb', 'mixolydian'], ['Bb', 'C', 'D', 'Eb', 'F', 'G', 'Ab']), (['C#', 'locrian'], ['C#', 'D', 'E', 'F#', 'G', 'A', 'B']), (['Gb', 'lydian'], ['Gb', 'Ab', 'Bb', 'C', 'Db', 'Eb', 'F'])]]\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-modal-scale-spelling-step-accumulation","generated_at":"2026-09-29T14:49:59.253028+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 step accumulation step so that it reads `pc += step`.","root_cause":"The pitch-class advance indexes the unrotated major pattern by letter position, not the rotated mode pattern by degree.","sha256":"4aed76ca475c161f5444c02b714870757af0134eeb21d55afee1caebd93a3cb8","title":"Modal scale spelling from a tonic: steps taken from letter position not scale position · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.854,"exit_code":1,"observations":[{"actual":["C","D","E","F","G","A","B"],"check":"oracle 0","expected":["C","D","E","F","G","A","B"],"passed":true},{"actual":["D","Eb","F","G","A","Bb","C"],"check":"oracle 1","expected":["D","E","F","G","A","B","C"],"passed":false},{"actual":["G","A","Bb","C","D","E","F"],"check":"oracle 2","expected":["G","A","B","C","D","E","F"],"passed":false},{"actual":["C","D","Eb","F","G","A","Bb"],"check":"oracle 3","expected":["C","D","Eb","F","G","A","Bb"],"passed":true},{"actual":["C","D","E","F#","G","A","B"],"check":"oracle 4","expected":["C","D","E","F#","G","A","B"],"passed":true},{"actual":null,"check":"oracle 5","expected":null,"passed":true},{"actual":null,"check":"oracle 6","expected":null,"passed":true},{"actual":null,"check":"oracle 7","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"oracle 0\", \"actual\": [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"], \"expected\": [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"], \"passed\": true}, {\"check\": \"oracle 1\", \"actual\": [\"D\", \"Eb\", \"F\", \"G\", \"A\", \"Bb\", \"C\"], \"expected\": [\"D\", \"E\", \"F\", \"G\", \"A\", \"B\", \"C\"], \"passed\": false}, {\"check\": \"oracle 2\", \"actual\": [\"G\", \"A\", \"Bb\", \"C\", \"D\", \"E\", \"F\"], \"expected\": [\"G\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\"], \"passed\": false}, {\"check\": \"oracle 3\", \"actual\": [\"C\", \"D\", \"Eb\", \"F\", \"G\", \"A\", \"Bb\"], \"expected\": [\"C\", \"D\", \"Eb\", \"F\", \"G\", \"A\", \"Bb\"], \"passed\": true}, {\"check\": \"oracle 4\", \"actual\": [\"C\", \"D\", \"E\", \"F#\", \"G\", \"A\", \"B\"], \"expected\": [\"C\", \"D\", \"E\", \"F#\", \"G\", \"A\", \"B\"], \"passed\": true}, {\"check\": \"oracle 5\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"oracle 6\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"oracle 7\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.248,"exit_code":1,"observations":[{"actual":["C","D","E","F","G","A","B"],"check":"oracle 0","expected":["C","D","E","F","G","A","B"],"passed":true},{"actual":["D","E","F","G","A","B","C"],"check":"oracle 1","expected":["D","E","F","G","A","B","C"],"passed":true},{"actual":["G","A","B","C","D","E","F"],"check":"oracle 2","expected":["G","A","B","C","D","E","F"],"passed":true},{"actual":["C","D","E","F","G","A","B"],"check":"oracle 3","expected":["C","D","Eb","F","G","A","Bb"],"passed":false},{"actual":["C","D","E","F","G","A","B"],"check":"oracle 4","expected":["C","D","E","F#","G","A","B"],"passed":false},{"actual":null,"check":"oracle 5","expected":null,"passed":true},{"actual":null,"check":"oracle 6","expected":null,"passed":true},{"actual":null,"check":"oracle 7","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"oracle 0\", \"actual\": [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"], \"expected\": [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"], \"passed\": true}, {\"check\": \"oracle 1\", \"actual\": [\"D\", \"E\", \"F\", \"G\", \"A\", \"B\", \"C\"], \"expected\": [\"D\", \"E\", \"F\", \"G\", \"A\", \"B\", \"C\"], \"passed\": true}, {\"check\": \"oracle 2\", \"actual\": [\"G\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\"], \"expected\": [\"G\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\"], \"passed\": true}, {\"check\": \"oracle 3\", \"actual\": [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"], \"expected\": [\"C\", \"D\", \"Eb\", \"F\", \"G\", \"A\", \"Bb\"], \"passed\": false}, {\"check\": \"oracle 4\", \"actual\": [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"], \"expected\": [\"C\", \"D\", \"E\", \"F#\", \"G\", \"A\", \"B\"], \"passed\": false}, {\"check\": \"oracle 5\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"oracle 6\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"oracle 7\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.6,"exit_code":0,"observations":[{"actual":["C","D","E","F","G","A","B"],"check":"oracle 0","expected":["C","D","E","F","G","A","B"],"passed":true},{"actual":["D","E","F","G","A","B","C"],"check":"oracle 1","expected":["D","E","F","G","A","B","C"],"passed":true},{"actual":["G","A","B","C","D","E","F"],"check":"oracle 2","expected":["G","A","B","C","D","E","F"],"passed":true},{"actual":["C","D","Eb","F","G","A","Bb"],"check":"oracle 3","expected":["C","D","Eb","F","G","A","Bb"],"passed":true},{"actual":["C","D","E","F#","G","A","B"],"check":"oracle 4","expected":["C","D","E","F#","G","A","B"],"passed":true},{"actual":null,"check":"oracle 5","expected":null,"passed":true},{"actual":null,"check":"oracle 6","expected":null,"passed":true},{"actual":null,"check":"oracle 7","expected":null,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"oracle 0\", \"actual\": [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"], \"expected\": [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"], \"passed\": true}, {\"check\": \"oracle 1\", \"actual\": [\"D\", \"E\", \"F\", \"G\", \"A\", \"B\", \"C\"], \"expected\": [\"D\", \"E\", \"F\", \"G\", \"A\", \"B\", \"C\"], \"passed\": true}, {\"check\": \"oracle 2\", \"actual\": [\"G\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\"], \"expected\": [\"G\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\"], \"passed\": true}, {\"check\": \"oracle 3\", \"actual\": [\"C\", \"D\", \"Eb\", \"F\", \"G\", \"A\", \"Bb\"], \"expected\": [\"C\", \"D\", \"Eb\", \"F\", \"G\", \"A\", \"Bb\"], \"passed\": true}, {\"check\": \"oracle 4\", \"actual\": [\"C\", \"D\", \"E\", \"F#\", \"G\", \"A\", \"B\"], \"expected\": [\"C\", \"D\", \"E\", \"F#\", \"G\", \"A\", \"B\"], \"passed\": true}, {\"check\": \"oracle 5\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"oracle 6\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"oracle 7\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}