From a9da3f20ddaed0a0cc669a9de4f4617dd5b81219 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Thu, 27 Aug 2026 13:22:38 -0400 Subject: [PATCH] a field report on the paid machine interface: the turnstile worked, what stood behind it did not MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Turnstiles for Machines audits the whistlegraph x402 integration end to end and reports it mostly as a negative result, because that is what it is. Three defects in descending order of fixability: a facilitator that settled testnets only, so the mainnet prices quoted could never have been paid; a verification link asking for a proof it had not been given; and two of three priced endpoints computing their answers from files the same site publishes free and links to from the index that advertises the prices. Six measurements carry it, each reproducible by a reader and two needing no credentials at all. The market section asks which turnstiles in the wider x402 economy actually earn, and finds they all sell live compute or live data — never an archive, which is static by definition and cheapest to serve by publishing once. The strategy section scores six options against the two constraints the audit exposed, substitutability and discovery, and lands on selling a name: a namespace is server-authoritative, so an agent cannot compute it for itself at any price. That scarcity is structural rather than economic, which is what the archive never had. Built and QA'd at five pages: three tables, no overfull boxes, no undefined references, title set without punctuation because the display font has none. Claude-Session: https://claude.ai/code/session_01Go1K23bvKAdX5MjYtfkxDR --- papers/arxiv-x402/references.bib | 91 ++++++ papers/arxiv-x402/x402.tex | 545 +++++++++++++++++++++++++++++++ 2 files changed, 636 insertions(+) create mode 100644 papers/arxiv-x402/references.bib create mode 100644 papers/arxiv-x402/x402.tex diff --git a/papers/arxiv-x402/references.bib b/papers/arxiv-x402/references.bib new file mode 100644 index 0000000000..5711af6296 --- /dev/null +++ b/papers/arxiv-x402/references.bib @@ -0,0 +1,91 @@ +@misc{x402spec, + title = {x402: An Open Protocol for Internet-Native Payments}, + author = {{Coinbase}}, + year = {2025}, + howpublished = {\url{https://x402.org}}, + note = {Accessed 2026-08-27} +} + +@misc{rfc9110, + title = {HTTP Semantics}, + author = {Fielding, Roy T. and Nottingham, Mark and Reschke, Julian}, + year = {2022}, + howpublished = {RFC 9110, IETF}, + note = {Status code 402 Payment Required reserved for future use} +} + +@misc{cdpfacilitator, + title = {CDP Facilitator and the x402 Bazaar}, + author = {{Coinbase Developer Platform}}, + year = {2026}, + howpublished = {\url{https://docs.cdp.coinbase.com/x402/seller/get-discovered}}, + note = {Accessed 2026-08-27} +} + +@misc{chainalysis2026, + title = {Inside x402: Agentic Payments on Base}, + author = {{Chainalysis}}, + year = {2026}, + howpublished = {\url{https://www.chainalysis.com/blog/x402-agentic-payments-adoption/}}, + note = {Accessed 2026-08-27} +} + +@misc{coindesk2026, + title = {Coinbase-backed AI payments protocol wants to fix micropayments but demand is not there yet}, + author = {{CoinDesk}}, + year = {2026}, + month = mar, + howpublished = {\url{https://www.coindesk.com/markets/2026/03/11/}}, + note = {Accessed 2026-08-27} +} + +@misc{llmstxt, + title = {The /llms.txt file}, + author = {Howard, Jeremy}, + year = {2024}, + howpublished = {\url{https://llmstxt.org}}, + note = {Accessed 2026-08-27} +} + +@misc{eip3009, + title = {EIP-3009: Transfer With Authorization}, + author = {Hu, Peter and Lee, David and Coleman, Reuben}, + year = {2020}, + howpublished = {\url{https://eips.ethereum.org/EIPS/eip-3009}} +} + +@misc{rfc8032, + title = {Edwards-Curve Digital Signature Algorithm (EdDSA)}, + author = {Josefsson, Simon and Liusvaara, Ilari}, + year = {2017}, + howpublished = {RFC 8032, IETF} +} + +@misc{rfc2104, + title = {HMAC: Keyed-Hashing for Message Authentication}, + author = {Krawczyk, Hugo and Bellare, Mihir and Canetti, Ran}, + year = {1997}, + howpublished = {RFC 2104, IETF} +} + +@misc{scudder2026whistlegraph, + title = {Whistlegraph: A Graphic Score That Teaches You How To Play It}, + author = {Scudder, Jeffrey}, + year = {2026}, + howpublished = {Aesthetic Computer papers} +} + +@misc{scudder2026funding, + title = {Whistlegraph.org Funding Codes: An RFC for Code-Addressed Ownership + and Derivative Value Sharing on Ethereum}, + author = {Scudder, Jeffrey}, + year = {2026}, + howpublished = {Aesthetic Computer papers} +} + +@misc{robotstxt, + title = {A Standard for Robot Exclusion}, + author = {Koster, Martijn}, + year = {1994}, + howpublished = {\url{https://www.robotstxt.org}} +} diff --git a/papers/arxiv-x402/x402.tex b/papers/arxiv-x402/x402.tex new file mode 100644 index 0000000000..2186a372d4 --- /dev/null +++ b/papers/arxiv-x402/x402.tex @@ -0,0 +1,545 @@ +% !TEX program = xelatex +\documentclass[10pt,letterpaper,twocolumn]{article} + +\usepackage[top=0.75in, bottom=0.75in, left=0.75in, right=0.75in]{geometry} +\usepackage{fontspec} +\usepackage{unicode-math} +\setmainfont{Latin Modern Roman}[ + Extension=.otf, + UprightFont=lmroman10-regular, + BoldFont=lmroman10-bold, + ItalicFont=lmroman10-italic, + BoldItalicFont=lmroman10-bolditalic, +] +\setsansfont{Latin Modern Sans}[ + Extension=.otf, + UprightFont=lmsans10-regular, + BoldFont=lmsans10-bold, + ItalicFont=lmsans10-oblique, + BoldItalicFont=lmsans10-boldoblique, +] +\newfontfamily\acbold{ywft-processing-bold}[Path=../../system/public/type/webfonts/,Extension=.ttf] +\setmonofont{Latin Modern Mono}[ + Extension=.otf, + UprightFont=lmmono10-regular, + ItalicFont=lmmono10-italic, + Scale=0.85, +] + +\usepackage{xcolor} +\usepackage{titlesec} +\usepackage{enumitem} +\usepackage{booktabs} +\usepackage{tabularx} +\usepackage{fancyhdr} +\usepackage{hyperref} +\usepackage{xurl} +\usepackage{graphicx} +\graphicspath{{figures/}{../arxiv-ac/figures/}} +\usepackage{ragged2e} +\usepackage{microtype} +\usepackage{natbib} + +\definecolor{acpink}{RGB}{180,72,135} +\definecolor{acpurple}{RGB}{120,80,180} +\definecolor{acdark}{RGB}{64,56,74} +\definecolor{acgray}{RGB}{119,119,119} + +\hypersetup{colorlinks=true,linkcolor=acpurple,urlcolor=acpurple,citecolor=acpurple, + pdftitle={Turnstiles for Machines}, + pdfauthor={Jeffrey Scudder}} + +\titleformat{\section}{\normalfont\bfseries\normalsize\uppercase}{\thesection.}{0.5em}{} +\titlespacing{\section}{0pt}{1.2em}{0.3em} +\titleformat{\subsection}{\normalfont\bfseries\small}{\thesubsection}{0.5em}{} +\titlespacing{\subsection}{0pt}{0.8em}{0.2em} + +\pagestyle{fancy}\fancyhf{} +\renewcommand{\headrulewidth}{0pt} +\fancyhead[C]{\footnotesize\color{acpink}\textit{Field report --- Aesthetic Computer papers}} +\fancyfoot[C]{\footnotesize\thepage} + +\newcommand{\ac}{\textsc{Aesthetic.Computer}} +\newcommand{\wg}{\textsc{Whistlegraph}} +\newcommand{\code}[1]{\texttt{#1}} + +\setlist[itemize]{nosep, leftmargin=1.2em, itemsep=0.1em} +\setlist[enumerate]{nosep, leftmargin=1.4em, itemsep=0.1em} +\setlength{\columnsep}{1.8em} +\setlength{\parindent}{1em} +\setlength{\parskip}{0.3em} + +\tolerance=800 +\emergencystretch=1em +\hyphenpenalty=50 + +\begin{document} + +\twocolumn[{% +\begin{center} +\includegraphics[height=4em]{pals}\par\vspace{0.5em} +{\acbold\fontsize{21pt}{25pt}\selectfont\color{acdark} Turnstiles for Machines}\par +\vspace{0.45em} +{\normalfont\itshape\fontsize{11pt}{13pt}\selectfont\color{acpink} Instrumenting an art archive with x402, and the three defects found before it could take a dollar}\par +\vspace{0.3em} +{\normalfont\fontsize{9pt}{11pt}\selectfont\color{acgray} The payment rail was the easy part. Scarcity and discovery were the whole problem.}\par +\vspace{0.6em} +{\normalsize\href{https://prompt.ac/@jeffrey}{@jeffrey}}\par +{\small\color{acgray} Aesthetic.Computer / Whistlegraph.org --- August 27, 2026}\par +{\small\color{acgray} ORCID: \href{https://orcid.org/0009-0007-4460-4913}{0009-0007-4460-4913}}\par +\vspace{0.3em} +{\small\color{acpurple} \url{https://whistlegraph.org}}\par +\vspace{0.6em} +\rule{\textwidth}{1.5pt} +\vspace{0.5em} +\end{center} + +\begin{quote} +\small\noindent\textbf{Abstract.} +The \wg{} archive---291 works and 2{,}483 published appearances totalling +1.53 billion views---was fitted with a machine-facing paywall built on +x402~\citep{x402spec}, the HTTP \code{402 Payment Required} protocol for +agent payments in USDC. Three endpoints were priced between \$0.10 and +\$5.00 and advertised to crawlers through \code{robots.txt} and +\code{llms.txt}~\citep{llmstxt}. This report audits that integration and finds +three defects, of descending fixability. First, the configured settlement +facilitator served testnets only, so the mainnet prices being quoted could +never have been paid: a buyer would have signed an authorization, been +refused, and received a 502. Second, the license-verification endpoint was +advertised inside every receipt, implemented nowhere, and unimplementable as +specified, because its signature covered fields the verification URL did not +carry. Both were repaired; settlement now runs through an account-holding +facilitator, verified against Base mainnet from the production host. The +third defect resists engineering: two of the three priced endpoints compute +their answers entirely from JSON files the same site publishes for free, and +links to from the very index that advertises the prices. A rational agent +never pays. Across the retained request logs, no agent ever asked---not for +the paid routes and not for the free machine index either---and the receiving +address has never taken a genuine payment. We conclude that the binding +constraints on machine commerce are substitutability and discovery, not +payment infrastructure, and we evaluate six monetization strategies against +those constraints. The strongest candidate sells something an agent cannot +compute for itself at any price: a name. +\end{quote} +\vspace{0.5em} +}] + +\section{Introduction} + +A recurring question in this practice is where cultural value, once +accumulated, can actually be captured. A companion RFC answers it for human +collectors by making each whistlegraph a purchasable code that shares in the +music derived from it~\citep{scudder2026funding}. This report asks the same +question of a different buyer. Language-model agents crawl archives +constantly, and a payment protocol now exists that would let them pay for what +they take. If an art archive can sell itself to machines, the whistlegraph +corpus---large, structured, already machine-legible---is a reasonable place to +test it. + +The test was built and shipped. This report is the audit, and it is largely a +negative result. That framing is deliberate: the integration compiled, +deployed, returned correct-looking HTTP, and advertised itself competently for +months while being incapable of earning a single dollar for reasons that no +amount of further polish would have fixed. The interesting content is in +\emph{why} the failure was invisible, because each defect was individually +plausible and collectively fatal. + +Section~\ref{sec:system} describes what was built. Section~\ref{sec:impl} +covers the repairs. Section~\ref{sec:evidence} reports six measurements, +each independently checkable. Section~\ref{sec:market} places the result in +the wider x402 economy and examines which turnstiles in that economy actually +earn. Section~\ref{sec:strategy} evaluates what to do next. + +\section{Context} + +\subsection{x402} + +HTTP reserved status code \code{402 Payment Required} for future +use~\citep{rfc9110}; for thirty years the future did not +arrive. x402~\citep{x402spec} claims it. A client requests a resource, receives +a \code{402} carrying machine-readable terms---amount, asset contract, +receiving address, network, timeout---signs a stablecoin transfer +authorization~\citep{eip3009}, and repeats the request with an +\code{X-PAYMENT} header. A \emph{facilitator} verifies and settles that +authorization on chain. + +Two properties make it attractive for an archive. There is no account, +API key, or signup, so a buyer that is not a person needs no onboarding. And +asking is free: an unpaid request returns the terms rather than an error, so +the paywall is self-documenting to anything that speaks HTTP. + +\subsection{The corpus} + +\wg{}~\citep{scudder2026whistlegraph} is a graphic-score form where every drawn +line is a sung line. The index behind \code{whistlegraph.org} holds 291 works, +294 candidates, 793 legacy codes, and 2{,}483 published appearances carrying +1{,}526{,}032{,}122 views. It is generated, versioned, and published in three +machine-readable forms: \code{llms.txt} as a map, \code{index.md} as the whole +archive in Markdown, and \code{graphs.json} plus \code{posts.json} as +structured data. This matters for what follows: \emph{the free tier was +designed to be generous, and that generosity was never reconciled against what +the paid tier was later asked to sell.} + +\section{System} +\label{sec:system} + +Three resources were priced, routed at \code{/api/wg/*} through a single +serverless handler, with a fourth added during this audit +(Table~\ref{tab:endpoints}). + +\begin{table}[t] +\centering +\footnotesize +\begin{tabularx}{\columnwidth}{@{}lrX@{}} +\toprule +\textbf{Endpoint} & \textbf{USDC} & \textbf{Sells} \\ +\midrule +\code{/bulk} & 5.00 & Whole dataset, one document \\ +\code{/sources/} & 0.10 & Source videos behind one work \\ +\code{/license/} & 1.00 & Signed redistribution license \\ +\code{/verify} & free & Checks a license receipt \\ +\bottomrule +\end{tabularx} +\caption{The priced surface. Prices are quoted in atomic units of Circle USDC +on Base (six decimals) and mirrored between the handler that enforces them and +the generator that advertises them.} +\label{tab:endpoints} +\end{table} + +The license endpoint is the design's most careful piece. It does not pretend +to gate the artwork: the score images and videos are already public on the +CDN, and the receipt says so in its own payload. What it sells is a signed, +time-bounded grant of reuse rights---an HMAC-SHA256~\citep{rfc2104} over the +whole receipt, naming the work, the author, the payer, and an expiry. + +\section{Implementation and Repairs} +\label{sec:impl} + +\subsection{Settlement} + +The original configuration pointed at the protocol's reference facilitator +while quoting prices in mainnet USDC. Those are incompatible, as +\S\ref{sec:evidence} shows by measurement. Settlement was moved to an +account-holding facilitator (Coinbase CDP), which required replacing a static +bearer token with per-request authentication: an EdDSA~\citep{rfc8032} JSON +Web Token signed with the account's Ed25519 key, bound by a \code{uris} claim +to the exact method and URI being called, expiring in 120 seconds. The +credential arrives as 64 bytes---a 32-byte seed followed by its public +half---which must be wrapped as PKCS8 before a standard library will load it. + +\subsection{A preflight that distinguishes its failures} + +The handler now asks the facilitator what it can settle before quoting any +price, and---this is the part worth generalizing---keeps the two negative +answers apart. A facilitator that answers \emph{no} yields one \code{503}; a +facilitator that does not answer at all yields another. Collapsing them was a +real bug during this work: an early version logged the lookup failure and +quoted anyway, which made a successful \code{402} and a silently broken one +indistinguishable from outside. For a public endpoint the HTTP response is +frequently the only diagnostic channel available, so distinct failures must +not share a status code. + +\subsection{Verification that carries its own evidence} + +Every license advertised a verification link of the form +\code{/verify?code=\&sig=}. The endpoint did not exist. It also could not have +worked, because the signature covers the entire receipt---licensee and +issue timestamp included---so a work code and a signature are jointly +insufficient to recompute the digest. No amount of implementation would have +closed that gap; the specification was wrong, not the code. + +The repair keeps verification stateless, which the design requires, by making +the receipt travel inside its own link as a base64url token checked against +the exact bytes that were signed. Nothing is stored, so the archive keeps no +record of who bought what. Edited receipts fail; genuine receipts past their +term report \code{expired} rather than quietly passing. Checking a license is +free, on the reasoning that charging to confirm a license already bought would +make the signature worth less than the paper it is printed on. + +\section{Evidence} +\label{sec:evidence} + +Six measurements, taken 2026-08-27. Each is reproducible by a reader with +network access; the first two require no credentials at all. + +\subsection{M1: the facilitator settled testnets only} + +\code{GET https://x402.org/facilitator/supported} returns the networks the +reference facilitator will settle. Base mainnet is absent +(Table~\ref{tab:facilitators}). The endpoint was quoting \$5.00 in real Circle +USDC on a chain its own facilitator could not touch. The failure mode is +worse than an outage: the buyer signs a payment authorization first and is +refused after. + +\begin{table}[t] +\centering +\footnotesize +\begin{tabularx}{\columnwidth}{@{}l>{\RaggedRight}X@{}} +\toprule +\textbf{Facilitator} & \textbf{Settles} \\ +\midrule +\code{x402.org} (reference) & base-sepolia, solana-devnet, hedera:testnet, stellar:testnet, algorand, aptos, xrpl \\ +\addlinespace +Coinbase CDP & \textbf{base}, base-sepolia, Polygon, Arbitrum, World Chain, Solana \\ +\bottomrule +\end{tabularx} +\caption{Measured facilitator capability. The reference facilitator carries no +mainnet at all; every network it settles is a test network. Verified by +unauthenticated \code{GET} and, for CDP, by authenticated \code{GET} from the +production host.} +\label{tab:facilitators} +\end{table} + +\subsection{M2: the advertised verification was unsatisfiable} + +Shown by construction in \S\ref{sec:impl}: the signed message includes the +licensee address and issue timestamp; the verification URL carries neither. + +\subsection{M3: two of three products are free} + +\code{posts.json} is public, returns HTTP 200, and is linked from +\code{llms.txt}. It contains all 2{,}483 posts, of which 1{,}332 carry the +\code{contributes} relationship edges spanning 290 of the 291 works. Those +edges are precisely what the \$0.10 \code{/sources} endpoint computes. The +\$5.00 \code{/bulk} endpoint is that same file plus \code{graphs.json} +(401\,KB) with media URLs resolved. Both inputs are free, both are 1.8\,MB +combined, and the machine index tells any agent where they are. + +The paid tier therefore sold, at \$5.00, a convenience over two files it was +simultaneously giving away and advertising. Only the license sells something +unobtainable elsewhere, because a signature cannot be forged from public data. + +\subsection{M4: nobody ever asked} + +Across the retained Caddy access logs, requests to \code{/api/wg/*} number +zero. Requests to the free machine index---\code{llms.txt}, +\code{index.md}---also number zero. \emph{Caveat:} these logs rotate by size +every few minutes under production traffic, so the window is hours, not the +lifetime of the deployment. The measurement establishes that no agent asked +during a busy contemporary window; it does not establish that none ever did. + +\subsection{M5: no payment has ever settled} + +The receiving address holds no USDC. Its entire ERC-20 history is four +unsolicited airdrops---a counterfeit token whose ticker spells ``USDC'' with +Cyrillic characters, a phishing SHIB variant, and two others---none of them a +payment. This is consistent with M1 and M4 and independently confirms them. + +\subsection{M6: the repaired rail works} + +Queried from the production host, whose address the credential is pinned to, +the CDP facilitator authenticates the signed JWT and reports Base mainnet +among its settleable networks. All three paid routes now return \code{402} +responses a buyer could act on. The rail is live; what it sells is still +wrong. + +\section{Market Context} +\label{sec:market} + +\subsection{Aggregate} + +Reported x402 volume peaked near \$5.15M/month in November 2025 and fell +roughly 77\% to \$1.1--1.2M/month across about 3.7M transactions by +mid-2026---an average near \$0.30 per transaction, indicating high-frequency, +low-ticket usage~\citep{coindesk2026}. A meaningful share of the 2025 peak was +not utility: a pay-to-mint memecoin experiment alone processed over 150{,}000 +transactions in its first month by requiring a 1 USDC payment to +mint~\citep{chainalysis2026}. Analyses of that period attribute much of the +growth to token farming rather than services being bought. + +\subsection{Which turnstiles earn} + +Category-level analysis of settled receipts consistently ranks four kinds of +seller, and the ranking is instructive because none of them sell an archive: + +\begin{enumerate} +\item \textbf{Data and search APIs} --- the highest call volume, serving +research agents making many cheap requests. +\item \textbf{Inference and model routing} --- the largest payment sizes, +fewer calls. +\item \textbf{Web automation} --- browser-as-a-service and scraping; steady +volume, minimal unit price. +\item \textbf{Specialized analytics} --- chain explorers and market data +feeding trading agents. +\end{enumerate} + +Every category sells \emph{live compute or live data}: something that did not +exist before the request and cannot be fetched from a static file. The common +factor is not subject matter but non-substitutability at the moment of +purchase. An archive is the opposite: static by definition, and cheapest to +serve by publishing once. + +\subsection{The absent category} + +We could not identify an established x402 seller of identity, namespaces, +handles, or agent-to-agent messaging access. That absence is reported as a +finding rather than an oversight, and it cuts both ways: it may indicate an +unserved niche, or it may indicate that nobody has found buyers for one. +Section~\ref{sec:strategy} treats it as the former while noting the risk. + +\section{Strategy} +\label{sec:strategy} + +The audit reduces to two constraints that any candidate product must satisfy. +\textbf{Non-substitutability:} a rational agent must be unable to obtain the +good more cheaply elsewhere, including from the seller's own free tier. +\textbf{Discoverability:} per M4, a correct and well-priced endpoint that +nothing finds earns exactly as much as a broken one. Table~\ref{tab:strategy} +scores six options. + +\begin{table}[t] +\centering +\footnotesize +\begin{tabularx}{\columnwidth}{@{}Xccc@{}} +\toprule +\textbf{Strategy} & \textbf{Sub.} & \textbf{Disc.} & \textbf{Ready} \\ +\midrule +A. Derived data (status quo) & fail & fail & yes \\ +B. Metered rendering & pass & fail & part \\ +C. Agent handles & pass & pass & part \\ +D. Paid agent chatroom & pass & pass & part \\ +E. Provenance receipts & pass & weak & yes \\ +F. Exit x402 & --- & --- & --- \\ +\bottomrule +\end{tabularx} +\caption{Options against the two binding constraints. \emph{Sub.} asks whether +the buyer can get it free elsewhere; \emph{Disc.} whether the thing can +plausibly be found; \emph{Ready} whether the infrastructure exists today.} +\label{tab:strategy} +\end{table} + +\textbf{A. Derived data} fails both constraints and is the status quo. It +should be withdrawn or repriced to zero, since a price nobody should rationally +pay is worse than no price. + +\textbf{B. Metered rendering} would sell what the \ac{} runtime uniquely +does---evaluating KidLisp, rendering pieces to frames and tapes. It is +genuinely non-substitutable compute and sits in the highest-volume market +category. Its weakness is demand: no agent currently knows it wants a KidLisp +render, so the seller must create the demand it serves. + +\textbf{C. Agent handles} sells a name in the \ac{} namespace. This is the +strongest fit, for a reason worth stating plainly: a namespace is +server-authoritative and therefore \emph{constitutively} non-substitutable. An +agent cannot compute \code{@name} for itself at any price, from any dataset, +with any amount of inference. Unlike rendering, the scarcity is structural +rather than economic. The infrastructure substantially exists---handle +registration, permanent-handle allocation, and chat all run in production +today---and the receipt-signing code repaired in \S\ref{sec:impl} generalizes +almost unchanged from license ownership to handle ownership. + +\textbf{D. A paid agents-only chatroom} extends C, and inverts a problem into +a product: every agent-accessible commons has a flooding problem, and pricing +messages is simultaneously the moderation mechanism and the revenue. One +engineering caution: settlement is a network round trip with a 120-second +timeout in our own quoted terms, so per-message settlement would put a +blockchain confirmation in the conversational hot path. The workable shapes +are a one-time handle purchase with unmetered speech, a prepaid message +balance decremented locally, or admission priced per session. + +Options C and D also address discovery in a way A and B cannot. A priced +dataset is not a story; a room where machines pay to talk to each other is +one, and per M4 the shortage was never buyers' willingness but their +attention. + +\textbf{E. Provenance receipts} generalizes the one component that already +works: selling signed, verifiable statements about artifacts. Real, but small. + +\subsection{A concrete proposal} + +Combining C and D while respecting the settlement-latency constraint yields a +design with one payment and no per-message blockchain confirmation: + +\begin{enumerate} +\item \textbf{A handle is bought once.} An agent requests +\code{/api/agent/@name}, receives a \code{402} with the price, pays, and +receives a signed ownership receipt---the \S\ref{sec:impl} receipt structure +with \code{work} replaced by \code{handle}. Verification stays free and +stateless. +\item \textbf{The name is the admission.} Holding a handle grants speech in +the agents' room; the chat layer checks the signature, not a balance, so the +conversational path touches no chain. +\item \textbf{Scarcity is priced, not rationed.} Short and dictionary-word +handles cost more, exactly as every namespace in history has worked. +\end{enumerate} + +Pricing should sit near the ecosystem's demonstrated tolerance rather than +this archive's previous guesses: the \$5.00 \code{/bulk} price was set against +no comparable and, per M4, tested against no buyer. A first handle price in +the low single-dollar range is defensible as roughly ten times the median +per-transaction value in \S\ref{sec:market}, justified by permanence. + +The honest failure mode is a room that agents visit once. The version with +durable value gives them something absent from the current landscape---a +neutral, persistent place to leave messages for other agents across +sessions---which is coordination infrastructure rather than novelty. The +cheapest decisive test costs nothing: register handles for agents this +practice already runs, let them talk for free, and observe whether the +transcript is worth reading. If it is not interesting unpriced, no price +improves it. + +\textbf{F. Exit} deserves explicit statement. The entire x402 economy moves +roughly \$1.1M/month and is contracting. A new niche seller should expect a +negligible share of it. Measured strictly as revenue, every option above is +outperformed by the practice's existing grant and client lanes, and any +decision to continue should be justified by positioning, research value, or +artistic interest rather than by projected income. This report recommends +continuing on those grounds, and recommends against continuing on financial +ones. + +\section{Ethics, Privacy, and Limitations} + +\textbf{Honest paywalls.} The license endpoint states in its own payload that +the assets it licenses are publicly reachable. A paywall that implies it gates +what it does not gate is a lie the buyer discovers in one request, and the +same standard condemns \S\ref{sec:evidence}'s M3: charging for derived free +data was not fraud, but it was not defensible either, and it is documented +here rather than quietly repriced. + +\textbf{No purchase records.} Verification is stateless by construction, so +the archive holds no ledger of which agent licensed which work. + +\textbf{Credential scope.} The settlement credential carries read-only +permissions---no trade, transfer, or withdrawal authority---and is pinned to +the production host's address. A consequence worth recording: rebuilding that +host on a new address silently breaks payment. + +\textbf{Limitations.} M4's log window is hours, not months +(\S\ref{sec:evidence}). The market figures in \S\ref{sec:market} are +secondhand from published analyses, not independently derived from chain data, +and dashboards in this sector go stale. No end-to-end mainnet purchase has +been executed: the rail is verified to the point of settlement capability, not +through a completed sale. Until one buyer pays once, M6 establishes +capability rather than function. + +\section{Conclusion} + +An archive was wired for machine payment, advertised properly, and could not +have earned a dollar---first because its facilitator settled only test +networks, then because its verification link asked for a proof it had not +been given, and finally because most of what it sold was already free next +door. Two of those were bugs. The third was a category error, and it is the +one that generalizes: the work of selling to machines is not building the +turnstile but finding something on the other side of it that the buyer cannot +simply compute. + +Everything the archive knows can be recomputed from files it publishes. A name +cannot. That asymmetry, rather than any property of the payment protocol, is +where the next version of this experiment should begin. + +\vspace{0.5em} +\noindent{\small\color{acgray}\textit{Platter consulted: the whistlegraph +machine-index generator and its notes, the paid-access handler and its route +configuration, production access and service logs, on-chain history of the +receiving address, live facilitator capability endpoints, the x402 and CDP +specifications, and the companion Funding Codes RFC.}} + +\vspace{0.5em} +\noindent\textbf{ORCID:} \href{https://orcid.org/0009-0007-4460-4913}{0009-0007-4460-4913} + +\def\bibfont{\footnotesize} +\setlength{\bibsep}{0.25em} +\bibliographystyle{plainnat} +\bibliography{references} + +\end{document} -- 2.51.2