The learner loop never blocks on an AI call - now enforced everywhere, not just on cached content.
- Resolving a chapter, a study tab, or a capability check now answers in milliseconds: on a cache miss the platform hands generation to an in-process background runner and immediately says "pending", and your screen's existing polling picks the content up the moment it commits - measured at ~0.1s responses where fresh generations previously held the request open for 30-120 seconds.
- This ends the 504 Gateway Timeout errors on hosted environments, whose infrastructure kills any response slower than ~30 seconds - precisely what a fresh research-grounded, quality-gated generation takes.
- Polls never stack duplicate work: repeated checks while generation runs join the same background task, and a second server can never double-generate thanks to the existing per-content lock.
- A failed generation quietly releases its slot so the next check simply tries again; unknown skills still fail fast with a proper error rather than a forever-pending screen.
