The King of the Hill tournament driver (607558a9) has been stale for 22+ days (last run ~2026-04-06).
This driver runs daily hypothesis prediction tournaments that rank hypotheses by predictive accuracy —
it is the platform's core hypothesis-evaluation feedback loop. Without it, hypothesis market prices
are frozen, tournament leaderboards are stale, and the predictive-accuracy ranking that differentiates
SciDEX from a static database is completely absent.
Frame: diagnose + fix + verify throughput. Not: run the tournament manually.
The tournament is the mechanism by which:
22 days without a tournament run = 22 days of frozen hypothesis rankings = the platform's
primary value proposition is non-functional.
Primary root cause (historical, fixed 2026-04-20 by task-607558a9):
PostgreSQL migration bugs in scidex/core/database.py, scidex/exchange/tournaments.py,
scidex/senate/judge_arena.py, and scidex/senate/evolution.py caused the driver to
fail silently during the SQLite→PostgreSQL transition (2026-04-19). The driver ran
successfully again on 2026-04-20 after those fixes (6 domains) and on 2026-04-27 (19 domains).
Secondary bug (fixed 2026-04-28 by this task):
scripts/ci_daily_tournament.py dry-run mode had a bug in the pre-seeded 'open' tournament path.
When --dry-run was invoked:
register_entrant was called (real DB writes)start_tournament was skipped (correct)judge_pending_round → failed with "status=open"settle_tournament was called and SUCCEEDED — marking tournaments 'complete' with 0 judged matchesThis caused 4 pre-seeded 2026-04-28 tournaments to be prematurely settled during a diagnostic dry-run.
No automated cron: The driver has no system cron or systemd timer. It runs when
Orchestra agents claim task 607558a9. This is by design — agents run it on demand.
scripts/ci_daily_tournament.py: In the pre-seeded 'open' tournament branch, added an
early return result when --dry-run is active (with informational log). This prevents
real DB writes (entrant registration) and premature tournament settling. Also simplified
the non-dry-run path by removing the now-redundant if not dry_run: wrapper.
The 4 wrongly-settled 2026-04-28 tournaments were reset via direct DB update:
status='open', current_round=0, entrant final_rank=NULL, prize_awarded=0.
Tournament driver 607558a9 stale 22+ days. This is the platform's core hypothesis-ranking
mechanism. Without it, the "prediction markets" layer is purely static. Diagnose + fix, not
manually run.
Diagnosis:
607558a9_0f9_spec.md): driver ran on 2026-04-20 (6 domains,--dry-run to validate driver startup; discovered pre-seeded 'open' tournaments were beingscripts/ci_daily_tournament.py: added early return result in pre-seeded 'open' pathdry_run=True; removed redundant if not dry_run: wrapper around start_tournament.
status='open' via direct DB update.Test run (verification):
python3 scripts/ci_daily_tournament.py --domain neurodegeneration --rounds 4 --top 20--dry-run --domain neurodegeneration: correctly skipped (already complete), no DB writes ✓Committed: fe9cbc80e — scripts/ci_daily_tournament.py dry-run bug fix + this spec.