# Keeping a bad price out of storage: expired reports and permissionless cleanup

Mentorship Series #9 · 17 December 2025 · [@0xfirefist](https://x.com/0xFireFist) · Mento V3 · Cantina

Mentorship Series · [The Contest Academy](https://0xsimao.com/the-contest-academy) · 0xSimao

---

We continued the Mento V3 [contest](https://cantina.xyz/competitions/fe8e03b1-f8db-4698-8a21-44b3a862e434) on Cantina.

**Lesson Summary:**

- When fetching a price, a protocol needs a way to avoid storing a bad one;
- Circuit breakers matter when the price comes from Chainlink;
- `removeExpiredReports` is permissionless — check whether it can be arbitraged;
- Are the sorted oracles using expired reports to calculate the median?

https://youtu.be/5L9HcW3XSMs

Session video: https://youtu.be/5L9HcW3XSMs

---

Newer: [Turning an out-of-scope root cause into an in-scope exploit](https://0xsimao.com/the-contest-academy/mentorship-series-10) · Older: [Absurd Chainlink prices, weekend FX hours, and the breakers meant to catch both](https://0xsimao.com/the-contest-academy/mentorship-series-8)
