feat: add dormant walletless auth and signed wallet linking#110
Conversation
|
Clerk preview verification is complete for the buyer-session foundation.
Remaining live-auth evidence is the interactive Google redirect and email-code component flow; automated browser navigation rejected the new preview hostname before page load, so that is not claimed as verified. |
|
Final pre-review verification for
Interactive Google/email login and a real Solana/Base wallet-signature smoke remain pending because the embedded browser blocks the new Vercel preview host at the client layer ( |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_ef1eddaa-e459-43d9-87d2-9f6bf5a99c32) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_3f166db4-9fe6-444d-a8c1-ee84d6ae83d1) |
|
Clerk preview correction verified on
|
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_88ef142d-14cc-4312-b849-52fd4c7030a6) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_1eae2e97-99f4-4fab-9d38-a6a3f12b9b01) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_7f2ef11e-b23a-45b3-8bc3-cdccd7013779) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_07d7ca70-2cb3-49eb-b423-732f6d27da24) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_3bd70afc-cf2c-4555-84f4-6e519574e8df) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_b69a1931-824f-43d8-bb37-0434ec72c95f) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_b2816701-36b4-40dc-83d3-cadb49d96fc5) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_8d175ac2-1690-4f31-bb37-74227081c0e8) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_8ceced49-f746-465e-b0d1-e36c2a4294d7) |
|
Final walletless preview verification on signed head
|
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_27b11010-551a-4f35-ad0c-7ba69981261b) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_e3b18b40-56ef-4ad5-90b8-401054f51122) |
|
Publication closeout on current head Signing note: implementation commit |
3601496 to
4b19cb9
Compare
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_ac3f7da8-d90a-4e50-b778-a16e1b6829ea) |
Summary
strictreverification before challenge issuance and verificationVerification
npm run format:checknpm run lint --workspace @agentvouch/webnpm run typecheck --workspace @agentvouch/webnpm test --workspace @agentvouch/web -- --run— 117 files, 747 tests passednpm run verify:chain-map— 25 Solana instructions, 22 Base state-changing functions, 26 mapped rowsnpm exec --workspace @agentvouch/web -- next build --webpack7eaf5c41b3c85d087352ce1912e688e4a71b9a07deployed asdpl_8cbfNeptUmWyXsGZ4J5fNn2DEfqKand reachedREADYClerk preview
DATABASE_URLonly to preview branchfeat/walletless-base-card-accesshost_invalidhandshake by removing Clerk's production-only Frontend API proxy; regression coverage prevents it from being re-enabled7a7e044ad028d2e0c08fbd3993aa89e11a6b3289deployed asdpl_6XPJgkptyEv859YtR2fXQi8qHHDwand reachedREADY+clerk_testaddress and fixed OTP; the synthetic user was deleted afterwardDatabase rehearsal and preview isolation
agentvouch-postgres(calm-meadow-36819154), not the legacy Neon projectbr-billowing-pine-af5amekf, including idempotency and catalog checks, then deleted itbr-empty-hat-afcrsu56, reran the guarded migration/preflight, and used it for the authenticated session smokebuyer_wallet_link_challengestable plus active-challenge index onbr-empty-hat-afcrsu56Rollout state
https://agentvouch-walletless-preview.vercel.appremains the isolated preview aliaseip155:8453Note
High Risk
Touches authentication, Stripe fulfillment/revocation, and paid download authorization across Solana and Base Sepolia; regressions could grant or deny access incorrectly despite feature flags and preserved legacy wallet paths.
Overview
Introduces walletless commerce for buyers who sign in with Google or email (Clerk), pay by card, and download paid skills without connecting a wallet. The durable identity is an opaque buyer account UUID linked to Clerk; email and Stripe customer ids are never treated as wallet addresses.
Authentication and lifecycle:
@clerk/nextjssits behindAGENTVOUCH_BUYER_AUTH_*flags with a provider-neutralbuyerSessionboundary, same-origin logout, and auser.deletedwebhook that soft-deletes accounts and strips identity links while retaining grant audit rows. Clerk middleware runs without the production-only Frontend API proxy so preview handshakes work.Stripe (separate card-access flags): Checkout can bind metadata to an authenticated account (
stripe-account-access) instead of a signed wallet. Webhooks upsertmarketplace_access_grantsonly—nousdc_purchase_receiptsor Base/Solana protocol receipts—and refunds/disputes revoke those grants idempotently. Legacy wallet-bound Stripe checkout and entitlements are unchanged.Downloads: Raw access resolution accepts an active account grant (including Base Sepolia listings) as an off-chain path alongside wallet entitlements and x402; unsupported legacy Base contracts now return a structured 402 migration hint instead of 500.
Wallet linking: Optional Solana / Base Sepolia addresses are proven via server challenges (account, session, origin, nonce) with strict Clerk reverification; challenges are consumed atomically and cannot steal an address already linked to another account.
Data and UI: Guarded additive migration for buyer accounts, identities, wallet links, challenges, and grants; account page, sign-in route, navbar auth, and skill-page Pay by Card / account download flows with session retry after Clerk handshake races.
Docs (
STRIPE_*,CHAIN_CAPABILITY_MAP) and extensive tests cover auth, Stripe, raw access, and migration invariants. Base mainnet remains blocked.Reviewed by Cursor Bugbot for commit 4b19cb9. Bugbot is set up for automated code reviews on this repo. Configure here.