Summary
Otter Blocks can terminate a frontend request during initialization with Class "...Atomic_Wind_Blocks" not found.
Expected behavior: plugin initialization continues when the Atomic Wind module cannot be loaded, or the released package makes the module available before it is initialized.
Actual behavior: initialization attempts to create the unavailable class and produces a fatal error.
Impact: the affected frontend request cannot complete.
Customer context
- Product / area: Otter Blocks frontend initialization
- Version: 3.2.0
- Environment: WordPress 7.0.2; PHP 8.4.23
- Integration / third party: Themeisle SDK 3.3.58 was present; telemetry marks the crash as outside SDK code.
- Reported error / symptom:
Class "...Atomic_Wind_Blocks" not found at inc/class-main.php:97
- Impact: One fatal occurrence across one site in the telemetry query window, first and last seen 2026-07-30 UTC.
Reproduction notes
- Install Otter Blocks
3.2.0 with a Composer autoload map that does not contain ThemeIsle\GutenbergBlocks\Plugins\Atomic_Wind_Blocks.
- Load a frontend request so WordPress runs the
init callback registered by Otter.
- Observed production result:
Main::autoload_classes() attempts to instantiate the class and the request fatals at inc/class-main.php:97.
Direct reproduction against the affected production package was not performed; its archive was not available in the workspace.
Diagnosis
Conclusion
Production telemetry provides a direct fatal-error report at the Otter initialization loop. In the v3.2.0 source, Atomic_Wind_Blocks is added to the initialization list and instantiated without an availability check. The class exists in the source tree, but Composer is configured to expose inc/ through a generated classmap and vendor/ is not versioned. The observed runtime class-not-found error is therefore consistent with the released installation having an incomplete or stale generated autoload map, and the unconditional initialization turns that packaging/runtime inconsistency into a frontend fatal.
Where this likely occurs
inc/class-main.php — ThemeIsle\GutenbergBlocks\Main::autoload_classes() lines 63-101; line 91 lists Plugins\Atomic_Wind_Blocks, and line 97 instantiates each listed class without class_exists().
inc/plugins/class-atomic-wind-blocks.php — ThemeIsle\GutenbergBlocks\Plugins\Atomic_Wind_Blocks line 16; the class is present in the v3.2.0 tag source.
composer.json — autoload lines 61-65; inc/ is configured as a Composer classmap, so loading this class depends on generated vendor metadata.
.gitignore — line 7 excludes vendor; otter-blocks.php lines 35-42 loads vendor/autoload.php before resolving Main.
- Git history attributes the added class-list entry to
75d2c9a2 (feat: adds atomic-wind blocks), which is included in v3.2.0. The crash was reported against v3.2.0; v3.2.1 retains the same initialization path in the inspected source.
Engineering notes
- Telemetry identifies this as product code, not bundled Themeisle SDK code, so routing is
Codeinwp/otter-blocks.
- The failure occurs before
Atomic_Wind_Blocks::instance() can evaluate its feature option, so a disabled Atomic Wind setting does not protect the reported path once the class cannot be autoloaded.
- The inspected deployment workflow runs Composer before the distribution build, which suggests the exact cause of the affected package cannot be established from the repository alone. The production fatal nevertheless confirms the class was unavailable at runtime for this initialization path.
- Evidence covers one reported site and one frontend request; broader affected-package scope is unknown.
Test coverage status
tests/test-atomic-wind-blocks.php exercises Atomic_Wind_Blocks directly, including construction at lines 34-39. No relevant coverage was found during inspection for a packaged Composer autoload map missing this class, or for Main::autoload_classes() encountering an unavailable listed class.
What to verify or explore next
- Reproduce with a
v3.2.0 release archive and inspect its generated Composer classmap for ThemeIsle\GutenbergBlocks\Plugins\Atomic_Wind_Blocks.
- Run the PHP bootstrap path with an autoload map that omits the Atomic Wind class and confirm the reported frontend fatal at
Main::autoload_classes().
- Compare the generated
vendor/composer metadata from the affected v3.2.0 package, if retained, with a clean build from tag v3.2.0.
- Check whether the same failure can occur after updating to
v3.2.1.
Unknowns / follow-up
- The telemetry report has no structured stack trace beyond the shutdown-detected fatal and no retained plugin archive.
- It is unknown whether the unavailable class resulted from a release artifact, a partial update, or an environmental modification on the affected site.
Confidence
Confidence: 88/100
Production telemetry records a frontend fatal in Otter Blocks 3.2.0. The tagged source unconditionally instantiates the reported class during init, while that class is supplied only through Composer's generated inc/ classmap; this makes a missing or stale generated map a site-fatal condition rather than a recoverable unavailable feature.
Crash telemetry
|
|
| Occurrences |
1 |
| Distinct sites |
1 |
| First seen |
2026-07-30 00:42 UTC |
| Last seen |
2026-07-30 00:42 UTC |
| Crash location |
product:inc/class-main.php:97 |
| Request context |
frontend |
| Inside Themeisle SDK |
no |
| Product versions |
3.2.0 |
| WP versions |
7.0.2 |
| PHP versions |
8.4.23 |
| SDK versions |
3.3.58 |
Source: automated crash report — otter-blocks, fingerprint 0d21502f7613a96991ebeacf4aaccb73
Generated by bug-report-triage (ID: bug-report-triage_6a6edcfbb58e71.73561400)
Summary
Otter Blocks can terminate a frontend request during initialization with
Class "...Atomic_Wind_Blocks" not found.Expected behavior: plugin initialization continues when the Atomic Wind module cannot be loaded, or the released package makes the module available before it is initialized.
Actual behavior: initialization attempts to create the unavailable class and produces a fatal error.
Impact: the affected frontend request cannot complete.
Customer context
Class "...Atomic_Wind_Blocks" not foundatinc/class-main.php:97Reproduction notes
3.2.0with a Composer autoload map that does not containThemeIsle\GutenbergBlocks\Plugins\Atomic_Wind_Blocks.initcallback registered by Otter.Main::autoload_classes()attempts to instantiate the class and the request fatals atinc/class-main.php:97.Direct reproduction against the affected production package was not performed; its archive was not available in the workspace.
Diagnosis
Conclusion
Production telemetry provides a direct fatal-error report at the Otter initialization loop. In the
v3.2.0source,Atomic_Wind_Blocksis added to the initialization list and instantiated without an availability check. The class exists in the source tree, but Composer is configured to exposeinc/through a generated classmap andvendor/is not versioned. The observed runtime class-not-found error is therefore consistent with the released installation having an incomplete or stale generated autoload map, and the unconditional initialization turns that packaging/runtime inconsistency into a frontend fatal.Where this likely occurs
inc/class-main.php—ThemeIsle\GutenbergBlocks\Main::autoload_classes()lines 63-101; line 91 listsPlugins\Atomic_Wind_Blocks, and line 97 instantiates each listed class withoutclass_exists().inc/plugins/class-atomic-wind-blocks.php—ThemeIsle\GutenbergBlocks\Plugins\Atomic_Wind_Blocksline 16; the class is present in thev3.2.0tag source.composer.json—autoloadlines 61-65;inc/is configured as a Composer classmap, so loading this class depends on generatedvendormetadata..gitignore— line 7 excludesvendor;otter-blocks.phplines 35-42 loadsvendor/autoload.phpbefore resolvingMain.75d2c9a2(feat: adds atomic-wind blocks), which is included inv3.2.0. The crash was reported againstv3.2.0;v3.2.1retains the same initialization path in the inspected source.Engineering notes
Codeinwp/otter-blocks.Atomic_Wind_Blocks::instance()can evaluate its feature option, so a disabled Atomic Wind setting does not protect the reported path once the class cannot be autoloaded.Test coverage status
tests/test-atomic-wind-blocks.phpexercisesAtomic_Wind_Blocksdirectly, including construction at lines 34-39. No relevant coverage was found during inspection for a packaged Composer autoload map missing this class, or forMain::autoload_classes()encountering an unavailable listed class.What to verify or explore next
v3.2.0release archive and inspect its generated Composer classmap forThemeIsle\GutenbergBlocks\Plugins\Atomic_Wind_Blocks.Main::autoload_classes().vendor/composermetadata from the affectedv3.2.0package, if retained, with a clean build from tagv3.2.0.v3.2.1.Unknowns / follow-up
Confidence
Confidence: 88/100
Production telemetry records a frontend fatal in Otter Blocks 3.2.0. The tagged source unconditionally instantiates the reported class during
init, while that class is supplied only through Composer's generatedinc/classmap; this makes a missing or stale generated map a site-fatal condition rather than a recoverable unavailable feature.Crash telemetry
product:inc/class-main.php:97Source: automated crash report — otter-blocks, fingerprint
0d21502f7613a96991ebeacf4aaccb73Generated by bug-report-triage (ID: bug-report-triage_6a6edcfbb58e71.73561400)