Skip to content

Assert that a served call's pick and its pairing are named when they differ - #264

Merged
maverox merged 1 commit into
mainfrom
work/test-the-pairing-disagreement
Sep 30, 2026
Merged

maverox merged 1 commit into
mainfrom
work/test-the-pairing-disagreement

Conversation

@maverox

@maverox maverox commented Sep 30, 2026

Copy link
Copy Markdown
Collaborator

Follow-up to #258 and #260, now on main.

Since a served call is paired with the recording it names (#260), the candidate's pick and the scorer's twin can differ on one path only. An exact hit already owns the named event, so the served call falls back to the search by shape and pairs with another. #258 names that case in three ways:

  • the ArgsServedPairingDisagrees kind;
  • the served event on the ledger row;
  • a warning giving both sequences.

After the stack merged, a review measured the check as completely unasserted. Neutralising it (.is_some_and(|served| served != twin_seq) → |_| false) left the orchestrator suite green, 722 passed and 0 failed, so it could have stopped firing unnoticed.

a_served_claim_on_an_event_an_exact_hit_owns_falls_back_to_the_shape_search already builds that path: the served call names 701, the exact hit owns it, and the call pairs with 702. It now also asserts the three signals:

  • the row on 702 names 701 as the event the call ran on;
  • the scorecard counts the kind once;
  • the warning names both sequences.

The note on the end-to-end test that recorded the gap now points at this test.

Evidence

  • Three mutants, each against the whole workspace with --no-fail-fast, all killed:

    mutant tests that fell
    the disagreement check neutralised, as the review did this test
    the ledger row's served event dropped this test, and the end-to-end test
    the warning dropped this test
  • just verify: exit 0, clippy -D warnings clean, the whole suite passes, web 79/79.

  • Tests only; no production code changes.

… named when they differ

Since a served call is paired with the recording it names, the candidate's
pick and the scorer's twin can differ on one path only: an exact hit already
owns the named event, and the served call falls back to the search by shape.
The check that names that case (the ArgsServedPairingDisagrees kind, the
served event on the ledger row, and the warning giving both sequences) had no
test on that path. Neutralising it left the whole suite green, so it could
have stopped firing unnoticed.

The test for that path now asserts all three: the row on the event the call
was paired with names the event it ran on, the scorecard counts the kind
once, and the warning names both sequences. Neutralising the check, dropping
the row's served event, or dropping the warning each fails it, run against
the whole workspace. The note on the end-to-end test that recorded the gap
now points here.
@maverox
maverox merged commit 35a4346 into main Sep 30, 2026
10 checks passed
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