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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions