hirethunk/verbs
Verbs is an event sourcing package for Laravel artisans that removes boilerplate and jargon, letting you model your domain by what happens—verbs, not nouns. Persist events, rebuild state, and ship faster with a clean, expressive API designed to make event sourcing feel natural in PHP.
Architecture fit
boot phase, and time-travel testing ("wormholes") with historical now() during replay. These are the differentiators versus assembling spatie/laravel-event-sourcing plus custom infrastructure.Integration feasibility
Technical risk
#[Once], nested wormhole warps, state type-hint handling). Any minor bump should be treated as potentially breaking until 1.0.fire no-op during replay, historical now()). Each of those is a class of bug that only surfaces on replay months later — the risk is latent, not immediate.Key questions
--tries semantics?Stack fit
Migration path
Compatibility
"hirethunk/verbs": "0.9.x") rather than using ^0.9. Read every changelog entry before bumping; treat minor releases as breaking until 1.0.id_type configuration (snowflake vs UUID vs auto-increment) early — it appears in config and changing it later implies migrating existing event store rows.Sequencing
Maintenance
Support
verbs.thunk.dev), README, changelog, and releases are all present and current — better than most 0.x packages. The docs cover states, events, IDs, factories, testing, and customization.Scaling
Failure modes
now() support and fire-noop-during-replay mitigate the common cases but do not eliminate the class.id_type or snowflake settings after events exist is a data migration, not a config change.Ramp-up
Bottom line: Verbs is a well-documented, actively maintained, ergonomic event-sourcing layer that fits Laravel unusually well. The blocker for a TPM is not capability — it is the combination of pre-1.0 API churn, zero downstream dependents, and the fact that replay correctness bugs are latent by nature. Recommend a scoped pilot in one bounded context with pinned versions and a rehearsed replay drill, gated on the key questions above — particularly snapshots, event versioning, and support commitment — before any expansion.
How can I help you explore Laravel packages today?