#!/usr/bin/env python3
"""Watchlist diff + scanned-handle diff vs yesterday, plus 14-run trend."""
import json, re, os

RAW = "/home/kiro/trend-engine/trends/x/raw/"
d = json.load(open(RAW + "scan_results_2026-11-09_FULL.json"))
p = json.load(open(RAW + "scan_results_2026-11-08_FULL.json"))
h9, h8 = set(d["handles"]), set(p["handles"])
print("scanned today:", len(h9), "yesterday:", len(h8))
print("ADDED to scan:", sorted(h9 - h8))
print("DROPPED from scan:", sorted(h8 - h9))

# watchlist markdown
md = open(RAW + "rising-accounts.md").read()
found = re.findall(r"@(\w+)", md)
print("\nwatchlist md: @-tokens", len(found), "unique", len(set(found)))
seen, order = set(), []
for h in found:
    if h.lower() in seen: continue
    seen.add(h.lower()); order.append(h)
print("unique handles in md:", len(order))
notscanned = [h for h in order if h not in h9]
print("in md but not scanned:", sorted(notscanned))

# trend
print("\n=== QUALIFYING TREND ===")
import glob
dates = sorted(re.findall(r"scan_results_(\d{4}-\d{2}-\d{2})_FULL", " ".join(glob.glob(RAW+"scan_results_*_FULL.json"))))
for dt in dates[-16:]:
    try:
        j = json.load(open(RAW + f"scan_results_{dt}_FULL.json"))
        rj = set(j["qualifying"][0].keys()) if j["qualifying"] else set()
        print(f"  {dt}: scanned={len(j['handles']):2d} qual={len(j['qualifying']):3d} "
              f"fails={len(j.get('failures',[]))} raw_handles={len(j['raw'])}")
    except Exception as e:
        print(dt, "ERR", e)
