import json

# Load requirements
with open('/tmp/reqs_lookup.json') as f:
    reqs = json.load(f)

# Read pairs in order
pairs = []
with open('C:/Users/decid/AppData/Local/Temp/claude/C--Users-decid-Documents-projects/3c9a4b44-a7de-45b2-b88f-94bf726d662b/scratchpad/dispatch-stage-D/slices/s1d/q084.tsv') as f:
    for line in f:
        line = line.strip()
        if line and '\t' in line:
            parts = line.split('\t')
            if len(parts) == 2:
                pairs.append((parts[0], parts[1]))

# Scoring map for all 132 pairs
scoring_map = {
    "REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE|REQ-HAZARD-RENDER-LIFECYCLE": 52,
    "REQ-HAZARD-CONTROL-STAMP-LIFETIME|REQ-HAZARD-REGISTRY-EPOCH-LEASE": 14,
    "REQ-HAZARD-ELEVATED-DAEMON-SPAWN|REQ-HAZARD-STOP-RESPAWN-CONVOY": 26,
    "REQ-PICKER-CURRENT-DIR-LABEL|REQ-WHOAMI-1": 43,
    "REQ-MSG-DELIVERY-AXES|REQ-RELAY-NO-BUSY-DELIVER": 68,
    "REQ-ENDPOINT-LIST-RENDER-POLISH|REQ-PICKER-2": 22,
    "REQ-BOUNDARY-ROTATION-CREDENTIAL|REQ-WORKER-SID-SYMMETRIC-AUTH": 35,
    "REQ-UPD-8|REQ-UPD-9": 48,
    "REQ-HAZARD-STALE-INDEX-LOCK|REQ-HAZARD-REGISTRY-STALE-CLEAN": 32,
    "REQ-HAZARD-UPDATE-ROLLBACK|REQ-UPDATE-TRIAL-DRAIN-DRIVE": 38,
    "REQ-SELF-ID-TRUST-INJECTED-ENV|REQ-WHOAMI-1": 41,
    "REQ-DAEMON-2|REQ-UPDATE-ONE-SHOT-FINISH": 55,
    "REQ-DOCS-6|REQ-TRANSLATE-BINARY-LIVENESS-DECAY": 8,
    "REQ-NET-3|REQ-WORKER-LIST-VISIBILITY": 17,
    "REQ-CONTROLLER-LIVENESS-REAP|REQ-MSG-3": 24,
    "REQ-HAZARD-VIEWER-CLOSE-DETACH|REQ-RC-RECONNECT": 58,
    "REQ-UPDATE-DEFAULT-COMPOSITE|REQ-UPDATE-ONE-SHOT-FINISH": 61,
    "REQ-ADAPTER-GH-TRANSPORT|REQ-UPD-9": 72,
    "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE|REQ-SESSIONS-LOG-ENDPOINT-ATTRIBUTION": 27,
    "REQ-HAZARD-ENVELOPE-CR-LINESAFE|REQ-SUBNET-3": 6,
    "REQ-PICKER-3|REQ-SUBNET-8": 15,
    "REQ-ADAPTER-GH-TRANSPORT|REQ-UPDATE-GH-TRANSPORT": 76,
    "REQ-UPD-7|REQ-UPDATE-FETCH-CURRENT-UX": 44,
    "REQ-ADAPTER-UPDATE-MESSAGE|REQ-INSTALL-13": 28,
    "REQ-ENDPOINT-UNBOUND-ATTACH|REQ-HAZARD-SESSION-PIN-WEDGE": 56,
    "REQ-MESH-3|REQ-MESH-4": 35,
    "REQ-MSG-6|REQ-SUBNET-7": 19,
    "REQ-HAZARD-RC-ATTACH-TRUTH|REQ-RC-HONEST-SESSION-AUTHORITY": 73,
    "REQ-HAZARD-CONTROL-STAMP-CONVERGENCE|REQ-RC-RESIZE-PRESENTATION-BARRIER": 29,
    "REQ-HAZARD-BROKER-SEED-WIRE-SKEW|REQ-HAZARD-CONTROLLER-LEASE": 25,
    "REQ-CLI-2|REQ-DAEMON-REFRESH": 47,
    "REQ-RESUME-ADAPTER-FOLLOWS-SESSION|REQ-RESUME-REAP-PRIOR-HARNESS": 66,
    "REQ-SHELL-3|REQ-SHELL-FRAME-VOCAB": 39,
    "REQ-HAZARD-CHILD-CONSOLE-FLASH|REQ-HAZARD-DETACHED-DAEMON-STDIO": 64,
    "REQ-ENDPOINT-CYCLE-HONEST|REQ-HAZARD-DRIVEN-BY-SELFHEAL": 36,
    "REQ-HAZARD-SHELL-STALE-ONLINE|REQ-LIST-JSON-LIVENESS-PARITY": 33,
    "REQ-JOIN-DEFERRED-ELEVATION|REQ-SUBNET-4": 16,
    "REQ-SOFT-END-PRESERVES-LIVE-LISTENER|REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT": 62,
    "REQ-ENDPOINT-AUTOSTART|REQ-INSTALL-3": 30,
    "REQ-HAZARD-WINDOWS-PID-RECYCLE|REQ-STREAM-LEASE-CLASSES": 11,
    "REQ-CONV-2|REQ-GOSSIP-CONTROLLED-ANY": 51,
    "REQ-CONTROLLER-LEASE-IDENTITY|REQ-HAZARD-STDIN-SESSION-ID": 40,
    "REQ-HAZARD-CONTROLLER-GAP-RESUME|REQ-STREAM-LIFETIME-CLASS": 18,
    "REQ-ADAPTER-MULTIPLATFORM-SPT|REQ-INFRA-1": 20,
    "REQ-NOTIF-SEAM-DISMISS|REQ-NOTIF-UPDATE-ROW-VERSION-RETIRE": 65,
    "REQ-HAZARD-DELIVERY-STARVATION|REQ-IDLE-PARKED-DELIVERY": 59,
    "REQ-HAZARD-BRAIN-RESPAWN-PATH|REQ-HAZARD-STOP-PATH-PSYCHE-ORPHAN-REAP": 63,
    "REQ-HAZARD-SEEDMAP-CONNECT-UNBOUNDED|REQ-PUMP-STAGE-TRUTH": 19,
    "REQ-PSYCHE-LEGACY-RESIDENT-SWEEP|REQ-SEAT-LIFETIME-BOUNDED": 37,
    "REQ-HAZARD-CONTROL-STAMP-LIFETIME|REQ-HAZARD-RC-ATTACH-TRUTH": 50,
    "REQ-PAIR-8|REQ-SUBNET-7": 12,
    "REQ-INSTALL-BOOTSTRAP-VERB|REQ-MSG-DELIVERY-AXES": 23,
    "REQ-ONEWAY-STREAM-TERMINAL|REQ-REGISTRY-REPLAY-BOUNDED": 13,
    "REQ-HAZARD-CASCADE-WIPE-GUARD|REQ-HAZARD-SINGLE-PATH-SOURCE": 31,
    "REQ-CONTROL-STAMP-CONVERGENCE|REQ-HAZARD-DIRECT-WRITE-PRECEDENCE": 42,
    "REQ-EP-1|REQ-EP-2": 36,
    "REQ-RESUME-HARNESS-SESSION-ID|REQ-SELF-ID-TRUST-INJECTED-ENV": 67,
    "REQ-DAEMON-BITS-AMBIGUITY|REQ-HAZARD-DAEMON-STOP-BARRIER": 26,
    "REQ-SHELL-5|REQ-TRANSLATE-COMMIT-MISS-TOLERANCE": 9,
    "REQ-DAEMON-9|REQ-SPOOL-TAKE-AUDIT": 21,
    "REQ-PICKER-CHANGE-ADAPTER-FLOW|REQ-PICKER-HISTORY-FRESH": 49,
    "REQ-HAZARD-DEFERRED-DRAIN|REQ-HAZARD-DEFERRED-SURVIVE-DRAIN": 71,
    "REQ-ATTACH-IDEMPOTENT-REPLAY|REQ-SCREENGRID-REPAINT-MODE-REPLAY": 34,
    "REQ-ARCH-1|REQ-ARCH-2": 25,
    "REQ-HAZARD-EPHEMERAL-CLEANUP|REQ-HAZARD-STOP-PATH-PSYCHE-ORPHAN-REAP": 57,
    "REQ-PICKER-CONTROLLED-LOCAL|REQ-PICKER-WINDOW-TITLE": 54,
    "REQ-HAZARD-RC-EOF|REQ-HAZARD-VIEWER-RING-ROLL-SNAP": 22,
    "REQ-HOST-RUN-1|REQ-SHELL-ADAPTER-OWNED-DETACHED-SERVICE": 46,
    "REQ-API-3|REQ-HAZARD-ENVELOPE-PARSER-SAFE": 10,
    "REQ-UPDATE-FINISH-ENDPOINT-SURVIVAL|REQ-WAKE-WAIT": 53,
    "REQ-CONTROLLER-LEASE-IDENTITY|REQ-PROJECT-INDEX-INVALIDATION": 27,
    "REQ-PSYCHE-STAMP-CLEAR-ANY-SUCCESS|REQ-UPDATE-APPLY-ALREADY-APPLIED": 60,
    "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY|REQ-PSYCHE-ROLE-OPTIONAL-SKIP": 38,
    "REQ-HAZARD-BIND-REST-STATE-CARRY|REQ-READY-AGENT-RESUME": 45,
    "REQ-HAZARD-ADAPTER-APPLY-SILENT-NOOP|REQ-LIVEHOST-RECONCILE-TRIAL-SILENT": 70,
    "REQ-CARRIER-CLAIM-EXCLUSIVE|REQ-INST-6": 17,
    "REQ-ADAPTER-FLOOR-ENFORCE|REQ-ARCH-3": 24,
    "REQ-HAZARD-CONTROL-STAMP-CONVERGENCE|REQ-MESH-1": 19,
    "REQ-NOTIF-SCOPE|REQ-NOTIF-UPDATE-ROW-VERSION-RETIRE": 69,
    "REQ-HAZARD-LIVEHOST-BOOT-RACE|REQ-HAZARD-RC-ATTACH-FAILFAST": 41,
    "REQ-HAZARD-UPDATE-ROLLBACK|REQ-UPD-8": 39,
    "REQ-RUN-ID-REUSES-ADAPTER|REQ-RUN-PICKER": 44,
    "REQ-HAZARD-INBOX-NO-DOUBLE|REQ-HAZARD-RESTART-IDEMPOTENT": 52,
    "REQ-MANIFEST-4|REQ-MANIFEST-5": 32,
    "REQ-MSG-3|REQ-SESSION-RESUME-TEMPLATE": 30,
    "REQ-HAZARD-STOP-RESPAWN-CONVOY|REQ-UPDATE-APPLY-RESTART-NOTICE": 47,
    "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE|REQ-PAIR-5": 16,
    "REQ-ARCH-3|REQ-HAZARD-HANDOFF-ARGV-COMPAT": 20,
    "REQ-EP-5|REQ-EP-6": 40,
    "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT|REQ-PUMP-PEER-ISOLATION": 56,
    "REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE|REQ-RC-1": 48,
    "REQ-HAZARD-CONPTY-DSR|REQ-HAZARD-EBUSY-RENAME": 12,
    "REQ-STREAM-INFOS-SERVER-FILTER|REQ-STREAM-LIFETIME-CLASS": 51,
    "REQ-DRIVEN-BY-OWN-NODE-NORMALIZE|REQ-RC-HONEST-SESSION-AUTHORITY": 68,
    "REQ-ENDPOINT-STOP-OFFLINE|REQ-HAZARD-DAEMON-STOP-BARRIER": 58,
    "REQ-INST-7|REQ-REST-VERB-ROUTING": 25,
    "REQ-HAZARD-DROP-FILE-SINGLE-WRITER|REQ-HAZARD-DIRECT-WRITE-PRECEDENCE": 62,
    "REQ-RC-HONEST-SESSION-AUTHORITY|REQ-UPDATE-FINISH-ENDPOINT-SURVIVAL": 46,
    "REQ-PICKER-CONTROLLED-LOCAL|REQ-WORKER-PICKER-EXCLUDED": 53,
    "REQ-ENDPOINT-ONLINE-TRUTH|REQ-SEAT-LIFETIME-BOUNDED": 64,
    "REQ-RESUME-UNBOUND-STAMP|REQ-SESSION-RESUME-TEMPLATE": 57,
    "REQ-SELF-DETECT-PARENT-PID|REQ-SEND-STAMP-AGENT-ID": 50,
    "REQ-BIND-HONEST-SELF-STAMP|REQ-MSG-SELF-DETECT-ANCESTRY": 72,
    "REQ-PSYCHE-STAMP-CLEAR-ANY-SUCCESS|REQ-UPDATE-ONE-SHOT-FINISH": 36,
    "REQ-HAZARD-DEFERRED-MANIFEST|REQ-UPDATE-ADAPTERS-VERB": 23,
    "REQ-ADAPTER-MULTIPLATFORM-SPT|REQ-INSTALL-9": 33,
    "REQ-ACTIVITY-INFO-PULL|REQ-PICKER-ONLINE-ACTION": 29,
    "REQ-MSG-ENVELOPE|REQ-MSG-IDLE-TRANSLATION-BINARY": 74,
    "REQ-INST-13|REQ-PEERADDR-INVARIANT": 10,
    "REQ-HAZARD-PAIR-SEED-ROTATION|REQ-HAZARD-TEARDOWN-DEADEND": 14,
    "REQ-DOCS-6|REQ-SHELL-ADAPTER-OWNED-DETACHED-SERVICE": 11,
    "REQ-ADAPTER-MULTIPLATFORM-SPT|REQ-HAZARD-LOCAL-API-AUTH": 18,
    "REQ-HAZARD-GRACE-BEFORE-SIGNOFF|REQ-HAZARD-ECHO-BEFORE-SIGNOFF": 75,
    "REQ-REACH-1|REQ-WORKER-LIST-VISIBILITY": 19,
    "REQ-PICKER-BACK-NAV|REQ-PICKER-PURGE-STRUCTURED": 45,
    "REQ-HAZARD-BIND-REST-STATE-CARRY|REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP": 37,
    "REQ-GOSSIP-CONTROLLED-ANY|REQ-HAZARD-ROSTER-GHOST": 28,
    "REQ-CLI-3|REQ-HAZARD-BROKER-QUIC-DEADLINE": 21,
    "REQ-ENDPOINT-LIST-MERGE-LOCAL|REQ-WORKER-PICKER-EXCLUDED": 54,
    "REQ-PSYCHE-LEGACY-RESIDENT-SWEEP|REQ-WORKER-REAP": 34,
    "REQ-CONN-POISON-ATTRIBUTION|REQ-HAZARD-WAN-ORIGIN-AUTH": 26,
    "REQ-RC-HARNESS-ONLY-REFUSAL|REQ-WAN-SPT-HOSTED-DELIVERY": 22,
    "REQ-UPDATE-ADAPTERS-VERB|REQ-UPDATE-TRIAL-DRAIN-DRIVE": 42,
    "REQ-HAZARD-SOFT-CLEANUP|REQ-HAZARD-EPHEMERAL-CLEANUP": 77,
    "REQ-LISTEN-PRESERVES-HOSTING-TOPOLOGY|REQ-RC-RESIZE-PRESENTATION-BARRIER": 27,
    "REQ-NOTIF-1|REQ-UPDATE-RUNNING-IMAGE-SURFACE": 19,
    "REQ-ENDPOINT-AUTOSTART|REQ-RUN-ID-REUSES-ADAPTER": 49,
    "REQ-HAZARD-VIEWER-CLOSE-DETACH|REQ-TERM-2": 35,
    "REQ-UPDATE-FINISH-ENDPOINT-SURVIVAL|REQ-UPDATE-RESTART-SAFE-SWAP": 69,
    "REQ-EP-7|REQ-LIST-JSON-LIVENESS-PARITY": 23,
    "REQ-MSG-CLI-ORIGIN|REQ-SEND-WINDOW-DRAIN-HONOR": 30,
    "REQ-MSG-4|REQ-MSG-IDLE-TRANSLATION-BINARY": 76,
}

# Score all pairs
scores = []
for i, (id_a, id_b) in enumerate(pairs):
    pair_key = id_a + '|' + id_b
    if pair_key in scoring_map:
        score = scoring_map[pair_key]
        scores.append((id_a, id_b, score))
    else:
        print('WARNING: No score for pair {}: {} <-> {}'.format(i+1, id_a, id_b))

print('Scored {}/{} pairs'.format(len(scores), len(pairs)))

# Save scores to JSON
output = {
    'evaluated': len(scores),
    'pairs': [{'a': a, 'b': b, 'score': s} for a, b, s in scores]
}

with open('/tmp/scores.json', 'w') as f:
    json.dump(output, f, indent=2)

print('Scores saved to /tmp/scores.json')
