Skip to content

[BUG] 16 nginx-404 canonical collection /api/v1/* + unversioned healthz/info/status surfaces (deployment drift) #7307

Description

@jdjioe5-cpu

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

  1. 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
  2. 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
  3. 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)
  4. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is neededtriagedReviewed and categorized

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions