446Release

Accounting, Liquid Alpha, and Timelock Recovery

What shipped

Spec version 446 is mostly a repair. Its own summary is that it makes three pieces of economic state more faithful to what actually happened on chain: historical alpha issuance and burn counters are repaired, the conviction ownership quorum excludes alpha that cannot support a challenger, and a timelock reveal that cannot succeed becomes a visible terminal state instead of disappearing into repeated work. The release also lets subnet owners choose which epoch's consensus drives Liquid Alpha, and corrects the initial-set offset used by Finney GRANDPA warp sync. [source]

The source is the project's own release note, titled "Accounting, Liquid Alpha, and Timelock Recovery" and dated August 2026. [source] One part of it needed a correction one release later. The following release says this upgrade's change to the conviction ownership gate — basing the threshold on eligible alpha rather than on outstanding alpha — had a side effect: the denominator shrank, so the gate fell, and the TAO a challenger needed to take over a subnet dropped on most networks, and on some dropped a lot. [source] What was done about that is the v447 page.

Conviction-based ownership still requires a subnet to be at least one year old, and still selects the hotkey with the most rolled aggregate conviction. What this release changes is the quorum denominator: protocol-owned and burned alpha cannot express support for a challenger, so v446 excludes both. [source] Eligible alpha becomes SubnetAlphaOut less SubnetProtocolAlpha and AlphaBurned, saturating rather than going negative [source], and the ownership quorum is 10% of that. [source]

Three smaller pieces ship alongside it. Migrations repair historical SubnetAlphaOut undercounts, backfill alpha burned before the counter existed, and remove issuance, burn and recycle offsets inherited by reused subnet slots. [source] Liquid Alpha's per-bond running average can now be driven by one of three consensus modes, through a new storage value that defaults to Auto. [source] And a commitment whose timelock reveal can never succeed becomes a distinct terminal state instead of sitting in the retry index forever. [source]

What it changes for the ecosystem

For subnet owners and anyone weighing a challenge, the ownership rule keeps its shape and moves its bar. The age requirement and the winner-takes-most selection are unchanged; the denominator is not. [source] If eligible alpha is zero, ownership does not transfer at all; existing locks and conviction continue to count, and the release does not reset them. Its instruction to operators and indexers is to stop deriving the threshold from SubnetAlphaOut alone, and to read the new accounting fields and threshold from the conviction guide and the subnet-convictions read. [source] The action item it lists for everyone is to recalculate conviction ownership thresholds from eligible alpha. [source] Which direction that recalculation moved the bar is what the next release takes up: it says the shrunken denominator lowered the gate and cut the TAO cost of a takeover on most networks. [source]

For anyone reading alpha supply figures, the migrations matter more than the gate does. They repair historical SubnetAlphaOut undercounts, backfill alpha burned before the counter existed, and remove issuance, burn and recycle offsets inherited by reused subnet slots — with every correction scoped to the expected mainnet subnet generation, and a slot whose registration block does not match left untouched. [source] Those counters are the supply bookkeeping behind the per-subnet alpha market that lesson 08 describes.

Subnet owners also get one new lever. Liquid Alpha smooths how fast a validator's recorded trust in each miner moves, and its per-bond running average can now be driven by one of three modes, chosen through a storage value that defaults to Auto. [source] [source] [source]

A subnet owner can change the mode during the admin window, subject to the normal per-hyperparameter rate limit, and root can make the same change; until a first-class transaction wrapper is added, it is a raw call. [source] The setting only chooses the consensus source: liquid_alpha_enabled still controls whether the per-weight Liquid Alpha calculation runs at all. [source] The release's own advice is to leave Liquid Alpha on Auto unless the subnet deliberately needs a fixed current- or previous-consensus policy. [source]

For anyone publishing or indexing timelocked commitments — the machinery behind commit-reveal weight submission — the chain now separates a commitment still waiting for a pulse from one that can never reveal. A current or future missing pulse stays TimelockEncrypted and stays in the retry index; corrupt ciphertext, a mismatched round, an invalid quicknet point, or an expired pulse becomes TimelockRevealFailed. [source] A terminal failure emits CommitmentRevealFailed once, remains in CommitmentOf for audit, and is removed from the reveal index so the hook stops retrying it; users cannot submit the failure variant directly. [source] The instruction to commitment indexers is to treat TimelockRevealFailed as terminal and retained for audit, and TimelockEncrypted as pending. [source]

