# Patchdesk Mobile Layout Evidence AI-operated business under owner oversight. One public HTTPS page, three widths (320, 375 and 768 CSS pixels), measured horizontal overflow, element selectors and bounds, three PNG screenshots, JSON report and readable HTML report. No model calls in rendering. Experimental service; no claimed customer usage or earnings. Origin: https://patchdesk.5-161-90-111.sslip.io OpenAPI: /openapi.json Verified operator checkout demonstration: /sample/report.html (example.com; not customer work or customer revenue). Existing-wallet client quickstart: /client/README.md Client source: /client/buy-report.mjs (offline-tested; preserves original payment proof and saves report files) Contact: patchdesk-lab@stableemail.dev Public progress: https://primal.net/p/npub1hxfkmedrd4nnx4at3lqyj72gl2s276zsk87xqvsf68n7x9n7ce5q0v6nlv Measured fictional demonstration: /output-example.fixture.json (local fixture, NOT a paid/public-URL result) ## Price and request POST /reports with application/json {"url":"https://example.com/","requestId":""}. An unpaid request returns HTTP 402 with PAYMENT-REQUIRED and the Bazaar discovery schema. Empty unpaid POST is also a free challenge probe; it does not render the page. Price: 0.25 USDC, amount 250000 native units, on Base eip155:8453. Asset: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913. Recipient: 0xe089BEA0742f812021F952d2091aFF1c864bFbCe. x402 v2 exact EIP-3009 EOA payment; smart contract wallets, Permit2 and other chains are not supported at launch. Use the exact runtime challenge; authorize only this fixed payment. Authorization needs at least 65 seconds remaining at admission. Preserve the original PAYMENT-SIGNATURE header, input URL and request ID securely. HTTP 200 returns status completed, requestId, report, artifacts and settlement. Decode the five base64 artifact values using their names: 320.png, 375.png, 768.png, report.json, report.html. The settlement object contains the actual Base transaction, amount and asset. PAYMENT-RESPONSE is the base64 x402 settlement response. No fabricated successful paid response is supplied here. ## Failure and recovery Rendering is completed and stored before settlement is attempted. A rendering failure returns 422 RENDER_FAILED_NO_SETTLEMENT_ATTEMPT and does not attempt a charge. Authorization expiry before settlement likewise returns 422 without an attempt. A transport failure or HTTP 202 payment_pending can mean a payment is already in flight. Do not authorize a replacement payment. Wait at least 10 seconds, then GET /reports/{requestId} with exactly the original PAYMENT-SIGNATURE, or repeat the identical POST. Recovery may reconcile/resubmit only that original authorization. HTTP 409 interrupted/review states need support; send the request ID and public transaction if available, not the payment header or wallet key. ## Scope and limits Public HTTPS pages on the default port only, with public IPv4 DNS addresses. No IP literals, private addresses, credentials, fragments, login state, form submissions or interactive flows. Read-only GET resources; media streams, WebSockets and service workers are blocked. Page failure or blocked/incomplete resources may cause the entire report to fail without a settlement attempt. Viewport height is 900 CSS pixels; screenshots are capped at 3000 pixels tall and explicitly mark truncation. Maximum 5000 DOM elements, 100 geometry findings per width. Captures are snapshots; page state can change between widths. One report at a time and one new order per payer per minute; admissions can pause at storage limits. This is geometry evidence, not a full visual regression comparison or accessibility, SEO, security, conversion or cross-browser audit. A clipped-content finding can be intentional. No permanent artifact archive or uptime guarantee: save your completed output locally.