Release 0.2.3: /api/health framework dependency for flotilla
Adds an unauthenticated GET /api/health endpoint returning JSON
{version, status} for ops tooling. version is the running framework
version (read from VERSION at process start, cached as a module-level
constant in backend/app/health.py); status is "ok" with HTTP 200 in
v1, with the "degraded" / 503 path reserved in the response shape for
future degradation conditions.
The structural value is the version-match check: a deploy control
panel (flotilla, in particular) polls the endpoint after
`systemctl restart` reports active and verifies the returned version
equals the tag just deployed, catching the failure mode where a
restart did not pick up the new code.
Patch-shaped per SPEC.md §20.2 — no operator action required, no env
vars, no schema changes. The CHANGELOG carries one MAY-language step
naming the optional monitoring affordance.
SPEC.md §17 now lists the endpoint; the §19.2 candidate-topic entry
records the topic's settlement (version source = VERSION file at
import time; degraded = reserved v1 scaffold; CHANGELOG = patch shape
with MAY-language).
Tests: backend/tests/test_health.py (3 tests — 200/payload shape,
unauthenticated, version-matches-VERSION). Full suite 128/128 green.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -23,6 +23,36 @@ skip versions are the composition of each intervening adjacent
|
||||
release's steps in order — no A-to-B path is pre-computed beyond
|
||||
that.
|
||||
|
||||
## 0.2.3 — 2026-05-26
|
||||
|
||||
**Patch — no operator action required.** Rebuild and restart per the
|
||||
routine deploy steps; no `.env` changes, no schema changes, no
|
||||
behavior changes a deployment would notice in steady state beyond
|
||||
the new endpoint below.
|
||||
|
||||
### Added
|
||||
|
||||
- **`GET /api/health`** — an unauthenticated probe returning JSON
|
||||
`{version, status}` for ops tooling. `version` is the running
|
||||
framework version (the contents of `VERSION` per §20.1, read at
|
||||
process start and cached as a module-level constant in
|
||||
`backend/app/health.py`); `status` is `"ok"` with HTTP 200 in
|
||||
v1. The `"degraded"` / HTTP 503 path stays reserved in the
|
||||
response shape so a later release can wire real degradation
|
||||
conditions without breaking the contract. The version-match
|
||||
check is the structural value — a deploy-control-panel polling
|
||||
the endpoint after `systemctl restart` catches the failure mode
|
||||
where a restart did not pick up the new code. See `SPEC.md` §17
|
||||
and the §19.2 settlement.
|
||||
|
||||
### Upgrade steps (from 0.2.2)
|
||||
|
||||
1. The deployment **MAY** configure its monitoring (Pingdom,
|
||||
Healthchecks.io, the flotilla deploy control panel, etc.) to
|
||||
probe `/api/health` and compare the returned `version` against
|
||||
the tag last deployed. The endpoint is unauthenticated by
|
||||
design — no PII in the payload, no session required.
|
||||
|
||||
## 0.2.2 — 2026-05-26
|
||||
|
||||
**Patch — no operator action required.** Rebuild the frontend and
|
||||
|
||||
Reference in New Issue
Block a user