import json

# Manually scored pairs based on careful analysis of each pair
# Following the calibration scale: 0-19 clearly distinct, 20-39 same family distinct,
# 40-59 adjacent plausible misassignment, 60-79 genuine overlap easy to swap, 80-100 near-indistinguishable

results = [
    ("REQ-CONN-BLACKHOLE-LIFECYCLE-HARNESS", "REQ-HAZARD-VIEWER-ISOLATION", 12),
    ("REQ-ARCH-1", "REQ-ARCH-2", 25),
    ("REQ-LISTEN-SESSION-ID-FALLBACK", "REQ-PSYCHE-SID-CUSTODY", 35),
    ("REQ-RC-1", "REQ-RC-HONEST-SESSION-AUTHORITY", 42),
    ("REQ-HAZARD-CONTROL-STAMP-CONVERGENCE", "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE", 38),
    ("REQ-HAZARD-BIND-REST-STATE-CARRY", "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE", 28),
    ("REQ-DAEMON-9", "REQ-HAZARD-LIVEHOST-BOOT-RACE", 44),
    ("REQ-ECHO-DROP-DIR-RESOLVE", "REQ-HOST-RUN-2", 22),
    ("REQ-ENDPOINT-UNBOUND-ATTACH", "REQ-RESUME-UNBOUND-STAMP", 48),
    ("REQ-HAZARD-STALE-INDEX-LOCK", "REQ-HAZARD-REGISTRY-STALE-CLEAN", 32),
    ("REQ-HAZARD-RC-ATTACH-FAILFAST", "REQ-RC-VT-TEARDOWN", 28),
    ("REQ-HAZARD-RESUME-CUSTODY-ABA", "REQ-WORKER-REAP", 18),
    ("REQ-DRIVEN-BY-OWN-NODE-NORMALIZE", "REQ-INST-4", 20),
    ("REQ-MANIFEST-2", "REQ-RUN-ID-REUSES-ADAPTER", 24),
    ("REQ-DAEMON-6", "REQ-HAZARD-STOP-RESPAWN-CONVOY", 45),
    ("REQ-ARCH-1", "REQ-MESH-6", 18),
    ("REQ-ENDPOINT-UNBOUND-ATTACH", "REQ-WAKE-WAIT", 20),
    ("REQ-INSTALL-13", "REQ-PICKER-START-PROJECT-CHOICE", 26),
    ("REQ-MANIFEST-4", "REQ-UPD-2", 32),
    ("REQ-INST-4", "REQ-INST-6", 28),
    ("REQ-PSYCHE-SID-CUSTODY", "REQ-RESUME-CUSTODY-IDENTITY", 52),
    ("REQ-INSTALL-3", "REQ-MSG-3", 15),
    ("REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT", "REQ-HAZARD-PAIR-TRANSCRIPT-BIND", 18),
    ("REQ-HAZARD-DROP-FILE-SINGLE-WRITER", "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE", 42),
    ("REQ-HAZARD-CONTROLLER-LEASE", "REQ-HAZARD-SHELL-STALE-ONLINE", 24),
    ("REQ-PICKER-UX-V013", "REQ-RUN-MULTISUBNET-HOME", 20),
    ("REQ-INST-6", "REQ-MSG-3", 16),
    ("REQ-ENSURE-DAEMON-STOP-INHIBIT", "REQ-RUN-ID-REUSES-ADAPTER", 18),
    ("REQ-HAZARD-ROLLBACK-STATE-COMPAT", "REQ-NOTIF-MIGRATE", 17),
    ("REQ-LISTEN-PRESERVES-HOSTING-TOPOLOGY", "REQ-SOFT-END-PRESERVES-LIVE-LISTENER", 38),
    ("REQ-NOTIF-QUIET-DELIVERY", "REQ-SEAM-ACTIVITY", 22),
    ("REQ-HAZARD-STOP-PATH-PSYCHE-ORPHAN-REAP", "REQ-PSYCHE-EPHEMERAL-DRIVER", 36),
    ("REQ-DOCS-RELEASE-ASSET", "REQ-ENDPOINT-TEARDOWN-AUTHORITY", 12),
    ("REQ-RC-RECONNECT", "REQ-RC-RESIZE-PRESENTATION-BARRIER", 34),
    ("REQ-CARRIER-CLAIM-EXCLUSIVE", "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN", 35),
    ("REQ-ENDPOINT-LIST-PALETTE", "REQ-SEND-WINDOW-DRAIN-HONOR", 14),
    ("REQ-RESUME-REAP-PRIOR-HARNESS", "REQ-START-3", 26),
    ("REQ-HAZARD-RENDER-LIFECYCLE", "REQ-INPUT-CONTROLLER-FENCE", 28),
    ("REQ-HAZARD-WINDOWS-PID-RECYCLE", "REQ-PRESENCE-CONTROL-REAP-ON-EXIT", 42),
    ("REQ-HAZARD-CONTROL-STAMP-LIFETIME", "REQ-TEARDOWN-UNCOOPERATIVE-HOST", 32),
    ("REQ-HAZARD-INFO-RMW-LOST-UPDATE", "REQ-HAZARD-INPUT-ACK-BACKPRESSURE", 24),
    ("REQ-HAZARD-ENVELOPE-CR-LINESAFE", "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE", 20),
    ("REQ-HAZARD-PAIR-RATE-LIMIT", "REQ-HAZARD-PAIR-SEED-ROTATION", 52),
    ("REQ-HAZARD-DAEMON-SCHED-NONBLOCKING", "REQ-XTASK-SPT-BIN-TARGET-DIR", 10),
    ("REQ-HAZARD-DEFERRED-DRAIN", "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN", 58),
    ("REQ-HAZARD-PAIR-SEED-ROTATION", "REQ-PAIR-1", 42),
    ("REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE", "REQ-HAZARD-DAEMON-STOP-REAP", 50),
    ("REQ-ACTIVITY-INFO-PULL", "REQ-ENDPOINT-MESSAGE-ONLY-DISPLAY", 18),
    ("REQ-CONN-BLACKHOLE-LIFECYCLE-HARNESS", "REQ-TEARDOWN-UNCOOPERATIVE-HOST", 26),
    ("REQ-ARCH-3", "REQ-HAZARD-HANDOFF-ARGV-COMPAT", 20),
    ("REQ-HAZARD-INJECT-SETTLE-REARM", "REQ-MSG-INJECT-LEG-DROP-VISIBLE", 48),
    ("REQ-RC-HONEST-SESSION-AUTHORITY", "REQ-SPAWN-FRESH-TRUTHFUL", 38),
    ("REQ-INSTALL-11", "REQ-INSTALL-4", 26),
    ("REQ-HAZARD-CONTROL-STAMP-CONVERGENCE", "REQ-READY-AGENT-RESUME", 20),
    ("REQ-EP-1", "REQ-EP-2", 32),
    ("REQ-HAZARD-DAEMON-HOSTED-LIVENESS", "REQ-HAZARD-PSYCHE-RESIDENCY-EXPECTATION", 42),
    ("REQ-HAZARD-CONTROLLER-GAP-RESUME", "REQ-HAZARD-CONTROLLER-WRITER-REORDER", 48),
    ("REQ-HAZARD-CASCADE-WIPE-GUARD", "REQ-HAZARD-SINGLE-PATH-SOURCE", 28),
    ("REQ-INST-7", "REQ-SEND-SPT-HOSTED", 16),
    ("REQ-HAZARD-ROSTER-GHOST", "REQ-READY-AGENT-RESUME", 24),
    ("REQ-MSG-6", "REQ-WAN-SPT-HOSTED-DELIVERY", 40),
    ("REQ-ADAPTER-TEMPLATE-KEY-VALIDATION", "REQ-MANIFEST-SUBST", 44),
    ("REQ-HAZARD-CONFLICT-BOTH-PRESERVED", "REQ-HAZARD-CONTROL-STAMP-CONVERGENCE", 32),
    ("REQ-DIGEST-FETCHER-STRATEGY", "REQ-RC-1", 16),
    ("REQ-HAZARD-SINGLE-PATH-SOURCE", "REQ-INST-5", 20),
    ("REQ-ADAPTER-TEMPLATE-KEY-VALIDATION", "REQ-JOIN-DEFERRED-ELEVATION", 18),
    ("REQ-FRONT-1", "REQ-PICKER-CURRENT-DIR-LABEL", 28),
    ("REQ-HAZARD-DEAD-REC-PID", "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE", 42),
    ("REQ-HAZARD-ROSTER-GHOST", "REQ-UPD-1", 18),
    ("REQ-REST-VERB-ROUTING", "REQ-UPDATE-FINISH-ENDPOINT-SURVIVAL", 22),
    ("REQ-DAEMON-8", "REQ-HAZARD-INJECT-SETTLE-REARM", 16),
    ("REQ-HAZARD-LIVEHOST-BOOT-RACE", "REQ-RESUME-REAP-PRIOR-HARNESS", 40),
    ("REQ-ADAPTER-FLOOR-ENFORCE", "REQ-HAZARD-ADAPTER-APPLY-SILENT-NOOP", 45),
    ("REQ-RC-DISPLAY-SOLE-WRITER", "REQ-RC-VT-TEARDOWN", 34),
    ("REQ-PSYCHE-ACCOUNT-REFUSAL-EXIT", "REQ-PSYCHE-SPAWN-ENV-PARITY", 38),
    ("REQ-RUN-PICKER", "REQ-RUN-PICKER-HOME", 55),
    ("REQ-CRC-SWAP-OLD-DISPLACE", "REQ-DAEMON-RESTART-SELF-INTERRUPTION", 28),
    ("REQ-SEAM-POSTSPAWN", "REQ-SEAM-SPAWN", 48),
    ("REQ-DOCS-LOCAL-SERVER", "REQ-PSYCHE-CONTEXT-FILE-INDIRECTION", 14),
    ("REQ-INSTALL-10", "REQ-SHELL-CLI-SPAWN-JOB-EXPOSURE", 18),
    ("REQ-DOCS-NO-INTERNAL-CODES", "REQ-UPD-9", 16),
    ("REQ-HAZARD-BOUNDARY-READY-STRAND", "REQ-SEAM-RESUME", 40),
    ("REQ-DIGEST-CURSOR", "REQ-DIGEST-SEAL-ON-IDLE", 50),
    ("REQ-RC-IDENTITY", "REQ-RC-RESIZE-PRESENTATION-BARRIER", 32),
    ("REQ-INST-3", "REQ-INST-8", 30),
    ("REQ-INST-2", "REQ-PICKER-CHANGE-ADAPTER-FLOW", 22),
    ("REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP", "REQ-HAZARD-STOP-PATH-PSYCHE-ORPHAN-REAP", 50),
    ("REQ-PEER-PUMP-CHURN-STALL", "REQ-RC-RECONNECT", 30),
    ("REQ-ENDPOINT-AUTOSTART", "REQ-HAZARD-BIND-CWD-UNSET", 28),
    ("REQ-HAZARD-RENDER-LIFECYCLE", "REQ-REST-TERMINAL-NORMALIZE", 32),
    ("REQ-MANIFEST-6", "REQ-MANIFEST-8", 28),
    ("REQ-HAZARD-ATOMIC-TMP-COLLISION", "REQ-HAZARD-GRACE-BEFORE-SIGNOFF", 18),
    ("REQ-ADAPTER-UPDATE-POST", "REQ-UPD-6", 42),
    ("REQ-HAZARD-CONPTY-DSR", "REQ-HAZARD-EBUSY-RENAME", 24),
    ("REQ-HAZARD-INFO-RMW-LOST-UPDATE", "REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK", 30),
    ("REQ-PSYCHE-SID-CUSTODY", "REQ-PSYCHE-SPAWN-ENV-PARITY", 42),
    ("REQ-HAZARD-BOUNDARY-READY-STRAND", "REQ-HAZARD-GRACE-BEFORE-SIGNOFF", 38),
    ("REQ-DAEMON-STATUS-JSON-TRUTH", "REQ-INST-3", 20),
    ("REQ-ATTACH-SEED-REQUEST-DOUBLE-SERVE", "REQ-SERVE-OWNERSHIP-GENERATION", 48),
    ("REQ-HAZARD-GRACE-BEFORE-SIGNOFF", "REQ-HAZARD-ECHO-BEFORE-SIGNOFF", 52),
    ("REQ-HAZARD-PAIR-TRANSCRIPT-BIND", "REQ-SESSIONS-LOG-ENDPOINT-ATTRIBUTION", 40),
    ("REQ-HAZARD-INFO-RMW-LOST-UPDATE", "REQ-HAZARD-PAIR-SEED-ROTATION", 20),
    ("REQ-API-3", "REQ-HAZARD-ENVELOPE-PARSER-SAFE", 24),
    ("REQ-CONV-2", "REQ-NOTIF-SEAM-DISMISS", 22),
    ("REQ-DAEMON-1", "REQ-RC-HONEST-SESSION-AUTHORITY", 18),
    ("REQ-NOTIF-SCOPE", "REQ-WAN-SPT-HOSTED-DELIVERY", 38),
    ("REQ-INSTALL-9", "REQ-START-1", 28),
    ("REQ-CONTROLLER-LEASE-IDENTITY", "REQ-RC-SINGLE-PUMP-BRAIN", 40),
    ("REQ-CLI-4", "REQ-PICKER-PURGE-SHORTCUT", 20),
    ("REQ-BROKER-ATTACH-JOURNAL-RESILIENT", "REQ-OPID-MINTER-NAMESPACE", 18),
    ("REQ-ENDPOINT-LIST-PALETTE", "REQ-PICKER-SHORTCUT-LABEL-FILENAME", 28),
    ("REQ-DAEMON-9", "REQ-HAZARD-SEEDMAP-CONNECT-UNBOUNDED", 22),
    ("REQ-HAZARD-RC-ATTACH-ONLINE-RACE", "REQ-SPAWN-COLLISION-GUARD-LIVE-DUP", 44),
    ("REQ-BIND-PSYCHE-CUSTODY-SQUAT-GUARD", "REQ-LISTEN-SEED-CONSUME-AFTER-BIND", 46),
    ("REQ-INST-12", "REQ-RC-IDENTITY", 32),
    ("REQ-ADAPTER-UPDATE-POST", "REQ-UPDATE-DEFAULT-COMPOSITE", 42),
    ("REQ-HAZARD-SOFT-CLEANUP", "REQ-HAZARD-EPHEMERAL-CLEANUP", 50),
    ("REQ-RC-HARNESS-ONLY-REFUSAL", "REQ-RC-WIN-VT-OUTPUT", 32),
    ("REQ-DAEMON-4", "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE", 30),
    ("REQ-API-ENDPOINT-INFO", "REQ-DOCS-5", 16),
    ("REQ-DOC-DELIVERY-VOCAB", "REQ-MSG-4", 40),
    ("REQ-HAZARD-INJECT-CONTROL-COEXIST", "REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK", 32),
    ("REQ-DOCS-2", "REQ-DOCS-LOCAL-SERVER", 36),
    ("REQ-RC-CROSS-NODE-ATTACH", "REQ-RC-IDMARKER-DISABLE", 34),
    ("REQ-PSYCHE-NESTED-RESOLUTION", "REQ-WHOAMI-IDENTITY-ONLY", 22),
    ("REQ-PICKER-REMOTE-WAKE", "REQ-RESUME-UNBOUND-STAMP", 26),
    ("REQ-ENDPOINT-MESSAGE-ONLY-DISPLAY", "REQ-HAZARD-DELIVERY-STARVATION", 36),
    ("REQ-HAZARD-INBOX-NO-DOUBLE", "REQ-HAZARD-RESTART-IDEMPOTENT", 28),
    ("REQ-RESUME-ADAPTER-FOLLOWS-SESSION", "REQ-RESUME-HARNESS-SESSION-ID", 50),
    ("REQ-CLI-4", "REQ-RC-NEWLINE-PRESENTATION-TRUTH", 32),
    ("REQ-HAZARD-BIND-CWD-UNSET", "REQ-PROJECT-INDEX-STORE", 20),
    ("REQ-HAZARD-RESUME-CUSTODY-ABA", "REQ-RC-IDENTITY", 40),
]

# Verify count
print(f"Total pairs scored: {len(results)}")
assert len(results) == 132, f"Expected 132 pairs, got {len(results)}"

# Output as JSON
output = []
for a, b, score in results:
    output.append({'a': a, 'b': b, 'score': score})

# Verify all scores are in valid range
for item in output:
    assert 0 <= item['score'] <= 100, f"Invalid score {item['score']} for {item['a']} vs {item['b']}"

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

print("✓ All scores validated and written to /tmp/scores.json")
print("\nScore distribution:")
scores_by_range = {
    "0-19": sum(1 for _, _, s in results if 0 <= s < 20),
    "20-39": sum(1 for _, _, s in results if 20 <= s < 40),
    "40-59": sum(1 for _, _, s in results if 40 <= s < 60),
    "60-79": sum(1 for _, _, s in results if 60 <= s < 80),
    "80-100": sum(1 for _, _, s in results if 80 <= s <= 100),
}
for range_key, count in scores_by_range.items():
    print(f"  {range_key}: {count} pairs")
