Repository navigation
feat(verification): rebuild payment verification as a typed multi-step pipeline - #575
Open
woahwhattheheck wants to merge 5 commits into
Open
woahwhattheheck wants to merge 5 commits into
woahwhattheheck wants to merge 5 commits into
Conversation
…line Route manual verify and the payment monitor through one ordered pipeline (fetch → destination → asset → amount → memo → attribute → persist PAID) with shared stage results, rejection-code mapping, and stage-aware pay-page errors. Closes Quittance-Labs#441.
Collaborator
|
This branch now has merge conflicts with |
Preserve the mandatory audit methods and adapter parity changes from Quittance-Labs#577 while keeping manual verification and the monitor on the shared pipeline. Reject malformed hash and payer inputs before Horizon reads, with the shared stage-aware error envelope. Extend the existing payment-loop regression to verify the attribution stage.
Integrate main 282c75a while preserving the accepted c0c0f4c repair. Retain incoming lifecycle and operational logging, map typed persistence conflicts in the shared pipeline, and carry stage/code metadata through the moved pay-page controller. Preserve the incoming hook, API wrappers, and both branches' existing regression source. Source-only integration during the executor pause; runtime verification remains pending. Operation: Q575-LATER-MAIN-INTEGRATION-20261004-A3DEA
Preserve the accepted stage/code production contract and update the existing VERIFY_FAILED assertion to include its optional-stage fallback and rejection code. This resolves the single controller expectation mismatch reported by current-head CI run 37180881850. Source-only repair; no workflow dispatch or rerun and no local runtime execution. Operation: Q575-CI-CONTROLLER-CONTRACT-20261004-A3DEA
Supply HTTP 404 at the SDK call boundary while retaining the real service and Horizon wrapper. Assert the requested hash and single attempt, and restore the server factory after the case. Operation: Q575-HORIZON-404-BOUNDARY-20261004-A3DEA
Contributor
Author
|
Resolved the October 1 integration request. I updated the existing branch onto current |
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #441. Rebuilds payment verification into an ordered multi-step pipeline with typed stage results shared by the API, payment monitor, and pay-page error mapping.
Pipeline
fetch_transaction— hash/network/Horizon fetch, payment-op selection (incl. ambiguous / none)match_destination— seller match, including muxedM...destinationsmatch_asset— code + issuermatch_amount— zero-stroop window (AMOUNT_TOO_LOW/AMOUNT_TOO_HIGH/AMOUNT_MISMATCH)match_memo— text memo (+MEMO_TYPE_MISMATCH)attribute— payer fields + required ledger close timepersist_paid— atomic PAID transition (TX_HASH_ALREADY_USED, status races)Hard failures short-circuit. Stage failures map onto the existing shared rejection codes (extended mapping only; no unnecessary new codes).
Done when
executePaymentVerificationPipeline)verify-rejection-label/VERIFICATION_MESSAGES; stage/code attached toVERIFY_FAILED)Test plan
npm --prefix backend run typechecknpm --prefix frontend run typechecknode --import tsx --test tests/payment-verification-pipeline.test.tsnode --import tsx --test tests/shared-verification-contract.test.ts tests/payment-verification.test.tsnode --import tsx --test tests/payment-monitor-runtime.test.ts tests/server-mvp-payment-monitor.test.ts tests/verify-cache.test.tsnpm --prefix frontend test(verification + rejection-label + payment-page-state)Original contributor reward review
/claim #441
This is @woahwhattheheck's original contribution for issue #441. I affirmatively request review for any eligible GrantFox OSS contribution reward and confirmation of acceptance, reward allocation, payout method, and expected payment timing. The issue's “Maybe Rewarded” label does not establish any fixed amount or an awarded or received payment.