spec(o11y): resync to flat version-less live surface + add SuperAdmin VM proxy

Reconcile o11y/openapi.yaml to the live cloud routes in
hanzoai/cloud/clients/o11y (scope.go + query.go + vmproxy.go + event_ingest.go).
The prior spec modelled a fictional Loki/Tempo/Grafana surface (logs/query,
logs/push, logs/tail, series, labels, traces, dependencies, channels,
dashboard/rule CRUD) never served at these flat paths; the o11y subsystem also
collapsed 5 registrations to one o11y concept.

Now exactly the live public surface (12 flat, version-less paths — no nested
/v1/o11y/api/vN/* or /v1/o11y/vN/*):
- POST /v1/o11y/query, /v1/o11y/query_range  (composite builder query; was GET PromQL)
- GET  /v1/o11y/logs, /metrics, /status       (tenant-scoped, org-pinned reads)
- GET  /v1/o11y/vm/query, /vm/query_range      NEW — SuperAdmin VictoriaMetrics
       proxy (query allowlisted to up/sum(up)/count(up); Prometheus envelope verbatim)
- GET  /v1/o11y/services, /dashboards, /rules, /health  (o11y runtime)
- POST /v1/o11y/ingestion                      (LLM-obs event ingest)

Schemas grounded in the Go response structs. hanzo.yaml regenerated via
merge.py: 68 services, 1797 paths (-10 fictional o11y paths).

Co-authored-by: Hanzo Dev <[email protected]>
This commit is contained in:
2026-07-10 16:04:08 -07:00
co-authored by Hanzo Dev
parent c4c7e42e36
commit 5dbcba94c3
3 changed files with 859 additions and 2545 deletions
+32
View File
@@ -2,6 +2,38 @@
## v1.0.0
### 2026-07-10 — o11y resynced to the flat, version-less live surface
Reconciled `o11y/openapi.yaml` to the live cloud routes in
`hanzoai/cloud/clients/o11y` (`scope.go` + `query.go` + `vmproxy.go` +
`event_ingest.go`). The prior spec modelled a fictional Loki/Tempo/Grafana
surface (LogQL `logs/query`, `logs/push`, `logs/tail`, Prom `series`/`labels`,
`traces`, `dependencies`, notification `channels`, dashboard/rule CRUD) that
was never served at these flat paths. The o11y subsystem also collapsed from
five registrations to one `o11y` concept; the spec now reads as a single `O11y`
surface (one tag).
The spec is now exactly the live public surface (12 flat, version-less paths —
no nested `/v1/o11y/api/vN/*` or `/v1/o11y/vN/*`):
- `POST /v1/o11y/query`, `POST /v1/o11y/query_range` — the one canonical
composite builder query (was wrongly `GET` PromQL); the upstream engine
version stays internal, never in the route.
- `GET /v1/o11y/logs`, `/v1/o11y/metrics`, `/v1/o11y/status` — tenant-scoped,
org-pinned reads (product logs, RED + LLM usage, live service health) with
schemas grounded in the Go response structs.
- **`GET /v1/o11y/vm/query`, `GET /v1/o11y/vm/query_range`** — NEW. The
SuperAdmin-only VictoriaMetrics read proxy backing the platform
infrastructure-health board; `query` allowlisted to `up`/`sum(up)`/`count(up)`,
returning the native Prometheus envelope verbatim.
- `GET /v1/o11y/services`, `/v1/o11y/dashboards`, `/v1/o11y/rules`,
`/v1/o11y/health` — served by the embedded o11y runtime.
- `POST /v1/o11y/ingestion` — native-Go LLM-observability event ingest
(traces/observations/scores).
`hanzo.yaml` regenerated via `merge.py`: 68 services, 1797 paths (−10 from the
removed fictional o11y paths).
### Canonical capability manifest + category grouping
- Added `CAPABILITIES.md` — the authoritative index of every public
+362 -1284
View File
File diff suppressed because it is too large Load Diff
+465 -1261
View File
File diff suppressed because it is too large Load Diff