/status.json predates QueryService and stays around as a narrow
surface for exactly the things that want a plain unauthenticated GET: a
Kubernetes liveness probe, a CI smoke test.
1. What it's for now
It's legacy in the sense that it isn't where new integration work should
point -- the dashboard itself reads from ListStatus on QueryService
(see Command and query service),
not from /status.json. What still uses it: Kubernetes probes and the
smoke test that runs against a kind cluster in CI, both of which just want
"is this alive and what does it currently see" without a JSON-RPC call
shape.
2. Where it lives
Served on the same -listen port as everything else -- empty -listen
disables it along with the dashboard and /metrics. The same snapshot
shape backs -snapshot-out, the file jaque writes at shutdown with its
final status.
For anything beyond a liveness check -- filtering by host, reading
history, calling a command -- use QueryService and CommandService
instead; they're the maintained, structured surface.
3. Security considerations
/status.json is never gated by -api-token -- there is no way to
require a token on it, unlike CommandService (see Command and query
service, section 5, and CLI
flags, section 9). Anyone who can reach
-listen can read the full current status snapshot: every object's
state, output and acknowledgement/downtime detail. That is the same
exposure QueryService's reads already carry by design; /status.json
does not widen it, but it is also not narrowed by anything -api-token
does elsewhere on the same port.