6b4f98869a
Universal: PR Check / Require Docs Update (pull_request) Has been skipped
Universal: PR Check / Wiki Update Reminder (pull_request) Has been skipped
Universal: PR Check / Branch Policy (pull_request) Successful in 2s
Universal: PR Check / Secret Scan (pull_request) Successful in 8s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 37s
Generic: Project CI / Lint & Validate (pull_request) Successful in 33s
Universal: PR Check / Validate PR (pull_request) Failing after 28s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 32s
Generic: Project CI / Tests (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Joomla logs a failed child extension but still runs the package postflight, so the 'installed successfully' message could appear on a broken install. In postflight, before the success/next-steps messages: - verify every bundled child declared in the package manifest actually registered in #__extensions (match element+type, and folder=group for plugins), and - verify the component's schema tables (parsed dynamically from the installed install.mysql.sql) exist in the DB. If anything is missing, enqueue an error listing it and RETURN before the success message. Fail-open (try/catch -> nothing missing) so a transient manifest/DB/IO glitch can't fail a good install. Unconditional housekeeping (download-key restore, menu fixes) still runs regardless. Names escaped with htmlspecialchars; table/child lists derived dynamically, never hard-coded. Claude-Session: https://claude.ai/code/session_01WbGBN9VyRK61zczYWcCQ2i