Found during the 2026-08-20 PR review sweep (surfaced by the sparc-solaris-miner #7 review).
Defect
`normalize_id("SPARC-T")` yields `sparc_t`, which matches no exact multiplier key and then falls through to the substring match on `"sparc"` — the generic 1987 entry at 3.0x LEGENDARY. A 2013 SPARC T5 therefore grades as 1987 silicon.
Larger historical impact: on main, the SPARC miner sent bare `"sparc"` in `device.arch`, which is the highest-paying SPARC row — so every SPARC box to date has been paid at the 1987 rate regardless of actual generation.
What's already fixed
sparc-solaris-miner PR #7 (merged 2026-08-20) makes the miner report specific generations, and was verified against the node's real `calculate_poa_multiplier`: every generation now grades equal-or-lower than before. That stops the bleeding going forward but does not correct node-side substring fallback or historical over-payment.
Suggested fixes
- Node-side: substring fallback for exotic families should pick the most conservative (lowest) multiplier in the family, not the first/highest match — same fail-closed principle as RIP-309b.
- Audit historical SPARC payouts (`miner_attest_recent` + epoch_rewards for `device_family='SPARC'`) to quantify the over-payment.
- Related hygiene: `antiquity_class` and the proposed `identity` block are self-asserted client fields with zero node-side consumers today — if anything ever grades on them, they need server-side validation first (see finding-controls-that-fire-only-on-honest-clients).
Found during the 2026-08-20 PR review sweep (surfaced by the sparc-solaris-miner #7 review).
Defect
`normalize_id("SPARC-T")` yields `sparc_t`, which matches no exact multiplier key and then falls through to the substring match on `"sparc"` — the generic 1987 entry at 3.0x LEGENDARY. A 2013 SPARC T5 therefore grades as 1987 silicon.
Larger historical impact: on main, the SPARC miner sent bare `"sparc"` in `device.arch`, which is the highest-paying SPARC row — so every SPARC box to date has been paid at the 1987 rate regardless of actual generation.
What's already fixed
sparc-solaris-miner PR #7 (merged 2026-08-20) makes the miner report specific generations, and was verified against the node's real `calculate_poa_multiplier`: every generation now grades equal-or-lower than before. That stops the bleeding going forward but does not correct node-side substring fallback or historical over-payment.
Suggested fixes