Skip to content

test(testkit): handle exact ambiguous outcomes in paired authority fixture #824

Description

@VerifiedOrganic

The paired authenticated-consumer fixture test failed in the required miscellaneous Rust shard on SDK PR #801 at head 1e65f822facda35d33bfa0def13d9b68f144b487.

The executed failure was authenticated_consumer_fixture::tests::fixture_pair_shares_authenticated_authority_and_reopens_without_v1_lowering at crates/opc-session-testkit/src/authenticated_consumer_fixture.rs:1903: its one opaque dispatch returned FencedTransitionExecuteError::OutcomeUnknown and the test expected immediate success. The testkit library reported 110 passed and one failed. Original CI job. Raw log SHA256: fead59df5926e265bd674d52696b66d33adb509887f92f6532eb21f49ad91108.

The fixture source is byte-identical to main at 3194cf3c06ab0f6aeed3f39b00f1055702c75f09 and the preceding two candidates. This comparison does not identify the original transport or scheduling cause. The earlier recovery failures tracked by #823 are different tests; that recovery group passed in this attempt.

The existing public contract permits exactly one mutation dispatch. A possible send removes dispatch authority and permits only read-only receipt recovery of the retained request. PreparedCheckpointBudget fixes a three-second outer budget for this test and a 250 ms physical-attempt cap. The paired fixture test proves shared authority, unchanged general-backend capabilities and journal reopening; it is not a successful-first-response latency qualification.

Acceptance:

  • Preserve the original CI failure and reproduce the immediate-success assumption deterministically using the existing real post-commit response-loss fixture control.
  • If the paired test receives the exact request's OutcomeUnknown, require an authoritative successful receipt through the existing status-only handle before reading shared state, within the original absolute deadline. Reject every other error and mismatched identity.
  • Keep one physical mutation, zero general mutation/CAS calls, exact retained identity, successful general readback and fresh-facade status-only reopening assertions. A missing or rejected receipt must never count as success.
  • Cover ordinary completion and deliberate response loss using real authenticated voters. Preserve fix-removal and a distinct adversarial control, then rerun the restored focused tests and normal required gates.
  • Do not change production APIs, increase either deadline, replay or reseal the mutation, manufacture a receipt, disable coverage, or claim that a deterministic control proves the original CI timing cause.

Related contract: #696. This is a generic synthetic SDK fixture investigation and correction; no downstream product qualification is claimed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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