Skip to content

Recovered abandoned work: ecommerce-testing - eCommerce end-to-end sample and integration specs, never opened as a PR (preservation draft, do not merge) - #573

Draft
woksin wants to merge 14 commits into
mainfrom
ecommerce-testing
Draft

Recovered abandoned work: ecommerce-testing - eCommerce end-to-end sample and integration specs, never opened as a PR (preservation draft, do not merge)#573
woksin wants to merge 14 commits into
mainfrom
ecommerce-testing

Conversation

@woksin

@woksin woksin commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

This is a preservation draft. It is not a live proposal, and it must not be merged.

The branch ecommerce-testing was pushed to this repository in April 2025 and then abandoned. No pull request was ever opened for it. The commits have been sitting on the remote for sixteen months with nothing pointing at them and no record anywhere that they exist. This draft exists purely to make the work discoverable.

Nothing here is at risk of loss — the branch is already on origin. What it lacked was discoverability.

What the work is

14 commits. Branched from b08dbb9 (29 April 2025), tip 13f3a9a (30 April 2025). 34 files changed.

An end-to-end eCommerce sample with integration specs:

  • scaffold of a Carts feature — AddItemToCart command, ItemAddedToCart / ItemRemovedFromCart events, Cart aggregate, CartId / Sku / Price concepts, a Cart read model, and the React/TypeScript side (CartContents.tsx, GetCart.ts, Cart.ts, CartItem.ts)
  • an integration spec harness — "up and running with specs"
  • a local Chronicle source map, so the sample builds against a working-copy Chronicle rather than a published package
  • warning suppressions for warnings the sample does not care about
  • a temporary init delay to let everything finish initializing before specs run

How far behind main it is

1,558 commits behind main — 14 ahead, 1,558 behind, merge base b08dbb9.

This is a rewrite job, not a merge — and in this case not even that, for the reason below.

The sample this branch builds on no longer exists

The entire eCommerce/ directory was removed from main on 8 February 2026 in commit 8700511 ("Remove eCommerce"). main at f4b0410 contains zero files under eCommerce/.

The repository has since reorganised around different samples: Chronicle/Quickstart and a Library/ sample (Composition, Lending, Lending.Contracts, Members).

So every one of this branch's 34 files targets a directory that upstream deleted six months ago. There is no merge to perform and no rebase that would mean anything. What survives is the shape of the work — an integration-spec harness for a Cratis sample — not the code.

What is unique to this branch

The spec harness is the part with any residual value, and none of it exists in main:

  • eCommerce.Specs/IntegrationSpecificationContext.cs
  • eCommerce.Specs/OrleansFixture.cs
  • eCommerce.Specs/ObserverHelpers.cs
  • eCommerce.Specs/JobsHelpers.cs
  • eCommerce.Specs/EventForEventSourceIdHelpers.cs
  • eCommerce.Specs/TimeSpanFactory.cs
  • eCommerce.Specs/Given.cs, Startup.cs, given/a_client.cs
  • the specs themselves: Features/Carts/given/an_empty_cart.cs, when_adding_item_to_empty_cart.cs, when_adding_item_to_cart_with_three_items.cs

One uncommitted file, deliberately left uncommitted

The working copy this branch was recovered from has an uncommitted edit to eCommerce/Features/Carts/Cart.cs: a stray bare IsNew token on its own line inside AddItem, with no expression around it. It does not compile.

It has been left in the working copy and deliberately not committed — it is a half-typed thought, not work product, and committing it would push a broken file. It is recorded here only so that whoever next opens that working copy knows what it is and does not mistake it for something meaningful.

Why the release-notes template is not used

This PR deliberately does not follow the repository's release-notes PR template. It is an archival pointer at commits that are already pushed, not a change being shipped, and it must never generate release notes.

No semantic version label — that is deliberate

No major / minor / patch label has been applied, and none should be. A missing label means no release is cut, which is exactly right for a PR that ships nothing.

A verify-style check will fail because of the missing label. That failure is expected and must not be "fixed."

References: 8700511

@woksin

woksin commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator Author

Honest assessment

Verdict: not worth reviving. Kept for the spec harness, which is the only part that outlived the sample.

Why this cannot be revived in any normal sense

This is not a stale branch that needs a rebase. The target of the work is gone. eCommerce/ was deleted from main in 8700511 on 8 February 2026, and main today has zero files under that path. The repository reorganised around Chronicle/Quickstart and a Library/ sample built on Lending and Members.

So of the 34 changed files, the 20-odd under eCommerce/ describe a sample that upstream decided it no longer wanted. Reviving them would mean reintroducing a deleted sample — a product decision, not a merge, and one nobody has argued for.

The branch is also 1,558 commits and sixteen months behind. Even if the sample still existed, this would be a rewrite.

What actually outlived it

The eCommerce.Specs/ harness is the residue with value, because it is the part that was never about eCommerce:

  • IntegrationSpecificationContext.cs and OrleansFixture.cs — standing up a real Orleans silo for a sample's integration specs
  • ObserverHelpers.cs and JobsHelpers.cs — waiting on observers and jobs to settle before asserting, which is the perennial hard part of testing anything event-sourced
  • EventForEventSourceIdHelpers.cs, TimeSpanFactory.cs, Given.cs, given/a_client.cs

That set is a reasonable answer to "how do I write integration specs against a Cratis sample," and the question did not go away when eCommerce did. Anyone writing integration specs for Library/ is solving the same problems and should read this first rather than rediscover them.

The tells that this was abandoned mid-thought

Three of the fourteen commits are called "Cleanup" and two are "up and running with specs" in different capitalisations, which is the shape of someone iterating fast and not expecting anyone to read the log. Two details say plainly that it was never finished:

  • 572ab37 adds "a temp delay to make sure everything is initialized" — a sleep standing in for a real readiness signal. That is exactly the problem ObserverHelpers was presumably meant to solve properly, and it had not been solved when work stopped.
  • 41825e6 adds a local Chronicle source map, meaning this was being developed against a working-copy Chronicle rather than a published package. It could not have been merged in that state regardless.

And the uncommitted IsNew fragment in Cart.cs — a bare token mid-method, no expression around it — is someone stopping mid-keystroke. It is the last thing that happened on this branch, and it is why the working copy does not compile. It has been left uncommitted deliberately.

Recommendation

Leave this draft open as the archival record. Do not merge, do not rebase, do not reintroduce eCommerce/.

If the harness is wanted, the right move is to lift the four helper files into whatever integration-spec setup Library/ grows, as a fresh piece of work referencing this branch for provenance. Nothing else here needs to survive.

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.

2 participants