From 0fa3feb8031b0d0dd6878641142fbca6d1781b76 Mon Sep 17 00:00:00 2001 From: David Meister Date: Wed, 7 Oct 2026 17:18:59 +0000 Subject: [PATCH] fix(rpc): bring flare's archive_blocks forward off the retired 31_843_105 pin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rainlanguage/rain.flare#218 moves `BLOCK_NUMBER` 31843105 -> 37796420, so the whole flare fork suite forks at one block and nothing in the org reads flare account state ~23 months back any more. This entry existed because of that old block and its comment named it, so both move together: `archive_blocks` 31_000_000 -> 37_000_000, rounded down below the pin the way every other row is. MERGE ORDER: after rain.flare#218, never before. `archive_blocks` is at or below the OLDEST block any repo pins, because the question is "can this node serve MY fork block"; while 31_843_105 is still the live pin on rain.flare's main, this would qualify a node that then dies mid-suite — the exact failure the field exists to prevent. Two corrections to the comment, both measured rather than restated: - It is no longer the deepest read in the org. `cast block 280000000 -f timestamp` on arbitrum is 1733000765 (2024-11-30); flare's new 37_796_420 is 1740156917 (2025-02-21). Arbitrum's pin is the deeper one now, so carrying "the deepest historical read in the org outside rain.deploy's genesis search" forward would have shipped a false claim. Replaced with the comparison that makes it checkable. The reason the row still earns an `archive_blocks` at all is unchanged and kept. - "~19 test files" was an overcount: 11 files under rain.flare's `test/` call `vm.createSelectFork`. Nothing asserts a network's `archive_blocks` value and nothing should — `31_000_000` occurred exactly once in the repo, and the only readers are `pool()` and the `"archive at block {}"` log line. The check that discriminates is the `rpc-preflight` job in `test.yml`, which probes every candidate with a historical `eth_call` at this block on a real runner. The move is shallower, so no endpoint that passed before can be newly disqualified. Unpiped exits on this branch, run the way `test.yml` runs them: cargo test (from rainix-static/, nix develop ..) 0 259 passed; 0 failed rainix-rs-static 0 pre-commit --all-files 0 11 hooks, all Passed comment-loc-cap, this repo's own two buckets 0 Co-Authored-By: Claude Opus 5 (1M context) --- rainix-static/src/rpc_preflight.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/rainix-static/src/rpc_preflight.rs b/rainix-static/src/rpc_preflight.rs index 1d1880e..3e4e39d 100644 --- a/rainix-static/src/rpc_preflight.rs +++ b/rainix-static/src/rpc_preflight.rs @@ -251,10 +251,11 @@ pub(crate) const NETWORKS: &[Network] = &[ env_name: "FLARE_RPC_URL", secret_name: "RPC_URL_FLARE_FORK", chain_id: 14, - // rain.flare forks at 31_843_105 in ~19 test files (~23 months back) — - // the deepest historical read in the org outside rain.deploy's genesis - // search, and Flare public nodes are the most prune-happy. - archive_blocks: &[31_000_000], + // rain.flare forks at 37_796_420 (2025-02-21) in 11 test files, moved + // forward from 31_843_105 by rainlanguage/rain.flare#218. No longer the + // deepest read in the org — arbitrum's 280_000_000 is 2024-11-30 — but + // Flare public nodes are still the most prune-happy. + archive_blocks: &[37_000_000], probe_contract: "0x1D80c49BbBCd1C0911346656B529DF9E5c2F783d", // WNAT defaults: &[ "https://flare-api.flare.network/ext/C/rpc",