V438 Release - #2970
Conversation
…into subnet-sale-offer
Default-branch-only workflow that deploys sealed artifacts from the secret-free Request Docs Preview PR workflow. Never checks out PR code. Co-authored-by: Cursor <cursoragent@cursor.com>
Do not embed toJSON(pull_requests) into a shell-quoted node -e body while deploy secrets are present; read event fields from the environment instead. Co-authored-by: Cursor <cursoragent@cursor.com>
Install vercel into RUNNER_TEMP and invoke it by absolute path with a sanitized PATH so PR-built website/node_modules/.bin cannot hijack the secret-bearing deploy step. Pin setup-node to an immutable SHA. Co-authored-by: Cursor <cursoragent@cursor.com>
…ives Trusted deploy extracts only regular files under .vercel/ and website/node_modules/, blocking PR-controlled link escapes on the runner. Co-authored-by: Cursor <cursoragent@cursor.com>
| Self::TestnetCheckpoints(checkpoints) => { | ||
| HardForks::new_hard_forked_authorities(checkpoints) | ||
| } | ||
| Self::InitialSetId(set_id) => HardForks::new_initial_set_id(set_id), |
There was a problem hiding this comment.
[HIGH] Apply the Finney set-ID correction only once
HardForks::new_initial_set_id(3) applies the offset to every proof fragment, so a Finney warp proof spanning authority rotations over-counts subsequent set IDs and fails verification. Scope the correction to the Finney genesis and apply it only when verification begins at set ID 0, as implemented and tested by PR #2971.
|
🔄 AI review updated — Skeptic: SAFE Auditor: 👎 |
| Self::TestnetCheckpoints(checkpoints) => { | ||
| HardForks::new_hard_forked_authorities(checkpoints) | ||
| } | ||
| Self::InitialSetId(set_id) => HardForks::new_initial_set_id(set_id), |
There was a problem hiding this comment.
[HIGH] Apply the Finney set-ID correction only once
new_initial_set_id(3) applies the offset to every warp-proof fragment, so a proof spanning authority-set rotations over-counts subsequent set IDs and warp sync fails. Integrate PR #2971’s Finney-genesis-scoped provider, which substitutes set ID 3 only when verification starts at set 0 and preserves the set IDs returned by later fragments.
|
🔄 AI review updated — Skeptic: SAFE Auditor: 👎 |
| Self::TestnetCheckpoints(checkpoints) => { | ||
| HardForks::new_hard_forked_authorities(checkpoints) | ||
| } | ||
| Self::InitialSetId(set_id) => HardForks::new_initial_set_id(set_id), |
There was a problem hiding this comment.
[HIGH] Apply the Finney set-ID correction only once
HardForks::new_initial_set_id(3) applies the offset to every warp-proof fragment, so a proof spanning later authority rotations over-counts the set ID and fails verification. Integrate PR #2971: scope the correction to the Finney genesis and wrap the provider so set ID 3 replaces only the initial set ID 0; subsequent fragments must use the set ID returned by the preceding proof.
|
🔄 AI review updated — Skeptic: SAFE Auditor: 👎 |
| Self::TestnetCheckpoints(checkpoints) => { | ||
| HardForks::new_hard_forked_authorities(checkpoints) | ||
| } | ||
| Self::InitialSetId(set_id) => HardForks::new_initial_set_id(set_id), |
There was a problem hiding this comment.
[HIGH] Apply the Finney set-ID correction only once
Finney is still routed through HardForks::new_initial_set_id(3), whose correction is applied to every proof fragment. Once a warp proof spans an authority-set rotation, this repeatedly adds three and verifies against the wrong set. Integrate PR #2971's genesis-scoped provider wrapper so the correction is applied only when warp sync starts at set zero, with subsequent set IDs passed through unchanged.
|
🔄 AI review updated — Skeptic: SAFE Auditor: 👎 |
Fix stable Python release publishing
| Self::TestnetCheckpoints(checkpoints) => { | ||
| HardForks::new_hard_forked_authorities(checkpoints) | ||
| } | ||
| Self::InitialSetId(set_id) => HardForks::new_initial_set_id(set_id), |
There was a problem hiding this comment.
[HIGH] Apply the Finney set-ID correction only once
new_initial_set_id(3) adds the correction while verifying every proof fragment, so a multi-fragment Finney warp proof over-counts the authority-set ID after the first fragment and fails verification. Integrate PR #2971's genesis-scoped provider wrapper, which substitutes set ID 3 only when warp sync starts at set 0 and preserves subsequent IDs returned by verification.
|
🔄 AI review updated — Skeptic: SAFE Auditor: 👎 |
Support Python 3.14 in bittensor 11.0.1
| Self::TestnetCheckpoints(checkpoints) => { | ||
| HardForks::new_hard_forked_authorities(checkpoints) | ||
| } | ||
| Self::InitialSetId(set_id) => HardForks::new_initial_set_id(set_id), |
There was a problem hiding this comment.
[HIGH] Apply the Finney set-ID correction only once
Finney still uses HardForks::new_initial_set_id(3), which permanently offsets GRANDPA set IDs rather than applying the historical correction once. Integrate PR #2971’s one-time provider correction before releasing; otherwise warp-sync proofs can use incorrect set IDs after the affected historical range.
|
🔄 AI review updated — Skeptic: SAFE Auditor: 👎 |
v438 Release
Summary
This release brings together 10 PRs spanning runtime functionality, security and correctness fixes, EVM compatibility, limit-order signing, testnet synchronization, Python 3.14 support, and hardened release infrastructure.
Included PRs
mainDocker image on mergeghcr.io/raofoundation/subtensor:mainfrommainwhile keepinglatesttied to deployed releases.DefaultMinStakeviews, including ABI updates and gas accounting.BlocksSinceLastSteptempo + 1bound during deferred or inconsistent epochs.bittensor 11.0.1andbittensor-core 0.1.1.btclito Python 3.14 while retaining support for Python 3.10 through 3.13.