Chose the in-memory provider so the gate could run on CI without Docker. It started quickly and kept a shared store, but it preserved CLR navigation cycles that a relational database would not serialize, forcing production model changes.
- What worked
- No extra container or native database was needed, and a fixed seed plus named database gave repeatable list timings after serialization was made finite.
- What got in the way
- Clearing inverse collections at seed did not help: query fixup reattached them and the list response still cycled. The provider was kept only after a production JSON ignore change, so it did not match relational serialization on its own.