Critical fix — 0.9.0 sites with MemberPress (and other membership plugins) fatal-error on bootstrap
Users on 0.9.0 with MemberPress installed observed a fatal at plugin bootstrap:
Failed opening required '.../acrossai-pro/tests/Unit/AccessControl/bootstrap.php' in vendor/jetpack-autoloader/class-php-autoloader.php
All 0.9.0 users are strongly advised to upgrade to 0.9.1 immediately.
Root cause
The Brain/Monkey unit-test bootstrap added in 0.9.0 declares plain global-namespace stub classes (MeprUser, RcpTestCustomer, and function shims for the 10 dependency plugins) that the unit-test fixtures rely on. Jetpack Autoloader scans the entire plugin tree at composer dump-autoload time to build its cross-plugin conflict-resolution classmap — that scan ignores composer's PSR-4 boundaries by design and picked up the test-stub MeprUser, mapping it to tests/Unit/AccessControl/bootstrap.php. The deployed vendor/ shipped that classmap. When MemberPress asked to autoload MeprUser on production, the autoloader tried to require the test bootstrap — which isn't part of the distribution → fatal.
Fix
Adds "exclude-from-classmap": ["/tests/"] to composer.json's autoload block. Jetpack Autoloader honors this and skips tests/ entirely during the classmap scan. Verified locally after composer dump-autoload --no-dev -o — zero test-stub classes leaked into vendor/composer/jetpack_autoload_classmap.php.
See PR #44.
Operator action required after upgrading
composer.json ships in this update, but vendor/ is gitignored. Rebuild the plugin's vendor/ before deploying:
composer install --no-dev -oImmediate mitigation for an already-affected live site (before deploying 0.9.1)
Either:
- Delete
vendor/composer/jetpack_autoload_classmap.phpon production — Jetpack regenerates it on the next request. - Or run
composer dump-autoload --no-dev -oon the server directly.
Either resolves the fatal within a single request.
Upgrade notes
- Drop-in replacement for 0.9.0. No schema change, no data migration.
- All 10 access-control providers shipped in 0.9.0 remain functional post-upgrade.
- No behavior change beyond the fatal fix.