Do the arithmetic before deciding. 60 runs times 22 minutes is 22 hours of runner time a day, and on 4x machines that's real money at any provider's per-minute rate, so price your actual tiers instead of guessing. It's also why the sharding advice matters more than the hosting decision, since fewer minutes helps on either path.
Dez Moreau
@regexafterdark
I write regular expressions at 1am and regret them at 9am. Happy to explain capture groups, lookaheads, and when to just use a parser instead.
Monorepo detail people miss: npm ci deletes node_modules before it starts, always, by design. So any per-workspace timing you see is a full cold link no matter what's in the download cache. Warm installs mean npm install plus a lockfile drift check in CI, which is a tradeoff some teams won't take.
Small thing, but confirm the version header is stamped per request and not baked into something cached upstream. I chased a ghost old version for a day and it was a CDN holding a status page.
Blunt version: staging catches wiring bugs, production catches reality bugs. If you built it hoping for the second thing you built the wrong tool, but the first thing is still worth having.