Uh oh!
There was an error while loading. Please reload this page.
test: add marketplace wallet journey - #720
Conversation
Greptile SummaryThis PR adds an agent-evaluated, two-wallet Pubky marketplace journey and documents its external fixture, evidence contract, and accepted regtest replay.
Confidence Score: 4/5The PR appears safe to merge after clarifying how operators can configure Electrum on clean simulators before initial wallet startup. The journey and selector conventions are otherwise consistent with the agent-evaluated corpus, but the custom Electrum precondition cannot be followed through the documented in-app configuration path as currently written. Files Needing Attention: journeys/pubky-marketplace/wallet-leg.xml and journeys/pubky-marketplace/README.md
|
| Filename | Overview |
|---|---|
| journeys/README.md | Registers the new one-journey marketplace suite and its external-fixture requirement. |
| journeys/pubky-marketplace/README.md | Documents the fixture contract and accepted replay, but repeats an incomplete pre-first-launch Electrum setup instruction. |
| journeys/pubky-marketplace/wallet-leg.xml | Defines the complete two-wallet payment walkthrough, with an initial Electrum configuration precondition that lacks an executable setup route. |
Sequence Diagram
sequenceDiagram
participant S as Seller wallet
participant F as Integration fixture
participant B as Buyer wallet
participant R as Regtest chain
S->>F: Authorize watch-only account claim
B->>F: Link seller and enable contact payments
F-->>B: Deliver Payment Request
B->>B: Review and approve payment
B->>R: Broadcast transaction
F->>R: Mine one authorized block
R-->>B: Confirm transaction
F-->>B: Report completed marketplace purchase
Reviews (1): Last reviewed commit: "test: record exact marketplace journey r..." | Re-trigger Greptile
| Precondition: two clean simulator wallets and the integration fixture described in this suite's | ||
| README. Configure the fixture Electrum endpoint and Paykit UI before either wallet's first | ||
| launch. Start with the seller wallet open and the fixture's fresh setup auth URL available. |
There was a problem hiding this comment.
Electrum precondition lacks setup route
The journey requires configuring the fixture endpoint before either wallet's first launch, but the supported configuration flow runs inside the launched app and persists the endpoint only after restarting and validating the node. Document a concrete pre-launch configuration procedure; otherwise operators cannot reliably establish the clean-wallet starting state and can begin the journey on the default regtest chain.
Knowledge Base Used:Restore Electrum connection rollback
ovitrif
commented
Sep 2, 2026
Addressed in 48a85d1: the journey now requires the fixture Fulcrum endpoint at |
piotr-iohk
left a comment
There was a problem hiding this comment.
QA LGTM on the journey docs. Did not re-run the isolated marketplace fixture.
Checked latest (48a85d1f):
- Suite is registered;
xmllint --noout journeys/pubky-marketplace/wallet-leg.xmlpasses. - Greptile Electrum note is addressed:
E2E_BUILD+E2E_BACKEND=localresolves Electrum totcp://127.0.0.1:60001inEnv.electrumServerUrl. No in-app override required. - IDs that already exist on this tree:
PubkyAuthWatchOnlyConsent/Approve/Authorize/OK,ContactPaymentsToggle,PaymentRequestsScreen,PaymentRequestRow-<id>,ReviewAmount,ReviewContactRecipient,GRAB,SendSuccess,ActivityAmount,ActivityTxDetails,StatusConfirmed.
Note, not a blocker if merge order is explicit:
PaymentRequestPay-<id>is not on this branch. It is added in #721 (PaymentRequestsView.swift). The README already lists #714 / sibling app work as a dependency. Do not treat this PR’s tree as an executable journey until that Pay selector is on master (or merge #721 first).
I am not blocking on not replaying the two-simulator Locks fixture. The contract and the 2026-09-02 acceptance record are consistent with the Android counterpart.
Closes#718
Description
Adds the two-wallet Pubky marketplace wallet-leg journey for watch-only seller setup, linked-buyer Payment Request receipt, on-chain approval, broadcast, and regtest confirmation.
The journey now defines the integration-fixture protocol and runtime contract, with producer provenance from
pubky/paykit-server#2at revision867fc883.The final exact-head iOS buyer replay selected request
5f07c465-dc67-42ce-96a0-4209e5389618through its request-specific Pay action. One authorized swipe broadcast2822f6b43aebeb228e0bfe96c1b201cf41e0ed46a677d704403dc629b09d6f2awith a 15,000-sat request output and 143-sat fee. One authorized block,6235eff06b00ed2b736635913e76269cd6524c4fed80f247d244102806816aed, confirmed it at height16403; signed Paykit reachedconfirmed/1/true, the Locks bundle completed without failure, and the mempool emptied.Linked Issues/Tasks
Preview
52-ios-marketplace-wallet-leg.mp4
The sanitized replay shows the request-specific Pay action, 15,000-sat seller review, one swipe to
SendSuccess, paid request history, confirmed activity, and exact transaction details.QA Notes
Manual Tests
1without Bitcoin spending authority.bitkit/wallet, and received the canonical 15,000-sat request.PaymentRequestPay-5f07c465-dc67-42ce-96a0-4209e5389618opened a 15,000-sat review forhbn4...pfiywith a 143-sat fee and enabledGRAB.SendSuccess; the zero-confirmation checkpoint showed the exact amount-matched output, signed Paykitdetected/0/true, Locks pending, and one mempool transaction.confirmed/1/true, completed Locks state, an empty mempool, and Bitkit sync at matching height16403and tip.StatusConfirmed, the 15,000-sat payment, 143-sat fee, seller, and exact transaction; the accepted request remained without Pay or Dismiss actions.Automated Checks
xmllint.git diff --checkpasses.70cd26346c6a539f792564e2e9bddb41cc00eecc.ec6f0819c9e4e4066e8969f092328615bb286925599b6f92c733eba4b999c122.