Services Expose Capabilities

Summary

Services should expose useful platform or domain capabilities, not table access or provider clients disguised as application code.

Problem

If every API route, job, or UI workflow reaches into persistence or providers directly, behavior is duplicated and future changes require broad edits.

Principle

Put reusable behavior behind service functions, classes, or packages with clear ownership. Let callers ask for capabilities, not implementation details.

Platform Shape

The architecture docs describe services as the internal capability layer. The service-category reference classifies operational state machines, lakehouse/data services, execution services, ops support, shared capability services, bounded domains, and domain job helpers.

Source Evidence

  • docs/reference/architecture.md
  • docs/reference/service-package-categories.md
  • services
  • docs/engineering/reference/service-package-categories.md
  • docs/engineering/concepts/messy-edge-typed-inside.md