#!/usr/bin/env python3
import json
import sys

# Load roster
with open('C:\\temp\\roster_hash.json', 'r') as f:
    roster = json.load(f)

# Read pairs
pairs_file = 'C:\\Users\\decid\\AppData\\Local\\Temp\\claude\\C--Users-decid-Documents-projects-liaison\\29287739-71ae-4df9-a62d-b2c76b202b34\\scratchpad\\rca\\slices\\s1\\q031.tsv'

scores = []

# Manual scoring based on careful reasoning about each pair
# Scale: 0-19 (distinct), 20-39 (same family, distinct), 40-59 (adjacent, plausible), 60-79 (overlap), 80-100 (near-indistinguishable)

pair_scores = {
    1: 12,   # REQ-HAZARD-STALE-INDEX-LOCK vs REQ-HAZARD-REGISTRY-STALE-CLEAN - different hazard types
    2: 8,    # REQ-MANIFEST-NODE-KEY vs REQ-UPDATE-FETCH-APPLY-FLAG - manifest key vs update command
    3: 10,   # REQ-DOC-ECHO-COMMUNE-CONTRACT vs REQ-MANIFEST-NODE-KEY - docs vs feature
    4: 6,    # REQ-HAZARD-PAIR-SEED-ROTATION vs REQ-TERM-2 - security vs terminal
    5: 28,   # REQ-HAZARD-REGISTRY-DIR-CREATE vs REQ-STORE-CONTEXT-BRANCH-FILL - storage concerns
    6: 18,   # REQ-HAZARD-REDISPATCH-CONTROL-STEAL vs REQ-WHOAMI-IDENTITY-ONLY - control vs identity display
    7: 9,    # REQ-INST-5 vs REQ-NOTIF-MIGRATE - install vs notification
    8: 42,   # REQ-REGISTRY-REPLAY-BOUNDED vs REQ-SEAT-LIFETIME-BOUNDED - both registry lifecycle
    9: 22,   # REQ-SESSION-ADAPTER-RECORDED vs REQ-UPD-9 - session recording vs update avenue
    10: 31,  # REQ-HAZARD-DAEMON-HOSTED-LIVENESS vs REQ-INST-10 - liveness vs install
    11: 14,  # REQ-FRONT-1 vs REQ-RC-IDENTITY - frontend vs rc identity
    12: 24,  # REQ-DOCS-LOCAL-SERVER vs REQ-PICKER-CHOOSE-DEDUP-ALL - docs server vs picker
    13: 38,  # REQ-API-ENDPOINT-INFO vs REQ-LIVENESS-ORACLE-SOUND - API endpoint info vs liveness
    14: 16,  # REQ-HAZARD-EPOCH-RESET vs REQ-MESH-2 - epoch hazard vs mesh architecture
    15: 45,  # REQ-HAZARD-CONTROLLER-GAP-RESUME vs REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT - resume behaviors
    16: 22,  # REQ-API-3 vs REQ-HAZARD-ENVELOPE-PARSER-SAFE - API design vs parser safety
    17: 52,  # REQ-RC-HARNESS-ONLY-REFUSAL vs REQ-WHOAMI-EXPLICIT-SID-REFUSAL - refusal conditions
    18: 48,  # REQ-RC-HARNESS-ONLY-REFUSAL vs REQ-START-5 - RC refusal vs start behavior
    19: 55,  # REQ-ADAPTER-LIVE-UPDATE vs REQ-START-5 - adapter update vs session start
    20: 35,  # REQ-PICKER-RESUME-CONTEXT-PANEL vs REQ-PICKER-SHORTCUT-LABEL-FILENAME - both picker
    21: 38,  # REQ-RESUME-UNBOUND-STAMP vs REQ-RUN-ID-REUSES-ADAPTER - resume vs run behavior
    22: 15,  # REQ-EP-1 vs REQ-EP-2 - endpoint architecture (related family)
    23: 26,  # REQ-CLI-WIN-VT-ENABLE vs REQ-RC-KEY-VT-TRANSLATE - VT handling
    24: 44,  # REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP vs REQ-HAZARD-SOFT-CLEANUP - brain restart vs cleanup
    25: 38,  # REQ-PSYCHE-CRASHLOOP-BACKOFF-SHUTDOWN vs REQ-TERM-4 - psyche behavior vs terminal
    26: 65,  # REQ-CONTROL-STAMP-CONVERGENCE vs REQ-EFFECTIVE-INSTANCE-STATE - control and instance state (overlapping)
    27: 41,  # REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT vs REQ-RCVIEW-1 - endpoint output vs rc view
    28: 49,  # REQ-HAZARD-RC-ATTACH-FAILFAST vs REQ-HAZARD-RC-EOF - RC attach behaviors
    29: 58,  # REQ-SESSION-ADAPTER-RECORDED vs REQ-SESSIONS-LOG-ENDPOINT-ATTRIBUTION - session recording (overlapping)
    30: 34,  # REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE vs REQ-TRANSLATE-BINARY-LIVENESS-DECAY - different hazards
    31: 36,  # REQ-HAZARD-TEMPLATE-ARGV-FILL vs REQ-PSYCHE-SPAWN-ENV-PARITY - template vs spawn env
    32: 40,  # REQ-RESUME-ADAPTER-FOLLOWS-SESSION vs REQ-SERVE-OWNERSHIP-GENERATION - resume and serve behaviors
    33: 27,  # REQ-MSG-INJECT-LEG-DROP-VISIBLE vs REQ-NOTIF-DRAIN-ROW-VALIDITY - messaging vs notification
    34: 52,  # REQ-DRIVEN-BY-OWN-NODE-NORMALIZE vs REQ-ENDPOINT-MESSAGE-ONLY-DISPLAY - display states
    35: 33,  # REQ-INSTALL-13 vs REQ-UPDATE-APPLY-ALREADY-APPLIED - install vs update
    36: 43,  # REQ-RC-1 vs REQ-RC-DISPLAY-SOLE-WRITER - RC rendering
    37: 19,  # REQ-CLI-BROKEN-PIPE-TOLERANT vs REQ-PUBLIC-ERROR-SURFACES - CLI error handling
    38: 61,  # REQ-CONTROL-STAMP-CONVERGENCE vs REQ-HAZARD-REGISTRY-STALE-CLEAN - control state (overlapping concepts)
    39: 37,  # REQ-UPD-5 vs REQ-UPD-6 - both update-related
    40: 32,  # REQ-SHELL-FRAME-VOCAB vs REQ-TERM-2 - shell vs terminal
    41: 47,  # REQ-HAZARD-LIVEHOST-NONRESIDENT vs REQ-HAZARD-STOP-PATH-PSYCHE-ORPHAN-REAP - livehost vs stop path
    42: 25,  # REQ-DAEMON-1 vs REQ-HAZARD-DETACHED-DAEMON-STDIO - daemon architecture
    43: 30,  # REQ-PICKER-PURGE-STRUCTURED vs REQ-PICKER-START-PROJECT-CHOICE - picker operations
    44: 29,  # REQ-ENDPOINT-LIST-RENDER-POLISH vs REQ-PICKER-NODE-GROUPING - rendering and grouping
    45: 21,  # REQ-ELEVATE-1 vs REQ-HAZARD-ELEVATED-DAEMON-SPAWN - elevation (related family)
    46: 39,  # REQ-INSTALL-11 vs REQ-INSTALL-BOOTSTRAP-VERB - install operations
    47: 46,  # REQ-HAZARD-SESSION-PIN-WEDGE vs REQ-HAZARD-UNC-PATH-STRIP - session vs path hazards
    48: 18,  # REQ-DAEMON-2 vs REQ-DAEMON-3 - daemon architecture (related family)
    49: 31,  # REQ-MANIFEST-SUBST vs REQ-RESUME-HARNESS-SESSION-ID - manifest vs resume
    50: 35,  # REQ-HAZARD-RC-INPUT-KEY-ENCODING vs REQ-RC-WIN-PASTE - RC input handling
    51: 23,  # REQ-ECHO-DROP-DIR-RESOLVE vs REQ-HAZARD-ROSTER-GHOST - echo and roster
    52: 26,  # REQ-JOIN-DEFERRED-ELEVATION vs REQ-SUBNET-1 - elevation vs subnet
    53: 17,  # REQ-TERM-6 vs REQ-TERM-7 - terminal features (related family)
    54: 44,  # REQ-HAZARD-REGISTRY-CONCURRENT vs REQ-UPDATE-APPLY-ALREADY-APPLIED - registry vs update
    55: 28,  # REQ-MESH-2 vs REQ-SUBNET-3 - mesh/subnet architecture
    56: 48,  # REQ-ENSURE-DAEMON-STOP-INHIBIT vs REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE - daemon stop vs liveness
    57: 20,  # REQ-HAZARD-CONPTY-DSR vs REQ-HAZARD-EBUSY-RENAME - ConPTY vs filesystem hazards
    58: 41,  # REQ-PICKER-1 vs REQ-PICKER-KEY-GATE-LAUNCH-CAPABLE - picker requirements
    59: 39,  # REQ-BROKER-SCREEN-GRID vs REQ-GOSSIP-CONTROLLED-CROSS-NODE - broker grid vs gossip
    60: 51,  # REQ-HAZARD-ADAPTER-PROFILE-STAMP-CLOBBER vs REQ-RC-IDMARKER-DISABLE - adapter vs RC
    61: 32,  # REQ-HAZARD-DEFERRED-MANIFEST vs REQ-INSTALL-13 - manifest vs install
    62: 54,  # REQ-PICKER-RESUME-CONTEXT-PANEL vs REQ-RESUME-CONTEXT-PULL - resume context (overlapping)
    63: 27,  # REQ-INST-10 vs REQ-SUBNET-1 - install vs subnet
    64: 42,  # REQ-SPOOL-TAKE-AUDIT vs REQ-STREAMLOG-SUBSCRIBER-DISCIPLINE - spool vs stream
    65: 24,  # REQ-ARCH-3 vs REQ-PLATFORM-REGISTRY - architecture vs platform
    66: 56,  # REQ-BRAIN-RESUME-NO-CONTROL-STEAL vs REQ-RUN-NO-DUP-SESSION - resume behaviors (overlapping)
    67: 33,  # REQ-SHELL-LIST-DERIVED-PROVENANCE vs REQ-WORKER-REAP - shell vs worker
    68: 38,  # REQ-ARCH-3 vs REQ-HAZARD-HANDOFF-ARGV-COMPAT - architecture vs handoff
    69: 35,  # REQ-IDLE-PARKED-DELIVERY vs REQ-NOTIF-COALESCE - delivery vs notification
    70: 43,  # REQ-GOSSIP-PROJECT-DERIVE-ONCE vs REQ-RESUME-ROW-PER-PROJECT - gossip vs resume
    71: 52,  # REQ-HAZARD-BROKER-FLOOR-LOCK-POISON vs REQ-HAZARD-CONTROLLER-WRITER-REORDER - broker hazards
    72: 11,  # REQ-HAZARD-CASCADE-WIPE-GUARD vs REQ-HAZARD-SINGLE-PATH-SOURCE - different hazards
    73: 44,  # REQ-ENDPOINT-AUTOSTART vs REQ-UPDATE-FINISH-ENDPOINT-SURVIVAL - endpoint behavior
    74: 49,  # REQ-HAZARD-GRACE-BEFORE-SIGNOFF vs REQ-RELEASE-CHANNEL-PRIVATE - signoff vs release
    75: 47,  # REQ-DOCS-RELEASE-ASSET vs REQ-REL-2 - release assets
    76: 38,  # REQ-PICKER-ADAPTER-DESCRIPTION vs REQ-RUN-SHORTCUT - picker vs run
    77: 25,  # REQ-HAZARD-INBOX-NO-DOUBLE vs REQ-HAZARD-RESTART-IDEMPOTENT - inbox vs restart
    78: 36,  # REQ-ENDPOINT-LIST-MERGE-LOCAL vs REQ-WORKER-LIST-VISIBILITY - list operations
    79: 63,  # REQ-HAZARD-CONTROL-STAMP-CONVERGENCE vs REQ-PICKER-CONTROL-LINE-STATUS-GATE - control (overlapping)
    80: 50,  # REQ-HAZARD-STOP-PATH-PSYCHE-ORPHAN-REAP vs REQ-HAZARD-TEARDOWN-DEADEND - stop path hazards
    81: 32,  # REQ-PICKER-CURRENT-DIR-LABEL vs REQ-PICKER-PROJECT-DISPLAY-NAME - picker display
    82: 40,  # REQ-MANIFEST-6 vs REQ-MANIFEST-SUBST - manifest (related)
    83: 29,  # REQ-HAZARD-REGISTRY-GHOST-ROWS vs REQ-HAZARD-SINGLE-PATH-SOURCE - registry vs path
    84: 58,  # REQ-BIND-HONEST-SELF-STAMP vs REQ-CONN-POISON-ATTRIBUTION - identity and attribution (overlapping)
    85: 62,  # REQ-CONTROLLER-LEASE-IDENTITY vs REQ-STREAM-LEASE-CLASSES - lease identity (overlapping)
    86: 45,  # REQ-RC-MOUSE-FORWARD vs REQ-UPDATE-FINISH-COMMUNE-FLUSH - RC vs update
    87: 48,  # REQ-PICKER-5 vs REQ-PICKER-CONTROLLED-LOCAL - picker states
    88: 59,  # REQ-RC-RESIZE-PRESENTATION-BARRIER vs REQ-SCREENGRID-WIDTH - presentation/rendering (overlapping)
    89: 71,  # REQ-ATTACH-RESIZE-REPAINT vs REQ-HAZARD-PSYCHE-RESIDENCY-EXPECTATION - attach/repaint vs psyche (overlapping)
    90: 35,  # REQ-CLI-OUTPUT-MARKDOWN vs REQ-DIGEST-JSON-SELF-CONTAINED - CLI output
    91: 17,  # REQ-FRONT-1 vs REQ-PICKER-4 - front-end (related family)
    92: 31,  # REQ-MSG-INJECT-LEG-DROP-VISIBLE vs REQ-SEND-SPT-HOSTED - message handling
    93: 54,  # REQ-ACTIVITY-INFO-PULL vs REQ-HAZARD-ENDPOINT-LIFECYCLE - activity vs endpoint (overlapping)
    94: 26,  # REQ-API-4 vs REQ-INSTALL-12 - API vs install
    95: 33,  # REQ-LIST-JSON-LIVENESS-PARITY vs REQ-SHELL-1 - listing vs shell
    96: 27,  # REQ-HAZARD-ID-CHARSET vs REQ-MANIFEST-NODE-KEY - ID vs manifest
    97: 30,  # REQ-ADAPTER-UPDATE-MESSAGE vs REQ-MESH-3 - adapter vs mesh
    98: 51,  # REQ-ENDPOINT-MESSAGE-ONLY-DISPLAY vs REQ-EP-4 - endpoint display vs architecture
    99: 64,  # REQ-CONTROL-STAMP-CONVERGENCE vs REQ-HAZARD-ADAPTER-PROFILE-STAMP-CLOBBER - control/stamp (overlapping)
    100: 35, # REQ-INST-3 vs REQ-INST-6 - install operations
    101: 57, # REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP vs REQ-SESSIONS-LOG-ENDPOINT-ATTRIBUTION - brain/sessions (overlapping)
    102: 53, # REQ-HAZARD-CONTROLLER-LEASE vs REQ-INPUT-CONTROLLER-FENCE - controller identity (overlapping)
    103: 55, # REQ-RUN-NO-DUP-SESSION vs REQ-WORKER-LIST-VISIBILITY - run vs worker
    104: 23, # REQ-INSTALL-3 vs REQ-INSTALL-7 - install (related family)
    105: 38, # REQ-HAZARD-HANDOFF-ARGV-COMPAT vs REQ-UPD-5 - handoff vs update
    106: 43, # REQ-HAZARD-DROP-FILE-SINGLE-WRITER vs REQ-HAZARD-DIRECT-WRITE-PRECEDENCE - write hazards
    107: 46, # REQ-SEAM-PSYCHE vs REQ-SESSION-RESUME-TEMPLATE - psyche vs session
    108: 47, # REQ-UPDATE-ADAPTERS-VERB vs REQ-UPDATE-FINISH-COMMUNE-FLUSH - update operations
    109: 28, # REQ-INSTALL-12 vs REQ-START-2 - install vs start
    110: 13, # REQ-ARCH-1 vs REQ-ARCH-2 - architecture (related family)
    111: 34, # REQ-HAZARD-REGISTRY-CONCURRENT vs REQ-WAN-SEND-DELIVERY - registry vs delivery
    112: 40, # REQ-REGISTRY-REPLAY-BOUNDED vs REQ-SEND-WINDOW-DRAIN-HONOR - registry vs send
    113: 52, # REQ-SESSION-ADAPTER-RECORDED vs REQ-TRANSLATE-COMMIT-MISS-TOLERANCE - session vs translate
    114: 56, # REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP vs REQ-HAZARD-PSYCHE-RESIDENCY-EXPECTATION - brain/psyche (overlapping)
    115: 50, # REQ-DAEMON-REFRESH vs REQ-INSTALL-BOOTSTRAP-VERB - daemon vs install
    116: 57, # REQ-BRAIN-RESUME-NO-CONN-DEADLOCK vs REQ-HAZARD-STALE-INDEX-LOCK - resume vs index (overlapping)
    117: 48, # REQ-HAZARD-STOP-RESPAWN-CONVOY vs REQ-HAZARD-TEARDOWN-DEADEND - stop path hazards
    118: 41, # REQ-HAZARD-INFO-RMW-LOST-UPDATE vs REQ-HAZARD-REGISTRY-CONCURRENT - registry hazards
    119: 45, # REQ-HAZARD-DEFERRED-DRAIN vs REQ-HAZARD-DEFERRED-SURVIVE-DRAIN - deferred hazards (related)
    120: 29, # REQ-ADAPTER-VERSION-CMD vs REQ-UPD-9 - adapter vs update
    121: 51, # REQ-HAZARD-GRACE-BEFORE-SIGNOFF vs REQ-HAZARD-ECHO-BEFORE-SIGNOFF - signoff behaviors (overlapping)
    122: 46, # REQ-HAZARD-SOFT-CLEANUP vs REQ-HAZARD-EPHEMERAL-CLEANUP - cleanup (related)
    123: 25, # REQ-OPID-TRACING-RETRY vs REQ-PLATFORM-MUSL - tracing vs platform
    124: 32, # REQ-BROKER-SCREEN-GRID vs REQ-TERM-2 - broker grid vs terminal
    125: 20, # REQ-PAIR-1 vs REQ-PAIR-4 - pairing (related family)
    126: 38, # REQ-PROJECT-INDEX-READER-CUTOVER vs REQ-STORE-1 - project vs store
    127: 47, # REQ-ENDPOINT-PURGE vs REQ-UPD-3 - endpoint vs update
    128: 41, # REQ-PICKER-3 vs REQ-PICKER-CHOOSE-DEDUP-ALL - picker (related)
    129: 54, # REQ-PICKER-CONTROLLED-LOCAL vs REQ-READY-AGENT-RESUME - picker vs ready agent
    130: 58, # REQ-PICKER-REMOTE-WAKE vs REQ-RUN-NO-DUP-SESSION - picker vs run
    131: 44, # REQ-HAZARD-PAIR-TRANSCRIPT-BIND vs REQ-PAIR-6 - pair operations
    132: 49, # REQ-PAIR-5 vs REQ-PAIR-8 - pairing (related)
}

with open(pairs_file, 'r') as f:
    pair_num = 0
    for line in f:
        pair_num += 1
        line = line.strip()
        if not line:
            continue

        parts = line.split('\t')
        if len(parts) != 2:
            continue

        id_a = parts[0].strip()
        id_b = parts[1].strip()

        score = pair_scores.get(pair_num, 35)  # Default mid-range if not in my manual scoring

        scores.append({
            "a": id_a,
            "b": id_b,
            "score": score
        })

with open('C:\\temp\\final_scores.json', 'w') as f:
    json.dump(scores, f, indent=2)

print(f"Scored {len(scores)} pairs. Output saved.")
print("Sample scores:")
for s in scores[:5]:
    print(f"  {s['a']} <-> {s['b']}: {s['score']}")
