Architecture 

Manifest loading 

StylexManifestService collects paths from StylexRegistry and then adds the Extension Manager manifestPath according to manifestPathMode. It resolves EXT: paths with TYPO3's file utility and accepts absolute paths too.

The service reads the styles object from every valid manifest and merges them in registration order. A later manifest replaces a complete entry with the same key. Missing files, malformed entries and unintended collisions produce bounded logger-backed diagnostics with owner and path. Rendering keeps available styles; stylex:validate applies the strict release policy.

Caching 

Outside Development, the service stores the merged styles in TYPO3's stylex_manifest cache. The cache is a VariableFrontend with a FileBackend and belongs to the all and pages cache groups. Its default lifetime is one day. Ordered owners, override permissions, normalized paths and SHA-256 file content hashes identify the cache entry. Content hashing reads each artifact once per service instance even on a cache hit. JSON parsing happens only on a miss. Incomplete loads never populate the persistent cache.

The service loads the manifest at most once per request after a cache miss. Use StylexManifestService::clearCache() only from PHP code that has a reason to force a reload. Normal deployment work should flush TYPO3 caches after replacing generated assets.

Class resolution 

StylexManifestService::getClasses() flattens comma-separated style keys. For compiled entries it keeps a map of opaque conflict identifier to class name. Later keys replace the previous value for the same identifier; null removes it. Complete recipes concatenate their whole class lists without conflict resolution. The result removes duplicate classes before returning a space-separated string.

The ViewHelper passes base keys, matching when keys, and an optional else fallback to this method. It HTML-escapes the returned string before Fluid puts it in an attribute.

The canonical PHP namespace remains Vendor\StylexConnector. Composer autoloads Configuration/Compatibility.php to provide explicit Skom aliases even before TYPO3 bootstrap. The bootstrap also loads that file for classic extension installations. Both namespaces share the same registry and DI services.