Resolved: check_jwt_secret() in auth.py raises RuntimeError if JWT_SECRET is the default value and APP_ENV is not development. Called at startup in the FastAPI lifespan.
Closing as resolved --…
Resolved: CORS origins are configurable via the CORS_ORIGINS environment variable (comma-separated) in SPARC/config.py, defaulting to localhost dev origins. Documented in .env.example.
Closing as…
Resolved: docker-compose.yml uses env var references instead of hardcoded credentials. .env.example documents the required values.
Closing as resolved -- the implementation is merged into main.
Resolved: auth.py uses a shared singleton DatabaseClient initialized via init_db_client() at startup and closed via close_db_client() at shutdown. No per-call instantiation. Merged via PR…
Resolved: Batch job state is persisted in PostgreSQL via db.create_job, db.update_job, db.get_job, and db.list_jobs. Stale jobs are marked as failed on startup.
Closing as resolved -- the…
Resolved: Rate limiting is implemented using slowapi. /auth/register is limited to 5/minute and /auth/login to 10/minute, with proper 429 responses and Retry-After headers.
Closing as resolved --…
Resolved: JWT authentication tests exist in tests/test_auth.py (302 lines) covering the full auth flow. Additional security tests in tests/test_security.py.
Closing as resolved -- the implementati…
Resolved: All modules (analyzer.py, serp_api.py, llm.py) use logging.getLogger(name) with structured logging. LOG_LEVEL env var is supported. Merged via PRs #29 and #54.
Closing as resolved…