Services start ready and shut down gracefully
rel-003
Intent
Avoid taking traffic before the service is ready and avoid dropping in-flight work on normal shutdown.
Applicability
Applies to service bootstrap, readiness signaling, signal handlers, and shutdown paths.
What to inspect
Traffic acceptance, readiness gates, signal handling, in-flight drain logic, and shutdown timeouts.
Pass criteria
The process becomes routable only after critical startup completes and drains or cancels in-flight work deliberately on shutdown.
Fail criteria
The diff accepts traffic before readiness or exits abruptly on normal deploy or scale-down signals.
Do not flag
One-shot batch tools and scripts that do not serve traffic.
Confidence guidance
HIGH when readiness or shutdown behavior is directly visible. MEDIUM when hooks are partly framework-owned. LOW when lifecycle ownership is hidden.
Remediation
Gate readiness on real startup completion and handle termination by draining or canceling work deliberately.
Pass example
<-ready
server.ListenAndServe()
Fail example
go initCriticalDependencies()
server.ListenAndServe()