{"abstract":"A kept bus reads 'z' after its drivers tri-state.","category":"Digital logic simulation","checks":11,"contract":"Input [drivers, keeper]: drivers are [value, strength] with value in 0/1/x/z and strength weak < pull < strong. 'z' drivers are ignored. With no active driver the net is the keeper value, or 'z' when keeper is None. Otherwise only drivers at the highest present strength matter: a single agreed value wins, any disagreement (including x) gives 'x'.","contract_signature":"*args","evaluation_group":"w2-digital-logic-simulation-bus-resolution","failed_approach":"Applying the keeper only when the driver list is empty misses buses whose drivers are all released.","family":"w2-digital-logic-simulation-bus-resolution-bus-keeper","id":"FA-89031","implementations":{"attempt":{"sha256":"82cad95fddb672111c39bdb1b0d097ca16616d4dcf7ac5b224c47aa43afc1403","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    drivers, keep = args\n    rank = {'weak': 0, 'pull': 1, 'strong': 2}\n    live = [(v, s) for v, s in drivers if v != 'z']\n    if not live:\n        return keep if keep is not None and not drivers else 'z'\n    top = max(live, key=lambda d: rank[d[1]])[1]\n    vals = sorted({v for v, s in live if s == top})\n    return vals[0] if len(vals) == 1 else 'x'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('strong beats weak listed first', [[['0', 'weak'], ['1', 'strong'], ['z', 'strong']], None], '1'), ('pull beats weak listed first', [[['0', 'weak'], ['1', 'pull']], None], '1'), ('strong contention', [[['0', 'strong'], ['1', 'strong'], ['1', 'pull']], None], 'x'), ('pull contention with weak agreement', [[['1', 'pull'], ['0', 'pull'], ['1', 'weak']], '1'], 'x'), ('released strong driver beside weak one', [[['z', 'strong'], ['1', 'weak']], None], '1'), ('all released with keeper', [[['z', 'strong']], '1'], '1'), ('single released driver with keeper', [[['z', 'pull']], '1'], '1'), ('all released without keeper', [[['z', 'weak'], ['z', 'strong']], None], 'z'), ('weak driver disagrees with keeper', [[['1', 'weak']], '0'], '1'), ('weak unknown under strong driver', [[['x', 'weak'], ['0', 'strong']], None], '0'), ('pull unknown under strong driver', [[['x', 'pull'], ['1', 'strong']], '0'], '1')], [('strong beats weak listed first', [[['0', 'weak'], ['1', 'strong'], ['z', 'strong'], ['z', 'strong']], None], '1'), ('pull beats weak listed first', [[['0', 'weak'], ['1', 'pull']], None], '1'), ('strong contention', [[['0', 'strong'], ['1', 'strong'], ['1', 'pull'], ['1', 'pull']], None], 'x'), ('pull contention with weak agreement', [[['1', 'pull'], ['0', 'pull'], ['1', 'weak']], '1'], 'x'), ('released strong driver beside weak one', [[['z', 'strong'], ['1', 'weak']], None], '1'), ('all released with keeper', [[['z', 'strong'], ['z', 'strong']], '0'], '0'), ('single released driver with keeper', [[['z', 'pull']], '1'], '1'), ('all released without keeper', [[['z', 'weak'], ['z', 'strong']], None], 'z'), ('weak driver disagrees with keeper', [[['1', 'weak'], ['1', 'weak']], '0'], '1'), ('weak unknown under strong driver', [[['x', 'weak'], ['0', 'strong']], None], '0'), ('pull unknown under strong driver', [[['x', 'pull'], ['1', 'strong']], '0'], '1')], [('strong beats weak listed first', [[['0', 'weak'], ['1', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong']], None], '1'), ('pull beats weak listed first', [[['0', 'weak'], ['1', 'pull']], None], '1'), ('strong contention', [[['0', 'strong'], ['1', 'strong'], ['1', 'pull'], ['1', 'pull'], ['1', 'pull']], None], 'x'), ('pull contention with weak agreement', [[['1', 'pull'], ['0', 'pull'], ['1', 'weak']], '1'], 'x'), ('released strong driver beside weak one', [[['z', 'strong'], ['1', 'weak']], None], '1'), ('all released with keeper', [[['z', 'strong'], ['z', 'strong'], ['z', 'strong']], '1'], '1'), ('single released driver with keeper', [[['z', 'pull']], '1'], '1'), ('all released without keeper', [[['z', 'weak'], ['z', 'strong']], None], 'z'), ('weak driver disagrees with keeper', [[['1', 'weak'], ['1', 'weak'], ['1', 'weak']], '0'], '1'), ('weak unknown under strong driver', [[['x', 'weak'], ['0', 'strong']], None], '0'), ('pull unknown under strong driver', [[['x', 'pull'], ['1', 'strong']], '0'], '1')], [('strong beats weak listed first', [[['0', 'weak'], ['1', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong']], None], '1'), ('pull beats weak listed first', [[['0', 'weak'], ['1', 'pull']], None], '1'), ('strong contention', [[['0', 'strong'], ['1', 'strong'], ['1', 'pull'], ['1', 'pull'], ['1', 'pull'], ['1', 'pull']], None], 'x'), ('pull contention with weak agreement', [[['1', 'pull'], ['0', 'pull'], ['1', 'weak']], '1'], 'x'), ('released strong driver beside weak one', [[['z', 'strong'], ['1', 'weak']], None], '1'), ('all released with keeper', [[['z', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong']], '0'], '0'), ('single released driver with keeper', [[['z', 'pull']], '1'], '1'), ('all released without keeper', [[['z', 'weak'], ['z', 'strong']], None], 'z'), ('weak driver disagrees with keeper', [[['1', 'weak'], ['1', 'weak'], ['1', 'weak'], ['1', 'weak']], '0'], '1'), ('weak unknown under strong driver', [[['x', 'weak'], ['0', 'strong']], None], '0'), ('pull unknown under strong driver', [[['x', 'pull'], ['1', 'strong']], '0'], '1')], [('strong beats weak listed first', [[['0', 'weak'], ['1', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong']], None], '1'), ('pull beats weak listed first', [[['0', 'weak'], ['1', 'pull']], None], '1'), ('strong contention', [[['0', 'strong'], ['1', 'strong'], ['1', 'pull'], ['1', 'pull'], ['1', 'pull'], ['1', 'pull'], ['1', 'pull']], None], 'x'), ('pull contention with weak agreement', [[['1', 'pull'], ['0', 'pull'], ['1', 'weak']], '1'], 'x'), ('released strong driver beside weak one', [[['z', 'strong'], ['1', 'weak']], None], '1'), ('all released with keeper', [[['z', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong']], '1'], '1'), ('single released driver with keeper', [[['z', 'pull']], '1'], '1'), ('all released without keeper', [[['z', 'weak'], ['z', 'strong']], None], 'z'), ('weak driver disagrees with keeper', [[['1', 'weak'], ['1', 'weak'], ['1', 'weak'], ['1', 'weak'], ['1', 'weak']], '0'], '1'), ('weak unknown under strong driver', [[['x', 'weak'], ['0', 'strong']], None], '0'), ('pull unknown under strong driver', [[['x', 'pull'], ['1', 'strong']], '0'], '1')]]\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":"6031f43c1c5c0a59375418e4b4f3fb7ab1eba1a170de1fb6915b089cbc198b4c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    drivers, keep = args\n    rank = {'weak': 0, 'pull': 1, 'strong': 2}\n    live = [(v, s) for v, s in drivers if v != 'z']\n    if not live:\n        return 'z'\n    top = max(live, key=lambda d: rank[d[1]])[1]\n    vals = sorted({v for v, s in live if s == top})\n    return vals[0] if len(vals) == 1 else 'x'\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('strong beats weak listed first', [[['0', 'weak'], ['1', 'strong'], ['z', 'strong']], None], '1'), ('pull beats weak listed first', [[['0', 'weak'], ['1', 'pull']], None], '1'), ('strong contention', [[['0', 'strong'], ['1', 'strong'], ['1', 'pull']], None], 'x'), ('pull contention with weak agreement', [[['1', 'pull'], ['0', 'pull'], ['1', 'weak']], '1'], 'x'), ('released strong driver beside weak one', [[['z', 'strong'], ['1', 'weak']], None], '1'), ('all released with keeper', [[['z', 'strong']], '1'], '1'), ('single released driver with keeper', [[['z', 'pull']], '1'], '1'), ('all released without keeper', [[['z', 'weak'], ['z', 'strong']], None], 'z'), ('weak driver disagrees with keeper', [[['1', 'weak']], '0'], '1'), ('weak unknown under strong driver', [[['x', 'weak'], ['0', 'strong']], None], '0'), ('pull unknown under strong driver', [[['x', 'pull'], ['1', 'strong']], '0'], '1')], [('strong beats weak listed first', [[['0', 'weak'], ['1', 'strong'], ['z', 'strong'], ['z', 'strong']], None], '1'), ('pull beats weak listed first', [[['0', 'weak'], ['1', 'pull']], None], '1'), ('strong contention', [[['0', 'strong'], ['1', 'strong'], ['1', 'pull'], ['1', 'pull']], None], 'x'), ('pull contention with weak agreement', [[['1', 'pull'], ['0', 'pull'], ['1', 'weak']], '1'], 'x'), ('released strong driver beside weak one', [[['z', 'strong'], ['1', 'weak']], None], '1'), ('all released with keeper', [[['z', 'strong'], ['z', 'strong']], '0'], '0'), ('single released driver with keeper', [[['z', 'pull']], '1'], '1'), ('all released without keeper', [[['z', 'weak'], ['z', 'strong']], None], 'z'), ('weak driver disagrees with keeper', [[['1', 'weak'], ['1', 'weak']], '0'], '1'), ('weak unknown under strong driver', [[['x', 'weak'], ['0', 'strong']], None], '0'), ('pull unknown under strong driver', [[['x', 'pull'], ['1', 'strong']], '0'], '1')], [('strong beats weak listed first', [[['0', 'weak'], ['1', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong']], None], '1'), ('pull beats weak listed first', [[['0', 'weak'], ['1', 'pull']], None], '1'), ('strong contention', [[['0', 'strong'], ['1', 'strong'], ['1', 'pull'], ['1', 'pull'], ['1', 'pull']], None], 'x'), ('pull contention with weak agreement', [[['1', 'pull'], ['0', 'pull'], ['1', 'weak']], '1'], 'x'), ('released strong driver beside weak one', [[['z', 'strong'], ['1', 'weak']], None], '1'), ('all released with keeper', [[['z', 'strong'], ['z', 'strong'], ['z', 'strong']], '1'], '1'), ('single released driver with keeper', [[['z', 'pull']], '1'], '1'), ('all released without keeper', [[['z', 'weak'], ['z', 'strong']], None], 'z'), ('weak driver disagrees with keeper', [[['1', 'weak'], ['1', 'weak'], ['1', 'weak']], '0'], '1'), ('weak unknown under strong driver', [[['x', 'weak'], ['0', 'strong']], None], '0'), ('pull unknown under strong driver', [[['x', 'pull'], ['1', 'strong']], '0'], '1')], [('strong beats weak listed first', [[['0', 'weak'], ['1', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong']], None], '1'), ('pull beats weak listed first', [[['0', 'weak'], ['1', 'pull']], None], '1'), ('strong contention', [[['0', 'strong'], ['1', 'strong'], ['1', 'pull'], ['1', 'pull'], ['1', 'pull'], ['1', 'pull']], None], 'x'), ('pull contention with weak agreement', [[['1', 'pull'], ['0', 'pull'], ['1', 'weak']], '1'], 'x'), ('released strong driver beside weak one', [[['z', 'strong'], ['1', 'weak']], None], '1'), ('all released with keeper', [[['z', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong']], '0'], '0'), ('single released driver with keeper', [[['z', 'pull']], '1'], '1'), ('all released without keeper', [[['z', 'weak'], ['z', 'strong']], None], 'z'), ('weak driver disagrees with keeper', [[['1', 'weak'], ['1', 'weak'], ['1', 'weak'], ['1', 'weak']], '0'], '1'), ('weak unknown under strong driver', [[['x', 'weak'], ['0', 'strong']], None], '0'), ('pull unknown under strong driver', [[['x', 'pull'], ['1', 'strong']], '0'], '1')], [('strong beats weak listed first', [[['0', 'weak'], ['1', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong']], None], '1'), ('pull beats weak listed first', [[['0', 'weak'], ['1', 'pull']], None], '1'), ('strong contention', [[['0', 'strong'], ['1', 'strong'], ['1', 'pull'], ['1', 'pull'], ['1', 'pull'], ['1', 'pull'], ['1', 'pull']], None], 'x'), ('pull contention with weak agreement', [[['1', 'pull'], ['0', 'pull'], ['1', 'weak']], '1'], 'x'), ('released strong driver beside weak one', [[['z', 'strong'], ['1', 'weak']], None], '1'), ('all released with keeper', [[['z', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong'], ['z', 'strong']], '1'], '1'), ('single released driver with keeper', [[['z', 'pull']], '1'], '1'), ('all released without keeper', [[['z', 'weak'], ['z', 'strong']], None], 'z'), ('weak driver disagrees with keeper', [[['1', 'weak'], ['1', 'weak'], ['1', 'weak'], ['1', 'weak'], ['1', 'weak']], '0'], '1'), ('weak unknown under strong driver', [[['x', 'weak'], ['0', 'strong']], None], '0'), ('pull unknown under strong driver', [[['x', 'pull'], ['1', 'strong']], '0'], '1')]]\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 simulator rule set; the contract is stipulated and is not a claim of conformance to any HDL standard or commercial simulator. 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-digital-logic-simulation-bus-resolution-bus-keeper","generated_at":"2026-09-29T14:51:13.633378+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Resolved nets in switch-level and RTL simulators combine drivers by strength; mixing up strengths or keepers changes observed bus values.","root_cause":"The no-driver branch ignores the keeper.","sha256":"a71649790c24de0a45707a9090bd7105c15b89d912c5d8e577fd486a962b4b8d","title":"Bus keeper value lost when all drivers release · 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.494,"exit_code":1,"observations":[{"actual":"1","check":"strong beats weak listed first","expected":"1","passed":true},{"actual":"1","check":"pull beats weak listed first","expected":"1","passed":true},{"actual":"x","check":"strong contention","expected":"x","passed":true},{"actual":"x","check":"pull contention with weak agreement","expected":"x","passed":true},{"actual":"1","check":"released strong driver beside weak one","expected":"1","passed":true},{"actual":"z","check":"all released with keeper","expected":"1","passed":false},{"actual":"z","check":"single released driver with keeper","expected":"1","passed":false},{"actual":"z","check":"all released without keeper","expected":"z","passed":true},{"actual":"1","check":"weak driver disagrees with keeper","expected":"1","passed":true},{"actual":"0","check":"weak unknown under strong driver","expected":"0","passed":true},{"actual":"1","check":"pull unknown under strong driver","expected":"1","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"strong beats weak listed first\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"pull beats weak listed first\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"strong contention\", \"actual\": \"x\", \"expected\": \"x\", \"passed\": true}, {\"check\": \"pull contention with weak agreement\", \"actual\": \"x\", \"expected\": \"x\", \"passed\": true}, {\"check\": \"released strong driver beside weak one\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"all released with keeper\", \"actual\": \"z\", \"expected\": \"1\", \"passed\": false}, {\"check\": \"single released driver with keeper\", \"actual\": \"z\", \"expected\": \"1\", \"passed\": false}, {\"check\": \"all released without keeper\", \"actual\": \"z\", \"expected\": \"z\", \"passed\": true}, {\"check\": \"weak driver disagrees with keeper\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"weak unknown under strong driver\", \"actual\": \"0\", \"expected\": \"0\", \"passed\": true}, {\"check\": \"pull unknown under strong driver\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.003,"exit_code":1,"observations":[{"actual":"1","check":"strong beats weak listed first","expected":"1","passed":true},{"actual":"1","check":"pull beats weak listed first","expected":"1","passed":true},{"actual":"x","check":"strong contention","expected":"x","passed":true},{"actual":"x","check":"pull contention with weak agreement","expected":"x","passed":true},{"actual":"1","check":"released strong driver beside weak one","expected":"1","passed":true},{"actual":"z","check":"all released with keeper","expected":"1","passed":false},{"actual":"z","check":"single released driver with keeper","expected":"1","passed":false},{"actual":"z","check":"all released without keeper","expected":"z","passed":true},{"actual":"1","check":"weak driver disagrees with keeper","expected":"1","passed":true},{"actual":"0","check":"weak unknown under strong driver","expected":"0","passed":true},{"actual":"1","check":"pull unknown under strong driver","expected":"1","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"strong beats weak listed first\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"pull beats weak listed first\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"strong contention\", \"actual\": \"x\", \"expected\": \"x\", \"passed\": true}, {\"check\": \"pull contention with weak agreement\", \"actual\": \"x\", \"expected\": \"x\", \"passed\": true}, {\"check\": \"released strong driver beside weak one\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"all released with keeper\", \"actual\": \"z\", \"expected\": \"1\", \"passed\": false}, {\"check\": \"single released driver with keeper\", \"actual\": \"z\", \"expected\": \"1\", \"passed\": false}, {\"check\": \"all released without keeper\", \"actual\": \"z\", \"expected\": \"z\", \"passed\": true}, {\"check\": \"weak driver disagrees with keeper\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"weak unknown under strong driver\", \"actual\": \"0\", \"expected\": \"0\", \"passed\": true}, {\"check\": \"pull unknown under strong driver\", \"actual\": \"1\", \"expected\": \"1\", \"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."}}