fix(publisher): pay the KING curve the lane actually decided on - #239
Merged
Merged
Conversation
The live publisher was not paying jared's decided curve. distill moved cybergym_tournament to the KING model on 2026-09-04 (#181: ranks 2-5 take fixed runner-up shares 0.07/0.03/0.03/0.03, the king takes the residual, so a thin field concentrates on the leader). The publisher's VENDORED copy -- which is what the live weight path composes from -- still renormalized the old 0.65/0.14/0.10/0.07/ 0.04 table, so with two winners it paid 0.82/0.18 where the spec says 0.93/0.07. The vendored file is re-synced from distill main (de916cf) and the header records that commit. The existing constants guard did not catch the drift, because the two copies had DIFFERENT CONSTANTS (TOURNAMENT_SHARES vs RUNNER_UP_SHARES) rather than different values of one, and the guard pinned the name it knew. `test_vendored_award_shares_matches_distills_king_schedule` now pins the SCHEDULE rank by rank for every field size, which is what actually pays, and asserts the lane sums to 1 for any non-empty field. Supersedes #146 (which vendored an older bottom-fill table) and its distill twin #161.
Member
Author
|
Self-review before merge (owner-directed: jared asked me to clear the held PRs and deploy).
All checks green: Publisher suite, Python 3.11/3.12, Integration lane, Real validator release, AMD SEV-SNP contract. |
This was referenced Sep 10, 2026
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.
The live publisher is not paying the decided curve. Found while clearing the held PRs.
What diverged
distill moved
cybergym_tournament._award_sharesto the KING model on 2026-09-04 (distill #181) — jared's spec: ranks 2–5 take the fixed runner-up shares (0.07 / 0.03 / 0.03 / 0.03) and the king takes the residual, so a thin field concentrates on the leader rather than scaling every rank up.The publisher's vendored copy — the one the live weight path composes from — still had the old table and renormalized it:
This PR re-syncs the vendored file from distill main (
de916cf) and records that commit in the VENDORED header.Why the drift wasn't caught
test_vendored_tournament_constants_match_the_mechanismpinnedTOURNAMENT_SHARES. After #181 the two copies had different constants —RUNNER_UP_SHARESin distill,TOURNAMENT_SHARESin the vendored copy — rather than different values of one, so the guard kept passing against a name that no longer drove the payout.test_vendored_award_shares_matches_distills_king_schedulenow pins the schedule, rank by rank, for every field size, and asserts the lane pays out in full for any non-empty field. That is the thing that actually pays, and it is the same table distill's own golden test asserts.Supersedes the held curve PRs
wallscaler's review of #146 asked for the header sha to be bumped to the distill commit being mirrored; done here (
de916cf).Risk
The CyberGym lane currently has no winners to pay — the v2 backend went live today and no miner has submitted — so this is the cheapest possible moment to correct the curve.
52 passedin the adapter suite locally; the rest of the publisher suite needsbittensor, which CI has.