Skip to content

Silent composition shifts reach the on-chain weight vector (external-scores drop, payable-policy fails open, coldkey collapse) #345

Description

@wallscaler

Problem (100x reliability audit, HIGH — silent-failure paths that reach the on-chain weight vector)

Several failure modes silently change the composition of the signed weight vector with no alert:

a) External scores silently drop out. _compose_external_scores returns {} on any store error (weights.py:815-817); _apply_external_scores returns base unchanged when empty (weights.py:855-856). Depends on the cathedral-sat-poster cron + a 1h window (weights.py:750-751). Cron token expires / worker paused → the ENTIRE fast-path reward component vanishes from the vector within an hour. Nothing alerts. (Note: this is the 10% — soon 30% — fast-path wire.)

b) Payable-hotkey policy FAILS OPEN. _apply_payable_hotkey_policy returns unfiltered scores when the metagraph snapshot is stale/missing (weights.py:437-440). Dead metagraph poller → deregistered hotkeys keep earning weight share, diluting active miners. Contrast: external-scores registration gating correctly fails CLOSED (weights.py:860-865). Same missing snapshot, opposite polarity — and the open one is silent.

c) Coldkey collapse silently re-opens sybil. _load_coldkey_map returns None on error/empty (weights.py:629-640) → per-hotkey scoring resumes → sybil-stacking economics silently re-open. A 20-hotkey miner notices before you do.

Fix

Add a "composition" block to /v1/admin/validator-health: external_has_scores, metagraph_snapshot_fresh, coldkey_map_size, payable_policy_status, plus vector-over-vector deltas (miner count, external share, top-weight churn). Alert on any flip (wire into the alert-loop issue). Consider making payable-hotkeys fail CLOSED after N consecutive stale cycles.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Highest prioritybugSomething isn't workingrewards

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions