Skip to content

T1: Scaffold services/grader/ to the tech-stack standard #293

Description

@ckrough

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

  • docker compose up starts the service; GET /health returns 200.
  • GET /llms.txt returns 200 with a non-empty body.
  • uv run pytest collects and passes (a smoke test asserting the app boots).
  • ruff check, ruff format --check, bandit -r src/, mypy src/ all exit 0.
  • Logs emit as single-line JSON (a captured log record parses as JSON).

Spec: docs/planning/profile-grader-integration-spec.md (Section 8, T1). Epic: #292.
Standalone services/grader/ per resolved decision D1; naming per D4.

Metadata

Metadata

Assignees

Labels

featureNew functionalitymodule:graderProfile Grader service (services/grader)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions