Summary
Neve can terminate a frontend request when the registered three-columns-images-texts-content pattern file is unavailable.
Expected behavior: An unavailable optional pattern file is skipped and the site continues loading.
Actual behavior: Pattern registration raises a fatal “Failed opening required” error during initialization.
Impact: Affected sites return a fatal error on frontend requests instead of rendering the requested page.
Customer context
- Product / area: Neve block-pattern registration
- Version: 3.8.16
- Environment: WordPress 7.0.2 and 7.0.4; PHP 7.4.33
- Integration / third party: Not applicable
- Reported error / symptom:
Failed opening required for three-columns-images-texts-content.php at pattern registration
- Impact: 2 telemetry occurrences across 1 production site during the observed window; frontend requests crashed.
Reproduction notes
- On Neve
3.8.16, make the configured three-columns-images-texts-content.php pattern file unavailable or unreadable.
- Load a frontend request after WordPress initialization reaches Neve pattern registration.
- Observed production result: the request fatals with
Failed opening required for that file.
The availability failure was captured by telemetry; its cause was not captured, so the file-removal/readability setup is inferred from the fatal message.
Diagnosis
Conclusion
Production telemetry records a frontend fatal at Patterns::define_patterns() while requiring three-columns-images-texts-content.php. The source at release v3.8.16 contains an unconditional require for every configured pattern, including that filename, so an unavailable file terminates the initialization request. This is direct code evidence for the reported behavior.
Where this likely occurs
inc/compatibility/patterns.php — Neve\Compatibility\Patterns::define_patterns() approx. lines 46-58 in v3.8.16; iterates the pattern list and passes require __DIR__ . '/block-patterns/' . $pattern . '.php' directly to register_block_pattern().
inc/compatibility/patterns.php — Neve\Compatibility\Patterns::$patterns approx. lines 21-34 in v3.8.16; includes three-columns-images-texts-content, matching the crash filename.
inc/core/core_loader.php — core feature list approx. lines 116-130 includes Compatibility\Patterns, confirming this compatibility component is loaded in the standard theme bootstrap.
- Commit
395e4b5dd58b5adc102f0936b417efa4ca6bf41e (fix: improve autoloader and file inclusion handling, 2026-08-07) changes this method to use a guarded array loader and skip unavailable patterns. The current branch contains that commit; v4.2.11 contains it, while affected tag v3.8.16 predates it.
Engineering notes
- The current checkout contains
inc/compatibility/block-patterns/three-columns-images-texts-content.php, but the fatal proves the production installation could not load that path at runtime. The raw require in v3.8.16 makes absence or unreadability of a packaged pattern file fatal.
- The telemetry is from the frontend
init path, not an editor-only pattern insertion flow.
- No Themeisle SDK frame or SDK source is implicated; telemetry explicitly identifies the crash as outside the SDK.
- The later guarded path in
globals/utilities.php — neve_require_array() lines 400-407 — checks file presence and readability before including it. This supports the scope of the historical issue but does not establish why the file was unavailable on the affected production installation.
Test coverage status
tests/test-neve-file-guards.php contains coverage for neve_require_array() missing-file behavior at Test_Neve_File_Guards::testRequireArrayFallsBackForMissingFile() lines 63-75.
- No pattern-registration-specific test covering a missing item from
Patterns::$patterns was found during inspection. The available helper test coverage was introduced with the later guard commit, not in v3.8.16.
What to verify or explore next
- May be worth reproducing from a
v3.8.16 installation after making the named pattern file unavailable, then loading a frontend request.
- Check whether released 3.8.x package generation or interrupted updates can leave a configured pattern absent or unreadable.
- If release maintenance is in scope, inspect the earliest release tag containing
395e4b5dd and verify frontend behavior there with the file unavailable.
Unknowns / follow-up
- The telemetry does not identify why the target file was absent on the affected site.
- The observed crash count is limited to one site and two requests; wider prevalence is unknown.
Confidence
Confidence: 96/100
The production crash is directly attributable to Neve 3.8.16 requiring a pattern file without an existence guard; the released source matches the telemetry location, and later Neve history adds explicit protection for this failure mode.
Crash telemetry
|
|
| Occurrences |
2 |
| Distinct sites |
1 |
| First seen |
2026-08-06 04:39 UTC |
| Last seen |
2026-08-12 19:38 UTC |
| Crash location |
product:inc/compatibility/patterns.php:53 |
| Request context |
frontend |
| Inside Themeisle SDK |
no |
| Product versions |
3.8.16 |
| WP versions |
7.0.2, 7.0.4 |
| PHP versions |
7.4.33 |
| SDK versions |
3.3.58 |
Source: automated crash report — neve, fingerprint 3a42cdd190200998da6118eb8d402823
Generated by bug-report-triage (ID: bug-report-triage_6a7d5d85bf7b97.65006165)
Summary
Neve can terminate a frontend request when the registered
three-columns-images-texts-contentpattern file is unavailable.Expected behavior: An unavailable optional pattern file is skipped and the site continues loading.
Actual behavior: Pattern registration raises a fatal “Failed opening required” error during initialization.
Impact: Affected sites return a fatal error on frontend requests instead of rendering the requested page.
Customer context
Failed opening requiredforthree-columns-images-texts-content.phpat pattern registrationReproduction notes
3.8.16, make the configuredthree-columns-images-texts-content.phppattern file unavailable or unreadable.Failed opening requiredfor that file.The availability failure was captured by telemetry; its cause was not captured, so the file-removal/readability setup is inferred from the fatal message.
Diagnosis
Conclusion
Production telemetry records a frontend fatal at
Patterns::define_patterns()while requiringthree-columns-images-texts-content.php. The source at releasev3.8.16contains an unconditionalrequirefor every configured pattern, including that filename, so an unavailable file terminates the initialization request. This is direct code evidence for the reported behavior.Where this likely occurs
inc/compatibility/patterns.php—Neve\Compatibility\Patterns::define_patterns()approx. lines 46-58 inv3.8.16; iterates the pattern list and passesrequire __DIR__ . '/block-patterns/' . $pattern . '.php'directly toregister_block_pattern().inc/compatibility/patterns.php—Neve\Compatibility\Patterns::$patternsapprox. lines 21-34 inv3.8.16; includesthree-columns-images-texts-content, matching the crash filename.inc/core/core_loader.php— core feature list approx. lines 116-130 includesCompatibility\Patterns, confirming this compatibility component is loaded in the standard theme bootstrap.395e4b5dd58b5adc102f0936b417efa4ca6bf41e(fix: improve autoloader and file inclusion handling, 2026-08-07) changes this method to use a guarded array loader and skip unavailable patterns. The current branch contains that commit;v4.2.11contains it, while affected tagv3.8.16predates it.Engineering notes
inc/compatibility/block-patterns/three-columns-images-texts-content.php, but the fatal proves the production installation could not load that path at runtime. The rawrequireinv3.8.16makes absence or unreadability of a packaged pattern file fatal.initpath, not an editor-only pattern insertion flow.globals/utilities.php—neve_require_array()lines 400-407 — checks file presence and readability before including it. This supports the scope of the historical issue but does not establish why the file was unavailable on the affected production installation.Test coverage status
tests/test-neve-file-guards.phpcontains coverage forneve_require_array()missing-file behavior atTest_Neve_File_Guards::testRequireArrayFallsBackForMissingFile()lines 63-75.Patterns::$patternswas found during inspection. The available helper test coverage was introduced with the later guard commit, not inv3.8.16.What to verify or explore next
v3.8.16installation after making the named pattern file unavailable, then loading a frontend request.395e4b5ddand verify frontend behavior there with the file unavailable.Unknowns / follow-up
Confidence
Confidence: 96/100
The production crash is directly attributable to Neve 3.8.16 requiring a pattern file without an existence guard; the released source matches the telemetry location, and later Neve history adds explicit protection for this failure mode.
Crash telemetry
product:inc/compatibility/patterns.php:53Source: automated crash report — neve, fingerprint
3a42cdd190200998da6118eb8d402823Generated by bug-report-triage (ID: bug-report-triage_6a7d5d85bf7b97.65006165)