revive() restores the process-local parts of a mixeff object after
saveRDS() / readRDS() or a worker restart. The fitted artifact and flat
extractor values are the durable source of truth; the Rust handle is only a
cache and may be absent. Revival recreates the lazy R-side cache, keeps a
live native handle, and clears a dead one (an external pointer restored by
readRDS()); it does not refit the model. Without a live handle,
computations that need the engine model (contrasts, summary() tests,
predictions with intervals, profiles, bootstraps) refit it from the stored
model frame, with identical results.