Skip to content

feat(health): probe and serve axon + prometheus endpoint reachability — thousands of endpoints we publish and have never checked #11071

Description

@JSONbored

Parent: #11066. Producer: the prober container class.

The largest untouched observable surface we have

We already serve ip:port for every neuron through get_subnet_serving and
get_chain_prometheus. None of it has ever been probed. The reason is precise and not a
priority call: src/health-probe-core.ts:113 allowlists exactly http, https, ws, wss, and
axons listen on arbitrary ports.

So the registry publishes an address and can say nothing about whether anything is listening at it —
which, for a registry whose product is "how to call this subnet", is the gap closest to the core
claim.

Scope

  • A new operational surface kind for axon/prometheus endpoints, added to the probe-eligible set
  • TCP connect result and connect latency per endpoint
  • Where the endpoint speaks a known protocol, a protocol-level check rather than a bare connect
  • Aggregate per subnet: what fraction of registered UIDs are actually reachable

The number this makes serveable

"This subnet has 256 registered UIDs and 31 reachable axons" is a fact about a subnet that nothing
in the ecosystem publishes, and it is directly comparable across subnets. Pair it with the existing
metagraph data and it prices participation honestly.

Care required

These are third-party hosts and we are opening thousands of connections. Cadence, concurrency and
per-host backoff need stating up front, and the existing SSRF guards (src/health-probe-core.ts:56-160)
must apply to raw TCP targets too — an ip:port from chain data is caller-influenced input and a
private-range address is a probe we must refuse.

Acceptance

  • Axon reachability probed and served for at least one subnet end to end
  • SSRF guards apply to TCP targets; private, loopback and metadata ranges refused
  • Per-subnet reachable-fraction served and comparable across subnets
  • A documented per-host rate discipline
  • Unreachable and never-probed are distinguishable, per absent is null

Metadata

Metadata

Assignees

Labels

backendmaintainer-onlyOwner-only work — yields no Gittensor points.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions