Skip to content

Network version drift: update public/api/networks.json - #183

Merged
nickemmons merged 1 commit into
mainfrom
networks-version-drift
Aug 24, 2026
Merged

Network version drift: update public/api/networks.json#183
nickemmons merged 1 commit into
mainfrom
networks-version-drift

Conversation

@nickemmons

@nickemmons nickemmons commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

The scheduled network drift check found that at least one Allora network is
reporting a different build over RPC than public/api/networks.json records.

Network RPC Recorded abci_version Reported by abci_info
testnet https://allora-rpc.testnet.allora.network/abci_info HEAD-ac7ae1565bda7266fd741515e09faccf85bc8af1 HEAD-b6104eda6b2b009ea0714d2f724d53f4f0365fc0
mainnet https://allora-rpc.mainnet.allora.network/abci_info HEAD-8cbbba6ebe15edad2bcf1adab72eb67cb4568a08 HEAD-b6104eda6b2b009ea0714d2f724d53f4f0365fc0

This PR updates abci_version for the networks above.

The deployed_version release tag is not changed automatically: abci_info
reports a build identifier rather than a release tag. Check the
allora-chain releases
and, if a new release is live, update deployed_version (and the
emissions_namespace if the upgrade bumped the emissions module) in this PR
before merging.

If you do change deployed_version, change the matching chain_<network> key
in public/api/versions.json in the same commit — yarn checkversions fails
while the two files disagree.


Summary by cubic

Aligns public/api/networks.json with builds reported over RPC to remove network version drift. Testnet abci_version changed from HEAD-ac7ae1565bda7266fd741515e09faccf85bc8af1 to HEAD-b6104eda6b2b009ea0714d2f724d53f4f0365fc0; mainnet from HEAD-8cbbba6ebe15edad2bcf1adab72eb67cb4568a08 to HEAD-b6104eda6b2b009ea0714d2f724d53f4f0365fc0.

  • Review: Verify abci_info at the RPC endpoints matches the new hash for testnet and mainnet.
  • Rollout: If a new release tag exists, update deployed_version (and emissions_namespace if needed) in this PR.
  • Migration: If you change deployed_version, also update the matching chain_<network> in public/api/versions.json to keep yarn checkversions passing.

Written for commit 9c4da90. Summary will update on new commits.

Review in cubic

@netlify

netlify Bot commented Aug 19, 2026

Copy link
Copy Markdown

Deploy Preview for alloradocs ready!

Name Link
🔨 Latest commit 9c4da90
🔍 Latest deploy log https://app.netlify.com/projects/alloradocs/deploys/6a854a10ff88760008916e38
😎 Deploy Preview https://deploy-preview-183--alloradocs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 1 file

Re-trigger cubic

nickemmons added a commit that referenced this pull request Aug 24, 2026
…lly (#184)

Mainnet applied the `v0.17.0` upgrade plan at block `10511421`
(`2026-08-18T19:37:21Z`), so both networks now run the same build and
both serve `emissions/v10`. #183 updated `abci_version` for both, which
is everything the drift check compares. The rest of the manifest, and
the prose built on it, stayed on the pre-upgrade story.

This PR includes #183's commit, so it supersedes it.

## What was wrong

**`emissions_namespace` for mainnet still read `emissions/v9`**, which
the network no longer routes:

```
$ curl -s https://allora-api.mainnet.allora.network/emissions/v9/params
{"code":12,"message":"Not Implemented"}
```

Consequences, all live:

- Every documented mainnet LCD path returned `501`, including both
mainnet `curl` commands on `/build/forge/topics`.
- The nightly topics job has failed every run since `2026-08-19T04:15Z`.
`scripts/generateTopics.js` reads the namespace from this manifest:
`GET
https://allora-api.mainnet.allora.network/emissions/v9/next_topic_id
failed after 3 attempts: HTTP 501 Not Implemented`
- `/api/topics.json` is therefore frozen at `2026-07-31`, and drifting.
Testnet is at 41 active topics; the published table says 39.

**`deployed_version` for mainnet still read `v0.16.0`**, with
`versions.json` to match.

**`/reference/networks` and `/consume/rpc-grpc`** described a two-tier
network where mainnet served single unlabeled values under
`emissions/v9`. That premise no longer holds.

## Why it survived every check

The release tag has a component and a gate behind it. The namespace had
neither, so five pages hand-typed it and nothing connected the prose to
the fact.

`components/NetworkValue.tsx` gives it a single source, mirroring
`components/Version.tsx`, with a matching renderer in
`scripts/lib/docsPages.js` so the generated corpus carries the value
rather than the tag.

## Stopping the recurrence

`scripts/checkNetworkDrift.js` now probes `<lcd>/emissions/v<N>/params`
upward from the recorded namespace and takes the highest routed one as
what the network serves. Two requests in the steady state. A namespace
move is written to the manifest like `abci_version` is, and reported in
the PR body as the release upgrade it is, naming the `deployed_version`
each network still records instead of mentioning the field in passing.

Probing the LCD makes it a fetch target, so `hostsOf` derives the
allowlist from `lcd` as well as `rpc`, under the same own-property and
type discipline. The URL vetting is now shared rather than copied.
`abciInfoUrl` keeps its signature and its messages.

`scripts/checkVersionStrings.js` covers the other half. A namespace
inside an endpoint URL is judged against the network that URL names, so
a testnet path is caught while testnet is a release ahead and mainnet is
legitimately still on the older one. A namespace in prose is judged
against the lowest any network serves. Both are derived from the
manifest, so there is no list to maintain.

A source-tree path in a pinned permalink
(`x/emissions/proto/emissions/v1/reputer.proto`) is a protobuf package,
not a REST namespace, and is left alone.

## One decision for review

`deployed_version` is set to `v0.17.0`, not `v0.17.1`.

Both networks report build
`HEAD-b6104eda6b2b009ea0714d2f724d53f4f0365fc0`, which is #982, the
`v0.17.1` hotfix candidate. But `v0.17.1` is still a draft release and
its plan never ran:

```
$ curl -s .../cosmos/upgrade/v1beta1/applied_plan/v0.17.1
{"height":"0"}
$ curl -s .../cosmos/upgrade/v1beta1/applied_plan/v0.17.0
{"height":"10511421"}
```

If you would rather name the running binary, say so and I will change
`networks.json` and `versions.json` together.

## Verification

- `npm run build` passes, 61/61 pages prerendered. Rendered
`/reference/networks` shows `emissions/v10` for both networks and no
`emissions/v9`.
- `yarn testdrift`: 143/143 and 37/37. 17 new cases cover the namespace
walk, the statuses (`501` and `404` are answers, `5xx` is not), and the
namespace's path into a URL.
- Replayed against the pre-fix manifest, the new drift check reports
`mainnet: recorded emissions/v9 -> serves emissions/v10` and emits a
body naming `mainnet still records deployed_version: v0.16.0`.
- Against a simulated testnet-ahead divergence, the version gate flags
stale testnet URLs and leaves correct mainnet URLs alone.

Merging the first commit alone unbreaks the nightly topics job.
@nickemmons
nickemmons merged commit 9c4da90 into main Aug 24, 2026
12 checks passed
@nickemmons
nickemmons deleted the networks-version-drift branch August 24, 2026 23:15
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