Python Services & CLI
Working rules
- Validate external inputs and responses at boundaries; preserve exception causes.
- Keep simple sequential work synchronous. Bound concurrent work, preserve cancellation, and keep task references.
- Give network calls timeouts; retry only failures and operations whose semantics permit it.
- Enforce job idempotency with atomic writes and database constraints.
- Preserve published API behavior and shared migration history.
- Match telemetry to an operational question and verify its output.
Discipline
- Simplicity first -- every change as simple as possible, impact minimal code
- Only touch what's necessary -- avoid introducing unrelated changes
- No hacky workarounds -- if a fix feels wrong, step back and implement the clean solution
- Before adding a new abstraction, verify it appears in 3+ places. If not, inline it.
- Verify: see Verify section below -- pass all checks with zero warnings before declaring done
- Coverage target: 80%+ (
uv run pytest --cov --cov-report=html)
Verify
uv run pytestpasses with zero failuresuv run ruff check .passes with zero warningsuv run ty check .passes with zero errors- Coverage target: 80%+ (
uv run pytest --cov)
Task-specific references
Read the relevant reference before implementing or reviewing the matching behavior:
- For packaging, environment configuration, CLI setup, or pytest behavior: tooling-and-tests.md.
- For asyncio, background jobs, retries, pooling, timeouts, or health checks: concurrency-and-resilience.md.
- For APIs, validation, errors, migrations, logging, metrics, or traces: service-boundaries.md.
Existing specialized references, when the corresponding topic applies: