The single most common message we got: "it's been indexing this course for an hour." Usually at ninety-something percent, usually forever.

The cause was a queue that could not admit defeat. Course materials are parsed one at a time, and a file that failed in the wrong way — a PDF with a broken page, a link to something that no longer exists, a file the LMS says is there and then will not hand over — did not fail. It waited. Everything behind it waited with it, and the progress bar sat at the last number it had honestly earned.

The queue now finishes. A file that cannot be parsed is recorded as such and the queue moves on, so one bad document costs you that document instead of the whole course. Indexing reports what it actually covered rather than an optimistic fraction.

The same release makes searches route better. Asking "when is the midterm" and asking "find the midterm review slides" want different things, and Scope now tells them apart before it goes looking, instead of running the same retrieval for both and hoping.

The reason we are reasonably confident this one stays fixed: it now has tests. The parse queue is tested against files that fail in each of the ways real ones do, and index coverage is tested against a course where some materials cannot be read — the case that used to hang.