Complexity: M
Scope
Greenfield FastAPI service at services/grader/, following the services/petdata/ pattern:
uv-managed, src/grader/ layout.
- Dockerfile and Docker Compose wiring (part of the one-command local stack).
- Config module with env prefix
GRADER_.
- Health endpoint.
- structlog JSON logging.
- OpenTelemetry API instrumentation (API only, no vendor SDKs).
/llms.txt via fast-llms-txt.
- A
CLAUDE.md with build/test commands.
- FastAPI title "Profile Grader".
Out of scope
Dependencies
Acceptance criteria
Spec: docs/planning/profile-grader-integration-spec.md (Section 8, T1). Epic: #292.
Standalone services/grader/ per resolved decision D1; naming per D4.
Complexity: M
Scope
Greenfield FastAPI service at
services/grader/, following theservices/petdata/pattern:uv-managed,src/grader/layout.GRADER_./llms.txtviafast-llms-txt.CLAUDE.mdwith build/test commands.Out of scope
Store+ Alembic migration + org scoping #296).Dependencies
Acceptance criteria
docker compose upstarts the service;GET /healthreturns 200.GET /llms.txtreturns 200 with a non-empty body.uv run pytestcollects and passes (a smoke test asserting the app boots).ruff check,ruff format --check,bandit -r src/,mypy src/all exit 0.Spec:
docs/planning/profile-grader-integration-spec.md(Section 8, T1). Epic: #292.Standalone
services/grader/per resolved decision D1; naming per D4.