[Senate] Site Health Check — Verify All Main Pages Render Correctly
Quest: qe-senate-s
Priority: P80
Status: complete
Goal
Curl all main routes and verify no 4xx/5xx errors. Fix any broken pages found.
Routes to Check
Core navigation: /, /dashboard, /hypotheses, /analyses, /wiki, /exchange, /forge, /atlas, /senate, /demo
Secondary: /showcase, /notebooks, /artifacts, /targets, /agents, /quests, /search, /papers, /resources, /status, /vision, /compare, /leaderboard, /challenges, /missions, /market, /gaps, /graph, /arenas
API endpoints: /api/backup-status, /api/health
Acceptance Criteria
☑ All main routes return 200/301/302
☑ No 5xx errors on any page
☑ Any broken pages fixed
☑ Work log documenting findings
Work Log
2026-04-09 — task:340d5ea2
Phase 1: Core route check (34 routes)
All 34 core/secondary routes return 200:
/, /dashboard, /hypotheses, /analyses/, /wiki, /exchange, /forge, /atlas, /senate, /demo, /showcase, /notebooks, /artifacts, /targets, /agents, /quests, /search, /papers, /resources, /status, /vision, /compare, /leaderboard, /challenges, /missions, /market, /gaps, /graph, /arenas, /agora, /walkthrough, /how.html, /atlas.html, /style.css
Phase 2: Dynamic route check (18 routes)
All dynamic routes return 200:
- 3 hypothesis detail pages (random sample)
- 2 analysis detail pages (random sample)
- 4 senate agent pages (
/senate/agent/theorist, skeptic, synthesizer, domain_expert)
/agents/performance, /entity/APOE, /entity/tau, /wiki/Alzheimer's_disease
/api/health, /api/backup-status, /forge/playground, /demo/showcase, /demo/walkthrough
Phase 3: Random sampling (60 pages)
- 20 random hypothesis pages: 0 failures
- 20 random analysis pages: 0 failures
- 10 random wiki pages: 0 failures
- 10 random artifact pages: 0 failures
- 10 random notebook pages: 0 failures
Phase 4: Deep link extraction from key pagesExtracted and checked all internal links from
/senate (125 links),
/exchange,
/demo,
/forge,
/dashboard,
/hypotheses,
/gaps,
/atlas,
/showcase.
1 broken link found:
/api/code-health-report on /senate page → 404
- Root cause: link pointed to nonexistent endpoint; correct endpoint is
/api/code-health (api.py:3337)
- Fix: Changed
href="/api/code-health-report" to href="/api/code-health" at api.py:26323
Result: All pages healthy. 1 broken link fixed (code health report URL on senate page).
Verification — 2026-04-25 23:35:00Z
Result: PASS
Verified by: claude-sonnet-4-6 via task 340d5ea2-9f9d-4489-abdd-4f3098793f56
Tests run
| Target | Command | Expected | Actual | Pass? |
|---|
| / | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/ | 200/3xx | 302 | ✓ |
| /dashboard | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/dashboard | 200 | 200 | ✓ |
| /hypotheses | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/hypotheses | 200 | 200 | ✓ |
| /analyses | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/analyses | 200 | 200 | ✓ |
| /wiki | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/wiki | 200 | 200 | ✓ |
| /exchange | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/exchange | 200 | 200 | ✓ |
| /forge | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/forge | 200 | 200 | ✓ |
| /atlas | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/atlas | 200 | 200 | ✓ |
| /senate | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/senate | 200 | 200 | ✓ |
| /demo | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/demo | 200 | 200 | ✓ |
| /showcase | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/showcase | 200 | 200 | ✓ |
| /notebooks | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/notebooks | 200 | 200 | ✓ |
| /artifacts | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/artifacts | 200 | 200 | ✓ |
| /targets | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/targets | 200 | 200 | ✓ |
| /agents | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/agents | 200/3xx | 301 | ✓ |
| /quests | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/quests | 200 | 200 | ✓ |
| /search | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/search | 200 | 200 | ✓ |
| /papers | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/papers | 200 | 200 | ✓ |
| /resources | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/resources | 200 | 200 | ✓ |
| /status | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/status | 200 | 200 | ✓ |
| /vision | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/vision | 200 | 200 | ✓ |
| /compare | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/compare | 200 | 200 | ✓ |
| /leaderboard | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/leaderboard | 200 | 200 | ✓ |
| /challenges | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/challenges | 200 | 200 | ✓ |
| /missions | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/missions | 200 | 200 | ✓ |
| /market | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/market | 200 | 200 | ✓ |
| /gaps | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/gaps | 200 | 200 | ✓ |
| /graph | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/graph | 200 | 200 | ✓ |
| /arenas | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/arenas | 200 | 200 | ✓ |
| /api/health | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/api/health | 200 | 200 | ✓ |
| /api/backup-status | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/api/backup-status | 200 | 200 | ✓ |
| /api/code-health | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/api/code-health | 200 | 200 | ✓ |
| /api/code-health-report | curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/api/code-health-report | 404 | 404 | ✓ |
Attribution
The current passing state is produced by:
- The
/senate page at api.py:42393 uses href="/api/code-health" (correct), not the defunct /api/code-health-report
Notes
All 33 tested routes return 200/301/302. No 4xx errors on live routes; the old defunct endpoint /api/code-health-report correctly returns 404 as expected (it was never valid — the fix changed the link on the senate page to point to the correct /api/code-health).