/ and /disease/{slug}./mission/{id}. Refreshes every 30 min.api.py_funded_mission_spotlight_html(db, disease_slug=None) — helper at ~line 30198.
missions WHERE budget_tokens > 0 ORDER BY budget_tokens DESC LIMIT 4.disease_slug narrows results by name/description/domain ILIKE match.artifacts WHERE mission_id = X first, then domain-keyword fallback.agent_contributions JOIN hypothesis_missions for this mission.id="funded-missions-spotlight" for JS targeting.GET /api/funded-missions?disease=<slug> — at ~line 27004.
{"html": "<fragment>", "ts": <epoch>} for 30-min client refresh./) — funded_missions_html inserted between preprint strip and top-10 spotlight.Disease page (/disease/{slug}) — disease_funded_missions_html inserted at top of right sidebar, before challenges. JS 30-min refresh uses the slug.
setInterval(refresh, 1800000).el.outerHTML with the new HTML fragment._funded_mission_spotlight_html helper function./api/funded-missions endpoint.budget_tokens > 0), deadline countdown working.missions table has id, name, budget_tokens, deadline, status, color, icon, description, domain — all columns queried in the helper are present.artifacts table has is_latest, mission_id, effective_priority, quality_score — all columns used in lead-artifact query are present._funded_mission_spotlight_html(db) returns 4877-char valid HTML fragment with 4 funded-mission cards.SELECT id, name, budget_tokens, deadline FROM missions WHERE budget_tokens > 0 ORDER BY budget_tokens DESC LIMIT 4 returns 4 funded missions (rescue-c02bb2a36184, mission-017a1788a240, rescue-6a722d4abf29, rescue-369f415e5fdb).information_schema.columns: missions (budget_tokens, deadline, color, icon, domain), artifacts (mission_id, is_latest=integer, effective_priority), agent_contributions (hypothesis_id), hypothesis_missions (hypothesis_id, mission_id), agent_registry (id, name, icon, color).