Open question leaderboards rot when answered or obsolete questions linger at
the top. Today, open_question.status defaults to open and there is no
mechanism that demotes or retires a question once a hypothesis has been
strongly confirmed, a paper has answered it, or its importance_elo has
gone untouched for a long time. Implement a closure-detection +
decay-then-retire engine so the per-field leaderboards (queried by
api.py line ~55823 and field_leaderboard() in
scidex/agora/open_question_tournament.py:600) stay focused on
genuinely-open frontier questions.
scidex/agora/open_question_decay.py (≤450 LoC) with twodetect_answered(batch_size=50) andapply_inactivity_decay().
open_question with status='open':artifact_links ofcomposite_score>=0.85 AND hasevidence_count>=5, mark question status='likely_answered' andquestion_closure_review with themetadata.answers_question_ids arraystatus='answered' directly.persona_id) leave acomment_type='resolved' on the question's discussionstatus='answered'.
open_question with status='open':updated_at < NOW() - INTERVAL '90 days' AND no Elo match injudge_elo_matches for this entity in 60 days, multiplyimportance_elo by 0.97 per 30-day idle window (capped −150 fromopen_question_decay_eventsstatus='answered' or status='retired' questions arefield_leaderboard(); modify SQL inscidex/agora/open_question_tournament.py:600 to filterWHERE oq.status IN ('open','active').
status='answered' question with link_typecounter_evidence_for, automatically re-open withstatus='reopened', add a decay_event row, and notify via themigrations/openq_decay_events.sql createsopen_question_decay_events(id, question_id, event_type, old_elo,
new_elo, reason, created_at).
data/scidex-artifacts/reports/openq_decay_<utc>.json.open_question distribution by status (SELECT status,answers_question_ids JSONB column on artifacts (or store inscidex-openq-decay.timer) runningpython -m scidex.agora.open_question_decay --all.
field_leaderboard() and the open-questions list endpoint atapi.py:8646 to apply the new status filter.47ee9103-ccc0 — Elo tournament (importance_elo writes)b307ad54-a95-...-mine-from-wiki-pages — populates the population thatCommitted: 63d3eff0b
Changes made:
migrations/131_add_open_question_decay_events.py):open_question_decay_events table with columns:id, question_id, event_type, old_elo, new_elo, reason, metadata, created_atanswers_question_ids JSONB column to artifacts tablelink_type constraint on artifact_links to includeanswered_by and counter_evidence_forscidex/agora/open_question_decay.py, 861 LoC):detect_answered(batch_size=50): Processes open questions through threeapply_inactivity_decay(): Elo decay at 0.97x per 30-day idle window,reopen_on_counter_evidence(): Re-opens answered questions whenretire_stale_answered(): Retires questions answered >180 daysrun_decay_cycle(): Full cycle with optional backfill reportpython -m scidex.agora.open_question_decay --backfillfield_leaderboard() in open_question_tournament.py:artifacts table directly instead of knowledge_gapsmetadata->>'status' IN ('open', 'active', 'reopened')status field to returned leaderboard entriestests/test_open_question_decay.py, 18 tests):field_leaderboard('genes', limit=5) returns correctly filtered results