{"abstract":"A branch with displacement 0x80 jumps forward 128 bytes instead of back 128.","category":"Instruction set emulation","checks":10,"contract":"Input [pc, disp, taken] for a 2-byte conditional branch at pc in a 16-bit address space. The next instruction is (pc+2) & 0xFFFF; disp is an 8-bit two's complement offset from that address. Not taken: [next, 2]. Taken: target = (next + offset) & 0xFFFF and cost 3 cycles plus 1 when target and next lie on different 256-byte pages. Return [pc', cycles].","evaluation_group":"w2-instruction-set-emulation-relative-branch","failed_approach":"Moving the threshold to 127 makes +127 negative as well.","family":"w2-instruction-set-emulation-relative-branch-displacement-sign-extension","id":"FA-89371","implementations":{"attempt":{"sha256":"459cac692101fb7c13c0656c12101be0f2664479bdc97e63d43f0c6e60e43751","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    pc, disp, taken = args\n    nxt = (pc + 2) & 0xFFFF\n    if not taken:\n        return [nxt, 2]\n    off = disp if disp < 127 else disp - 256\n    tgt = (nxt + off) & 0xFFFF\n    cyc = 3 + (1 if (tgt & 0xFF00) != (nxt & 0xFF00) else 0)\n    return [tgt, cyc]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('forward branch same page', [4097, 16, True], [4115, 3]), ('backward branch', [4224, 239, True], [4209, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4337, 32, True], [4371, 4]), ('backward page crossing from next page start', [16638, 253, True], [16637, 4]), ('branch not taken', [20481, 64, False], [20483, 2]), ('wrap below zero', [2, 129, True], [65413, 4]), ('wrap above top', [65520, 126, True], [112, 4]), ('zero displacement taken', [24577, 0, True], [24579, 3])], [('forward branch same page', [4098, 16, True], [4116, 3]), ('backward branch', [4224, 238, True], [4208, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4338, 32, True], [4372, 4]), ('backward page crossing from next page start', [16638, 252, True], [16636, 4]), ('branch not taken', [20482, 64, False], [20484, 2]), ('wrap below zero', [2, 130, True], [65414, 4]), ('wrap above top', [65520, 125, True], [111, 4]), ('zero displacement taken', [24578, 0, True], [24580, 3])], [('forward branch same page', [4099, 16, True], [4117, 3]), ('backward branch', [4224, 237, True], [4207, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4339, 32, True], [4373, 4]), ('backward page crossing from next page start', [16638, 251, True], [16635, 4]), ('branch not taken', [20483, 64, False], [20485, 2]), ('wrap below zero', [2, 131, True], [65415, 4]), ('wrap above top', [65520, 124, True], [110, 4]), ('zero displacement taken', [24579, 0, True], [24581, 3])], [('forward branch same page', [4100, 16, True], [4118, 3]), ('backward branch', [4224, 236, True], [4206, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4340, 32, True], [4374, 4]), ('backward page crossing from next page start', [16638, 250, True], [16634, 4]), ('branch not taken', [20484, 64, False], [20486, 2]), ('wrap below zero', [2, 132, True], [65416, 4]), ('wrap above top', [65520, 123, True], [109, 4]), ('zero displacement taken', [24580, 0, True], [24582, 3])], [('forward branch same page', [4101, 16, True], [4119, 3]), ('backward branch', [4224, 235, True], [4205, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4341, 32, True], [4375, 4]), ('backward page crossing from next page start', [16638, 249, True], [16633, 4]), ('branch not taken', [20485, 64, False], [20487, 2]), ('wrap below zero', [2, 133, True], [65417, 4]), ('wrap above top', [65520, 122, True], [108, 4]), ('zero displacement taken', [24581, 0, True], [24583, 3])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, 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":"86598643918777694013d1814d5aed49091ebb8c525a0de70f5bcdff8b815669","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    pc, disp, taken = args\n    nxt = (pc + 2) & 0xFFFF\n    if not taken:\n        return [nxt, 2]\n    off = disp - 256 if disp > 128 else disp\n    tgt = (nxt + off) & 0xFFFF\n    cyc = 3 + (1 if (tgt & 0xFF00) != (nxt & 0xFF00) else 0)\n    return [tgt, cyc]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('forward branch same page', [4097, 16, True], [4115, 3]), ('backward branch', [4224, 239, True], [4209, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4337, 32, True], [4371, 4]), ('backward page crossing from next page start', [16638, 253, True], [16637, 4]), ('branch not taken', [20481, 64, False], [20483, 2]), ('wrap below zero', [2, 129, True], [65413, 4]), ('wrap above top', [65520, 126, True], [112, 4]), ('zero displacement taken', [24577, 0, True], [24579, 3])], [('forward branch same page', [4098, 16, True], [4116, 3]), ('backward branch', [4224, 238, True], [4208, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4338, 32, True], [4372, 4]), ('backward page crossing from next page start', [16638, 252, True], [16636, 4]), ('branch not taken', [20482, 64, False], [20484, 2]), ('wrap below zero', [2, 130, True], [65414, 4]), ('wrap above top', [65520, 125, True], [111, 4]), ('zero displacement taken', [24578, 0, True], [24580, 3])], [('forward branch same page', [4099, 16, True], [4117, 3]), ('backward branch', [4224, 237, True], [4207, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4339, 32, True], [4373, 4]), ('backward page crossing from next page start', [16638, 251, True], [16635, 4]), ('branch not taken', [20483, 64, False], [20485, 2]), ('wrap below zero', [2, 131, True], [65415, 4]), ('wrap above top', [65520, 124, True], [110, 4]), ('zero displacement taken', [24579, 0, True], [24581, 3])], [('forward branch same page', [4100, 16, True], [4118, 3]), ('backward branch', [4224, 236, True], [4206, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4340, 32, True], [4374, 4]), ('backward page crossing from next page start', [16638, 250, True], [16634, 4]), ('branch not taken', [20484, 64, False], [20486, 2]), ('wrap below zero', [2, 132, True], [65416, 4]), ('wrap above top', [65520, 123, True], [109, 4]), ('zero displacement taken', [24580, 0, True], [24582, 3])], [('forward branch same page', [4101, 16, True], [4119, 3]), ('backward branch', [4224, 235, True], [4205, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4341, 32, True], [4375, 4]), ('backward page crossing from next page start', [16638, 249, True], [16633, 4]), ('branch not taken', [20485, 64, False], [20487, 2]), ('wrap below zero', [2, 133, True], [65417, 4]), ('wrap above top', [65520, 122, True], [108, 4]), ('zero displacement taken', [24581, 0, True], [24583, 3])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, 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":"c9105195e8b3948dc36b6f316f26652052cf634e45e0efb1bdcf6c9e48c4620d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    pc, disp, taken = args\n    nxt = (pc + 2) & 0xFFFF\n    if not taken:\n        return [nxt, 2]\n    off = disp - 256 if disp >= 128 else disp\n    tgt = (nxt + off) & 0xFFFF\n    cyc = 3 + (1 if (tgt & 0xFF00) != (nxt & 0xFF00) else 0)\n    return [tgt, cyc]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('forward branch same page', [4097, 16, True], [4115, 3]), ('backward branch', [4224, 239, True], [4209, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4337, 32, True], [4371, 4]), ('backward page crossing from next page start', [16638, 253, True], [16637, 4]), ('branch not taken', [20481, 64, False], [20483, 2]), ('wrap below zero', [2, 129, True], [65413, 4]), ('wrap above top', [65520, 126, True], [112, 4]), ('zero displacement taken', [24577, 0, True], [24579, 3])], [('forward branch same page', [4098, 16, True], [4116, 3]), ('backward branch', [4224, 238, True], [4208, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4338, 32, True], [4372, 4]), ('backward page crossing from next page start', [16638, 252, True], [16636, 4]), ('branch not taken', [20482, 64, False], [20484, 2]), ('wrap below zero', [2, 130, True], [65414, 4]), ('wrap above top', [65520, 125, True], [111, 4]), ('zero displacement taken', [24578, 0, True], [24580, 3])], [('forward branch same page', [4099, 16, True], [4117, 3]), ('backward branch', [4224, 237, True], [4207, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4339, 32, True], [4373, 4]), ('backward page crossing from next page start', [16638, 251, True], [16635, 4]), ('branch not taken', [20483, 64, False], [20485, 2]), ('wrap below zero', [2, 131, True], [65415, 4]), ('wrap above top', [65520, 124, True], [110, 4]), ('zero displacement taken', [24579, 0, True], [24581, 3])], [('forward branch same page', [4100, 16, True], [4118, 3]), ('backward branch', [4224, 236, True], [4206, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4340, 32, True], [4374, 4]), ('backward page crossing from next page start', [16638, 250, True], [16634, 4]), ('branch not taken', [20484, 64, False], [20486, 2]), ('wrap below zero', [2, 132, True], [65416, 4]), ('wrap above top', [65520, 123, True], [109, 4]), ('zero displacement taken', [24580, 0, True], [24582, 3])], [('forward branch same page', [4101, 16, True], [4119, 3]), ('backward branch', [4224, 235, True], [4205, 3]), ('most negative displacement', [8336, 128, True], [8210, 3]), ('largest positive displacement', [12288, 127, True], [12417, 3]), ('forward page crossing', [4341, 32, True], [4375, 4]), ('backward page crossing from next page start', [16638, 249, True], [16633, 4]), ('branch not taken', [20485, 64, False], [20487, 2]), ('wrap below zero', [2, 133, True], [65417, 4]), ('wrap above top', [65520, 122, True], [108, 4]), ('zero displacement taken', [24581, 0, True], [24583, 3])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, 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 of one emulator rule; the instruction semantics are a stipulated contract inspired by common ISAs and are not a claim of cycle-exact or architectural conformance. 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-instruction-set-emulation-relative-branch-displacement-sign-extension","generated_at":"2026-09-29T14:51:16.763108+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Branch emulation must use the post-fetch PC, sign-extend the offset and charge page-crossing cycles exactly.","repair":"Treat displacements 0x80..0xFF as negative.","root_cause":"The sign test excludes 0x80, the most negative 8-bit value.","sha256":"fd9f36e3c8970dd49f45b951f6178c5ea0aeee8e2f7492e34e224472f5331fc6","title":"Displacement 0x80 treated as positive · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.916,"exit_code":1,"observations":[{"actual":[4115,3],"check":"forward branch same page","expected":[4115,3],"passed":true},{"actual":[4209,3],"check":"backward branch","expected":[4209,3],"passed":true},{"actual":[8210,3],"check":"most negative displacement","expected":[8210,3],"passed":true},{"actual":[12161,4],"check":"largest positive displacement","expected":[12417,3],"passed":false},{"actual":[4371,4],"check":"forward page crossing","expected":[4371,4],"passed":true},{"actual":[16637,4],"check":"backward page crossing from next page start","expected":[16637,4],"passed":true},{"actual":[20483,2],"check":"branch not taken","expected":[20483,2],"passed":true},{"actual":[65413,4],"check":"wrap below zero","expected":[65413,4],"passed":true},{"actual":[112,4],"check":"wrap above top","expected":[112,4],"passed":true},{"actual":[24579,3],"check":"zero displacement taken","expected":[24579,3],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"forward branch same page\", \"actual\": [4115, 3], \"expected\": [4115, 3], \"passed\": true}, {\"check\": \"backward branch\", \"actual\": [4209, 3], \"expected\": [4209, 3], \"passed\": true}, {\"check\": \"most negative displacement\", \"actual\": [8210, 3], \"expected\": [8210, 3], \"passed\": true}, {\"check\": \"largest positive displacement\", \"actual\": [12161, 4], \"expected\": [12417, 3], \"passed\": false}, {\"check\": \"forward page crossing\", \"actual\": [4371, 4], \"expected\": [4371, 4], \"passed\": true}, {\"check\": \"backward page crossing from next page start\", \"actual\": [16637, 4], \"expected\": [16637, 4], \"passed\": true}, {\"check\": \"branch not taken\", \"actual\": [20483, 2], \"expected\": [20483, 2], \"passed\": true}, {\"check\": \"wrap below zero\", \"actual\": [65413, 4], \"expected\": [65413, 4], \"passed\": true}, {\"check\": \"wrap above top\", \"actual\": [112, 4], \"expected\": [112, 4], \"passed\": true}, {\"check\": \"zero displacement taken\", \"actual\": [24579, 3], \"expected\": [24579, 3], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.396,"exit_code":1,"observations":[{"actual":[4115,3],"check":"forward branch same page","expected":[4115,3],"passed":true},{"actual":[4209,3],"check":"backward branch","expected":[4209,3],"passed":true},{"actual":[8466,4],"check":"most negative displacement","expected":[8210,3],"passed":false},{"actual":[12417,3],"check":"largest positive displacement","expected":[12417,3],"passed":true},{"actual":[4371,4],"check":"forward page crossing","expected":[4371,4],"passed":true},{"actual":[16637,4],"check":"backward page crossing from next page start","expected":[16637,4],"passed":true},{"actual":[20483,2],"check":"branch not taken","expected":[20483,2],"passed":true},{"actual":[65413,4],"check":"wrap below zero","expected":[65413,4],"passed":true},{"actual":[112,4],"check":"wrap above top","expected":[112,4],"passed":true},{"actual":[24579,3],"check":"zero displacement taken","expected":[24579,3],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"forward branch same page\", \"actual\": [4115, 3], \"expected\": [4115, 3], \"passed\": true}, {\"check\": \"backward branch\", \"actual\": [4209, 3], \"expected\": [4209, 3], \"passed\": true}, {\"check\": \"most negative displacement\", \"actual\": [8466, 4], \"expected\": [8210, 3], \"passed\": false}, {\"check\": \"largest positive displacement\", \"actual\": [12417, 3], \"expected\": [12417, 3], \"passed\": true}, {\"check\": \"forward page crossing\", \"actual\": [4371, 4], \"expected\": [4371, 4], \"passed\": true}, {\"check\": \"backward page crossing from next page start\", \"actual\": [16637, 4], \"expected\": [16637, 4], \"passed\": true}, {\"check\": \"branch not taken\", \"actual\": [20483, 2], \"expected\": [20483, 2], \"passed\": true}, {\"check\": \"wrap below zero\", \"actual\": [65413, 4], \"expected\": [65413, 4], \"passed\": true}, {\"check\": \"wrap above top\", \"actual\": [112, 4], \"expected\": [112, 4], \"passed\": true}, {\"check\": \"zero displacement taken\", \"actual\": [24579, 3], \"expected\": [24579, 3], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.698,"exit_code":0,"observations":[{"actual":[4115,3],"check":"forward branch same page","expected":[4115,3],"passed":true},{"actual":[4209,3],"check":"backward branch","expected":[4209,3],"passed":true},{"actual":[8210,3],"check":"most negative displacement","expected":[8210,3],"passed":true},{"actual":[12417,3],"check":"largest positive displacement","expected":[12417,3],"passed":true},{"actual":[4371,4],"check":"forward page crossing","expected":[4371,4],"passed":true},{"actual":[16637,4],"check":"backward page crossing from next page start","expected":[16637,4],"passed":true},{"actual":[20483,2],"check":"branch not taken","expected":[20483,2],"passed":true},{"actual":[65413,4],"check":"wrap below zero","expected":[65413,4],"passed":true},{"actual":[112,4],"check":"wrap above top","expected":[112,4],"passed":true},{"actual":[24579,3],"check":"zero displacement taken","expected":[24579,3],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"forward branch same page\", \"actual\": [4115, 3], \"expected\": [4115, 3], \"passed\": true}, {\"check\": \"backward branch\", \"actual\": [4209, 3], \"expected\": [4209, 3], \"passed\": true}, {\"check\": \"most negative displacement\", \"actual\": [8210, 3], \"expected\": [8210, 3], \"passed\": true}, {\"check\": \"largest positive displacement\", \"actual\": [12417, 3], \"expected\": [12417, 3], \"passed\": true}, {\"check\": \"forward page crossing\", \"actual\": [4371, 4], \"expected\": [4371, 4], \"passed\": true}, {\"check\": \"backward page crossing from next page start\", \"actual\": [16637, 4], \"expected\": [16637, 4], \"passed\": true}, {\"check\": \"branch not taken\", \"actual\": [20483, 2], \"expected\": [20483, 2], \"passed\": true}, {\"check\": \"wrap below zero\", \"actual\": [65413, 4], \"expected\": [65413, 4], \"passed\": true}, {\"check\": \"wrap above top\", \"actual\": [112, 4], \"expected\": [112, 4], \"passed\": true}, {\"check\": \"zero displacement taken\", \"actual\": [24579, 3], \"expected\": [24579, 3], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}