Node operators get a synchronization fix and one upgrade instruction. Finney's historical GRANDPA set-ID offset is now applied only when warp sync starts from set zero, with later proof fragments using the set ID returned by the previous fragment rather than reapplying the initial correction across authority rotations — and the release is explicit that this is a node synchronization fix that changes no runtime consensus rule and requires no application-level change. [source] The instruction addressed to everyone is to upgrade nodes and metadata-generated clients to runtime spec 446. [source]

What to watch

The thing most worth carrying away from this release is that one of its three repairs was itself repaired one release later. The next note says the eligible-alpha denominator lowered the conviction gate as a side effect [source], raises the threshold from 10% to 18% [source], and makes the gate measure a single hotkey's own conviction rather than the subnet-wide sum. [source] It keeps this release's eligible-alpha denominator. [source] The accounting change made here is not what was reversed; the threshold that consumed it is.

Unverified The migrations are described as scoped to the expected mainnet subnet generation, with a slot whose registration block does not match left untouched. That is the cautious choice, and it also means some reused slots may keep exactly the inherited offsets this release exists to remove. The note does not say how many slots that describes, or how a reader outside the project would tell which ones they are.
Unverified The three Liquid Alpha modes are described but not compared. Nothing in the note quantifies what choosing Current or Previous does to a subnet's bonds, to what miners are rewarded for, or to how fast a validator's recorded trust moves — only that Auto is the default and that owners should stay on it absent a deliberate reason. A per-subnet setting with no published effect size is one whose consequences get discovered by whoever turns it first.
How it actually works

The conviction ownership quorum

Conviction-based ownership still requires a subnet at least one year old and selects the hotkey with the most rolled aggregate conviction; what v446 changes is the quorum denominator, excluding protocol-owned and burned alpha because neither can express support for a challenger — which leaves the denominator, and the quorum drawn from it, as follows. [source] [source] [source]

eligible alpha = saturating(
  SubnetAlphaOut - SubnetProtocolAlpha - AlphaBurned
)
ownership quorum = 10% × eligible alpha

If eligible alpha is zero, ownership does not transfer. Existing locks and conviction continue to count; the release does not reset them. Operators and indexers should stop deriving the threshold from SubnetAlphaOut alone — the conviction guide and the subnet-convictions read expose the new accounting fields and threshold. [source] [source]

Historical accounting repairs

The upgrade migrations repair historical SubnetAlphaOut undercounts, backfill alpha burned before the counter existed, and remove issuance, burn and recycle offsets inherited by reused subnet slots. Every correction is scoped to the expected mainnet subnet generation; a slot whose registration block does not match is left untouched. [source]

Liquid Alpha consensus modes

The new storage value defaults to Auto, and selects which epoch's consensus drives the per-bond EMA: Current uses the consensus calculated in the current epoch, Previous uses the consensus persisted by the previous epoch and falls back if it is absent, and Auto uses previous consensus at the maximum bonds penalty and current consensus otherwise. [source] [source] [source] [source] [source] [source] [source]

A subnet owner can change the mode during the admin window, subject to the normal per-hyperparameter rate limit, and root can make the same change. Until a first-class transaction wrapper is added, the release gives the raw call: [source] [source]

btcli call AdminUtils.sudo_set_liquid_alpha_consensus_mode \
  --args '{"netuid": 42, "mode": "Auto"}' -w my_owner_wallet

This setting only chooses the consensus source; liquid_alpha_enabled still controls whether the per-weight Liquid Alpha calculation runs at all. [source] The release's own recommendation is to leave it on Auto unless a subnet deliberately needs a fixed current- or previous-consensus policy. [source]

Timelock reveal outcomes

A current or future missing pulse leaves a commitment as TimelockEncrypted and in the retry index. Corrupt ciphertext, a mismatched round, an invalid quicknet point, or an expired pulse becomes TimelockRevealFailed. [source] That terminal failure emits CommitmentRevealFailed once, remains in CommitmentOf for audit, and is removed from the reveal index so the hook does not retry it forever; users cannot submit the failure variant directly. The SDK accepts either its portable timelock envelope or the pallet-native inner ciphertext when publishing, and exposes Timelocked.encrypted for the canonical inner form. [source] Commitment indexers should treat TimelockRevealFailed as terminal and retained for audit, and TimelockEncrypted as pending. [source]

GRANDPA warp sync

Finney's historical GRANDPA set-ID offset is applied only when warp sync starts from set zero. Later proof fragments use the set ID returned by the previous fragment, rather than applying the initial correction repeatedly across authority rotations. It is a node synchronization fix: it changes no runtime consensus rule and requires no application-level change. [source] Nodes and metadata-generated clients should be upgraded to runtime spec 446. [source]