Skip to content

web: per-node topology auto-detect + per-coin stats seam (D0.2/D0.3) - #324

Merged
frstrtr merged 1 commit into
masterfrom
dashboard/d0.2-d0.3-node-topology-seam
Jun 22, 2026
Merged

web: per-node topology auto-detect + per-coin stats seam (D0.2/D0.3)#324
frstrtr merged 1 commit into
masterfrom
dashboard/d0.2-d0.3-node-topology-seam

Conversation

@frstrtr

@frstrtr frstrtr commented Jun 22, 2026

Copy link
Copy Markdown
Owner

What

Adds GET /api/node_topology — the truthful per-node topology surface for the 6-coin fleet (LTC/DOGE/BTC/DGB/DASH/BCH). Each node runs a different coin set + embedded daemons; the dashboard must reflect that node's real shape, not a hardcoded LTC+DOGE assumption.

D0.2 — auto-detect

rest_node_topology() derives the coin set from live state:

  • keys of the live coin-peer map (an LTC node also runs embedded DOGE, etc.)
  • this node's own chain (m_blockchain), always present
  • primary coin labeled with the real is_embedded()/has_rpc() flags from the connected coin node

No baked-in coin shape.

D0.3 — seam

Optional node_topology_fn provider hook. When the wiring layer registers one it supplies richer per-coin stats (synced flag, per-coin hashrate) and overrides the auto-detect; when unset the auto-detect keeps the endpoint truthful. Clean override-or-detect seam for each coin to feed its own real stats.

Scope / safety

Purely additive — new endpoint + new optional hook, no change to existing endpoints. Web/diagnostic layer only — no consensus, sharechain, or wire change. Fenced to core/web_server.{hpp,cpp}. web_server.cpp.o compiles clean locally.

Follows #304 (un-stub) on the dashboard-steward plan: D0.1 ✓ → D0.2/D0.3 (this) → D-LTC V36 ratchet visibility next.

…D0.2/D0.3)

Adds GET /api/node_topology, the truthful per-node topology surface for the
6-coin fleet (LTC/DOGE/BTC/DGB/DASH/BCH). Each node runs a different coin set
+ embedded daemons; the dashboard must reflect THAT node's REAL shape, not a
hardcoded LTC+DOGE assumption.

D0.2 (auto-detect): rest_node_topology() derives the coin set from live state
-- the keys of the coin-peer map (an LTC node also runs embedded DOGE, etc.)
plus this node's own chain (m_blockchain) -- and labels the primary coin with
the real is_embedded()/has_rpc() flags from the connected coin node. No baked
-in coin shape.

D0.3 (seam): optional node_topology_fn provider hook. When the wiring layer
registers one it supplies richer per-coin stats (synced flag, per-coin
hashrate) and overrides the auto-detect; when unset the auto-detect keeps the
endpoint truthful. Clean override-or-detect seam for each coin to feed its own
real stats.

Purely additive. Web/diagnostic layer only -- no consensus, sharechain, or
wire change. web_server.cpp.o compiles clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@frstrtr
frstrtr merged commit e99a958 into master Jun 22, 2026
20 checks passed
frstrtr added a commit that referenced this pull request Jun 23, 2026
…D0.2/D0.3) (#324)

Adds GET /api/node_topology, the truthful per-node topology surface for the
6-coin fleet (LTC/DOGE/BTC/DGB/DASH/BCH). Each node runs a different coin set
+ embedded daemons; the dashboard must reflect THAT node's REAL shape, not a
hardcoded LTC+DOGE assumption.

D0.2 (auto-detect): rest_node_topology() derives the coin set from live state
-- the keys of the coin-peer map (an LTC node also runs embedded DOGE, etc.)
plus this node's own chain (m_blockchain) -- and labels the primary coin with
the real is_embedded()/has_rpc() flags from the connected coin node. No baked
-in coin shape.

D0.3 (seam): optional node_topology_fn provider hook. When the wiring layer
registers one it supplies richer per-coin stats (synced flag, per-coin
hashrate) and overrides the auto-detect; when unset the auto-detect keeps the
endpoint truthful. Clean override-or-detect seam for each coin to feed its own
real stats.

Purely additive. Web/diagnostic layer only -- no consensus, sharechain, or
wire change. web_server.cpp.o compiles clean.

Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant