Why this matters
Improves cohesion, reuse, and test coverage.
Move complex domain calculations out of controllers/handlers into services or private helpers.
Improves cohesion, reuse, and test coverage.
Side-by-side examples engineers can pattern-match during review.
public Response create(){ /* validate, compute, persist, notify */ }public Response create(){ var order = service.create(cmd); return ok(order); }controller does all workcontroller delegates to serviceFrom the same buckets as this rule.
For changes that affect architecture, data models, external APIs, security posture, deployment topology, or cost (>10%), create an ADR in docs/adr/ using the standard template (Context, Decision, Consequences) and link the PR and issue IDs.