3.14.2
A catalog PDF made by an older engine is now rebuilt until a build succeeds, and a queued rebuild can never overwrite a PDF the college uploaded.
- Fixed **An old catalog PDF can no longer stay public after an update.** Each generated catalog records the engine that built it, and only a successful build writes that record. Once an hour Kenii queues a rebuild for any generated catalog made by an older engine, so a rebuild that fails is retried rather than forgotten.
- Fixed **A rebuild never overwrites an uploaded catalog PDF.** The build now checks for an uploaded PDF when it runs, not only when it is queued, so a PDF uploaded while a rebuild was waiting stays in place.
- Fixed **A build that keeps failing stops after three tries** instead of retrying every hour, and the reason is kept on the catalog year's PDF status for an admin to see. A later successful build clears it.
- Fixed New rail `tests/pdf-rebuild-heals.php` builds the active catalog, then proves a stale file is queued, a real failed build is counted and retried up to three times, an uploaded PDF is refused and left byte-for-byte untouched, a current file and a year with no generated PDF are left alone, and the check waits an hour. It restores every record and file it touches, and goes red when the success record, the upload guard or the retry cap is removed.