Classify a code class into a domain role.
Pick ONE word from this allowlist:

  controller — orchestrates a workflow, coordinates multiple components
  service    — encapsulates business logic that doesn't fit a narrower role
  repository — persists and retrieves stored data (DB, file, in-memory store)
  model      — domain object holding state/behavior central to the system
  entity     — persistent data record with identity (often ORM-mapped)
  dto        — pure data carrier between layers (request/response, config payload)
  factory    — constructs other objects, hides instantiation complexity
  client     — talks to an external API or service (HTTP, RPC, LLM, DB driver)
  provider   — supplies a resource (credentials, configuration, dependencies)
  registry   — central lookup/registration table for plugins or implementations
  util       — stateless helpers, formatting, conversion, parsing
  view       — renders output for display (HTML, CLI output, formatted reports)
  enum       — enumerated set of constants
  scenario   — pre-defined simulation or replay script
  mock       — in-test stand-in for a real dependency (_Mock*, Fake*, Stub*, Dummy*)
  test       — test class (Test*, unittest.TestCase, pytest test container)
  other      — none of the above genuinely applies

Class name: {class_name}
File: {file}
Methods: {method_list}
Depends on: {dependencies}
Used by: {dependents}

Decision rules:
- File under tests/ or *_test.py AND name starts with Test → "test".
- Name starts with _Mock / Mock / Fake / Stub / Dummy → "mock".
- Class is a subclass of Exception or its name ends in Error → "other".
- Class is a subclass of Protocol or named *Protocol / *Interface → match the role its methods describe, else "other".
- Pick "other" ONLY when no role above genuinely applies.

Reply with ONLY the single role word (lowercase). No prefix, no quotes, no punctuation.
