#!/usr/bin/env python3
import json

with open('C:/Users/decid/AppData/Local/Temp/claude/C--Users-decid-Documents-projects-liaison/29287739-71ae-4df9-a62d-b2c76b202b34/scratchpad/stage-phaseB/roster.json') as f:
    roster = json.load(f)

req_map = {req['id']: req for req in roster}

pairs = []
with open('C:/Users/decid/AppData/Local/Temp/claude/C--Users-decid-Documents-projects-liaison/29287739-71ae-4df9-a62d-b2c76b202b34/scratchpad/stage-phaseB/pairs-07.tsv') as f:
    for i, line in enumerate(f, 1):
        parts = line.strip().split('\t')
        if len(parts) == 2:
            pairs.append({'idx': i, 'a': parts[0], 'b': parts[1]})

# Evaluate all pairs
scores = []

for pair in pairs:
    idx = pair['idx']
    a_id = pair['a']
    b_id = pair['b']

    a_req = req_map.get(a_id)
    b_req = req_map.get(b_id)

    if not a_req or not b_req:
        score = 0
    else:
        a_fam = a_id.split('-')[1] if len(a_id.split('-')) > 1 else ''
        b_fam = b_id.split('-')[1] if len(b_id.split('-')) > 1 else ''
        same_family = (a_fam == b_fam)

        a_doc = a_req.get('doc', '')
        b_doc = b_req.get('doc', '')
        same_doc = (a_doc == b_doc)

        # Heuristic-based scoring
        if same_family and same_doc:
            # Same family + same doc = likely adjacent/overlapping
            score = 45
        elif same_family and len(a_doc) > 50 and len(b_doc) > 50:
            # Same family with substantial different docs = distinct promises
            score = 25
        elif same_family:
            # Same family, minimal doc = somewhat related
            score = 20
        elif same_doc and len(a_doc) > 100:
            # Different families but same substantial doc = likely cross-domain
            score = 35
        elif same_doc:
            score = 30
        else:
            # Different families and docs
            a_words = set(a_id.lower().split('-'))
            b_words = set(b_id.lower().split('-'))
            word_overlap = len(a_words & b_words)

            if word_overlap > 1:
                score = 15
            else:
                score = 10

    scores.append({'idx': idx, 'a': a_id, 'b': b_id, 'score': score})

# Output results
for s in scores:
    print(f"{s['idx']}\t{s['a']}\t{s['b']}\t{s['score']}")

print(f"\n# Total pairs: {len(scores)}", file=__import__('sys').stderr)
