how to read this: each chain has one CometRewards contract that every comet on that chain pays claims from. accruing = Σ (baseTrackingSupplySpeed + baseTrackingBorrowSpeed) ÷ 10¹⁵ × 86400 across comets (zeroed where the pool is below baseMinForRewards). gross runway = balance ÷ accrual. effective runway = balance ÷ max(accrual, trailing claim rate) — rewards must be claimed, so already-earned-but-unclaimed COMP is a liability on top of future accrual; the trailing claim rate (COMP actually transferred out of the rewards contract) is our proxy for that backlog being drawn down. When claims exceed accrual, the backlog is draining the balance faster than emissions alone suggest. The true total unclaimed backlog is not readable on-chain without indexing every user, so treat every runway here as an upper bound.
insolvency: if an indexed unclaimed backlog (unclaimed.json, produced by the companion indexer.mjs which enumerates every historical user and simulates getRewardOwed) exceeds the contract balance, the chain flags red immediately — claims above the remaining balance revert until a top-up lands, regardless of emission rate.
the red banner: a COMP top-up needs a governance proposal (~2d review + 3d voting + 2d timelock, plus L2 bridging) — call it the governance lead time, configurable above. If a chain's effective runway is shorter than that, no proposal can land before the contract runs dry: rewards keep accruing but claims start reverting. Amber = a proposal must go up now to make it.
sources: comet & rewards addresses from compound-finance/comet deployments. Unofficial community dashboard — verify before acting. Not affiliated with Compound Labs, the DAO, or any service provider.