# 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).