Shed Flare: move the Flare oracles to rain.vats.flare - #329
Conversation
rain.vats is chain-agnostic, but two of its price oracles read Flare feeds, and that was the only thing pulling rain-flare — and transitively rainlang — into the repo. They now live in rain.vats.flare, which depends back on rain-vats for the base contracts. Removed: FtsoV2LTSFeedOracle, SceptreStakedFlrOracle and their V1/V2 interfaces; their fork tests; the OracleTest Flare fork base (only those two tests used it); LibERC20PriceOracleReceiptVaultFork; and the two testRedeem/WithdrawFlareFork cases from the ERC20PriceOracleReceiptVault suite. Those vault-vs-real-Flare integration tests move to rain.vats.flare so this repo's tests need no Flare. rain-flare is dropped from foundry.toml, remappings.txt and soldeer.lock. No Flare or rainlang reference remains anywhere in the repo. Version 0.2.0: removing exported contracts is a breaking change. In practice nothing is broken — rain.vats has no org consumers, and rain.vats.flare pins rain-vats 0.1.7, which still carries the oracles. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 42 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (12)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Reviewed 8c122ea: approve Read the diff myself and reconciled it line-by-line against the destination repo rather than trusting the move. Every file this PR deletes is preserved exactly in rain.vats.flare: the two oracles and LibERC20PriceOracleReceiptVaultFork differ only by the import paths that MUST change (base contracts now come from the rain-vats package, not relative paths); the two interfaces, OracleTest, and both oracle test files are byte-identical. The two removed test cases — testRedeemFlareFork / testWithdrawFlareFork — I extracted the exact deleted bodies and diffed them against the ported integration test: verbatim, and both pass against a Flare fork. This PR adds zero lines to the vault test files — pure removal — so the 13 surrounding vault tests are untouched. rain-flare is gone from foundry.toml, remappings.txt and soldeer.lock, and a full grep for rain-flare / Ftso / Sceptre / SFLR / rainlang across src, test and config returns nothing. The dependency that pulled rainlang into rain.vats's closure is removed. Verified: forge build clean, forge test 371/372 (the one failure is the pre-existing Arbitrum prod fork test needing ARBITRUM_RPC_URL — it imports nothing removed here and passes in CI, where all four checks are green), forge fmt clean, no unresolved threads. Version 0.2.0 — removing exported contracts is breaking by semver; in practice nothing breaks (rain.vats has no org consumers; rain.vats.flare pins rain-vats 0.1.7, which still carries the oracles). OracleTest is used only by the two moving oracle tests — PythOracleTest/TwoPriceOracleTest merely share the substring and are 'is Test' with mocks. |
The other half of the split. rain.vats is chain-agnostic, but two price oracles read Flare feeds — and that was the only reason rain.vats depended on
rain-flare, and transitively onrainlang. Those oracles now live in rain.vats.flare (PR #1 there, merged). This removes them here.Removed
FtsoV2LTSFeedOracle,SceptreStakedFlrOracle+IFtsoV2LTSFeedOracleV1/V2.OracleTest(the Flare fork base — verified only those two tests used it;PythOracleTest/TwoPriceOracleTestareis Testwith mocks, they just share the substring).LibERC20PriceOracleReceiptVaultForkand thetestRedeemFlareFork/testWithdrawFlareForkcases from theERC20PriceOracleReceiptVaultsuite. The vault stays here; those integration tests (vault priced by real Flare oracles) move to rain.vats.flare so this repo's tests carry no Flare.rain-flarefromfoundry.toml,remappings.txt, andsoldeer.lock.Result: zero Flare / rainlang
The dependency that dragged
rainlanginto rain.vats's closure is gone.Verified locally
forge buildclean.forge test— 371/372 pass. The one failure istestPythGetPriceNoOlderThan, which forks Arbitrum viaARBITRUM_RPC_URL(not set locally); it's a pre-existing prod fork test, imports nothing removed here, and passes in CI. All 39 vault-suite tests pass with the flare cases gone.forge fmt --checkclean.Version
Bumped to 0.2.0 — removing exported contracts is breaking by semver. In practice nothing breaks: rain.vats has no org consumers, and rain.vats.flare pins rain-vats 0.1.7 (which still carries the oracles), so it's unaffected. Say the word if you'd rather a different version.