Bug: 16 nginx-404 canonical /api/v1/* collection + unversioned healthz/info/status surfaces
Affected hosts: https://rustchain.org AND https://explorer.rustchain.org (both subdomains)
Severity: Low (functional surfaces missing, source has the data, deployment drift)
Discovered: 2026-06-10 20:30 CST
Reproduction: curl -sk -o /dev/null -w "%{http_code}\n" https://rustchain.org/api/v1/blocks
Description
16 endpoints return 404 nginx on BOTH rustchain.org and explorer.rustchain.org. The canonical Flask collection names (/api/v1/blocks, /api/v1/transactions, /api/v1/epochs, /api/v1/attestations, /api/v1/anchors) and the unversioned probes (/healthz, /info, /status) and several sub-resource shapes (/api/v1/blocks/latest, /api/v1/blocks/1, /api/v1/miners/leaderboard, /api/v1/epoch, /api/v1/epoch/current) are all missing from the live production deployment.
Live verification (32/32 = 100% 404)
/api/v1/blocks 404 /api/v1/transactions 404 /api/v1/epochs 404
/api/v1/attestations 404 /api/v1/anchors 404
/healthz 404 /info 404 /status 404
/api/v1/health 404 /api/v1/info 404 /api/v1/status 404
/api/v1/blocks/latest 404 /api/v1/blocks/1 404 /api/v1/miners/leaderboard 404
/api/v1/epoch 404 /api/v1/epoch/current 404
All 16 endpoints return 404 on both subdomains (32/32 404s).
Expected behavior
These endpoints should be registered in the Flask app under the /api/v1/ blueprint with the canonical collection names matching the /api/v1/blocks/info, /api/v1/transactions/info, etc. patterns from prior clusters. The unversioned /healthz, /info, /status need an nginx location /healthz { proxy_pass ...; } block forwarding to the Flask app.
Suggested fix
- Register the canonical collection routes in
node/rustchain_v2_integrated_v2.2.1_rip200.py blueprint:
/api/v1/blocks (GET) — list blocks
/api/v1/transactions (GET) — list transactions
/api/v1/epochs (GET) — list epochs
/api/v1/attestations (GET) — list attestations
/api/v1/anchors (GET) — list anchors
- Add the unversioned probes to nginx config and the Flask app:
/healthz (GET) — 200 OK with {"status":"ok"} or similar
/info (GET) — basic node info
/status (GET) — node status
- Add sub-resource routes:
/api/v1/blocks/latest (GET)
/api/v1/blocks/<height_or_hash> (GET)
/api/v1/miners/leaderboard (GET)
/api/v1/epoch (GET, singular legacy path)
/api/v1/epoch/current (GET)
- Redeploy
main to both rustchain.org and explorer.rustchain.org.
Distinctness
This cluster is exclusively the canonical Flask collection names without info|list|get|status suffix, the unversioned health/info/status probes, and the sub-resource shapes (/api/v1/blocks/latest, /api/v1/blocks/1, /api/v1/miners/leaderboard, /api/v1/epoch, /api/v1/epoch/current). No endpoint overlaps the 7 prior 404 clusters filed by this account.
Reporter: @jdjioe5-cpu
Wallet: jdjioe5-cpu
Bug: 16 nginx-404 canonical /api/v1/* collection + unversioned healthz/info/status surfaces
Affected hosts:
https://rustchain.orgANDhttps://explorer.rustchain.org(both subdomains)Severity: Low (functional surfaces missing, source has the data, deployment drift)
Discovered: 2026-06-10 20:30 CST
Reproduction:
curl -sk -o /dev/null -w "%{http_code}\n" https://rustchain.org/api/v1/blocksDescription
16 endpoints return
404 nginxon BOTHrustchain.organdexplorer.rustchain.org. The canonical Flask collection names (/api/v1/blocks,/api/v1/transactions,/api/v1/epochs,/api/v1/attestations,/api/v1/anchors) and the unversioned probes (/healthz,/info,/status) and several sub-resource shapes (/api/v1/blocks/latest,/api/v1/blocks/1,/api/v1/miners/leaderboard,/api/v1/epoch,/api/v1/epoch/current) are all missing from the live production deployment.Live verification (32/32 = 100% 404)
All 16 endpoints return 404 on both subdomains (32/32 404s).
Expected behavior
These endpoints should be registered in the Flask app under the
/api/v1/blueprint with the canonical collection names matching the/api/v1/blocks/info,/api/v1/transactions/info, etc. patterns from prior clusters. The unversioned/healthz,/info,/statusneed an nginxlocation /healthz { proxy_pass ...; }block forwarding to the Flask app.Suggested fix
node/rustchain_v2_integrated_v2.2.1_rip200.pyblueprint:/api/v1/blocks(GET) — list blocks/api/v1/transactions(GET) — list transactions/api/v1/epochs(GET) — list epochs/api/v1/attestations(GET) — list attestations/api/v1/anchors(GET) — list anchors/healthz(GET) — 200 OK with{"status":"ok"}or similar/info(GET) — basic node info/status(GET) — node status/api/v1/blocks/latest(GET)/api/v1/blocks/<height_or_hash>(GET)/api/v1/miners/leaderboard(GET)/api/v1/epoch(GET, singular legacy path)/api/v1/epoch/current(GET)mainto bothrustchain.organdexplorer.rustchain.org.Distinctness
This cluster is exclusively the canonical Flask collection names without
info|list|get|statussuffix, the unversioned health/info/status probes, and the sub-resource shapes (/api/v1/blocks/latest,/api/v1/blocks/1,/api/v1/miners/leaderboard,/api/v1/epoch,/api/v1/epoch/current). No endpoint overlaps the 7 prior 404 clusters filed by this account.Reporter: @jdjioe5-cpu
Wallet: jdjioe5-cpu