{"path":"research/whose-tokens-pay-for-mapping.md","content":"# Whose tokens pay for mapping\n\n**Date**: 2026-10-04 · **Type**: research on founder instruction (*\"Think deeply about this please\"*) ·\n**Status**: the proposals below are Claude's and unruled (ledger Arc X), with one exception: the\nrouter engine for the keeper's own account (X9) was ruled and built on 2026-10-04 (§ 3g), and is\nswitched on nowhere. The facts about what each provider allows were read at the providers' own\npages on 2026-10-04 and are listed with their sources in § 2. Two things were measured the same\nevening: two judging passes asked of models a linked account can reach (§ 3e), and every pass run\nonce through the new engine (§ 3g). **Read again on 2026-10-05** against\n[pass-quality-and-the-choice-of-model.md](pass-quality-and-the-choice-of-model.md), which asks how\ngood a pass must be and which model that implies; what that changed here is marked with the date.\nThe founder put the engine on hold that morning and lifted the hold on deploying at midday, so\nits code is in production, switched off (§ 3g).\n\nThe founder, in a community chat on 2026-10-04, after saying the input form is switched off because\nthe model bill is unpaid:\n\n> *\"funderar på om man kan bygga det på ett sätt som låter allas egna AI-tokens bidra istf att det\n> dras från mitt konto, skulle dock kräva ännu mer stringent kvalitetskontroll\"*\n\nIn English: he wonders whether it can be built so that everybody's own AI tokens contribute, in\nplace of the cost being drawn from his account, and adds that this would need even stricter quality\ncontrol. A search of the corpus found no earlier statement of the idea. The nearest are the four\ndocuments in § 6.\n\n---\n\n## 0. Answer first\n\n1. **The idea is sound, and it is three ideas.** His sentence joins three things that can be\n   separated: who **pays** for a mapping run, who **chooses** what gets mapped, and whose software\n   **runs** it. Only the third needs the stricter quality control he expects.\n2. **If only the payer changes, the quality is unchanged.** A person connects a prepaid key, and\n   their submission runs through our own pipeline on their account. The claims are as good, and as\n   unproven, as any the pipeline makes today. That is the smallest version, it reopens the paused\n   input form, and no money passes through the project or its keeper: the provider bills the person.\n3. **The stricter control is owed for open intake, whoever pays.** Today the keeper's wallet is the\n   brake on volume: the corpus lists *spend gates* among its defences against a flood of machine-made\n   claims. Take the cost away and the brake goes with it. So the brake has to be said out loud before\n   the cost is removed: a rate per person, a count of how many sources each side of a debate has, and\n   maps that start private and are published by a deliberate act.\n4. **Two further doors, for later.** A queue of sources that the commons orders and anyone's key may\n   work through, the way volunteer computing hands out jobs. And a person's own assistant mapping\n   their own text into their own draft, where the check that matters is the author saying whether\n   the rendering is theirs.\n5. **A compartment can bring its own key**, which settles under whose terms a community's material\n   is processed: the community's own.\n6. **Two routes are closed by the providers themselves, and a third is not yet open to a hosted\n   site.** One of the closed ones is the route a design from memory would have reached for (§ 2).\n7. **The internal passes follow the same rule, and most of their work is owed.** His follow-up\n   question was whether the sameness keeper, the splitter and the relevance judge would stay on the\n   keeper's account. The sameness keeper already runs inside every submission, so on a linked account it is\n   billed with the rest. The standing work that no submission triggers has no daemon and almost no\n   coverage: on 2026-10-04 none of the 4,226 live support and attack links carried a relevance\n   reading. Because our server asks the question, a run on a donor's account gives the answer a run\n   on the keeper's would (§ 3d, § 3f).\n8. **Which model answers matters more than who pays, and it was measured.** Where a pass asks a\n   sharp question, four models gave the same answers at a thirtieth of a cent each. Where it asks\n   for a degree, or uses a word our own instructions leave loose, the answer changed with the\n   model. So each pass names its model, and a linked account is held to it (§ 3e). **Sharpened\n   2026-10-05**: what a pass names is the test a model must clear, a set of cases with known\n   answers, and the list of models follows from it. Models are replaced every few weeks and such\n   a set is paid for once (ledger Y2).\n9. **The first account to link is the keeper's own.** The piece that lets a contributor's prepaid\n   account pay is the piece that lets the keeper's existing prepaid account pay, and that account\n   does not depend on the provider account that has been blocked since August (§ 3f). **Built\n   2026-10-04, off by default, in production switched off since 2026-10-05** (§ 3g).\n\n---\n\n## 1. Four roles inside one sentence\n\n| Role | Today | What his idea changes |\n|---|---|---|\n| Who **chooses** the source | the keeper, by hand; the public form is paused | anyone signed in, or a queue |\n| Who **pays** for the run | the keeper's account | the person's own account |\n| Whose software **runs** it | our pipeline, on our server or his machine | ours, or the person's own assistant |\n| Who **answers** for the result | the source's author asserts the claims; a machine wrote them | the same, plus a visible *mapped by* |\n\nThe fourth row is already ruled. Since 2026-10-03 the account that made a contribution is not\nassumed to be the one who asserts it, and a hand-made source can carry a *mapped by* line. A run\npaid by a contributor needs nothing new there: the author asserts, the pipeline wrote, the\ncontributor paid.\n\n**The combinations differ in what they need:**\n\n| Chooses | Pays | Runs | What it is | New quality control |\n|---|---|---|---|---|\n| the person | the person | ours | the input form on the person's key | none for faithfulness; the intake rules of § 4 |\n| the commons | anyone | ours | a donated run | none; the queue's ordering is the safeguard |\n| the person | the person | theirs | an assistant mapping its owner's text | the checks of § 3b |\n| the commons | anyone | theirs | volunteer computing proper | replication, which is costly here (§ 3b) |\n\n---\n\n## 2. What exists outside, read at the source on 2026-10-04\n\nEach row is a paraphrase of the provider's own page, linked under *Sources*.\n\n| Route | What the provider's own page says | Use here |\n|---|---|---|\n| **A linked prepaid key** (OpenRouter's account-linking flow) | A person connects their account in one step and the app receives a key that the person controls, which the app may keep in the browser or in its own database | **Open today.** One step, any model the pipeline is measured on, billed to the person |\n| **A person's own API key**, pasted in | Anthropic's rules leave people free to supply their own API keys, so long as the usage is billed to the key's owner and is not resold | Open, with more friction and a secret to handle |\n| **A ChatGPT plan spent in another app** (*Sign in with ChatGPT*, launched 29 September 2026) | Plan usage is documented for open-source apps and apps a person hosts locally. A paid or remotely hosted app is pointed to an interest form, and the sign-in itself is in a limited trial with selected commercial partners | **Not open to a hosted site yet.** Open to an open-source tool a person runs on their own machine |\n| **A Claude plan spent in another app** | Developers may not offer Claude login in their own applications, or *\"route requests through Free, Pro, or Max plan credentials on behalf of their users\"*, or handle those credentials | **Closed.** |\n| **A person's own Claude calling our tools** | Custom tool servers can be added by people on every plan, the free one included (one server there). A server can ship inside a plugin together with the written skills that teach the assistant to use it | **Open today**, and it is the only route that reaches the plans most people already pay for. ChatGPT accepts custom tool servers in its developer mode |\n| **A tool server borrowing the visitor's model** (MCP *sampling*) | Deprecated as of protocol version 2026-07-28; new work is told not to adopt it. The reasons given: few clients ever supported it, and it is the most security-sensitive of the three features retired together. Claude's page lists it among the features it does not support | **Closed.** This is the route a design from memory would have chosen |\n| **A model inside the visitor's browser** (Chrome's Prompt API) | Available to web pages from Chrome 148; it needs 22 GB of free disk and more than 4 GB of video memory | Free to everyone and too small for extraction. Possibly useful later for a yes/no screen |\n\nTwo free routes fail on arithmetic. A free-tier Gemini key allows about twenty calls a day per\nmodel, and one extraction makes dozens. A run through the full pipeline on a Claude-class model was\nmeasured at 78 calls and about eight dollars at list price for a ten-minute spoken segment\n(2026-09-09); on paid Gemini Flash an extraction has cost 27 to 37 cents.\n\n**Three more facts about a linked prepaid key, read at OpenRouter's pages on 2026-10-04:**\n\n- **Its owner can cap it.** A key may carry a spending limit, and the app holding the key can read\n  how much of the limit is left. A refused call says whether the key's limit, the account's\n  balance or a short-term hold caused it. So *give this five dollars and no more* is something the\n  provider enforces, and an empty key is a state the app can see coming.\n- **A request can name who may serve it.** It may list the providers allowed, forbid falling back\n  to others, refuse providers that keep prompts, and require a quantisation level. The reply names\n  the model and the provider that answered.\n- **Free model variants allow 1,000 calls a day** at 20 a minute for an account that has ever\n  bought ten dollars of credit, and 50 a day otherwise. That is enough for several extractions a\n  day, if a free model holds up on the passes. The one tried on 2026-10-04 refused all 72 calls as\n  rate-limited upstream, so nothing is known about that yet.\n\n---\n\n## 3. Where the quality control actually falls\n\n### 3a. Their key, our pipeline\n\n**Nothing changes about faithfulness.** The prompts, the passes, the order and the checks are ours.\nThe standing finding applies unchanged: no pass is proven, and a bound on a pass's error holds for\none version of the pass on one model (`proving-a-pass-reliable.md` § 0, § 4). So the models a connected\nkey may use are a short list of the ones the pipeline has been measured on, and a person does not\npick an arbitrary model.\n\n**What the list costs the payer** (2026-10-05). One call of the same question cost between 0.08\nand 1.45 cents across five models that day, a spread of about twenty times, so which model a pass\nnames decides most of a contributor's bill. If a pass's checkers come from other model families, as\nproposed (ledger Y4), those calls are on the same bill: about 5 to 9 cents on a source of 49\nclaims.\n\nThree things are new, none of them about the claims:\n\n- **The key is a secret in our hands.** It is held for the length of the run and nowhere else. The\n  durable path keeps a workflow's inputs in its history, where the source text and the submitter\n  already sit, so a key must never be a workflow input. It must not reach a log or the attempts\n  table either. This repository leaked contributors' addresses for months through a field nobody\n  was watching; a key is worth more than an address.\n- **The bill has to be shown.** The person paying is owed the cost of each run. Today cost is\n  recorded for synthesis pages and for the Claude backend, and not per extraction on the main path.\n  The cost curve has been unmeasurable since August for want of exactly this\n  (`lowering-the-cost.md` § 6.5), so the duty to the payer pays off a second debt. The bill is the\n  sum of what the provider reports for each call, which matched the provider's own record of the\n  same calls where it was checked (2026-10-04). The account's balance is no substitute: anything\n  else using the key moves it, and that evening another session's test did, while this one ran.\n- **An empty account is ordinary.** A run that meets *out of credit* halfway stops cleanly, keeps\n  what it has, and resumes when a key with credit is offered, by anyone.\n\n### 3b. Their assistant, our tools\n\nHere his instinct is right. The person's own assistant reads the text and submits claims through our\ntools, on the plan they already pay for. We wrote the instructions; we did not run them. Nothing can\nshow which model answered or whether it followed them. So what arrives is treated as written by an\ninterested stranger:\n\n1. **Mechanical checks at the door.** Every claim carries the passage it was drawn from, and that\n   passage must occur in the source word for word. A claim may hold no number, date or\n   name that its passage lacks. Anything the text does not say outright is marked as unstated, as\n   the pipeline's own unstated premises are. None of these is a judgement of merit, so none of them\n   is the quality bar at the door that this project refuses (§ 4).\n\n   **⚠ Corrected 2026-10-05: this first said *character for character*, and that rule would have\n   refused about one faithful quote in seven.** The check now exists for our own pipeline\n   (`scripts/measure_quote_fidelity.py`) and was run on the 1,144 stored claims whose source text\n   was kept: 80.8 % of their passages are in the source character for character, and 94.1 % word\n   for word once quote marks, dashes, spacing and markdown emphasis are set aside (98.2 % on the\n   sources whose text was kept promptly). So the door compares words and ignores typography. The\n   number rule needs the same care: of four numbers it flagged, two were faithful conversions\n   (*one quarter* written as 25 %), so a flagged number is read and never refused outright. The\n   one real catch was a model's own knowledge written over the text (*Claude 3 Opus* where the\n   source says *Opus 4.6*). Both checks run on what any model wrote, ours included\n   (`pass-quality-and-the-choice-of-model.md` § 4a, ledger Y6).\n2. **It lands as a draft** belonging to the person, outside the public graph.\n3. **The author's own word.** When the text is the person's own, they are the one possible author of\n   a rendering of their position. Their acceptance of the map is the check that matters, and it is\n   the consent act the shared-sensemaking work asked to have built before any other feature (ledger\n   V2). When the text is somebody else's, the map is *this person's rendering of that author*, shown\n   as such until the author or an independent run says otherwise.\n4. **Replication, where it is worth the price.** Volunteer computing verifies machines it does not\n   control by sending each job to two of them and comparing the answers, and it sends fewer\n   duplicates to a machine with a clean record, counted per machine and per version of the program.\n   The same shape fits here with one difference that makes it dear: two honest extractions of one\n   text never match word for word, so comparing them takes the sameness judgement, which is itself\n   unproven. A second, independent run of our own pipeline is therefore the comparison to make, on a\n   sample. It would also be the first measurement of how much an extraction changes between runs,\n   which the threat model has listed as unmeasured since August.\n\n**What this door does not open.** The corpus holds that agents get no way to write their own\ncontributions into the graph: no defence exists against one actor posing as many, and agents that\nread and write one shared board become correlated (`agents-as-a-consumer-class.md` § 8). An\nassistant mapping a named text, every claim tied to a quoted passage, into its owner's private\ndraft is transcription. It adds no claim of the assistant's own, and it casts no vote, attaches no\nevidence and answers no critical question. Whether that distinction is enough is his to rule.\n\n### 3c. What stays with the commons whatever door a source came through\n\n**Running the link between a source and the rest of the graph.** That is where sameness is decided,\nwhich is the binding constraint on the whole reuse argument, and it is where a contributor with a\nstake would have the most to gain. Within-source work can be paid and even run by its submitter.\nCross-source work **runs** on the commons' own pipeline, always.\n\n**⚠ Corrected 2026-10-04, the same evening.** This section first ended *\"paid by the keeper or by\ndonated runs\"*, which mixed up the two things § 1 separates. Who runs the linking is what protects\nit. Who pays for it protects nothing, since the payer cannot touch the question, the model or the\nanswer. And as the code stands the linking is a step of the submission's own run, so a linked\naccount would be billed for it with the rest (§ 3d).\n\n### 3d. Which machine work exists, and who would be billed for it\n\nHis follow-up question, 2026-10-04: *\"Would Gemini still run all the internal AI passes and daemons\netc, like the splitter, the sameness-keeper, relevance judge etc? … Could a user's own tokens\nsomehow be contributed to these as well?\"* Read in the code and counted on the live graph that\nevening:\n\n| Kind of work | What it is | Who pays today | On a linked account |\n|---|---|---|---|\n| **A submission causes it** | Reading the text into claims, their links, critical questions and concepts; then, for each new claim, the **sameness keeper** and the relationship classifier on its five nearest existing claims in the whole graph | the keeper's account, paused for everyone else | the submitter's, the sameness keeper's part included, because it is one run |\n| **A click causes it** | The **splitter** when a reader asks for a claim to be split; reading a person's evidence or answer into a link; a first-take answer to a question | the keeper's free tier, which the pause does not cover | the account of the person who clicked, or the commons with a rate |\n| **Nothing causes it** | The **relevance judge** over existing links; the splitter over existing claims; the reading of what kind each part is; concept tags | nobody: these are scripts the keeper runs by hand, so far on his own Claude plan | a donated run (§ 3f) |\n\n**No daemon calls a model.** The one standing sweep in the code, for stale claims, is plain\narithmetic over dates. Embeddings are made on the project's own server and cost no tokens.\n\n**The click row is where the live site writes today, and on a model nobody chose** (read from the\nsplitter's own record, 2026-10-05). The free tier allows about twenty calls a day per model, and\nthe pipeline moves to a second and a third model without a word when the first has none left. Both\nsplits written on the live site in October, on the 3rd and the 4th, were cut by the second model,\non which the splitter has never been measured. One of the two cut an *or* into two parts stated as\nfact (`pass-quality-and-the-choice-of-model.md` § 4b, § 4c).\n\n**How much of the third kind has ever been done**, counted on the live graph, 2026-10-04:\n\n| Pass | Done | Owed |\n|---|---|---|\n| Relevance judge | 0 links (its two trials read twelve links and wrote nothing) | 4,226 live support and attack links, of which 1,106 join two substantive claims |\n| Splitter | 13 claims hold a proposal, 9 have written parts | 1,958 substantive claims long enough to split |\n| Concept tags | 482 claims | 1,989 substantive claims |\n\nUntil a link has a reading, the strength layer presumes one: half weight on a link its source\nasserted, none on a link a machine guessed between other people's claims\n(`deliberus/relevance.py`). So which links are read first moves strengths, and the order of the\nwork is a fairness question as well as a cost question (§ 3f).\n\n**What is owed, and in what order, has a design of its own.** This section counts three passes by\nhand. `machine-work-as-a-standing-property.md` (ledger R8, unruled, and being reworked in other\nsessions as of 2026-10-04) is where that count becomes a property of the graph: a pass's duty is a\ncondition on the graph, every judgment records which version of which pass made it, and a changed\npass queues its old work to be done again. This document answers who pays for that queue. It does\nnot say what the queue holds or which item comes next.\n\n**What the keeper's own plan has carried.** The Claude runner's log holds 2,050 pass calls since\n2026-08-23, about 104 dollars at list price, 761 of them the sameness keeper's. Most of that price is the\nrunner's own overhead of about six thousand tokens a call. Asked through a router on the same\nmodel, a sameness-keeper question cost 0.64 cents on 2026-10-04 against 3.7 on the runner.\n\n### 3e. Does a pass answer the same on models a linked account can reach? Measured 2026-10-04\n\nHis hunch: *\"If we know which models are required to do a good job for these, and we control the\nprompting, then the results should hold high enough quality / low enough error rates that it would\nbe feasible, I guess?\"* What was known that evening: the sameness keeper, the splitter and the\nrelevance judge had each been measured on one model only, Claude Sonnet 5 through the keeper's own plan, a\nroute no contributor's account can take. Production splits on Gemini's free tier, where none of it\nwas measured (`microtasks-in-broad-daylight.md` § 3e).\n\n**The test** (`scripts/measure_passes_on_router_models.py`; answers in\n[`whose-tokens-pay-for-mapping/`](whose-tokens-pay-for-mapping/)). Two passes, each with its own\nprompt and answer form unchanged: the relevance judge on the twelve links of its second trial, and\nthe sameness keeper on sixty pairs. Twenty are pairs the relationship classifier had found\nunrelated, twenty are pairs where the sameness keeper had recorded *overlaps* or *contains*, and\ntwenty are random pairs\nacross sources. Four models through a router key, and then the model the stored answers came from,\nasked again as a baseline. One run each. Read-only.\n\n| Model | Cents per question | Unrelated pairs called unrelated | Link bears, and which way, as stored | Same step as stored, of 12 | Sameness keeper's *overlaps* group agrees, of 20 |\n|---|---|---|---|---|---|\n| Claude Sonnet 5, asked again | 0.64 | 20 of 20 | 12 and 12 | 10 | 16 |\n| Gemini 3 Flash | 0.064 | 20 of 20 | 12 and 11 | 6 | 7 |\n| Gemini 3.1 Flash Lite | 0.032 | 20 of 20 | 12 and 11 | 6 | 6 |\n| GPT-6 Luna | 0.026 | 20 of 20 | 11 and 10 | 4 | 11 |\n| A free Gemma variant | 0 | refused all 72 calls, rate-limited upstream | | | |\n\nEvery paid model filled the answer form on all 72 questions.\n\n**What it shows.**\n\n1. **Sharp questions travel between models.** *Are these two claims unrelated?* and *does this link bear at all?*\n   got the stored answer from every model, at a thirtieth of a cent on the cheapest.\n2. **Questions of degree do not.** On the five-step scale of how far a link bears, Claude agrees with its own\n   earlier run on 10 of 12 and the others agree with it on 4 to 6. Gemini 3 Flash answered *strong*\n   to all twelve links, so half its agreement is the share of Claude's answers that were *strong*.\n   A model that gives one answer to every link is no reader of degree. The decision model's\n   shadow run the same day got further by asking for two conditional likelihoods\n   (`jev-and-the-judgement-layer.md` § 6e), which points at the question's shape before the model.\n3. **A loosely defined word is answered differently by each model.** On the pairs where the\n   sameness keeper had recorded *overlaps*, Claude repeats itself 16 times in 20 and the Gemini models agree 6 or 7\n   times. On the pairs the relationship classifier called unrelated, the same Claude model, asked\n   the sameness keeper's question, answered *overlaps* on 13 of 20, while the Gemini models answered\n   *unrelated* on 15 and 17. So two passes on one model disagree about the same pairs, and the\n   cheaper family sides with the classifier. The word is the one ledger T5 found to read two ways.\n4. **On the one link whose direction is disputed, the cheap models and Claude split, and by the\n   judge's own instructions the cheap models are right.** The link is filed as an attack: *tiny\n   probabilities times astronomical value can dominate every other consideration* against *a large\n   enough expected future value can override the claims of people alive today*. Taken as written\n   the first is a reason for the second, and the judge is told to answer from the claims\n   themselves even where that disagrees with the filing. Three models and the decision model read\n   it as a reason for. Claude Sonnet read it as filed, twice, taking the first claim as a warning\n   about such reasoning. The prompt tells the judge how the link is filed, and one model follows\n   the filing. That reading of who is right is Claude's own, a fifth model's. No person has\n   labelled the link.\n\n**What it does not show.** Which answers are right. No person had labelled any machine verdict in\nthis project by 2026-10-05: both review tables were empty. The stored answers are one model's, the sample\nis twelve links and sixty pairs, each model ran once, and a second run of Flash Lite moved two\ncounts by one. The stored Claude answers came through the Claude runner and the baseline through a\nbare call, so *agrees with itself* also spans two harnesses. A pass is proven by a blind sample a\nperson has labelled (`proving-a-pass-reliable.md`), and his forty links are still the sample that\nwould say which model reads degree best.\n\n**What follows for his hunch.** It holds for who pays, and it needs one amendment for which model.\nControlling the prompt fixes the question. It does not fix the reader. A pass's bound belongs to\none version on one model (`proving-a-pass-reliable.md` § 4, devil 8), and this is the first time\nthe corpus has seen that with numbers. So a linked account is held to the model each pass names,\nand the list of permitted models is filled in by measurement, one pass at a time, cheapest model\nfirst. Two things come cheaply from the same router key: a second family for the relevance judge,\nwhich the ruling in force asks for, and a count of where families disagree, which is a list of\nlinks worth a person's eyes.\n\n**Read again 2026-10-05, with three more probes**\n(`pass-quality-and-the-choice-of-model.md` §§ 4–5). His hunch needs its amendment stated by kind\nof question:\n\n- **A question we can close**, with a yes or a no: it holds as he put it, on the cheapest models.\n- **A question of degree, or one that turns on a loosely defined word**: no model makes it hold.\n  The question has to change first.\n- **A pass that writes** (cutting a claim, rewording it): controlling the prompt is not enough.\n  Five models given the splitter's instructions cut one real sentence four ways, and the dearest\n  made the same mistake as the model that had cut it on the live site. The instructions lacked a\n  rule, and no choice of model supplies a missing rule.\n- **An open reading** (what a text leaves unsaid): the one place the strong model found more than\n  the cheap ones, on two sources.\n\nSo *which models are required* has a different answer per pass, and it is settled by a set of\ncases with known answers that any model can be run against (ledger Y2), not by a list drawn up\nonce.\n\n**Found on the way: 47 false marks, and the defect that wrote them.** The twenty pairs meant to\ntest the sameness keeper's *same* answer were links marked as merge candidates. A first model called 16 of\nthem unrelated, and reading the stored reasons showed why: all 47 such marks on the live graph end\nin *topical overlap, no logical relation*. The linker's relationship reply has a gate and then a\nrequired field naming the relation. A reply that fails the gate still fills the field, with the\nfirst word on the menu, *same*, and the linker read the field before the gate. Fixed that evening\nwith a test built from one of the 47 (`auto-connect-upgrade.md` § 2c). **All 47 marks were taken\nback the same evening on the founder's word** (*\"Build it now, and clear the 47 marks.\"*): each\nlink keeps the classifier's reason and records when and why its mark was withdrawn\n(`scripts/retire_false_merge_marks.py`, which can also restore them). The live graph now holds no\nmerge-candidate mark, and no pair any pass has found to be the same claim.\n\n### 3f. A donated run, and the keeper's own account first\n\n**A donation is a run, with the key held for that run only.** A signed-in person with a linked account presses a\nbutton. Our server takes the next batch of owed work, asks our questions of the model each pass\nnames, bills the person's account, forgets the key when the batch ends, and shows the bill and\nwhat it bought: *sixty links read, two cents*. That is the custody rule of § 3a unchanged. A\nstanding donation, where a key waits on our server for work, needs a store of other people's\nsecrets and is left for later; the provider's cap bounds what a leak could cost and does not\nremove the store.\n\n**Nobody chooses the order.** A reading changes a link's weight, so a donor who could pick the\nlinks, or wait until a favoured debate came up in a queue anyone can watch, would be buying\nscrutiny for one side. The batch is drawn at random from what is owed, and where it reads the\nlinks of a debate it reads both sides in the same batch. Volunteer computing has the same rule:\nthe project hands out the jobs. Where the standing-property design (§ 3d) gets built, the order is\nthat queue's own, and a donated run pays for draining it without any say in what comes out.\n\n**Only a pass that has earned its version is worth a donor's money.** A pass whose instructions\nchange next week throws away what was paid for this week. Of the three he named, the splitter at\nits second version is nearest, the relevance judge has been read on twelve links, and the sameness\nkeeper's *overlaps* is under redefinition. The order is: settle the pass, measure which model reads it,\nthen open it to donated runs.\n\n**Less near than that, as of 2026-10-05.** The splitter's second version has no rule for an *or*,\nand three of five models cut one into two asserted parts (ledger Y7), so a third version is owed\nbefore any donor pays for splits. *Measure which model reads it* has a proposed form: four steps,\nof which three need no person and run in minutes on any new model\n(`pass-quality-and-the-choice-of-model.md` § 5e).\n\n**Owed work can wait, and waiting is cheaper.** The router lists most of these models at half\nprice for requests that may be answered later. A donated run of standing work has no reader\nwaiting on it. Untried.\n\n**Drafts stay out of other people's runs.** Linking reads other people's claims. A donated or submitted run pairs a claim\nonly with published claims, never with another person's draft, and a compartment's material moves\nonly on the compartment's key. The linker's candidate search does not look at maturity today,\nwhich is a condition on building § 4's drafts-first.\n\n**The payer can see the prompts.** A provider account can log what was sent on its key. For the\ncommons that is in keeping with publishing every instrument. It means a prompt is no place for a\nsecret.\n\n**The keeper's own account is the first to link.** The pipeline's model call is tied to one\nprovider's API and to a key read once when the process starts (`extraction/client.py`). A linked\naccount needs that call to go through a router with a key supplied per run. The keeper already\nholds a prepaid router account with credit, capped by the month, and the same change lets it pay\nfor his own extractions and for the owed passes, with the account that has been blocked since\nAugust left out of it. At the prices measured above, reading every live link once costs about 27 dollars\non Claude Sonnet and between one and one and a half dollars on the two cheapest models that filled\nthe form. So the\nfirst build is small and private: a router engine behind a switch, off by default, used by the\nkeeper alone, which is also how each pass gets measured on the models a contributor would use.\nThat engine exists as of the same evening (§ 3g).\n\n### 3g. The router engine, as built\n\nRuled and built on 2026-10-04 (founder: *\"Build it now, and clear the 47 marks.\"*, with a limit\nfor the evening: *\"don't spend more than $2 more today pls\"*; ledger X9). **State: built and\nverified on the keeper's machine with real calls; switched on nowhere, production included.**\nIts code is in production since 2026-10-05.\n\n**What it is.** `deliberus/extraction/router_backend.py`. With `DELIBERUS_LLM_BACKEND=router` set,\nevery pass that goes through `llm_call` is answered by a model reached through OpenRouter and\nbilled to the key in `OPENROUTER_API_KEY`. With the switch unset, nothing changes.\n\n**What it holds to, and why each rule is there:**\n\n| Rule | Why |\n|---|---|\n| A failure raises. It does not fall through to the Gemini chain unless `DELIBERUS_ROUTER_FALLTHROUGH=1`, and the request names no second model | § 3e: which model reads a question changes the answer, so a silent change of model is a silent change of verdicts |\n| No call starts once the day's recorded spending reaches `DELIBERUS_ROUTER_DAILY_CAP_USD` (default 2.00, Claude's choice, unruled) | A ceiling the code enforces, counted from the engine's own record. The account's balance is not used, since other programs spend on the same key (§ 3a) |\n| Every call leaves a record: when, which pass, the model asked for and the one that served, the provider, cost, tokens, seconds, how it ended | The bill a payer is owed (X5), and the per-judgment record the standing-property design needs |\n| The first *out of credit* reply stops router calls for ten minutes without touching the network; the next call after that tries again | An empty account is an ordinary state here. Paying resumes the work with no step by hand |\n| In production it stays off without a second switch, `DELIBERUS_ROUTER_ALLOW_PRODUCTION=1` | Six routes there ask a model on a signed-in visitor's click and sit outside the pause. Whether visitors may spend the keeper's credit is his decision |\n| Only providers that do not keep or train on what they are sent (`DELIBERUS_ROUTER_DATA_COLLECTION`) | Claims and sources carry other people's words |\n| The model is `DELIBERUS_ROUTER_MODEL`, default Gemini 3 Flash, asked for low reasoning effort | The pipeline's own default model and its own setting on the direct path |\n\n**The six click routes**, read in the code on 2026-10-04: every one needs a sign-in and none is\nbehind the pause. Adding evidence to a claim, answering a critical question, decomposing a claim,\nasking for a split, asking for a horizon classification, and asking a question of the graph\n(`POST /query`). A seventh was found and closed the same evening: `POST /claims/generate-titles`\nwrites a short title for every claim that lacks one, in one batch, and any signed-in visitor could\nstart it. It and the batch embedding route are now the keeper's alone (`require_keeper` in\n`deliberus/api.py`).\n\n**Run for real, once** (`scripts/verify_router_engine.py`; per-pass results in\n[`whose-tokens-pay-for-mapping/engine-check-2026-10-04.json`](whose-tokens-pay-for-mapping/engine-check-2026-10-04.json)).\nOne real source of 717 words, every extraction pass in the order the site runs them, then the four\njudging passes once each, on Gemini 3 Flash. Nothing was stored.\n\n| Pass | Calls | Cents | Seconds | What came back |\n|---|---|---|---|---|\n| Scout | 1 | 0.56 | 9 | 12 argument structures |\n| Claims | 24 | 7.07 | 18 | 49 claims |\n| Implicit premises | 1 | 0.62 | 7 | 4 |\n| Links and contested concepts | 2 | 1.42 | 13 | 12 links, all with a scheme; 3 concepts |\n| Critical questions | 12 | 3.09 | 9 | 51 questions, each with its slot values |\n| Self-evaluation | 1 | 0.77 | 8 | 10 items flagged |\n| Sameness keeper, relevance judge, splitter, coverage check | 4 | 0.72 | 14 | one answer each |\n\n**All 45 calls fitted their answer form on the first attempt**, the nested forms and the\ncritical-question form with its free-keyed field included. That was the open risk named in § 7. A\nwhole extraction cost 13.5 cents and took 63 seconds, which is about 19 cents per thousand words\nof source. The default ceiling of two dollars a day is about fifteen articles of that size.\n\n**What that run does not show.**\n\n- Whether the answers are right. A pass is proven by a blind human sample\n  (`proving-a-pass-reliable.md`).\n- The nested forms on any other model. Only the two flat judging forms have been asked of Claude\n  Sonnet, Gemini Flash Lite and GPT-6 Luna (§ 3e). **Partly tried 2026-10-05**: the splitter's\n  form, its check's and the unstated-premise pass's were asked of Claude Sonnet 5, Gemini 3.5\n  Flash, Gemini 3.1 Flash Lite and GPT-6 Luna through the engine, 18 calls in all, and every reply\n  fitted its form on the first attempt. One reply fitted the form and was written in Spanish\n  about an English claim. The extraction passes' own forms are still untried off Gemini 3 Flash.\n- § 3e's agreement counts at this setting. They were measured at each provider's default reasoning\n  effort; the engine asks for low.\n- The plainer-form fallback and the out-of-credit path on a real case. No provider has refused a\n  schema yet, and an account with credit cannot produce the out-of-credit reply, so the first is\n  tested with real refusals of other kinds and the second with the reply as the router documents\n  it.\n\n**What does not go through it.** Reading a PDF, transcribing audio and embedding claims call their\nproviders directly, so a PDF upload still needs the Gemini key.\n\n**What it leaves to the standing-property design.** The founder, on the hand-run state of the\ninternal passes described in § 3d: *\"This is all being reflected on in other Deliberus CC sessions\nbut it's soon to be redesigned\"*. The engine sits beneath that design and supplies the two things\nit asks of the layer that calls models: a spending gate a draining queue stops at (the engine's\n`cap` refusal), and a record of which model served each judgment and how the call ended\n(`last_call_record()`). It builds no queue, no sweep over the graph and no version stamp on\njudgments.\n\n**One account, for now.** The key is read from the environment at each call. A donor's key (§ 3f)\nhas to be handed down explicitly when that is built. The passes fan out over thread pools, a\nthread does not inherit a value set around the call that started it, and a key supplied that way\nwould be replaced by the keeper's in every worker without any error.\n\n**Switching it on.**\n\n- *For a script or a hand-run pass on the keeper's machine*: put `DELIBERUS_LLM_BACKEND=router` in\n  front of the command. `DELIBERUS_ROUTER_MODEL` picks another model for that run.\n- *In production*: **the code is there since 2026-10-05, switched off.** He held it that morning\n  (*\"Hold off on deploying/switching on this feature for now, let's think it through\"*) and lifted\n  the hold on deploying at midday (*\"Actually, I think we can merge and deploy the held engine,\n  the paid model route. Merge everything into master and deploy.\"*). He did not say to switch it\n  on. Read in the running container that day: its own check answers no, and neither the key nor\n  either switch is set. What switching on has to settle, and three things proposed before it, are\n  in `pass-quality-and-the-choice-of-model.md` § 6. It takes the key in the deploy\n  secrets, the two switches in the deploy settings, and a record directory that outlives a deploy\n  (`DELIBERUS_ROUTER_DIR` on a mounted volume; the container's own disk is replaced on every\n  deploy, and the day's count would restart with it). With the input form still paused, only the\n  keeper's own submissions would extract, while the six click routes would spend for any\n  signed-in visitor, up to the day's ceiling.\n\n---\n\n## 4. The brake that was his wallet\n\nThe design sentence in force is *entry is judgment-free, not cost-free; the entry costs are the ones\nthat do not discriminate by position*, with its reason: the people who examine things are paid in\nattention, *\"and a flood at a free door taxes exactly them\"*\n(`session29-the-derivability-arc-and-the-conservative-design.md` § III.1). An account and a rate are\nsuch costs. A quality bar is not.\n\nThe flood analysis ranks machine minting first among the ways this graph could drown, and lists what\nstands against it: ingestion by debate cluster, propose-only tiers, the draft tier, and **spend\ngates** (`drowning-in-claims.md` § 5). A spend gate is the keeper's own money. His idea removes it,\nwhich is its purpose, so volume loses a limit nobody chose as a limit. Three replacements, each\nalready a ruled principle or a filed proposal:\n\n- **A rate per person**, above the per-minute limits that exist.\n- **A balance count per debate**: how many sources each side has. Sources enter by cluster for a\n  reason. A premise that is absent draws no attacks, so uneven intake becomes uneven strength, and\n  inside the graph that looks the same as a reasoned lean. People who pay will map what they care\n  about, which is usually one side. A count makes that visible, and a visible gap is an invitation:\n  *the other side is not mapped yet*.\n- **Drafts first.** *Capture immediately, publish deliberately* is already the principle. Claims\n  already carry a maturity stage, and public reading already holds back drafts. A map made on a\n  person's own key starts as theirs alone and is published by one deliberate act, at which point the\n  rules that do not judge merit run: named private persons, how much of a text is quoted, which\n  debate it joins.\n\n**Running again until it flatters.** With their own key a person can run a source repeatedly. Each\nrun costs them and each is recorded, so the source page can say which run this is, and on which\nmodel: five models cut one sentence four ways on 2026-10-05, so a change of model is a second\nway to get a different map. For a person's\nown text that is no abuse: restating one's own position is theirs to do. For another's text it is\nthe reason the map is shown as a rendering (§ 3b).\n\n**The strength layer is not at risk from volume as such.** Under the ruling in force a claim nobody\nhas examined moves nothing, however it is linked.\n\n---\n\n## 5. Who would pay, and for what\n\nThe incentives analysis lists who gains and who pays for each kind of participant. It has a row for\nthe person who splits claims (*removed: machine work now*) and no row for whoever pays for the\nmachine. That has been the keeper.\n\n**Paying to have something mapped pays for itself exactly where contributing does**: one's own view\nwhen it is being misrepresented, a case that must persuade people who do not trust you, a dispute\nwith a counterparty, reasoning that is one's product, a private question. Those are five of the\neight conditions under which legibility pays (`incentives-analysis.md` § 2). In each, the payer's\ntext is their own or their own dispute, so the cost lands on the person who gains.\n\n**Paying to map somebody else's text for the common good is altruism**, or the opposite: mapping an\nopponent in the worst light. The first is rare and welcome. The second is why such a map is a\nrendering until its author has spoken.\n\n**A mapped premise costs something once and nothing afterwards**, so everyone else rides free on the\npayer. That is the usual shape of a public good. It is survivable here because the payer's private\nreason is enough by itself, and a thousand sources cost about three hundred dollars at paid rates\n(`incentives-analysis.md` § 6b): money was never the binding constraint. What his idea buys is\ndifferent. **Extraction stops depending on one account**, which has been blocked since August.\n\n**Who pays shapes what gets mapped.** A commons mapped by whoever holds tokens tilts toward what\npeople with AI budgets care about, in the languages they write. That is the absent-premise problem\nagain, with a new cause. So the keeper's own runs, and any grant money, are best spent on what\npayers leave out, and the donated queue of § 0 is ordered by what the graph lacks and never by the\ndonor.\n\n**One open question gets a candidate answer.** The corpus asks what an AI reader owes the graph it\nreads and has no answer (`agents-as-a-consumer-class.md` § 7). A reader that takes structure for\nnothing could give a run back: work, where a fee would end free reading. This is a thought and not\na proposal.\n\n---\n\n## 6. What the corpus already holds that this touches\n\n- **`claude-code-as-extraction-engine.md`** drew the line this idea crosses: extraction on the\n  keeper's own plan is permitted for his own use, and public extraction on it is the prohibited\n  shape. A connected key is the permitted way to reopen public extraction. The swap behind the\n  model call is the same kind of work as the Claude backend was, with the same gate: tests on real\n  response shapes, and one real source run both ways before adoption.\n- **`proving-a-pass-reliable.md`** and **`earning-the-right-to-write.md`**: a pass earns trust as a\n  version on a model, by a blind sample. So trust attaches to a pipeline version and a model, never\n  to a payer. Volunteer computing reached the same rule: it counts a clean record per machine and\n  per version of the program.\n- **`incentives-analysis.md` § 6b**, his own proposal to fill the graph first by machine. Its four\n  gates (debate clusters, register diversity while the ontology moves, the quality ceiling, source\n  provenance) bind a contributor-funded filling exactly as they bind the keeper's.\n- **The Data Freshness directive**: a material change to the pipeline means every source is mapped\n  again. Donated runs are a way to pay for that without it falling on one account.\n- **`blobs-community-sandboxes-and-the-advice-process.md`**: a compartment is a separate graph and\n  database selected per process. A compartment's worker can carry the compartment's own key, so a\n  community's material is read by the provider that community chose, at that community's cost.\n- **`drowning-in-claims.md`** and the conservative design, in § 4 above.\n\n---\n\n## 7. What would show each proposal wrong\n\n- **The connected key (X2)** is wrong if people who would use the form will not connect a key at\n  all. The first test is whether one friend does, unprompted, when the form says *this runs on your\n  own key and costs about thirty cents*.\n- **The explicit brake (X3)** is unnecessary if volume stays small for other reasons. It is cheap\n  enough to build anyway, and the balance count is wanted regardless.\n- **Drafts first (X4)** is wrong if a private first step stops people from publishing at all. The\n  two-person rehearsal is where that would show.\n- **The assistant door (X6)** fails if maps made by people's own assistants do not survive the\n  mechanical checks, or survive them and still read wrong to their authors. Ten texts by willing\n  authors would say.\n- **A model named per pass (X10)** is unnecessary if a blind human sample shows the cheap models'\n  answers on degree to be as right as Claude's, in which case the disagreement of § 3e is noise in\n  the scale and the scale is what needs changing. *(2026-10-05: the scale is what needs changing\n  either way. No two models agreed on it, and for the passes that write, a change of model changed\n  the output outright.)*\n- **The router engine first (X9)** would have been wrong if the pipeline's larger passes did not\n  fill their answer forms through a router. They did, 45 calls of 45 on one real source, on one\n  model (§ 3g). What remains untried is the same forms on a second model.\n- **The claim that only running needs stricter control (X1)** is wrong if a connected key changes\n  what people submit so much that the pipeline's known behaviour no longer describes its output:\n  far longer texts, other languages, material written to steer a reader that is a model. The last\n  has a filed first defence, the injection guard, which only flags.\n\n---\n\n## 8. Proposals, in the order they would be built\n\n1. **X1, the frame**: paying, choosing and running are separate, and only running on another's\n   software needs stricter quality control than the pipeline already needs.\n2. **X2, the connected key**: a signed-in person links a prepaid key; their submission runs through\n   our pipeline on their account, on a short list of measured models; the key is held only for the\n   run; the cost is shown per source.\n3. **X3, the brake said out loud**: a rate per person and a balance count per debate, before any\n   route removes the cost.\n4. **X4, drafts first** for a map made on a person's own key, published by a deliberate act.\n5. **X5, record what every run costs**, on every backend.\n6. **X6, the assistant door**, later: a published plugin, extraction of one named text only, into\n   the owner's draft, checked mechanically (word for word, typography aside; § 3b) and then by\n   its author.\n7. **X7, the donated run**, later: a batch of owed work on a donor's account, in an order nobody\n   chooses; it carries the standing passes, mapping everything again after a pipeline change, and\n   linking (§ 3f).\n8. **X8, a compartment brings its own key**, and linking always runs on the commons' pipeline,\n   whoever pays (§ 3c).\n9. **X9, the router engine first, for the keeper's own account** (§ 3f). **Ruled and built\n   2026-10-04** (§ 3g); switching it on in production is a further decision.\n10. **X10, each pass names its model**, and an account is held to it (§ 3e). Sharpened\n    2026-10-05 as ledger Y2 and Y5: a pass names the test a model must clear, and the splitter, first,\n    writes only on a model that has cleared it.\n\nBy dependency X9 came first: it is what X2 and X7 run on, and it is how X10's list gets filled.\n\nTwo acts are his alone and are filed in `TODO.md`: OpenAI's interest form for plan usage on a hosted\nsite, and whether any part of the pipeline is published as an open-source tool a person runs on\ntheir own machine, which is the one case where a ChatGPT plan can already pay.\n\n## 9. Set aside, and why\n\n- **A tool server borrowing the visitor's model**: deprecated by the protocol's maintainers in July\n  2026 and never supported by Claude.\n- **Routing a person's Claude plan through our server**: prohibited in Anthropic's published rules.\n- **Free-tier keys**: twenty calls a day cannot carry one extraction.\n- **A model in the visitor's browser**: too small to extract with.\n- **Volunteer computing in full**, where strangers' machines run jobs the commons chose: its\n  verification needs duplicate runs compared by a judgement that is itself unproven. A donated key\n  gives the same money with none of the doubt.\n- **Money donations**: they would work and they change nothing about the dependence on one account.\n  With a connected key no money passes through the project at all.\n\n## Sources\n\nRead 2026-10-04:\n[OpenRouter, OAuth PKCE](https://openrouter.ai/docs/use-cases/oauth-pkce) ·\n[Claude Code, Legal and compliance](https://code.claude.com/docs/en/legal-and-compliance) ·\n[Claude, custom connectors using remote MCP](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp) ·\n[Claude, building connectors](https://claude.com/docs/connectors/building) ·\n[OpenAI, Sign in with ChatGPT: plan usage for open-source apps](https://developers.openai.com/siwc/token-sharing-open-source) ·\n[OpenAI, Sign in with ChatGPT on your website](https://developers.openai.com/siwc/website) ·\n[OpenAI, MCP and connectors](https://developers.openai.com/api/docs/mcp/) ·\n[Model Context Protocol, Sampling (2026-07-28)](https://modelcontextprotocol.io/specification/2026-07-28/client/sampling) ·\n[SEP-2577: Deprecate Roots, Sampling, and Logging](https://modelcontextprotocol.io/seps/2577-deprecate-roots-sampling-and-logging) ·\n[Chrome, the Prompt API](https://developer.chrome.com/docs/ai/prompt-api) ·\n[OpenRouter, credit and rate limits](https://openrouter.ai/docs/api-reference/limits) ·\n[OpenRouter, provider routing](https://openrouter.ai/docs/features/provider-routing) ·\n[Anderson, *BOINC: A Platform for Volunteer Computing*](https://arxiv.org/abs/1903.01699).\nThe launch date of the ChatGPT plan feature is from press reports of 29 September 2026; the terms\nquoted are from OpenAI's own pages.\n\n## Cross-references\n\n[claude-code-as-extraction-engine.md](claude-code-as-extraction-engine.md) ·\n[proving-a-pass-reliable.md](proving-a-pass-reliable.md) ·\n[earning-the-right-to-write.md](earning-the-right-to-write.md) ·\n[incentives-analysis.md](incentives-analysis.md) ·\n[agents-as-a-consumer-class.md](agents-as-a-consumer-class.md) ·\n[drowning-in-claims.md](drowning-in-claims.md) ·\n[lowering-the-cost.md](lowering-the-cost.md) ·\n[session29-the-derivability-arc-and-the-conservative-design.md](session29-the-derivability-arc-and-the-conservative-design.md) ·\n[blobs-community-sandboxes-and-the-advice-process.md](blobs-community-sandboxes-and-the-advice-process.md) ·\n[shared-sensemaking-what-deliberus-holds-and-owes.md](shared-sensemaking-what-deliberus-holds-and-owes.md) (the consent act) ·\n[jev-and-the-judgement-layer.md](jev-and-the-judgement-layer.md) (a cheap screen for clear cases) ·\n[microtasks-in-broad-daylight.md](microtasks-in-broad-daylight.md) (the sameness keeper's *overlaps*, ledger T5) ·\n[auto-connect-upgrade.md](auto-connect-upgrade.md) (the gate read after the menu) ·\n[relevance-and-the-two-factors.md](relevance-and-the-two-factors.md) (what a link's relevance does) ·\n[machine-work-as-a-standing-property.md](machine-work-as-a-standing-property.md) (what is owed and in what order; the engine is its spending gate) ·\n[pass-quality-and-the-choice-of-model.md](pass-quality-and-the-choice-of-model.md) (how good a pass must be, which model that implies, and the hold on the engine, since lifted as to deploying)\n"}