Burn KoTH discriminator rewards until GAS enables emissions - #440
Merged
Conversation
dylanuys
pushed a commit
that referenced
this pull request
Sep 6, 2026
* feat: set discriminator weights on current KOTH kings Stop sending 84% of weights to escrow UIDs. Validators now fetch /current-kings and pay the reigning miner per modality, with last-known fallback if the API is down. Co-authored-by: Cursor <cursoragent@cursor.com> * fix: honor NETUID and EPOCH_LENGTH in validator pm2 config Testnet 169 is not the hardcoded 379 mapping, and short epochs are needed to verify KOTH weights. Co-authored-by: Cursor <cursoragent@cursor.com> * fix: exit gascli d push after a successful upload Bittensor metagraph threads kept the process alive, and a 409 with --skip-chain was treated as failure. Cap chain retries and _exit. Co-authored-by: Cursor <cursoragent@cursor.com> * fix: fail closed when burn UID is unavailable * fix: report chain registration failure * fix: validate KOTH weight split * feat: split KOTH lane weights 85/10/5 across last three kings Keep the current king dominant while paying the previous two distinct crowned hotkeys a residual so near-ties are not winner-take-lane. Co-authored-by: Cursor <cursoragent@cursor.com> * chore: bump to 5.0.0 for the KOTH weight contract Paying last-3 kings 85/10/5 is a breaking incentive change, so spec_version should move with a major rather than sit on 4.10.0. Co-authored-by: Cursor <cursoragent@cursor.com> * fix: treat discriminator push as successful after upload Chain registration is optional. A failed or skipped commitment should not fail the CLI after the model is already in R2 and queued for exam. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: one counted submission per hotkey per modality Miners get one image, one video, and one audio slot per registration. Exam failures do not count and a new round does not refill the slot. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: collapse validator guide and fix KOTH emissions wording Keep a single Validating.md setup runbook and stop implying the full-benchmark score is TAO emissions. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: one counted submission per hotkey, any modality Match the tighter upload cap: a key cannot land one model per lane. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: one counted submission per hotkey, any modality Match the tighter upload cap: a key cannot land one model per lane. Also drop cloud-evaluated wording from the miner guides. * docs: one model per hotkey; validators fetch /kings * Gate KoTH discriminator payouts on explicit emissions activation (#440) * Remove unused skip_chain parameter from upload helper
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
During the first six hours of KoTH, kings should be crowned normally while discriminator rewards continue burning. Gate the validator's discriminator payout allocation on explicit GAS activation; generator allocation and its scoring rules remain unchanged.
The
/api/v1/validator/kingsresponse must includeemissions_enabled: trueand a timezone-awareemissions_start_atat or before the validator's current time. Missing, malformed, disabled, or future activation burns all discriminator lanes, including residual shares. A cached warm-up response cannot unlock rewards simply because time passes. Once enabled, the existing payout chain is used and vacant lanes still burn. Payments begin with a subsequent validator weight update, not at an exact wall-clock instant.Targets
testnetto feed into #435. The companion bmcore bootstrap revision (BitMind-AI/bmcore#373) must publish these fields, own the six-hour boundary measured from submissions opening, and exclude unpaid warm-up reigns from residual eligibility. This PR does not implement backend accounting or start the competition. Deploying against an older GAS response keeps discriminator rewards burning.The existing fallback to a previously enabled cached kings response during API outages is retained; this is not a new emergency-stop or cache-expiry mechanism. No database migrations or deployments are included.
Validation: all 67 subnet tests passed; CI-selected Ruff checks passed for changed Python files. New behavioral tests cover invalid activation metadata, the time boundary, cached warm-up state, burning current/residual allocations, unchanged generator rewards, vacant lanes after activation, and an unavailable burn UID.