Files
amare/openspec/specs/health-check/spec.md

43 lines
1.8 KiB
Markdown

# health-check Specification
## Purpose
Expose a public `GET /up` healthcheck that responds quickly and without authentication, exposes no secrets, and fails when the application cannot boot, so orchestrators and CI can verify availability.
## Requirements
### Requirement: Public health endpoint responds without authentication
The system SHALL expose `GET /up` as a public healthcheck endpoint that does not require authentication.
#### Scenario: Application is healthy
- **WHEN** a client sends `GET /up` while the application is running normally
- **THEN** the system responds with HTTP 200 in a timely manner
#### Scenario: Health endpoint exposes no secrets
- **WHEN** a client sends `GET /up`
- **THEN** the response MUST NOT include credentials, tokens, stack traces, or environment secrets
### Requirement: Health endpoint reflects application failure
The system SHALL return a failure status when the application cannot initialize properly.
#### Scenario: Application cannot boot
- **WHEN** the application fails to boot due to misconfiguration or missing dependencies
- **THEN** the health endpoint MUST NOT return HTTP 200
### Requirement: Staging health and smoke use the public /up endpoint
Staging healthchecks and post-deploy smoke MUST call `GET /up` without authentication and MUST treat a non-200 response as deployment failure (SPEC §15.5, §16.2). The health response MUST NOT expose secrets.
#### Scenario: Staging healthcheck probes /up
- **WHEN** Dokploy or the container runtime evaluates application health after deploy
- **THEN** it MUST request `/up`
- **AND** MUST require HTTP 200 before marking the service healthy
#### Scenario: Smoke failure on /up fails the deploy gate
- **WHEN** post-deploy smoke requests `/up` and receives a non-200 response
- **THEN** the staging promotion MUST be considered failed