ROHME-9: keep RWA bonds priceable across market closures
REFILED. Supersedes ROHME-2, defeated on turnout (0 FOR against a 1,000 gROHM quorum), not
on merits. Actions are identical; this copy files on the LIVE V1 governor in parallel with the ROHME-7 migration vote: it needs 1,000 gROHM FOR within 5 days. If turnout defeats it again, it refiles on Governor V2 — where quorum is reachable — as soon as the migration executes. Voting for it here costs nothing and may land it a week earlier.
WHAT THIS FIXES. Every tokenized-equity bond is dead from Friday evening until Monday, and
has been since launch. Treasury.deposit prices the quote through tokenValue, which reverts
StaleFeed once a feed is older than its registered heartbeat. The Robinhood equity feeds
publish in bursts during trading hours and then go dark: observed gaps run 34-45h against a
24h heartbeat, and Friday close to Monday open is about 65h. So the bond reverts even though
the underlying token is trading on-chain the whole time. PolicyGuard.createMarket reads the
same value, so a market cannot even be OPENED on a weekend.
This cannot be fixed by re-banding. Treasury.MAX_HEARTBEAT is 48h and is a `constant`, so no
legal heartbeat value spans a weekend.
WHAT IT DOES. Repoints the five tokenized-equity reserves at LastPriceFeed adapters. Each
adapter republishes its underlying feed's last answer with `updatedAt` re-stamped to the
current block, so the heartbeat branch cannot trip. Every other registry parameter -
heartbeat, the 20 pct haircut, the F02 price band, the ERC-8056 checkPaused gate - is
preserved EXACTLY as registered today. Only the aggregator changes.
1. SNDK -> 0xAAa7638eDdb8D2f8F120703C30ca53a583fffd5f
2. MU -> 0x83D807b89A2E791b603B38CD004eb4caD21529C8
3. SPCX -> 0x43FcCea810579A386AdCB698e28a34811DAfA858
4. NVDA -> 0x76cD10364fd88369914255FBCe0e315db3F6F7F0
5. GME -> 0xb8cff824B2d46ecC28F3C3c544C916B505f24310
THE TRADE-OFF, STATED PLAINLY. Inside the adapter's 90h backstop, staleness protection
against the upstream feed is deliberately surrendered. A Sunday deposit is priced at Friday's
close. If an equity gaps down over a weekend by more than the 20 pct haircut absorbs, the
Treasury books that collateral above its true market value. This is a considered choice of
bond liveness over mark accuracy, not an oversight. Vote against this if you would rather
equity bonds simply close on weekends.
WHAT IS STILL ENFORCED. A hard 90h maxAge, after which the adapter reverts and the reserve
becomes unpriceable exactly as before - an abandoned feed fails closed rather than pinning a
dead price forever. And the underlying's own integrity checks pass through verbatim: a
non-positive answer, a zero updatedAt, or an incomplete round (answeredInRound < roundId) all
still revert. Only the heartbeat dimension is relaxed.
WHY 90h. Friday close (16:00 ET) to Tuesday open (09:30 ET) - a long weekend with a Monday
market holiday - is 89.5h, the worst legitimate closure for these feeds. An earlier revision
of these adapters used 7 days, roughly double their own design target; they were redeployed
at 90h before this proposal.
KNOWN GAP, DISCLOSED. Treasury.sequencerFeed is currently the zero address, so OracleLib's L2
sequencer-uptime gate is already inert. Combined with the heartbeat being neutered here, maxAge
becomes the ONLY liveness guard on these five reserves. Wiring a sequencer feed is recommended
follow-up work and is not part of this proposal.