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
- 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.
- 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.
- 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
Polecat's side of the cross-store compliance program (marten#5118, epic marten#5110).
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 inPolecat.Testscarrying a "ported from Marten" marker.The three that actually claim to be ports
Events/activity_correlation_tests.csActivity.Current. Event sourcing, shared JasperFx surface, portable now.Projections/single_stream_projection_with_string_identity_tests.csLinq/additional_linq_operator_tests.cs.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: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.csjoined 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
IDocumentStore/IDocumentSession/IQuerySessionin its own namespace.marten#NNNNcitations as the useful provenance they are. Optionally adopt a distinct marker (e.g.parity:vsported:) so the two are greppable apart.Related
using_event_projection_for_flat_tables— needs a table-inspection capability on the compliance fixture (mt_vspc_prefixes). Parked; tracked in marten#5118.Polecat/Events/TestSupport/ProjectionScenario is a 7-file copy-paste twin ofMarten/Events/TestSupport/. That is production code, not a test port, and wants its own design issue.🤖 Generated with Claude Code