`info.description` claimed "Generated from the live router — every operation
below is a route the unified cloud binary actually serves." No producer can make
that claim.
There is no unified cloud binary. There is a light host that mounts no subsystem
and 116 app binaries that each project their own router when they are BUILT;
what api.hanzo.ai serves is the weave of those projections (openapi.MountFleet),
so nothing in production reads a live router and the artifact is only as fresh
as the last `make -f mk/fleet.mk describe-apps`. It shipped stale: one binary at
v1.801.350 answers /v1/billing/gpu/eligibility while publishing
/v1/billing/gpu-eligibility, because the rename commit did not regenerate the
subset.
A false provenance is worse than a missing one, because it is READ. hanzoai/cli's
genspec quotes this exact sentence as the correctness argument for dropping
operations from its capture — "a route that is not mounted cannot appear in it".
Every projection downstream inherits whatever it claims: eight SDKs, the MCP tool
list, the CLI, the docs.
It now claims what is true and no more — each operation is a route the subsystem
that publishes it registered — and the package doc names the two gaps no reading
of any router closes: a subset older than its code (surface-check refuses that),
and a front door that hands the path to somebody else (only a probe of the
deployed host sees that; it was giving all 23 pricing paths to an edge worker).
plugin/{kafka,zen}/openapi.json carry the same one-line change applied by hand:
both are exempt from describe-apps (kafka fails closed without a live broker, zen
is coresident and has no standalone mount), so no generator can currently produce
them. Both publish zero paths.
Co-authored-by: Hanzo Dev <dev@hanzo.ai>
9.3 KiB
9.3 KiB