BC-065E — EventPlatform / Projection / Realtime Final Certification¶
Status: HISTORICAL
For the current architecture, see: ./dependances.md, ../runtime/overview.md.
Status¶
BC-065E completed.
BC-065 is now closable.
No plugin file changed. No runtime mirror file changed. No Composer change. No runtime sync.
Final architecture¶
EventBridge¶
EventBridge remains the only serialization-sensitive boundary in the BC-065 slice:
PersistableEventSerializerPersistableEventStoreEventPlatform\EventBus
Certified invariants:
- same persisted
event::class - same persisted
get_object_vars($event)payload - same persist-then-dispatch order
- same exception propagation
EventPlatform / M12¶
Retained:
EventPlatform\Bus\EventBusEventPlatform\Kernel\PlatformKernel
Compatibility wrappers retained:
M12\EventBus\EventBusM12\Wiring\PlatformKernel
Certified invariants:
- M12 wrappers are loadable
instanceofbehavior is preserved- no duplicated business logic exists in wrappers
Projection / Realtime¶
Retained orchestration shells:
Projection\EventSubscriberRegistryProjection\ProjectionCatalogWiringProjection\ProjectionEngineRealtime\Async\AsyncEventQueueRealtime\Async\AsyncWorkerRealtime\RealtimeCatalogRebuilder
Certified invariants:
- registry accepts canonical
Platform\Domain\Shared\DomainEvent - wiring accepts canonical
CatalogProjectionWriter - worker forwards canonical
DomainEventinstances to realtimeprocess() - rebuilder boot is idempotent
- rebuilder product-id extraction supports
productId()andaggregateId()
Proven graph¶
EventBridge
-> PersistableEventSerializer
-> PersistableEventStore
-> EventPlatform EventBus
M12 EventBus
-> EventPlatform EventBus
M12 PlatformKernel
-> EventPlatform PlatformKernel
ProjectionCatalogWiring
-> ProjectionEngine
-> CatalogProjectionWriter
AsyncWorker
-> AsyncEventQueue
-> RealtimeCatalogRebuilder::process()
RealtimeCatalogRebuilder
-> EventSubscriberRegistry
-> CatalogRankingEngine
-> CatalogIntelligenceEngine
No production runtime entrypoint proving a live EventBridge -> Projection -> Realtime chain was found.
Boundaries¶
Certified final boundaries:
- plugin WordPress ->
Application\EventPlatform|M12|M17|Projection|Realtime= 0 - runtime mirror -> same families = 0
- no SQL in the BC-065 legacy slice
- no HTTP / CLI / WordPress hook / HTML in the BC-065 legacy slice
- no additional serialization-sensitive surface beyond
EventBridge
Reflection / autoload¶
Certified:
- no new production
class_alias()was introduced - no new Composer autoload entry was introduced
EventBusandPlatformKernelremain intentionally non-final for wrapper compatibilityEventBridgeconstructor depends onPersistableEventStore- BC-065 legacy classes remain outside Composer PSR-4 autoload and are certified as residual internal debt only
Residual P2 debt¶
Accepted P2 only:
EventPlatform\EventDispatcherwithout proven production consumerEventPlatform\Contracts\Eventwithout proven production consumerEventPlatform\Contracts\EventHandlerwithout proven production consumerProjectionEnginestill placeholderAsyncEventQueuestill in-memory- no proven production runtime entrypoint for the legacy Projection / Realtime chain
CatalogIntelligenceEnginelegacy dependency tracked outside BC-065
No P0/P1 debt remains in the BC-065 scope.
Closure decision¶
- BC-065E: closable
- BC-065: closable
Suggested next BC¶
If future work is needed, it should be a new dedicated BC outside BC-065, focused on one of:
- retiring
EventDispatcher/ marker contracts if a full non-usage proof is desired - replacing
AsyncEventQueuewith a canonical queue port - retiring placeholder
ProjectionEngine - addressing
CatalogIntelligenceEnginelegacy dependency separately