Skip to content

Compliance wave 3+: the three remaining Marten-ported test files #399

Description

@jeremydmiller

Polecat's side of the cross-store compliance program (marten#5118, epic marten#5110).

Rewritten 2026-08-02 after re-measuring. The original body claimed 16 files. That number came from grepping ported from Marten|mirrors Marten|marten#NNNN, and the marten#NNNN half of that pattern is wrong — see below. The real figure is 3.

Where we are

Polecat enrolls in JasperFx.Events.ComplianceTests (2.37.2) and eight pairs are retired — four in #393, four in #400. The epic's exit criterion is no file in Polecat.Tests carrying a "ported from Marten" marker.

The three that actually claim to be ports

File Tests Notes
Events/activity_correlation_tests.cs 4 "mirrors Marten" — session auto-seeds CorrelationId/CausationId from Activity.Current. Event sourcing, shared JasperFx surface, portable now.
Projections/single_stream_projection_with_string_identity_tests.cs 6 String-keyed single-stream aggregation. Event sourcing, portable now.
Linq/additional_linq_operator_tests.cs 19 "ported from Marten" — negation, modulo, Last/LastOrDefault, .Equals(), nullables, HasValue. Blocked: LINQ is document-db, and there is no shared document contract.

So the exit criterion is two suites away from met, not sixteen.

Why the original count was wrong, and why it matters

The other 14 files match only on marten#NNNN, and reading them shows those are provenance citations, not duplications. Representative:

// marten#5001 (Polecat parity): the async daemon's ExtendedProgressionWriter publishes a ShardState ...
/// #259 (parity with marten#4788/#4793): the pc_natural_key_X lookup table is maintained by ...
///  Keyset (cursor / seek) pagination coverage — marten#5016 parity, polecat#357 ...

These say "Polecat implemented the same feature; here is the Marten issue it tracks." The tests are Polecat's own. Porting them would delete useful provenance and gain nothing.

The count also moves the wrong way on its own. Events/binary_event_serialization_tests.cs joined the list today when #402 merged, because it cites marten#4515. Every Marten-parity feature adds a citation, so a marker-count exit criterion can never converge while parity work continues — it is measuring the wrong thing.

Suggested resolution

  1. Port the two event sourcing files into the compliance library as wave 3. Small, and both sit on the shared JasperFx surface the library already spans.
  2. Leave the LINQ file until document-db compliance exists. Weasel.Storage is the intended convergence layer; Polecat currently re-declares IDocumentStore/IDocumentSession/IQuerySession in its own namespace.
  3. Restate the epic's exit criterion as "no file duplicates a Marten test," and keep marten#NNNN citations as the useful provenance they are. Optionally adopt a distinct marker (e.g. parity: vs ported:) so the two are greppable apart.

Related

  • using_event_projection_for_flat_tables — needs a table-inspection capability on the compliance fixture (mt_ vs pc_ prefixes). Parked; tracked in marten#5118.
  • Polecat/Events/TestSupport/ ProjectionScenario is a 7-file copy-paste twin of Marten/Events/TestSupport/. That is production code, not a test port, and wants its own design issue.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions