HydraIssues

hydraneck: documented diagnosis values are wrong (`not-on-network` and `unmanaged` do not exist)
open unclassified Project: hydra Reporter: 11 Jul 2026 09:00

Description

`pkg/scanner/scanner.go:334-346` is the single source of truth for the per-node diagnosis, and it emits exactly four values:

| | network online | network offline |
|---|---|---|
| **agent online** | `healthy` | `network-issue` |
| **agent offline** | `agent-down` | `offline` |

But the docs list a different, partly fictional set:

- `CLAUDE.md:62-68` — claims `healthy | agent-down | not-on-network | unmanaged`
- `docs/runbooks/runbook.md:134-138` — repeats the same wrong four

**`not-on-network` and `unmanaged` are not diagnosis values anywhere in the codebase.** The real fourth state, `network-issue` (agent reporting but the router does not see it), is documented nowhere. This actively misleads anyone triaging from the runbook.

The same runbook also documents three endpoints that **do not exist** in `pkg/api/server.go`: `/api/v1/nodes/{id}/connectivity` (`:98`), `/api/v1/nodes` (`:105`), and `/api/v1/venues/{id}/tunnels` (`:181`, `:189`).

### Also worth documenting while fixing

`NetworkOnline` on MikroTik venues is derived from **DHCP lease status == "bound"** (`pkg/mikrotik/rest/client.go:164`), not from ARP or ICMP — there is no ping or ARP read anywhere in the repo. A bound lease survives a power-off for the remainder of the lease. So `agent-down` means *"lease still bound, agent silent"* — strongly suggestive of a live machine with a dead agent, but **not proof**. The runbook should say so plainly, because operators will reasonably read `agent-down` as "the box is definitely up".