Skip to content

Rolling coldkey-deduped meaningful-failure pool (S5.6 fix) - #102

Open
karpabot wants to merge 1 commit into
RalphLabsAI:mainfrom
karpabot:feat/rolling-meaningful-failure-pool
Open

Rolling coldkey-deduped meaningful-failure pool (S5.6 fix)#102
karpabot wants to merge 1 commit into
RalphLabsAI:mainfrom
karpabot:feat/rolling-meaningful-failure-pool

Conversation

@karpabot

@karpabot karpabot commented Jul 6, 2026

Copy link
Copy Markdown

Rolling meaningful-failure reward pool (§5.6 fix)

The 10% meaningful-failure ("informative dead-end") pool was split among only the CURRENT epoch's failures. With weight-set rate-limiting (~1 set / 20 min) a contributor earned for one brief window, then every quiet epoch re-asserted king=100% and dropped it — no sustained incentive (observed live: goodlucklucky dropped to king-only after one deferred set).

Fix

validator/mf_pool.py — a persisted rolling window (chain/meaningful_pool.json, RALPH_MF_WINDOW_BLOCKS default 7200 ~1 day, capped 128). Recent meaningful failures keep sharing the 10% until they age out.

Sybil-resistant: the split is deduped by coldkey (one share per operator, most-recent hotkey wins). A single operator running many hotkeys (e.g. the star-dust9023 6-hotkey fleet just found on sn40) gets ONE share, not one-per-hotkey — it cannot farm the pool by spamming failures across hotkeys. Deregistered hotkeys are filtered out.

Wired into run_epoch before _apply_pool_split; RALPH_MF_ROLLING_OFF=1 reverts to the old per-epoch split. Validator-only (unmeasured) -> plain resync, no measurement cutover.

7/7 unit tests (rolling persistence across quiet epochs, ageing-out, coldkey sybil-dedup, deregistered filter, window cap). Verified live: a quiet epoch now keeps weighting a recent meaningful failure at 0.100 instead of dropping it.

Generated with Claude Code.

- The 10% meaningful-failure pool was split among only the CURRENT epochs
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