Skip to content

feat(#318): route event auxiliary ops through the shared Weasel.Storage seam#331

Merged
jeremydmiller merged 1 commit into
mainfrom
feat/318-converge-event-aux-ops
Jul 17, 2026
Merged

feat(#318): route event auxiliary ops through the shared Weasel.Storage seam#331
jeremydmiller merged 1 commit into
mainfrom
feat/318-converge-event-aux-ops

Conversation

@jeremydmiller

Copy link
Copy Markdown
Member

Closes #318. Finishes the closed-shape convergence: the last hand-written event-store SQL — archive / un-archive, tombstone, and projection-progression writes — now rides the shared Weasel.Storage.Events seam instead of being instantiated at the call sites.

Depends on the upstream Weasel seam (JasperFx/weasel#360, shipped in 9.17.0).

Changes

  • Bump Weasel family 9.16.4 → 9.17.0.
  • SqlServerEventStoreDialect.BuildAuxiliaryOperations implements the SQL Server dialect of the new seam, vending the operation factories. The operation classes still hold the SQL Server SQL (SYSDATETIMEOFFSET(), MERGE).
  • EventGraph exposes ArchiveStreamOperation / TombstoneStreamOperation / UpdateProgressOperation, which downcast the boxed EventStorage<TId> and call ArchiveStream / TombstoneStream / UpdateProgress.
  • EventOperations (archive/un-archive/tombstone) and PolecatProjectionBatch (progression) route through those helpers. No call site instantiates SetStreamArchivedOperation / TombstoneStreamOperation / RecordProgressionOperation directly anymore.

Why it's clean

The operations already implemented Weasel.Storage.IStorageOperation (via Polecat.Internal.IStorageOperation), and both WorkTracker.Add and the batch's progress queue already speak that currency — so the seam result is enqueued directly, no adapter needed.

Out of scope

AssertDcbConsistencyOperation stays store-local (DCB tag-table EXISTS check), per issue #318's non-goals.

Verification

Existing event-store suite is the safety net — archive/tombstone/progression, async daemon, per-tenant rebuild, and partitioned-archive tests all green locally (net10).

🤖 Generated with Claude Code

…ge seam

Consume the new Weasel.Storage.Events auxiliary-operation seam (weasel 9.17.0):
archive / un-archive, tombstone, and projection-progression writes now flow
through EventStorage<TId>.ArchiveStream / TombstoneStream / UpdateProgress
instead of being instantiated at the call sites.

- Bump Weasel family 9.16.4 -> 9.17.0.
- SqlServerEventStoreDialect.BuildAuxiliaryOperations implements the SQL Server
  dialect of the seam, vending the operation factories (the operation classes
  still hold the SQL Server SQL — SYSDATETIMEOFFSET(), MERGE).
- EventGraph exposes ArchiveStreamOperation / TombstoneStreamOperation /
  UpdateProgressOperation that downcast the boxed EventStorage<TId> and call the
  seam.
- EventOperations (archive/un-archive/tombstone) and PolecatProjectionBatch
  (progression) route through those helpers; no call site instantiates
  SetStreamArchivedOperation / TombstoneStreamOperation / RecordProgressionOperation
  directly anymore.

The operations already implemented Weasel.Storage.IStorageOperation (via
Polecat.Internal.IStorageOperation), and WorkTracker.Add / the batch progress
queue already speak that currency, so no adapter is needed — the seam result is
enqueued directly.

AssertDcbConsistencyOperation stays store-local (DCB tag-table EXISTS check),
per issue #318's non-goals.

Existing event-store suite is the safety net: archive/tombstone/progression,
async daemon, per-tenant rebuild, and partitioned-archive tests all green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jeremydmiller
jeremydmiller merged commit f05b688 into main Jul 17, 2026
7 checks passed
@jeremydmiller
jeremydmiller deleted the feat/318-converge-event-aux-ops branch July 17, 2026 19:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Converge event-store auxiliary operations (archive / tombstone / progression) onto shared Weasel.Storage.Events seams

1 participant