Two workflow fixes:
- ci.yml: add explicit `pip install ruff` before lint step; also add
freeze/** to push trigger so RC branches run CI
- mirror.yml: rename GITHUB_MIRROR_TOKEN → GH_MIRROR_TOKEN to match
org-level secret; Forgejo reserves the GITHUB_* prefix so that name
was silently shadowed, causing mirror pushes to fail with auth errors
Backend: add apt-get install libsqlcipher-dev before pip install so
pysqlcipher3 builds in the runner image.
Frontend: prep.test.ts was missing a qa mock (fetchFor now calls 5
endpoints in parallel; tests only mocked 4 — 5th returned undefined,
threw in catch, research.value never set). survey.test.ts: analyze()
was refactored from sync-result to async-task+poll; update test to
mock POST then poll completion.
Also remove Classic UI (Streamlit) button from AppNav — Streamlit is
deprecated and the button caused an unrecoverable redirect loop.