# Public Event Names Outlive Their Implementation Structure ## Claim Once extensions depend on an event identifier, its public name becomes a compatibility contract that should not mirror replaceable implementation structure. <!-- atomicity: 1 idea ✓ --> ## Scope & conditions - Applies to WordPress hooks and other extension event systems. - Object-based events may improve typing and tooling without making class names safe public identifiers. - Migration needs aliases or explicit version boundaries when existing names already have consumers. ## Evidence [[3. Resources/Readwise/Articles/Rethinking Do_action() Events as Objects, Hooks as Class Names]] explores event objects while exposing the durability risk of using implementation class names as hook names. ## Links - [[Type Compatibility Can Hide Runtime Removal]] — supports: public compatibility depends on runtime behavior, not type shape alone. - [[Portability Is Proven by a Second Implementer Not by Design Intent]] — applies-in: independent consumers reveal whether an event contract is genuinely public. - [[Intent Written on the Outside Compounds While Re-Derived Intent Is Debt]] — parallels: durable names preserve meaning outside current implementation. - [[3. Resources/MOCs/Open Source Governance MOC]] — applies-in: the MOC lists this note under Synthesis additions (2026-08-12 — event compatibility).