Gate the installer's license / next-steps success message behind a
verification that every child extension declared in the package manifest
actually landed in #__extensions. If any bundled extension is missing,
show an honest error instead of the success/license message and return.
Fails open: any error (unreadable manifest, query failure) is treated as
"nothing missing" so a transient glitch never fakes a failure. Housekeeping
(dlid restore, plugin enable) still runs unconditionally.
Claude-Session: https://claude.ai/code/session_01B9aZHSWbiiZykJD88pYx8R