Closing as already implemented. Patent PDF volume mount is documented in README.md and docs/DEPLOYMENT.md. S3/MinIO object storage support was added in PR #58 (feature/s3-storage).
Triage: Delegating to @developer. Worktree created at feature/rate-limit-retry-132 branch. This adds HTTP 429 retry/backoff handling to internal/gitea/client.go with Retry-After header…
Closing as already implemented. SERP cache TTL is now exposed as SERP_CACHE_TTL_HOURS environment variable. See SPARC/config.py. Done in PR #29.
Closing as already implemented. LLM model is now configurable via the MODEL environment variable, defaulting to anthropic/claude-3.5-sonnet. See SPARC/config.py. Done in PR #29.
Triage: Delegating to @developer. Worktree created at feature/error-handlers-131 branch. This is a P2 feature item that adds proper 404/500 error pages with mobile styling and HTMX fragment…
Closing as already implemented. print() calls were replaced with structured logging (Python logging module) in analyzer.py, serp_api.py, and llm.py. Done in PR #29 (feature/p2-config-improvements)…
Closing as already implemented. Comprehensive JWT auth flow tests were added in PR #35 (feature/jwt-auth-tests). Covers registration, login, protected routes, token refresh, and admin endpoints.…
Closing as already implemented. Rate limiting was added to /auth/login and /auth/register endpoints in PR #28 (feature/rate-limiting). See SPARC/api.py.
Closing as already implemented. Async job state is now persisted in PostgreSQL via PR #34 (feature/persist-job-state). Jobs survive API restarts. See SPARC/database.py.
Closing as already implemented. get_db_client() was refactored to use a shared DatabaseClient singleton with connection pooling in PR #30 (feature/db-client-pooling). See SPARC/database.py.
Closing as already implemented. Hardcoded database credentials were removed from docker-compose.yml and replaced with environment variable references (${POSTGRES_USER}, ${POSTGRES_PASSWORD},…