[Repo Manager] This issue is already resolved. Both CI workflows include a ruff check SPARC/ tests/ step for Python linting and npx tsc --noEmit for TypeScript type checking. Closing as complete.
[Repo Manager] This issue is already resolved. Both .gitea/workflows/build.yaml and .gitea/workflows/test.yaml include a pytest step that runs python3 -m pytest tests/ -v --tb=short -x.…
[Repo Manager] This issue is already resolved. frontend/package-lock.json exists in the repository. CI workflows use npm ci which relies on it. Closing as complete.
[Repo Manager] This issue is already resolved. analyzer.py:analyze_single_patent() checks if the PDF exists on disk, and if not, looks up the cached PDF link from the database and downloads it…
[Repo Manager] This issue is already resolved. Patent.patent_id in SPARC/types.py is annotated as str, not int. Closing as complete.
[Repo Manager] This issue is already resolved. SPARC/config.py reads SERP_CACHE_TTL_HOURS from the environment (default 24 hours). Closing as complete.
[Repo Manager] This issue is already resolved. SPARC/config.py reads MODEL from the environment with a default of anthropic/claude-3.5-sonnet. The model is used throughout the analyzer and…
[Repo Manager] This issue is already resolved. All Python modules (analyzer.py, serp_api.py, llm.py, webhooks.py, scheduler.py) use logging.getLogger(__name__) and the logger…
[Repo Manager] This issue is already resolved. Rate limiting is implemented using slowapi in api.py: /auth/register is limited to 5/minute, /auth/login to 10/minute, with a proper 429…
[Repo Manager] This issue is already resolved. Job state is persisted in PostgreSQL via db.create_job(), db.get_job(), db.update_job(), and db.list_jobs(). The lifespan handler marks stale…