Since #576 the capacity controller stopped tracking a success ratio, and CapEvent.success_rate now carries the delivered-rate estimate (completions/sec) at the time of the adjustment. The event payload still serializes it under success_rate, and the capacity dashboard renders that field as a percentage, so a miner delivering ~42 units/sec shows SUCCESS 4211.1% on every backoff/ramp row. Pressure trims and idle decay emit 0.0 in the same field, overloading it further.
Renaming the field is a coordinated change: sn2-api consumes the capacity telemetry (the rate/cap scale coupling was already flagged in #559), so a validator-side rename alone would break the dashboard. Suggested transition:
- Validator emits both keys —
rate (new, units/sec) and success_rate (deprecated alias) — in the capacity event payload.
- sn2-api/dashboard switches to
rate with a units/sec label (and stops formatting it as a percent).
- Validator drops the alias in a later release.
Happy to send the validator-side half (step 1 and later 3) as a PR once the sn2-api side is scheduled.
🤖 Generated with Claude Code
Since #576 the capacity controller stopped tracking a success ratio, and
CapEvent.success_ratenow carries the delivered-rate estimate (completions/sec) at the time of the adjustment. The event payload still serializes it undersuccess_rate, and the capacity dashboard renders that field as a percentage, so a miner delivering ~42 units/sec shows SUCCESS 4211.1% on every backoff/ramp row. Pressure trims and idle decay emit 0.0 in the same field, overloading it further.Renaming the field is a coordinated change: sn2-api consumes the capacity telemetry (the rate/cap scale coupling was already flagged in #559), so a validator-side rename alone would break the dashboard. Suggested transition:
rate(new, units/sec) andsuccess_rate(deprecated alias) — in the capacity event payload.ratewith a units/sec label (and stops formatting it as a percent).Happy to send the validator-side half (step 1 and later 3) as a PR once the sn2-api side is scheduled.
🤖 Generated with Claude Code