Skip to content

Burn KoTH discriminator rewards until GAS enables emissions - #440

Merged
dylanuys merged 1 commit into
testnetfrom
feat/koth-warmup
Sep 6, 2026
Merged

Burn KoTH discriminator rewards until GAS enables emissions#440
dylanuys merged 1 commit into
testnetfrom
feat/koth-warmup

Conversation

@dylanuys

@dylanuys dylanuys commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

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/kings response must include emissions_enabled: true and a timezone-aware emissions_start_at at 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 testnet to 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.

@dylanuys dylanuys closed this Sep 6, 2026
@dylanuys dylanuys reopened this Sep 6, 2026
@dylanuys
dylanuys merged commit 405cdf6 into testnet Sep 6, 2026
4 checks passed
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
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