- backup service: nightly pg_dump with retention, recorded as a run
- GET /api/v1/status/sources: 503 when a scheduled source or the backup
missed its last two slots (for Uptime Kuma)
- worker logs to ${DATA_DIR}/logs, so they survive redeploys
- procurement: reject implausible award dates (1900, contract end dates),
skip placeholder contractors, credit framework agreements to the BBG
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every daily and weekly source missed two days in November 2026: Procrastinate
skips a periodic slot that is more than ten minutes overdue, and jobs of
killed workers stayed "doing" forever. Every ten minutes the watchdog fails
jobs of dead workers, closes abandoned run records and defers any scheduled
task whose last slot passed without a run.
Also: EP vote references of joint motions and Council documents, and the
loader now refreshes a vote's reference and stage.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Initial import of Politrack, a self-hosted service that tracks Austrian
politicians from federal to municipal level - roles, votes, money flows,
statements, meetings, social media and legal proceedings - with every claim
linked to its sources.
- backend: FastAPI + Postgres/pgvector; adapter framework (fetch -> parse ->
load -> enrich) with robots.txt/TDM-aware fetching, a raw-response archive
for reparsing, and a claim/evidence model with corroboration
- sources: Parliament, Wikidata, EU Parliament/Commission, Council of
Ministers, Rechnungshof party reports and donations, procurement, RTR media
transparency, political ad libraries, WKStA, news feeds, Wikipedia edits,
Bluesky, Mastodon, public Telegram channels, YouTube and X (official API)
- web: Next.js frontend in German and English with typed API client
- mcp: MCP server for AI agents and RAG
- docs: architecture, data model, sources, legal notes, Unraid deployment and
contributor guides; Docker Compose setup for Unraid
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>