Skip to content

Qualify native subscription grace and exact-payload test fixtures #565

Open

Description

@HemSoft

Description

Hosted run 42983035068, head 2f09173, passed 1112 ordinary iOS tests but failed two of the 25 native-commerce cases:

  • StoreKitProSubscriptionTests.testBillingGraceMapsVerifiedStatusAndKeepsAccess timed out at its existing 75-second bound. Retained diagnostics show an empty received-status trace, session issue=false, and the SDK/source still reporting subscribed with no retry or grace end after the recorded expiry. This does not establish a production entitlement defect.
  • testVerifiedRenewalMetadataMatchesApplePayloadExactly failed its exact signedAt/signedDate equality at line28, though both dates print the same second. The test reads subscription.status separately from source.snapshot(), which reads status again. The intended contract is exact mapping of one verified Apple payload, not equality between independently obtained payloads.

Original logs/artifact are retained on Mini at /home/franz/ios562-0c08ab71-evidence-RzPKpy/run42983035068. These source tests are unchanged from main53e5383. PR563 is blocked and has no hosted qualification at its current head.

Why

A failing native-commerce gate prevents guarded source delivery. Neither green ordinary tests nor weakened expectations would qualify native commerce.

Goal

Establish the actual fixture/lifecycle/oracle seams and apply only demonstrated test/fixture corrections while preserving all 25 cases and exact grace/access and renewal metadata contracts.

Acceptance Criteria

  • Preserve every native-commerce case and all intended assertions, account/transaction isolation and synthetic product configuration.
  • Exact metadata checks compare the actual production mapping against the same verified Apple payload, with no tolerance or changed expected values.
  • Distinguish SDK grace generation, fixture settings, stream delivery and service mapping before claiming a grace fix.
  • No deadline increase, skip, retry-for-green, disabled phase, automatic CI expansion or production commerce/auth/release behavior change.

Definition of Done

  • Issue-linked reviewable test/fixture correction with meaningful regression and counter-control evidence.
  • Exact-head hosted manual validation of the named failures and all 25 native-commerce cases; all other actual gates green before merge.
  • Fresh independent exact-head review, preserved original failures and explicit unqualified boundaries where no safe test repair is established.

Validation

Use only the existing hosted manual synthetic runner. Inspect the original native-commerce xcodebuild.log and summary.log. Preserve original grace/access assertions and exact metadata equality. Record exact source, settings, payload identity/timing and all native case outcomes. A production defect requires a source-linked boundary report and smallest proposed correction, not an unauthorized production edit.

API contract: signedDate identifies the signed JWS renewal information; synthetic billing grace requires retry and grace settings. Context7 unavailable; official Apple docs consulted. Duplicate search covered both exact method names and billing-grace/renewal-metadata terms. Closed523 records older qualification, not these two current failures. Release470 and ASC469 remain prohibited and are not this test-only issue.

Activity

  1. HemSoft commented on Nov 11, 2026

    @HemSoft
    CollaboratorAuthor

    Scoped commerce continuation

    Reused original claim and ownership; new defining issue #565 passed the evidence/duplicate check. #564 is accepted as DIAGNOSIS UNQUALIFIED and remains OPEN. A watch synchronization fix is not a requirement of this diagnostic tranche; all actual validation failures still block merge.

    Head 8f61f17 addresses the renewal test's oracle seam: the existing production mapper is exposed internally by removing only its private modifier, with no executable mapping change. The test feeds it the same verified Apple Status used for every exact metadata assertion, rather than comparing two separate SDK reads. A separate source.snapshot integration check remains. Epoch diagnostics distinguish the exact-payload mapping from an independently signed read; no tolerance or expected-value substitution is added.

    Grace remains diagnostic: native SDK status updates and fixture retry/grace/rate readbacks are captured before purchase and at timeout, alongside the existing service trace. All original 75-second bounds, grace/access assertions, 25 cases, product configuration and account/transaction isolation remain. This separates SDK generation/fixture state from mapping/delivery before any grace repair claim.

    Actual hosted manual run https://github.com/hemsoft-dev/codexbar-ios/actions/runs/42990740217 is registered to this Laptop thread. Fresh independent Laptop review pending. No production purchase/entitlement/billing-grace/renewal behavior, live operation, release or automatic CI change.

  2. HemSoft commented on Nov 11, 2026

    @HemSoft
    CollaboratorAuthor

    R14 findings addressed at 23232c1

    P3-1 is fixed in 23232c123c26111c383d9f89b4f82b25528f7bbe: the real source.snapshot() output now has exact checks for transaction ID, state, expiry, auto-renew, next product, price, currency, grace end and billing retry against the same-payload mapper output. The real-time yearly fixture cannot renew between these reads. The original exact signedAt assertion remains on the same payload; the separate signed timestamp remains diagnostic. No tolerance or expected value changed.

    P3-2 had already been corrected while R14 was running: the live body names #565 and the visibility-only production-file edit. It is refreshed again for this head and makes no exact-head qualification claim.

    git diff --check passes. Swift integration assertions and the suggested dropped-price mutant have not been executed at this head; no mutation pass/fail is claimed. All 25 native cases, grace deadline/assertions and product configuration remain unchanged. R14's listener-cancellation concern remains an explicit observation to check in run 42990740217.

    Fresh exact-head Laptop review R15 is requested. The existing run 42990740217 at 8f61f17 is left to finish; no duplicate dispatch or rerun is started. Its actual completion event will drive the next diagnosis or changed-head qualification. #564 remains OPEN, DIAGNOSIS UNQUALIFIED. Merge remains blocked.

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

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions