api: the subsystem is zt — a subsystem name IS an address

manifest.Apps "zero-trust" -> "zt", and plugin/zero-trust -> plugin/zt.

This is the only hyphenated subsystem name in the fleet, and a subsystem name
is not a label: serve.go:440 mints GET /v1/<name>/health for every subsystem,
so `zero-trust` was publishing a live compound address, /v1/zero-trust/health.
subsystem.go:78 derives the default prefix from the same string. The name is
api surface whether or not anyone meant it to be.

`zt` is not an abbreviation invented here — it is what the code has called this
thing all along. The package is apps/zt, the Mount is zt.Mount, the upstream
service is hanzoai/zt. The manifest row was the only place still spelling it
out, and it forced a translation table to exist: gen-app-cmds carried a pkgOf
entry "zero-trust"→"zt" purely to get from the app name back to the package it
lives in, and openapi/synopsis.go and mk/plugin.mk each documented the same
exception. All three lose it — the name-derived guess is now simply right, and
one fewer name means one fewer mapping to keep true.

OPERATOR-VISIBLE, and deliberate: the per-app env overrides are derived from
the app name, so CLOUD_ZERO_TRUST_ADDR / CLOUD_ZERO_TRUST_BIN become
CLOUD_ZT_ADDR / CLOUD_ZT_BIN. Anything setting the old names must move.
TestPluginResolution asserts the new one.

The four served routes do not move — /v1/networks[/:id], /v1/mesh/services and
/v1/edge/nodes were never under the subsystem's name, which is what
plugin/zt/main.go's comment exists to explain. Nothing in openapi.yaml changes:
the health routes this name mints are not in the projection.
This commit is contained in:
antje
2026-07-31 17:15:00 -07:00
parent d3a9e9d062
commit a49aec756e
3 changed files with 0 additions and 0 deletions