Files
openapi/cloud
zeekayandHanzo Dev d4c7dbd371 spec: delete the 18 products authored here and served nowhere
Each product below was probed on its OWN authored routes, at api.hanzo.ai and
at the hostname this repo claimed for it, and every one answered a route-level
404 — the router's plaintext "404 page not found", not an empty result from a
live handler. hanzoai/cloud's openapi.yaml does not own them either.

Authoring a route nothing serves is not a harmless placeholder. hanzoai/cli's
genspec refutes an authored operation only where the live route table OWNS its
product, so a product the router has never heard of is refuted by NOTHING: it
survives every gate and ships as a `hanzo` command, an SDK method, and a
SKILL.md under /.well-known/agent-skills telling an agent to call a dead
endpoint — skills.py has no liveness filter at all. Annotating the spec
UNSERVED was the previous answer; no generator reads a comment.

    product          paths   ops   source removed
    chat               171   206   chat/
    nexus              150   150   nexus/
    flow                87   120   flow/
    auto                50    69   auto/
    console             43    67   console/
    paas                28    42   paas/
    mq                  28    41   mq/
    engine              22    35   engine/
    db                  17    30   db/
    pubsub              19    29   pubsub/
    registry            13    22   registry/
    did                 10    14   did/
    stream               8    13   stream/
    guard                5     7   guard/
    chat-docs            1     1   path in cloud/
    index-docs           1     1   path in cloud/
    agent-bindings       1     1   path in visor/
    sdk                  1     1   /v1/sdk/secrets in kms/
    TOTAL              655   849

paas is also a standing ruling: paas and platform were two names for one deploy
plane, and /v1/platform is the one that answers. It moves to `collapsed:` in
capabilities.yaml pointing at platform.

chat needed a scalpel rather than a verdict, because the GATEWAY serves
inference under /v1/chat/. All 157 /v1/chat/* paths in the master were probed
individually (GET for reads, POST + {} for writes); 180 of 181 requests
returned the plaintext route-miss. Exactly one answered: POST
/v1/chat/completions, 401 with a JSON body. That operation is authored by ai/,
not chat/ — so it survives untouched and chat/ goes whole. The 15 bare
/oauth/{provider} paths chat/ also authored return 200 HTML from the marketing
SPA catch-all (/__total_nonsense_xyz__ returns the same page), so they were
never API routes, and never under /v1/ either.

Removing /v1/sdk/secrets orphaned kms's entire components.schemas
(SdkEnvelope, SdkEnvelopeIdentity, Error — reachable from no surviving path), so
it goes with the operation instead of shipping as three dead models in every
SDK. kms itself is untouched and live: /v1/kms/secrets answers 403.

Unchanged and verified alive at the edge: audio, completions, embeddings,
images, messages, models, router, rerank, and /v1/chat/completions. The master
goes 1787 -> 1132 paths (2368 -> 1519 ops) and the removed set is exactly the
products above — no other path key moved. A product returns to this repo the
day it is actually served.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-30 20:51:08 -07:00
..