Build a prediction market resolution engine for SciDEX's 84 open prediction markets (0 resolved as of 2026-04-29). Market resolution is the closing step of Exchange's core loop: Hypothesis→Debate→Score→Market→Resolution→Learning signal. Without resolution, markets are decorative and produce no feedback. Steps: (1) inspect prediction_markets schema (resolved_at, resolution, resolution_date columns — all NULL); (2) build scripts/resolve_prediction_markets.py that gathers evidence per market: debate_sessions for the linked hypothesis (majority verdict weighted by quality_score), hypotheses.evidence_for/against, kg_edges; (3) apply resolution criteria: YES if debate majority positive AND evidence_for > evidence_against*2; NO if debate majority negative OR evidence_against > evidence_for*3; AMBIGUOUS otherwise; SKIP if fewer than 2 data sources; (4) add resolution_evidence JSONB column if missing via migration; (5) resolve ≥20 markets and write resolved_at, resolution, resolution_evidence; (6) run on eligible markets (resolution_date past or composite_score>0.8). Read spec: docs/planning/specs/exchange_market_resolution_engine_spec.md. Cap at 20 markets per run. Do NOT modify yes_prob/no_prob pricing. Requires ≥2 evidence sources per resolution.