Skip to content

Pattern registration fatals when cafe-about.php is unavailable #2980

Description

@pirate-bot

Summary

Otter Blocks can terminate frontend requests while registering bundled patterns when the Cafe - About pattern file is unavailable.

Expected behavior: pattern registration continues without taking down the request when an individual bundled pattern cannot be loaded.

Actual behavior: the request ends with a failed-opening-required error for cafe-about.php.

Impact: affected sites can return an error for frontend requests that initialize WordPress, including the reported XML-RPC request path.

Customer context

  • Product / area: Otter Blocks pattern registration
  • Version: 3.2.2
  • Environment: WordPress 7.0.4; PHP 8.3.33
  • Integration / third party: None reported
  • Reported error / symptom: Failed opening required cafe-about.php during frontend initialization
  • Impact: 2 telemetry occurrences across 1 site between 2026-08-15 and 2026-08-19.

Reproduction notes

  1. Install Otter Blocks 3.2.2 on a supported WordPress environment.
  2. Make the configured inc/patterns/cafe-about.php file unavailable while leaving its registration entry present.
  3. Initialize WordPress through a frontend or XML-RPC request.

Reported result: initialization ends with a failed-opening-required error for that pattern file. The production report confirms the failure; the unavailable-file setup has not been run locally during this investigation.

Diagnosis

Conclusion

Production crash telemetry identifies ThemeIsle\GutenbergBlocks\Patterns::register_patterns() as the failing application frame at inc/class-patterns.php:378. The inspected code constructs a path from every configured pattern slug and passes it directly to require; therefore, an unavailable bundled pattern file produces the recorded uncaught error rather than isolating that unavailable pattern. The repository's v3.2.2 tag contains inc/patterns/cafe-about.php, so the evidence does not establish why that one production installation lacked it.

Where this likely occurs

  • Frontend WordPress init invokes the pattern-registration callback registered in inc/class-patterns.php lines 41-42, Patterns::init().
  • inc/class-patterns.php lines 322-334, Patterns::register_patterns(), includes cafe-about in the page-pack pattern list for WordPress versions at least 5.8.
  • inc/class-patterns.php lines 369-379, Patterns::register_patterns(), derives inc/patterns/<slug>.php and executes an unconditional require at line 378.
  • inc/patterns/cafe-about.php lines 1-13 exists in the inspected checkout and in tag v3.2.2; the failure condition is an absent or inaccessible file in the affected deployment rather than a missing tracked source file.
  • Git history attributes the current pattern-library structure to ca984a20 (feat: rework pattern library and patterns), which added the cafe-about registration entry.

Engineering notes

The failure is in the free Otter Blocks repository, not the bundled Themeisle SDK. The callback runs on init without an is_admin() restriction, matching telemetry marked as frontend and the XML-RPC bootstrap stack. The unconditional include applies to the entire configured pattern list; only the cafe-about.php absence is evidenced by this crash fingerprint. The installation or delivery condition that made the file unavailable is unknown from aggregated telemetry.

Test coverage status

tests/test-patterns-upsell.php lines 242-252, test_register_patterns_registers_categories_and_patterns(), exercises successful pattern registration and one expected registered pattern. No relevant coverage was found during inspection for a configured pattern whose source file is absent or unreadable.

What to verify or explore next

  • Reproduce in an isolated Otter Blocks 3.2.2 installation after making only inc/patterns/cafe-about.php unavailable, then invoke WordPress initialization.
  • Check the distributed 3.2.2 archive and update/install workflow for conditions that can omit or make a file under inc/patterns/ inaccessible.
  • Run the PHP pattern test suite with a temporary unavailable-pattern scenario to characterize current behavior.
  • Verify whether the same failure mode occurs for other entries in the configured pattern list.

Unknowns / follow-up

  • The telemetry contains no plugin filesystem state, installation method, permissions, or full unredacted path.
  • The affected site's use of a customized, incomplete, or interrupted plugin installation is not known.

Confidence

Confidence: 91/100

Production telemetry records two frontend crashes on Otter Blocks 3.2.2, and the reported failing require is directly reachable in the plugin's pattern-registration loop without a missing-file fallback. The release tag contains the referenced pattern file, so the absent-file condition is likely installation/package-state specific, but the resulting uncaught fatal error is confirmed by the recorded stack and source inspection.

Crash telemetry

Occurrences 2
Distinct sites 1
First seen 2026-08-15 14:36 UTC
Last seen 2026-08-19 04:59 UTC
Crash location product:inc/class-patterns.php:378
Request context frontend
Inside Themeisle SDK no
Product versions 3.2.2
WP versions 7.0.4
PHP versions 8.3.33
SDK versions 3.3.58

Source: automated crash report — otter-blocks, fingerprint a17424dbcfa9b630ab22b39c4f777c09
Generated by bug-report-triage (ID: bug-report-triage_6a86981a746427.03112827)

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions