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.
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_scoresreturns {} on any store error (weights.py:815-817);_apply_external_scoresreturns 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_policyreturns 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_mapreturns 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.