eventcore-fs: ADR-0043: projection local-ingestion cursor after merge #391
Labels
No labels
adr
automated
bug
chore
dependencies
documentation
enhancement
epic
github-actions
P1-high
P2-medium
P3-low
release
research
rust
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Slipstream/eventcore#391
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Follow-up to PR #390 (eventcore-fs file backend). The merge-mode core is
implemented; this covers the remaining projection-after-merge work from
ADR-0043.
Context
EventReaderreturns events ordered byStreamPosition(UUID7) and paginateswith
after_position. A structuralgit mergecan introduce events whosecanonical linearized position is earlier than a cursor a projection already
passed, so a naive cursor-based projection could silently miss them.
PR #390 shipped the safety-net signal —
FileEventStore::topology_generation()— so a projection can detect a structural merge and rebuild. This issue covers
the larger remaining piece.
Scope
projection never rewinds: canonical linearized order governs state-folding and
StreamVersion, while local-ingestion order governs cursor progress (mergeevents get a fresh, larger local position even though their linearized
position is earlier).
compensate to a correct read-model state whether or not the diverged events
were already projected.
Acceptance
later-arriving merge's compensation events (does not rewind, does not miss).
blueprints/fs-merge-mode.md.References: ADR-0043, PR #390.