{"abstract":"A 6/8 bar is reported as 2880 ticks (six quarters) instead of 1440.","category":"MIDI event timing","checks":8,"contract":"Input [bytes, ppq]. bytes must be FF 58 04 nn dd cc bb with nn > 0, dd <= 6 and bb > 0. The denominator is 2**dd; the metronome click is cc MIDI clocks (24 per quarter) converted to ticks as ppq*cc//24; the bar length in ticks is ppq*4*nn//denominator. Return [nn, denominator, click_ticks, bar_ticks] or None.","contract_signature":"x","evaluation_group":"w2-midi-event-timing-time-signature-meta","failed_approach":"Dividing before multiplying by the numerator truncates the beat length for resolutions that do not divide evenly.","family":"w2-midi-event-timing-time-signature-meta-bar-length","id":"FA-81766","implementations":{"attempt":{"sha256":"54c0d47964d8ef9a047da11679891af5ad1b4bda695dcd1fd0a93163241c7e67","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    data, ppq = x\n    if len(data) != 7 or data[0] != 0xFF or data[1] != 0x58 or data[2] != 4:\n        return None\n    nn, dd, cc, bb = data[3:7]\n    if nn == 0 or dd > 6 or bb == 0 or ppq <= 0:\n        return None\n    den = 2 ** dd\n    click = ppq * cc // 24\n    bar = ppq * 4 // den * nn\n    return [nn, den, click, bar]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[([[255, 88, 4, 4, 2, 24, 8], 480], [4, 4, 480, 1920]), ([[255, 88, 4, 6, 3, 36, 8], 480], [6, 8, 720, 1440]), ([[255, 88, 4, 3, 2, 24, 8], 100], [3, 4, 100, 300]), ([[255, 88, 4, 5, 4, 6, 8], 90], [5, 16, 22, 112]), ([[255, 88, 4, 3, 4, 6, 8], 90], [3, 16, 22, 67]), ([[255, 88, 4, 4, 2, 24, 8], 0], None), ([[255, 88, 4, 0, 2, 24, 8], 480], None), ([[255, 88, 4, 4, 7, 24, 8], 480], None)], [([[255, 88, 4, 7, 3, 12, 8], 90], [7, 8, 45, 315]), ([[255, 88, 4, 5, 4, 6, 8], 90], [5, 16, 22, 112]), ([[255, 88, 4, 2, 1, 48, 8], 96], [2, 2, 192, 384]), ([[255, 88, 4, 3, 4, 6, 8], 90], [3, 16, 22, 67]), ([[255, 88, 4, 0, 2, 24, 8], 480], None), ([[255, 88, 4, 4, 7, 24, 8], 480], None), ([[255, 88, 5, 4, 2, 24, 8], 480], None), ([[255, 88, 3, 4, 2, 24, 8], 480], None)], [([[255, 88, 4, 6, 3, 36, 8], 480], [6, 8, 720, 1440]), ([[255, 88, 4, 7, 3, 12, 8], 90], [7, 8, 45, 315]), ([[255, 88, 4, 5, 4, 6, 8], 90], [5, 16, 22, 112]), ([[255, 88, 4, 2, 1, 48, 8], 96], [2, 2, 192, 384]), ([[255, 88, 4, 3, 4, 6, 8], 90], [3, 16, 22, 67]), ([[255, 88, 3, 4, 2, 24, 8], 480], None), ([[255, 89, 4, 4, 2, 24, 8], 480], None), ([[255, 88, 4, 4, 2, 24, 0], 480], None)], [([[255, 88, 4, 4, 2, 24, 8], 480], [4, 4, 480, 1920]), ([[255, 88, 4, 6, 3, 36, 8], 480], [6, 8, 720, 1440]), ([[255, 88, 4, 7, 3, 12, 8], 90], [7, 8, 45, 315]), ([[255, 88, 4, 5, 4, 6, 8], 90], [5, 16, 22, 112]), ([[255, 88, 4, 2, 1, 48, 8], 96], [2, 2, 192, 384]), ([[255, 88, 4, 3, 4, 6, 8], 90], [3, 16, 22, 67]), ([[255, 88, 4, 9, 3, 18, 8], 100], [9, 8, 75, 450]), ([[255, 88, 4, 4, 0, 96, 8], 120], [4, 1, 480, 1920])], [([[255, 88, 4, 4, 2, 24, 8], 480], [4, 4, 480, 1920]), ([[255, 88, 4, 3, 2, 24, 8], 100], [3, 4, 100, 300]), ([[255, 88, 4, 5, 4, 6, 8], 90], [5, 16, 22, 112]), ([[255, 88, 4, 2, 1, 48, 8], 96], [2, 2, 192, 384]), ([[255, 88, 4, 3, 4, 6, 8], 90], [3, 16, 22, 67]), ([[255, 88, 4, 4, 2, 24, 8], 0], None), ([[255, 88, 4, 9, 3, 18, 8], 100], [9, 8, 75, 450]), ([[255, 88, 4, 4, 0, 96, 8], 120], [4, 1, 480, 1920])]]\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":"653b17b5cf87caf9c139600c190455ee09625d1d33faec1400e39e7286ef5fc2","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    data, ppq = x\n    if len(data) != 7 or data[0] != 0xFF or data[1] != 0x58 or data[2] != 4:\n        return None\n    nn, dd, cc, bb = data[3:7]\n    if nn == 0 or dd > 6 or bb == 0 or ppq <= 0:\n        return None\n    den = 2 ** dd\n    click = ppq * cc // 24\n    bar = ppq * nn\n    return [nn, den, click, bar]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[([[255, 88, 4, 4, 2, 24, 8], 480], [4, 4, 480, 1920]), ([[255, 88, 4, 6, 3, 36, 8], 480], [6, 8, 720, 1440]), ([[255, 88, 4, 3, 2, 24, 8], 100], [3, 4, 100, 300]), ([[255, 88, 4, 5, 4, 6, 8], 90], [5, 16, 22, 112]), ([[255, 88, 4, 3, 4, 6, 8], 90], [3, 16, 22, 67]), ([[255, 88, 4, 4, 2, 24, 8], 0], None), ([[255, 88, 4, 0, 2, 24, 8], 480], None), ([[255, 88, 4, 4, 7, 24, 8], 480], None)], [([[255, 88, 4, 7, 3, 12, 8], 90], [7, 8, 45, 315]), ([[255, 88, 4, 5, 4, 6, 8], 90], [5, 16, 22, 112]), ([[255, 88, 4, 2, 1, 48, 8], 96], [2, 2, 192, 384]), ([[255, 88, 4, 3, 4, 6, 8], 90], [3, 16, 22, 67]), ([[255, 88, 4, 0, 2, 24, 8], 480], None), ([[255, 88, 4, 4, 7, 24, 8], 480], None), ([[255, 88, 5, 4, 2, 24, 8], 480], None), ([[255, 88, 3, 4, 2, 24, 8], 480], None)], [([[255, 88, 4, 6, 3, 36, 8], 480], [6, 8, 720, 1440]), ([[255, 88, 4, 7, 3, 12, 8], 90], [7, 8, 45, 315]), ([[255, 88, 4, 5, 4, 6, 8], 90], [5, 16, 22, 112]), ([[255, 88, 4, 2, 1, 48, 8], 96], [2, 2, 192, 384]), ([[255, 88, 4, 3, 4, 6, 8], 90], [3, 16, 22, 67]), ([[255, 88, 3, 4, 2, 24, 8], 480], None), ([[255, 89, 4, 4, 2, 24, 8], 480], None), ([[255, 88, 4, 4, 2, 24, 0], 480], None)], [([[255, 88, 4, 4, 2, 24, 8], 480], [4, 4, 480, 1920]), ([[255, 88, 4, 6, 3, 36, 8], 480], [6, 8, 720, 1440]), ([[255, 88, 4, 7, 3, 12, 8], 90], [7, 8, 45, 315]), ([[255, 88, 4, 5, 4, 6, 8], 90], [5, 16, 22, 112]), ([[255, 88, 4, 2, 1, 48, 8], 96], [2, 2, 192, 384]), ([[255, 88, 4, 3, 4, 6, 8], 90], [3, 16, 22, 67]), ([[255, 88, 4, 9, 3, 18, 8], 100], [9, 8, 75, 450]), ([[255, 88, 4, 4, 0, 96, 8], 120], [4, 1, 480, 1920])], [([[255, 88, 4, 4, 2, 24, 8], 480], [4, 4, 480, 1920]), ([[255, 88, 4, 3, 2, 24, 8], 100], [3, 4, 100, 300]), ([[255, 88, 4, 5, 4, 6, 8], 90], [5, 16, 22, 112]), ([[255, 88, 4, 2, 1, 48, 8], 96], [2, 2, 192, 384]), ([[255, 88, 4, 3, 4, 6, 8], 90], [3, 16, 22, 67]), ([[255, 88, 4, 4, 2, 24, 8], 0], None), ([[255, 88, 4, 9, 3, 18, 8], 100], [9, 8, 75, 450]), ([[255, 88, 4, 4, 0, 96, 8], 120], [4, 1, 480, 1920])]]\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 Standard MIDI File or MIDI 1.0/2.0 implementation. 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-midi-event-timing-time-signature-meta-bar-length","generated_at":"2026-09-29T14:50:06.014597+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"MIDI sequencers, file readers and synth drivers depend on exact event ordering and tick/time arithmetic.","root_cause":"The bar length multiplies ppq by the numerator, ignoring the beat unit.","sha256":"70f3aa774c8912a19f2c33c0d1a45c8908b9479019cdd52f5fae5e4b8042d4f2","title":"Time Signature meta event decoding: bar length counted in quarter notes · 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":41.219,"exit_code":1,"observations":[{"actual":[4,4,480,1920],"check":"oracle 0","expected":[4,4,480,1920],"passed":true},{"actual":[6,8,720,1440],"check":"oracle 1","expected":[6,8,720,1440],"passed":true},{"actual":[3,4,100,300],"check":"oracle 2","expected":[3,4,100,300],"passed":true},{"actual":[5,16,22,110],"check":"oracle 3","expected":[5,16,22,112],"passed":false},{"actual":[3,16,22,66],"check":"oracle 4","expected":[3,16,22,67],"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\": [4, 4, 480, 1920], \"expected\": [4, 4, 480, 1920], \"passed\": true}, {\"check\": \"oracle 1\", \"actual\": [6, 8, 720, 1440], \"expected\": [6, 8, 720, 1440], \"passed\": true}, {\"check\": \"oracle 2\", \"actual\": [3, 4, 100, 300], \"expected\": [3, 4, 100, 300], \"passed\": true}, {\"check\": \"oracle 3\", \"actual\": [5, 16, 22, 110], \"expected\": [5, 16, 22, 112], \"passed\": false}, {\"check\": \"oracle 4\", \"actual\": [3, 16, 22, 66], \"expected\": [3, 16, 22, 67], \"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"},"broken":{"elapsed_ms":39.408,"exit_code":1,"observations":[{"actual":[4,4,480,1920],"check":"oracle 0","expected":[4,4,480,1920],"passed":true},{"actual":[6,8,720,2880],"check":"oracle 1","expected":[6,8,720,1440],"passed":false},{"actual":[3,4,100,300],"check":"oracle 2","expected":[3,4,100,300],"passed":true},{"actual":[5,16,22,450],"check":"oracle 3","expected":[5,16,22,112],"passed":false},{"actual":[3,16,22,270],"check":"oracle 4","expected":[3,16,22,67],"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\": [4, 4, 480, 1920], \"expected\": [4, 4, 480, 1920], \"passed\": true}, {\"check\": \"oracle 1\", \"actual\": [6, 8, 720, 2880], \"expected\": [6, 8, 720, 1440], \"passed\": false}, {\"check\": \"oracle 2\", \"actual\": [3, 4, 100, 300], \"expected\": [3, 4, 100, 300], \"passed\": true}, {\"check\": \"oracle 3\", \"actual\": [5, 16, 22, 450], \"expected\": [5, 16, 22, 112], \"passed\": false}, {\"check\": \"oracle 4\", \"actual\": [3, 16, 22, 270], \"expected\": [3, 16, 22, 67], \"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"}},"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."}}