{"abstract":"Every taken branch lands two bytes early.","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].","contract_signature":"*args","evaluation_group":"w2-instruction-set-emulation-relative-branch","failed_approach":"Using pc+1 still lands one byte early.","family":"w2-instruction-set-emulation-relative-branch-offset-base-address","id":"FA-89366","implementations":{"attempt":{"sha256":"e6f4431935cd8726f2344e2fc2416cb980f8cde8537c098b07b4756cf75a28ff","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 = (pc + 1 + 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":"4cc6b9455d096136c3007b53e466c44f89e41b60500f6123fc494639a6271468","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 = (pc + 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-offset-base-address","generated_at":"2026-09-29T14:51:16.862168+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.","root_cause":"The displacement is added to the branch opcode address instead of the address after the instruction.","sha256":"fca691670add5f6f6fb06e05ab8d439977863d84eaefe8a2b3ed6c90e271d1ae","title":"Branch offset applied to the opcode address · 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":39.231,"exit_code":1,"observations":[{"actual":[4114,3],"check":"forward branch same page","expected":[4115,3],"passed":false},{"actual":[4208,3],"check":"backward branch","expected":[4209,3],"passed":false},{"actual":[8209,3],"check":"most negative displacement","expected":[8210,3],"passed":false},{"actual":[12416,3],"check":"largest positive displacement","expected":[12417,3],"passed":false},{"actual":[4370,4],"check":"forward page crossing","expected":[4371,4],"passed":false},{"actual":[16636,4],"check":"backward page crossing from next page start","expected":[16637,4],"passed":false},{"actual":[20483,2],"check":"branch not taken","expected":[20483,2],"passed":true},{"actual":[65412,4],"check":"wrap below zero","expected":[65413,4],"passed":false},{"actual":[111,4],"check":"wrap above top","expected":[112,4],"passed":false},{"actual":[24578,3],"check":"zero displacement taken","expected":[24579,3],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"forward branch same page\", \"actual\": [4114, 3], \"expected\": [4115, 3], \"passed\": false}, {\"check\": \"backward branch\", \"actual\": [4208, 3], \"expected\": [4209, 3], \"passed\": false}, {\"check\": \"most negative displacement\", \"actual\": [8209, 3], \"expected\": [8210, 3], \"passed\": false}, {\"check\": \"largest positive displacement\", \"actual\": [12416, 3], \"expected\": [12417, 3], \"passed\": false}, {\"check\": \"forward page crossing\", \"actual\": [4370, 4], \"expected\": [4371, 4], \"passed\": false}, {\"check\": \"backward page crossing from next page start\", \"actual\": [16636, 4], \"expected\": [16637, 4], \"passed\": false}, {\"check\": \"branch not taken\", \"actual\": [20483, 2], \"expected\": [20483, 2], \"passed\": true}, {\"check\": \"wrap below zero\", \"actual\": [65412, 4], \"expected\": [65413, 4], \"passed\": false}, {\"check\": \"wrap above top\", \"actual\": [111, 4], \"expected\": [112, 4], \"passed\": false}, {\"check\": \"zero displacement taken\", \"actual\": [24578, 3], \"expected\": [24579, 3], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.714,"exit_code":1,"observations":[{"actual":[4113,3],"check":"forward branch same page","expected":[4115,3],"passed":false},{"actual":[4207,3],"check":"backward branch","expected":[4209,3],"passed":false},{"actual":[8208,3],"check":"most negative displacement","expected":[8210,3],"passed":false},{"actual":[12415,3],"check":"largest positive displacement","expected":[12417,3],"passed":false},{"actual":[4369,4],"check":"forward page crossing","expected":[4371,4],"passed":false},{"actual":[16635,4],"check":"backward page crossing from next page start","expected":[16637,4],"passed":false},{"actual":[20483,2],"check":"branch not taken","expected":[20483,2],"passed":true},{"actual":[65411,4],"check":"wrap below zero","expected":[65413,4],"passed":false},{"actual":[110,4],"check":"wrap above top","expected":[112,4],"passed":false},{"actual":[24577,3],"check":"zero displacement taken","expected":[24579,3],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"forward branch same page\", \"actual\": [4113, 3], \"expected\": [4115, 3], \"passed\": false}, {\"check\": \"backward branch\", \"actual\": [4207, 3], \"expected\": [4209, 3], \"passed\": false}, {\"check\": \"most negative displacement\", \"actual\": [8208, 3], \"expected\": [8210, 3], \"passed\": false}, {\"check\": \"largest positive displacement\", \"actual\": [12415, 3], \"expected\": [12417, 3], \"passed\": false}, {\"check\": \"forward page crossing\", \"actual\": [4369, 4], \"expected\": [4371, 4], \"passed\": false}, {\"check\": \"backward page crossing from next page start\", \"actual\": [16635, 4], \"expected\": [16637, 4], \"passed\": false}, {\"check\": \"branch not taken\", \"actual\": [20483, 2], \"expected\": [20483, 2], \"passed\": true}, {\"check\": \"wrap below zero\", \"actual\": [65411, 4], \"expected\": [65413, 4], \"passed\": false}, {\"check\": \"wrap above top\", \"actual\": [110, 4], \"expected\": [112, 4], \"passed\": false}, {\"check\": \"zero displacement taken\", \"actual\": [24577, 3], \"expected\": [24579, 3], \"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."}}