Follows the shelf's named laps. Measured 2026-10-26: /apps at 221–280 ms in shelf, and /trevato at 194–519 ms in apps.
Done when:
[ ] Whichever lap the header shows as slowest is batched or cached. Name it, and the reason, in the pull.
[ ] A test with 40 apps, each with runs, a production deploy and an open pull, asserts the shelf phase is under 50 ms on /apps and /:owner.
[ ] Rows read the same as before. The existing shelf tests pass unchanged.
Files: src/web/studio/shelf.ts and the module behind the slow lap.
Risk: a private app's facts must stay hidden from a viewer who cannot enter it (enterable).
Follows the shelf's named laps. Measured 2026-10-26:
/appsat 221–280 ms inshelf, and/trevatoat 194–519 ms inapps.Done when:
/appsand/:owner.Files: src/web/studio/shelf.ts and the module behind the slow lap. Risk: a private app's facts must stay hidden from a viewer who cannot enter it (
enterable).