Hanzo CI/CD / cicd (push) Successful in 18s
CI/CD / gate (push) Successful in 18s
CI/CD / containment (push) Successful in 1m13s
CI/CD / image (push) Successful in 18s
CI/CD / rollout (push) Failing after 11s
CI/CD / reach (push) Skipped
CI/CD / fanout (push) Skipped
CI/CD / receipt (push) Failing after 1s
plugin/ai/openapi.json was last written at3b50091c, with go.mod pinned to hanzoai/ai v1.832.10.d5d768f1took v1.832.12 for an unrelated key fix and754fb821took .13; neither regenerated a subset. Since then the published document has been describing a router the binary no longer has. v1.832.12 rewrote the ai door's resource table. Three resources moved address and one was deleted: /v1/ai/applications -> /v1/ai/deployments 8 operations /v1/ai/sessions -> /v1/ai/signin-sessions 7 /v1/ai/users -> /v1/ai/usages/user-names 1 /v1/ai/users/table-infos -> /v1/ai/usages/by-user 1 /v1/ai/permissions deleted 6 The six deleted are GET and POST /v1/ai/permissions and GET, PUT, PATCH and DELETE /v1/ai/permissions/{owner}/{name}. Every handler behind them was an iam.* call to the IAM server — controllers/permission.go held no rows of its own — so the address was a second door onto /v1/iam/permissions, which apps/iam serves and still serves. Upstream deleted the controller with the routes and says so in the same edit. So openapi.yaml has been advertising 23 addresses that answer 404 and hiding 18 that are served: the 17 renamed above plus POST /v1/iam/oauth/device/info, whose prose was written inb5d8f927and has been waiting for a regeneration to reach the document. Every SDK, the CLI's command tree and docs.hanzo.ai are projections of this file, so a client generated from it calls /v1/ai/applications and gets nothing. floor.json comes down by six, which is the act it is designed for: the deletion is upstream, deliberate and already shipped, so the number moves in the commit that carries it rather than being absorbed by a re-measure. paths and operations follow (-1 and -5 — the six net against iam's one), and iam goes up by one. Forty-two other subsets change prose and schema only: a summary now leads with what the operation does rather than with the Go identifier that implements it, and visor's cluster list publishes the degraded field its response type already carried. Nothing in the router changed here. Regenerating a second time reproduces all 119 generated files byte for byte. Co-authored-by: Hanzo Dev <dev@hanzo.ai>