Repository navigation
Add firefly/eventsourcing: event store, snapshots, projections and event-sourced orchestration - #18
Merged
Merged
Conversation
added 30 commits
October 13, 2026 07:42
…er it in every package list
…t the package cannot honour
…ith its metadata and the eventsourcing exceptions
…chain with priorities
…y event store passes
… before upcasting
… order and translating racing appends into ConcurrencyException
…so concurrent appenders wait instead of failing with SQLITE_BUSY
… committers on PostgreSQL, MySQL, MariaDB, SQL Server and SQLite
…map them to stored events without reflection
…r parameters and public properties differ, so nothing is stored that cannot be read back
… at scan time a convention-mapped parameter type the mapper cannot rebuild
…h a class member or an intersection, which the mapper would hand the raw stored value
…ecount the sixteen artifacts it writes
…tion handlers, versions and history replay
…p-count retention and an every-N policy
…ributors and tenant-scoped streams
…e same transaction, or after commit
…t and the migrations, proven through the real pipeline
…er-commit publishing through the real pipeline and on every server
…d fenced memory and database checkpoint stores
…ot isolation as a checkpoint conflict
…th fenced checkpoints, catch-up, live mode and rebuild
…jection lag in an eventsourcing health component and add the projection commands
…rced aggregate that replays its checkpoints exactly
…ore with an inline, rebuildable read model
…r=event-sourced, proven by W2's capstones and contract on every server
…nants and with none when tenancy is enabled
…d the event-sourced orchestration provider
added 4 commits
October 13, 2026 10:44
# Conflicts: # README.md
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
firefly/eventsourcing, at parity with PyFly'seventsourcingmodule and modeled on jafly'sfireflyframework-eventsourcing.What ships
firefly.eventsourcing.store.provider(memoryordatabase).UNIQUE(aggregate_id, version)is translated into aConcurrencyException.#[EventType(type, version)]and is compiled byfirefly:cache. Each event's envelope carries metadata (correlation and causation ids, tenant, user, timestamps), filled by metadata contributors. An upcaster chain is applied on read.EventSourcedRepository.memory|database): taken everyfirefly.eventsourcing.snapshot.thresholdevents, with keep-count retention, and loaded as the latest at or before a version.ProjectionRunner.CheckpointStore(memory|database).DistributedLockport ensures only one node advances a projection.firefly:eventsourcing:projections,:projections:runand:projections:rebuild.firefly/edain the same transaction through the database outbox whenfirefly.eda.provider=database|postgres, otherwise after commit, and never twice (firefly.eventsourcing.publish.enabled,destination).firefly.orchestration.persistence.provider=event-sourcedstores executions as an aggregate with a snapshot and a projection, and passes W2's provider contract and capstones.TenantScopedEventStoredecorator, enabled withfirefly.eventsourcing.tenancy.enabled. Tenant ids are compared exactly (binary collation), so tenants never leak across case on MySQL, MariaDB or SQL Server.Verification
Includes
origin/main(PR #17's docs wave).composer checkbash scripts/build-docs.sh