Summary
A cron request can terminate with require(): Failed opening required .../changelog_handler.php when Neve attempts to load its dashboard changelog handler and the mapped PHP file is unavailable.
Expected behavior: an unavailable mapped class file is handled as an autoload miss without terminating the request.
Actual behavior: the request reaches a fatal error during theme bootstrap.
Impact: the affected site's cron execution is interrupted until the deployment or filesystem discrepancy is resolved.
Customer context
- Product / area: Neve theme bootstrap and dashboard changelog autoloading
- Version: 4.2.10
- Environment: WordPress 6.9.6, PHP 7.4.33, cron request
- Integration / third party: Not applicable
- Reported error / symptom:
require(): Failed opening required .../changelog_handler.php
- Impact: One production crash occurrence on one distinct site in the telemetry query window.
Reproduction notes
Reported production sequence:
- WordPress loads Neve during a cron request on version 4.2.10.
- Theme bootstrap reaches construction of the dashboard main module.
- Autoloading maps
Changelog_Handler to inc/admin/dashboard/changelog_handler.php.
- That file is unavailable on the installation, and the unconditional
require produces the reported fatal.
Runtime reproduction was not performed. The missing-file condition is established by telemetry; the mapped file is present in the inspected v4.2.10 Git tree.
Diagnosis
Conclusion
Production telemetry identifies a fatal at autoloader.php:148 while loading changelog_handler.php. In v4.2.10, Neve\Autoloader::require_file() performs an unconditional require, so an unavailable mapped PHP file terminates the request. The handler exists in the inspected v4.2.10 release tree; its absence on the affected installation is anomalous, but the unguarded autoload path is confirmed to turn that condition into a fatal.
Where this likely occurs
autoloader.php — lines 114-150, Neve\Autoloader::load_mapped_file() and Neve\Autoloader::require_file() construct mapped filenames and unconditionally require them at line 148.
inc/admin/dashboard/main.php — lines 44-47, Neve\Admin\Dashboard\Main::__construct() instantiates Changelog_Handler, reaching the mapped file inc/admin/dashboard/changelog_handler.php.
v4.2.10 (ba9965943) contains inc/admin/dashboard/changelog_handler.php, confirming it is part of that release rather than an optional source file.
- Commit
395e4b5dd (fix: improve autoloader and file inclusion handling) later adds file-readability handling in this area; it is outside the reported 4.2.10 release.
Engineering notes
The reported request was WordPress cron, not a dashboard page. The inspected bootstrap path constructs the dashboard main module before its init() method registers admin hooks, so dashboard-related class loading can occur during this request type. The exact production filesystem condition that made the tracked handler unavailable is unknown. WordPress core loading behavior was not inspected locally.
Test coverage status
tests/test-neve-loaders.php lines 18-36 (TestNeveLoaders::testAutoloader() and testFactory()) covers existing-class autoloading and factory construction, not missing mapped files. e2e-tests/cypress/integration/dashboard/changelog.spec.ts lines 1-28 covers dashboard changelog rendering only. No relevant coverage was found during inspection for a missing autoload target during cron bootstrap.
What to verify or explore next
- May be worth reproducing a cron bootstrap with the mapped changelog handler unavailable in a v4.2.10 package.
- Check whether the guarded autoload behavior from
395e4b5dd is included in a released version after 4.2.10.
- If reproducible, inspect deployment packaging and filesystem conditions associated with the missing tracked file.
Unknowns / follow-up
- The telemetry report has no structured stack trace beyond the fatal location.
- The affected site's package integrity, permissions, and deployment history are unavailable.
- Occurrence data covers one site and does not establish wider prevalence.
Confidence
Confidence: 93/100
The telemetry fatal maps exactly to Neve's unchecked autoloader require in v4.2.10. The requested handler is present in the release tree, so the production file absence is anomalous, but the theme converts that filesystem discrepancy into a cron-blocking fatal; later history contains a guarded-autoload change.
Crash telemetry
|
|
| Occurrences |
1 |
| Distinct sites |
1 |
| First seen |
2026-08-09 13:11 UTC |
| Last seen |
2026-08-09 13:11 UTC |
| Crash location |
product:autoloader.php:148 |
| Request context |
cron |
| Inside Themeisle SDK |
no |
| Product versions |
4.2.10 |
| WP versions |
6.9.6 |
| PHP versions |
7.4.33 |
| SDK versions |
3.3.59 |
Source: automated crash report — neve, fingerprint 5db4c0008a5fcd5e4fd959176b5ae87d
Generated by bug-report-triage (ID: bug-report-triage_6a7aba86767174.99916375)
Summary
A cron request can terminate with
require(): Failed opening required .../changelog_handler.phpwhen Neve attempts to load its dashboard changelog handler and the mapped PHP file is unavailable.Expected behavior: an unavailable mapped class file is handled as an autoload miss without terminating the request.
Actual behavior: the request reaches a fatal error during theme bootstrap.
Impact: the affected site's cron execution is interrupted until the deployment or filesystem discrepancy is resolved.
Customer context
require(): Failed opening required .../changelog_handler.phpReproduction notes
Reported production sequence:
Changelog_Handlertoinc/admin/dashboard/changelog_handler.php.requireproduces the reported fatal.Runtime reproduction was not performed. The missing-file condition is established by telemetry; the mapped file is present in the inspected v4.2.10 Git tree.
Diagnosis
Conclusion
Production telemetry identifies a fatal at
autoloader.php:148while loadingchangelog_handler.php. In v4.2.10,Neve\Autoloader::require_file()performs an unconditionalrequire, so an unavailable mapped PHP file terminates the request. The handler exists in the inspected v4.2.10 release tree; its absence on the affected installation is anomalous, but the unguarded autoload path is confirmed to turn that condition into a fatal.Where this likely occurs
autoloader.php— lines 114-150,Neve\Autoloader::load_mapped_file()andNeve\Autoloader::require_file()construct mapped filenames and unconditionally require them at line 148.inc/admin/dashboard/main.php— lines 44-47,Neve\Admin\Dashboard\Main::__construct()instantiatesChangelog_Handler, reaching the mapped fileinc/admin/dashboard/changelog_handler.php.v4.2.10(ba9965943) containsinc/admin/dashboard/changelog_handler.php, confirming it is part of that release rather than an optional source file.395e4b5dd(fix: improve autoloader and file inclusion handling) later adds file-readability handling in this area; it is outside the reported 4.2.10 release.Engineering notes
The reported request was WordPress cron, not a dashboard page. The inspected bootstrap path constructs the dashboard main module before its
init()method registers admin hooks, so dashboard-related class loading can occur during this request type. The exact production filesystem condition that made the tracked handler unavailable is unknown. WordPress core loading behavior was not inspected locally.Test coverage status
tests/test-neve-loaders.phplines 18-36 (TestNeveLoaders::testAutoloader()andtestFactory()) covers existing-class autoloading and factory construction, not missing mapped files.e2e-tests/cypress/integration/dashboard/changelog.spec.tslines 1-28 covers dashboard changelog rendering only. No relevant coverage was found during inspection for a missing autoload target during cron bootstrap.What to verify or explore next
395e4b5ddis included in a released version after 4.2.10.Unknowns / follow-up
Confidence
Confidence: 93/100
The telemetry fatal maps exactly to Neve's unchecked autoloader
requirein v4.2.10. The requested handler is present in the release tree, so the production file absence is anomalous, but the theme converts that filesystem discrepancy into a cron-blocking fatal; later history contains a guarded-autoload change.Crash telemetry
product:autoloader.php:148Source: automated crash report — neve, fingerprint
5db4c0008a5fcd5e4fd959176b5ae87dGenerated by bug-report-triage (ID: bug-report-triage_6a7aba86767174.99916375)