Skip to content

feat: E2e — unit-of-work currency flips to Weasel.Storage.IStorageOperation (#273)#298

Merged
jeremydmiller merged 1 commit into
mainfrom
e2e-op-currency-flip
Jul 7, 2026
Merged

feat: E2e — unit-of-work currency flips to Weasel.Storage.IStorageOperation (#273)#298
jeremydmiller merged 1 commit into
mainfrom
e2e-op-currency-flip

Conversation

@jeremydmiller

Copy link
Copy Markdown
Member

#273 phase E2e (op-currency flip — final punch-list increment)

The session unit of work now speaks the shared closed-shape operation contract end to end:

  • IWorkTracker.Operations (public), WorkTracker, ChangeSet, the OpenTelemetry decorator, and the async daemon's batch queue all hold Weasel.Storage.IStorageOperation. Bespoke event-side ops and ClosedShapeOperationAdapter flow through as subtypes — no change to the ~20 remaining bespoke op classes.
  • Flush-time dispatch (StorageOperationExecution.Configure): bespoke ops configure through their one-arg entry point (the adapter forwards to its captured — possibly tenant-scoped — session); raw shared ops get the executing session. The daemon batch passes no session by design: it aggregates ops from multiple tenant sessions, each carrying its own context.
  • Eject + change-set derivation handle both currencies: bespoke DocumentId/Document and shared IDeletion.Id/IDocumentStorageOperation.Document.
  • WorkTracker.cs (the mixed-EOL file) was edited with per-line-ending preservation — the diff touches only the intended lines.

Public break: the element type of IWorkTracker.Operations (the #269 listener-surface ripple). IChangeSetUpdated/Inserted/Deleted/events — is unchanged.

Full suite: 1400 passed / 3 skipped (net10.0).

🤖 Generated with Claude Code

…ration (#273)

- IWorkTracker.Operations, WorkTracker, ChangeSet, telemetry, and the
  daemon batch queue now speak the shared closed-shape operation
  contract; bespoke ops and the closed-shape adapter flow through as
  subtypes.
- Flush-time dispatch via StorageOperationExecution.Configure: bespoke
  ops (incl. the adapter, which carries its own possibly tenant-scoped
  session) use their one-arg entry point; raw shared ops get the
  executing session (the daemon batch passes none by design — every op
  it aggregates carries its own session context).
- Eject and IChangeSet.Deleted/Updated/Inserted matching handle both
  bespoke DocumentId/Document and shared IDeletion.Id /
  IDocumentStorageOperation.Document.
- WorkTracker.cs edited with per-line-ending preservation (mixed EOL).

Public break: IWorkTracker.Operations element type (part of the #269
listener-surface ripple). IChangeSet itself is unchanged.

Full suite: 1400 passed / 3 skipped (net10.0).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jeremydmiller jeremydmiller merged commit 7191f79 into main Jul 7, 2026
7 checks passed
@jeremydmiller jeremydmiller deleted the e2e-op-currency-flip branch July 7, 2026 17:40
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.

1 participant