Check whether the outcome improved
Test population membership
Create cases just inside and outside each filter, status, tenant, and time boundary. Assert inclusion for each side's stated contract. Include a record that appears twice, one that changes status, and one that crosses a refresh boundary to make membership rules visible.
Assert identity and grouping
Run duplicate, one-to-many, and merged-entity fixtures through both counting paths. Compare row count, distinct entity count, event count, and group count explicitly. Review identifiers for every changed bucket, since arithmetic can agree while grouping semantics remain inconsistent.
Reconcile bounded outputs
Execute both paths against the same cohort and compare intermediate and final results, query parameters, and observation time. Require an explanation for every set difference or documented exception. Retain outputs with the revision and note untested sources or time policies.
What to carry forward
Accept reconciliation when both sides count the documented population, boundary cases behave as intended, identity and grouping are explicit, and every changed identifier or total is explained. Keep verification open for moving inputs, untested consumers, or definitions that still require an owner decision.
Keep the decision with the work.
Use a Work Item in Aglet to record the problem, the evidence you have, and the next decision. Add an owner and priority, then keep updates in the discussion so the next person can follow the reasoning.
Create an account See the product workflow