Skip to content

Missing bundled pattern file causes a frontend fatal error #4582

Description

@pirate-bot

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

  1. On Neve 3.8.16, make the configured three-columns-images-texts-content.php pattern file unavailable or unreadable.
  2. Load a frontend request after WordPress initialization reaches Neve pattern registration.
  3. 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.phpNeve\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.phpNeve\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.phpneve_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)

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions