Changes
Corrections to earlier claims, newest first, and every mechanical amendment from the change ledger. RSS: /changes.xml.
A derived store of the dossier is now built on every change, and it is never committed
2026-10-27 · decided · measured
What changed
## What we believed
That a generated index of the dossier would fork from the records, so none should exist. Every count a reader
needed was emitted by `scripts/report/render.py` into the document that needed it.
## What we found
The rule protected the records from a second committed copy, and it held. It did not protect the reader. With
4,136 records and 51,238 lines of documents, a cross-topic question cost an agent 3 to 6 tool calls and 40 to 90 KB
of reading and still came back 40 to 65% complete. 1,125 records were named in no document, 11.8% of record text
reappeared in any document, and 139 hand-written table rows carried a verdict different from their record. No
document can be a complete view of that many records; a query can. The new rule keeps the old one's intent. Nothing is written back into `dossier/` by the build. Freshness is computed from `scripts/dossier/staleness.py`, not
stored.
The Windows floor survived a sixteen-lane sweep, and three claims did not
2026-10-26 · corrected · documented
What changed
**What was claimed.** The correction earlier on 2026-10-26 ranked six vendors. It
put Layer7 first at EUR 9.06 a month or EUR 86.97 a year, Rabisu second at
USD 10.99 a month or USD 8.79 annual with "a vendor FAQ that claims a genuine
licence", then NetVolo, HOSTKEY, Linveo and netcup. The segments were the offer archives,
US budget hosts, Russia and the CIS, Europe, the Windows specialists, the RDP
resellers, Turkey and MENA, Asia-Pacific, rented dedicated servers, the
hyperscalers, hosted desktops, WHMCS and wholesale resellers, the price
aggregators, the install and policy checks, the licence channel, and a cart audit. The Windows-specialist merge alone ranks
58 rows that clear 16 GiB, 4 vCPU and 50 GB. The first two passes had covered 11
vendors and then 6.
**What held.** The floor did not move. Layer7 is still the cheapest machine at
EUR 9.06 a month, which is USD 10.14, for 4 cores, 16 GiB and 80 GB with a
Windows Server 2019 or 2022 evaluation image on the OS list. The rendered
configurator closes at 4.90 + 1.92 + 2.24 = 9.06. The annual figure is 86.97, from
47.04 + 18.43 + 21.50, and it is arithmetic on three printed annual components
rather than a rendered total, so it stays `inferred`. No page prints a VAT line,
so whether 9.06 is net or gross is still unstated. The first payment on the annual
term is USD 97.48 at 1.1209 USD/EUR, the rate read on 2026-10-26; at the table's
1.1193 it is USD 97.34.
**What changed.** Three claims moved and one number was added. 1. **Rabisu's licence is unresolved.** The configurator prices Windows Server
2012R2, 2019 and 2022 at no surcharge, and the monthly cycle is the default. But no licence sentence appears on the configurator, on the home page or in the
knowledgebase: "licen", "Licen", "genuine" and "license" all return zero matches
on 127,944, 133,582 and 94,572 bytes. The quote the earlier entry relied on did
not reproduce. A zero surcharge is evidence of a price, not of a licence, so the
row is now the cheapest with a Windows image and no claim about the licence. 2. **HostBrr is out of the ranking.** One merge ranked its Value 16GB third at
USD 11.00 for 4 cores, 16 GiB and 160 GB on the strength of page prose and a
logo tile. The order page is a registration wall that reaches a different
product group, prints a zero subtotal, and offers no OS selector before payment. The page states no IPv4 either. 3. **VDSina is priced per day, not per month.** USD 4.08 is a daily rate, said
three ways on the page and in its own plan JSON. At 30 days it is about
USD 122.40 a month, so the row leaves any monthly ranking. 4. **The licence has a number.** Windows Server Standard is USD 509.99 one-off for
16 core licences, which is USD 14.17 a month over 36 months, against Microsoft's
USD 1,176 suggested MSRP for the 2025 edition. Datacenter is USD 2,499.99, or
USD 69.44 a month. Sixteen cores is a per-server minimum, so a 4 vCPU machine
pays the same licence as a 16 core one.
**What else the sweep settled.** Three hosts cannot install Windows at all, on the
vendor's own words: DigitalOcean, Linode/Akamai and Hostinger. OVHcloud VPS runs
Windows only if it was selected at order time. Seven rows joined the ranking and
netcup left it: Virtarix at USD 27.40, where the licence is printed as a USD 16.00
OS template inside the price and the Linux twin at USD 11.40 makes the decomposition
exact; windowsvps.host at USD 36.00 with a Datacenter licence claimed included; ServerPacket at USD 32.19, with the vendor's own pages 2.3 times apart for the same
shape; Kimsufi KS-3 at USD 64.00 all-in, which prints the licence as its own
USD 34.00 line on a USD 30.00 box; By-Hoster at USD 19.04, which states plainly that
it neither supplies nor resells a licence; Saganetwork at USD 8.23 ex VAT and
USD 9.88 paid, the cheapest row a buyer can start monthly, with its Windows path
unverified because the cart has no OS field; and InterServer at USD 40.00, which is
no longer the floor and is now one row among these.
**What is true now.** The cheapest machine that boots Windows at 16 GiB, 4 vCPU and
50 GB is Layer7 at EUR 9.06 a month (USD 10.14) or EUR 86.97 a year (USD 8.11 a
month). The cheapest startable monthly is Saganetwork at USD 8.23 ex VAT. The
cheapest with a Windows image at no surcharge is Rabisu at USD 10.99 monthly or
USD 8.79 annual, with the licence unresolved. The cheapest with the licence printed
is Virtarix at USD 27.40. No machine was booted and no order was placed.
**Where the correction lives.** `docs/compute/paid/windows-vps.md` owns the
ranking. A Rabisu renewal that charges for the licence would remove the
leading licence row and leave Layer7 as the answer, but it would not move the
floor. A ServerPacket order screen that prices the shape at USD 167.88 a year would
put it fifth at about USD 13.99. A Contabo Windows add-on price would put a 24 GiB
machine at the EUR 14.00 machine rate into the table, and no row up to Virtarix
offers more than 16 GiB.
**What a future session should do differently.** Two lessons. Re-read the sentence on the vendor's own page before it becomes a
ranking input. And a JSON-LD block is not a price: HOSTKEY's ruble card carries
`"priceCurrency":"EUR"` beside a RUB 3,390 figure, which is how a ruble machine can
be read as a euro one, and the EUR 14.00 the corpus records for it sits on a
storefront that answers 403.
The Windows VPS floor was priced as a licence, not as a machine
2026-10-26 · · · records: compute/cloudzy-windows
What changed
**What was claimed.** `docs/compute/paid/windows-vps.md`, written earlier on
2026-10-26, ranked the cheapest usable Windows machine at 16 GiB, 4 vCPU and
50 GB at **InterServer's USD 40.00 a month**, with Contabo at USD 47.01 as the
cheapest row whose licence is printed and Time4VPS at USD 52.88 at renewal. It
also excluded Cloudzy at USD 49.98 and netcup at EUR 26.92 because their Windows
licence is a trial or the buyer's own. The question asks for a machine
that runs Windows at 16 GiB, 4 vCPU and 50 GB. It does not ask who supplies the
licence. The live pages read on 2026-10-26 show that the machine and the licence
are separate purchases at most hosts:
> Aydin VPS x16 ... 6 Core CPU ... 16 GB Ram ... 120 GB SSD ... Windows / Linux
> ... Monthly $10.99/mo ... Annually $8.79/mo Save 20%
>
> `rabisu.com/panel/store/vps/aydin-vps-x16`, read 2026-10-26
> Base Price: EUR 4.90 ... CPU Cores: 2 ... RAM: 8 GB ... Total: EUR 4.90
> ... Windows 2019 Std EN Evaluation ... Windows 2022 Std EN Evaluation
>
> `account.layer7.net/shop/amd-epyc-cloud-server-vps-germany-frankfurt-main`,
> read 2026-10-26
The Layer7 configurator prints EUR 1.92 for 4 cores and EUR 2.24 for 16 GB, so
the same machine is EUR 9.06 a month with a Windows image on the OS list. Rabisu
prints USD 8.79 a month on the annual term and USD 10.99 on the monthly term. Both are below USD 40.00 by a factor of four or more.
**What is true now.** The cheapest verified machine is Layer7 at EUR 9.06 a
month, which is USD 10.14, or EUR 86.97 a year, which is USD 8.11 a month, for
4 cores, 16 GiB and 80 GB, with a Windows Server 2022 evaluation image. Rabisu is
the cheapest row with a licence claim, at USD 10.99 a month or USD 8.79 on the
annual term, for 6 cores, 16 GiB and 120 GB. NetVolo is USD 13.98 on a three-year
prepayment, HOSTKEY is USD 15.67 plus an unpublished licence, Linveo is
USD 16.00, and netcup is USD 25.32 net. The USD 7 Windows VPS that prompted the correction is real, and it is a smaller
machine. Hostmayo sells 1 GiB at USD 7.00, SteadyVPS sells 1 vCPU and 2 GiB at
USD 7.00, and Rabisu's Aydin VPS X12 is 4 cores, 12 GiB and 90 GB at USD 7.19 on
the annual term. The X12 misses the RAM floor by 4 GiB. The X16 is the next rung
at USD 8.79, which is USD 1.60 more a month.
**Where the correction lives.** `docs/compute/paid/windows-vps.md` is rewritten:
the first table ranks machines with the licence path in a column, a second table
keeps the licence-supplied rows, and a third table prices the USD 7 entry plans
and names the minimum each one fails. Six new records carry the new rows:
`rabisu-windows`, `layer7-windows`, `netvolo-windows`, `hostkey-windows`,
`linveo-windows` and `netcup-windows`. `dossier/compute/cloudzy-windows.json` is
unchanged and stays a near miss. The first would lower the floor. The second would remove the leading
row and leave Layer7 at USD 10.14 as the answer.
Cua rents no machine
2026-10-26 · · · records: compute/cua-windows
What changed
**What was claimed.** `dossier/compute/cua-windows.json` recorded "Cua Fleet
(Windows Server)" as a Windows host with a free allowance of "up to 2 live
sessions and 20 remote hours a month". The verdict was `qualifies-with-caveat`,
and `docs/compute/paid/os-hosts.md` counted it as one of five qualifying Windows
records and as the only Windows allowance that renews with no stated end.
**What took it away.** The live pricing page, read on 2026-10-26:
> Cua Spaces turns the Macs, Linux boxes and cloud VMs your team already has
> into shared desktops. ... You bring the computers; Cua doesn't rent them.
>
> `cua.ai/pricing`, read 2026-10-26
The same page defines a remote hour as "time spent using your computers from
somewhere else. It says the opposite: the computer
is the customer's.
**What is true now.** Cua sells relay seats onto hardware the customer already
owns. The 20 free remote hours are relay hours, not machine hours. No Windows
host is rented, so the record's `qualifies-with-caveat` verdict is withdrawn and
the record is `dead`. The record's `free_tier` now states this, and its `notes` names the
misreading.
**Where the correction lives.** `dossier/compute/cua-windows.json` carries the
new verdict, the live quote and this entry in `history`. `docs/compute/paid/os-hosts.md` now counts four qualifying Windows records
instead of five and marks the Cua row `dead`. `docs/compute/paid/windows-vps.md`
states the same correction in its remote-desktop section.
⚠ **What would reopen it.** A Cua product page that sells a Windows Server
machine with a licence and a persistent disk. The current page states that Cua
does not rent machines, so a reopen needs a new product, not a new reading.
The IPv6 road is deterministic; the IPv4 pool is not
2026-10-24 · ·
What changed
**What was claimed.** That Cloudflare's egress pool spans three ASN numbers and a
draw lands in one at random, so a rung-4 block is intermittent rather than total. That was the corrected form of an earlier and worse claim that the transport
selected the ASN.
**What sharpens it.** A 24-draw run on 2026-10-24 returned **9 distinct IPv4
addresses, all AS13335**:
```
104.28.153.126 104.28.163.81 104.28.166.120 104.28.166.126 172.69.58.194
172.70.127.93 172.70.130.177 172.70.179.42 172.71.254.78 all AS13335
```
In a 30-draw set the AS14789 address `172.69.76.180` appeared once. So the IPv4
pool is roughly **97% AS13335**, and "three ASNs at random" overstated the spread
by implying a third of draws would land elsewhere.
**What is genuinely deterministic.** The IPv6 `fetch()` path returns
`2a06:98c0:3600::103` on every request, and RIPE puts that in
`2a06:98c0:3600::/48` → **AS132892 CLOUDFLARE**. Five consecutive reads returned
the same address. That is a fixed address in a different ASN number, reachable by
asking for a name with an AAAA record.
⭐ **So the honest form of the finding is this:** on IPv4 you cannot choose the ASN,
and you will almost always get AS13335. On IPv6 you get a different ASN every time,
by construction. If an upstream counts ASN numbers, the IPv6 road answers and the
IPv4 road does not. If it counts the organisation, neither helps, because all three
holders read "Cloudflare, Inc."
**Where the correction lives.** `docs/ip-proxy/README.md` §1 and
`docs/ip-proxy/techniques.md` §1. Neither has been observed.
Three claims downgraded on review
2026-10-24 · · · records: egress/anchoredip, ip-proxy/anchoredip-registration-corrected, ip-proxy/clouds-as-exit-sources, ip-proxy/ippeak-dual-ntt
What changed
Each is recorded here because the corrected number is in `docs/` and
the correction is here.
## 1. One class was measured with RDAP
(Oracle, `129.146.0.1`); four were inferred. The weakest rung decides, so the record
is `documented`. The ASN numbers and holders are measured and reproduce: AS31898 Oracle, AS396982
Google, AS16509 Amazon, AS8075 Microsoft, AS24940 Hetzner.
## 2. `ippeak-dual-ntt` was `fails-quota`, is now `fails-egress`
The record's `binding_note` said: *"Traffic is unlimited, so no byte quota fails
first and volume-quota is the wrong name for what binds."* A verdict of
`fails-quota` therefore named a constraint the record says does not exist. What
fails is the registration-class claim, so the verdict is `fails-egress`.
## 3. The free-list decay was reported as a ratio, not a survival count
`docs/ip-proxy/free/free-lists.md` and the topic README said 60% of a pre-verified
list survives 22 minutes, and extrapolated a 10,000-line list to 2,000 and then
1,200 addresses. Three things were wrong:
- **21 over 35 is a ratio of two yields, not a survival rate.** The record already
said so: intersected on host and port, 10 of the 35 that worked at the first
check worked at the second, which is 29%.
- **The base was wrong.** 35% of 10,000 is 3,500, not 2,000.
- **The extrapolation had no measurement behind it.** The sample was 100 lines from
1,751. Both documents now report the intersection and refuse to extrapolate.
## 4. The AnchoredIP correction was written in a `notes` string and not applied
`dossier/ip-proxy/anchoredip-registration-corrected.json` said the egress record
*"must stop implying ISP registration"* and named `dossier/egress/anchoredip.json`
as the file to fix. That file was not changed, and no history entry existed. It is applied now: `dossier/egress/anchoredip.json` carries the measured class as a
fifth evidence row (`ASSIGNED PA` under an individual in Kazakhstan, holder
`TROPYNIN-AS Tropynin Oleg`), and its `transit_note` says the registration class is
neither ISP nor organisation. The old sentence was true and incomplete rather than
false; the quotes in
`docs/ip-proxy/free/prefix-leases.md` were read from the full text
and are verbatim. A reader who cannot reach the paper should treat the `/48`
argument as `documented` from a secondary description of it.
The transport does not select the ASN
2026-10-24 · ·
What changed
**What was claimed.** That Cloudflare's transports each exit from a different ASN,
so switching transport was a free lever against a gate counting ASNs. The evidence
was one address per transport:
| transport | one draw | ASN |
| --- | --- | --- |
| `fetch()` | `172.69.76.180` | AS14789 |
| raw `connect()` | `104.28.155.104` | AS13335 |
| IPv6 `fetch()` | `2a06:98c0:3600::103` | AS132892 |
**What took it away.** A paired 6-draw test on 2026-10-24, from one vantage point,
alternating the two transports:
```text
fetch() 172.71.254.79 172.70.127.94 104.28.166.120 all AS13335
sockets 104.28.163.81 104.28.153.140 104.28.162.236 all AS13335
```
`fetch()` returned `104.28.166.120`, which `cf-sockets` also returned in the same
run. The two transports draw from **one pool**. RIPE resolves every one of the
twelve addresses above to AS13335. In a 30-draw set the AS14789 address appeared
once, from plain `fetch()`. So the ASN is a property of the `/24` the pool happened to hand out, not of the
transport. That makes a rung-4 block more likely to be intermittent than total. It is not a
lever, and the rung-4 experiment is still unrun.
**Where the correction lives.** `docs/ip-proxy/README.md` §1 and
`docs/ip-proxy/techniques.md` §1 both carry the refutation and the reproduce
command. The 12 paired draws here
show the opposite, with overlapping addresses.
The cart audit: four recommendations were wrong, and nine pages charged a different price
2026-10-24 · corrected · documented
What changed
He gave one example — Daytona written as a nothing burger when USD 200 of its credit runs a
full VM for a month with no card — and asked for ten free tiers, ten beefy paid and ten
micro paid, each with a direct cart link. The method that found the errors was not a re-read of the pages. It was **following the
vendor's own "Order now" href and reading what the cart charged**. That single step
contradicted four published recommendations.
## The four corrections
**1. VolpaByte Ryzen KVM 8 GB is dead, and it was the top recommendation.**
Its marketing page still renders "Ryzen KVM 8 GB EUR 4,99 pro Monat", 6 AMD Ryzen vCores and
8 GB DDR4-3200 ECC. Its own "Jetzt bestellen" href is
`dashboard/index.php?rp=/store/vps/ryzen-kvm-8-gb`, which redirects to `/store` and renders:
> Could not load any product groups. The plan cannot be bought at the advertised price. `verdict` moved from
`qualifies-with-caveat` to **`dead`**. This was independently observed by lane N07 and
re-read by the parent session.
**2. The order page says **2 vCore** and **USD 5.50 a month
or USD 55.00 a year**. USD 4.58 is the annual rate divided by twelve, so the row is still
under the line on annual prepay, but the monthly list is over it and the shape was wrong by
a factor of four. Separately, HostBrr's marketing "Deploy Server" button points at
`pricing_id=1166` and renders `Subtotal: $0.00 USD ... Total Due Today: $0.00 USD`; the
working link is the group page.
**3. DediRock is both a fossil and a live offer, at two different URLs.**
The Black Friday page advertises a USD 9.88/year Saver. Its Order href
`…/store/promo-vp/promo-vps-saver-ny-bf` lands on a category listing whose cheapest line is
**USD 5.99 per month** for a different shape — no error, no sold-out marker. That is a
fossil, and it is what the corpus had recorded. But the standing promo SKU at `…/store/promo-vp/promo-vps-special-ny` is a different
product and it **does** sell. The operator cleared the Cloudflare challenge and the rendered
order form was read directly: **2 GiB / 1 vCPU / 30 GB / 2 TB / 1 IPv4, "Annually: $9.88
USD", "$9.88 USD Total Due Today"**. So the earlier verdict was right about the URL it checked and wrong as a statement about the
host. The corpus had no record for the SKU that works.
**4. The USD 50 card hold does not exist anywhere in this corpus.**
The largest hold found remains Koyeb at USD 29. The typical is USD 1. Oracle's is USD 1.00. it is not what these
records show, and the page now says so with the numbers.
## What the cart audit found across 42 rows
Lane N07 followed the order link on every qualifying row at or under USD 5 and read the
destination:
| verdict | n | meaning |
| --- | --- | --- |
| cart prices the plan | 16 | link is good |
| cart prices something else, is out of stock, or is walled | 14 | link is bad |
| no price readable by GET | 12 | JS shell, `action=add`, or no SKU |
**Nine were fossils of the DediRock class** — the link resolves to a different product or to
nothing: `luo-cloud-lxc-nat` (CNY 1.50 advertised, CNY 25.00 category rendered, 16.7×),
`natkvm-nat-lxc`, `dedirock` ×2, `softshellweb-lxc-ipv6-only`, `volpabyte-ryzen-kvm-8gb`,
`62yun-promo-vds`, `firstbyte-msk-kvm-start`, `alibaba-swas-intl`. Three were **out of stock but correctly linked** — a stock fact, not a broken link:
`vds6-v6-1`, `greencloud-budget-kvm-8gb`, `cloudfanatic-standard-1gb`.
## What replaced them
**Q1 beefy:** **AlphaVPS C6G** returns as the pick, at EUR 50.90 a year for 3 vCPU / 6 GiB /
55 GB NVMe / 6 TB / 1 IPv4 + a /64. It is the only row where a real browser read the cart,
it priced exactly as advertised, and it is in stock. ⚠ **Two of seven locations only** —
Sofia and Los Angeles; London, Nuremberg, Dallas, New York and Seattle render "Out of
stock".
**Best value per gigabyte:** **HostBrr ECO 4 GB** at USD 32.50 a year (USD 2.71/mo), cart
prices it exactly.
**Q2 micro:** **DediRock Promo Special NY at USD 0.82** is now the WireGuard pick and the
only sub-dollar row with a **dedicated IPv4** and **2 GiB** — four times the next-largest
machine in the band. **TierHive at USD 0.10** stays the monitor.
**Free tiers:** the ten are reordered around the card column. **Daytona moves from sixth to
fourth** with the arithmetic the operator supplied: USD 200 is 749 hours of a 4 vCPU / 4 GiB
VM, 31.2 days, no card. Twelve rows are `unknown` on the cart because settling them needs a browser session or an
account.
- **Hostodo's Black Friday 2025 remains unverified.** A control request with a bogus plan
code returned **byte-identical** output, so its HTTP 200 proves nothing.
- **DediRock's renewal is not published.** USD 9.88 is year one; year two is unknown.
- **Datalix's cart arrived logged in as another person** (`Eingeloggt als
[address removed]`), so its `cart_works` is weaker than the other rows.
## A correction to this correction: VolpaByte is not dead
This entry first recorded VolpaByte as `dead`, on the strength of nine order links that each
rendered **"Could not load any product groups."** That verdict was wrong, and the way it was
wrong matters more than the verdict did.
**A stateless fetch makes a healthy WHMCS store look dead.** Lane N04 found it: carry a
cookie jar from `volpabyte.net/` first, and the identical URL redirects to
`cart.php?a=confproduct&i=0` and prints all four billing cycles. The parent session then ran
the control both ways:
| request | final URL | body |
| --- | --- | --- |
| no cookie jar (what the broker does) | `…/dashboard/index.php?rp=/store` | **"Could not load any product groups"**, zero prices |
| jar warmed from the homepage | `…/dashboard/cart.php?a=confproduct&i=0` | **EUR 4,99 / 14,22 / 26,95 / 50,90**, full configurator |
Same URL, same minute, opposite answers. The vendor never changed anything. The cart prints four cycles and says nothing about year
two; EUR 4.99 monthly is the only evidence for month 13, and that is an inference.
### The guard this produced
A note would not have stopped this, because three independent readers hit it in one session. `scripts/probe/cartcheck.py` now does the read with a jar and exits `0` only when the cart
priced something. It was tested both ways before being documented: `priced` and exit 0 on
VolpaByte, `error` and exit 1 on the DediRock fossil, `no-price` and exit 1 on a page with no
cart. Withdrawn as unverified. The honest statement is USD 3.75 now and month 13
unknown.
- **TierHive's "USD 0.10 with a cart"** — no cart exists. Every Deploy button, Micro
included, points at `control.tierhive.com/register`, which redirects to `/login`. Each one changed a
record.
### 1. Cheap-Host's plan table is read, and its top rung is the biggest NAT machine found
`cheap-host.onl/nat-vps/?lang=en` renders **four** rungs, not the one the corpus carried:
| rung | RUB/mo | USD/mo | vCPU | RAM | NVMe |
| --- | --- | --- | --- | --- | --- |
| NAT Start | 59 | 0.73 | 1 | 1 GB | 10 GB |
| NAT Base | 99 | 1.22 | 1 | 2 GB | 15 GB |
| NAT Pro | 199 | **2.45** | 2 | **4 GB** | 25 GB |
| NAT Plus | 349 | 4.29 | 4 | **8 GB** | 50 GB |
All four: unlimited traffic, 100 Mbit/s, Germany, shared IPv4 with **no IPv6**,
**999 TCP/UDP ports + SSH**, **port 25 blocked**. Both are now
settled from the plan card. **NAT Pro at USD 2.45 for 4 GB and 2 vCPU is more machine than
any other NAT row in the corpus under USD 3**, and 999 forwarded ports is the widest block
found anywhere. Two things still keep it out of the ranked ten: every "Choose plan" button routes to the
account panel, so **no price renders before login** (`cart_works: unknown`), and its rails
are SBP, SberPay, YooMoney, MIR and crypto — **no card-network rail**.
### 2. VolpaByte charges 19% VAT, and the corpus said it did not
The order summary reads `Monthly: €4,19 EUR`, `VAT @ 19.00%: €0,80 EUR`, `€4,99 EUR Total Due
Today`. So **EUR 4.99 is gross and EUR 4.19 is net**, and there is no country selector to make
the VAT fall away for a non-EU buyer. This record had said "no VAT line and no country selector". The second half was right and the
first was wrong. RackNerd's Black Friday 2025 is confirmed out of stock at the product URL itself
`my.racknerd.com/index.php?rp=store/blackfriday2025/1-gb-kvm-vps-black-friday-2025` renders:
> Oops, there's a problem… **Out of Stock** — The plan you selected is out of stock and not
> available for ordering at this time. Previously this rested on a `0 Available` counter elsewhere in the store. It now rests on the
product page refusing the plan, which is the stronger form of the same finding.
### 4. Hostodo stays unverified, and now for a stated reason
The deploy console loads but prints no price, and a control request with a bogus plan code
returned byte-identical output. Reading the price needs a signed-in session, and this corpus
creates no accounts. however, your card will not be charged. So the gate is: **no card for most new customers**, and a **USD 1 hold for 3–5 days** when one
is asked for. The machine is a `t4g.small` — 2 vCPU, 2 GiB of Graviton — free for **750 hours
a month**, plus USD 100 of credits on signup and up to USD 100 more.
⛔ **The end is hard:** *"Your free account plan ends after six months or when your credits are
fully used — whichever occurs first. After your free account plan expires, your account closes
automatically."* That is a six-month stop, not a renewal, and AWS retains content for 90 days. AWS enters the free-tier ten at **fourth**, displacing Waifly to eleventh.
### Oracle's USD 1.00 hold is withdrawn
Oracle's signup page states that a hold exists and **publishes no amount**. The USD 1.00 figure
this corpus carried is withdrawn; the honest value is a dash. The price is real — USD 5.99 a year for 256 MB with TCP
and UDP stated — and the entity is not. This is the clearest case in the corpus of a finding that is technically true and commercially
worthless, and it is the second such case: a recommended provider's UK company was dissolved
in 2023 while it kept selling annual plans. Both are now recorded with the dissolution date.
### Two more clean micro rows
**Privex VNano SE at USD 0.99** — 256 MB, 5 GB, a /64 with DNS64/NAT64, **crypto only, no
card**, and a real AS210083 holder. **Mikrus at USD 0.74** — 384 MB, 5 GB, **UDP stated**,
IPv6-mostly, VAT PL6821639338. Mikrus's free rung is a queue and lottery, so only the paid one
is reliable.
The shortlist pass: one pick replaced, one verdict explained, and 186 identity fields that said nothing
2026-10-24 · corrected · documented · records: compute/netcup
What changed
VolpaByte states no renewal term at all, and month 13 is inferred from its EUR 4.99
monthly list. VolpaByte also adds 19% VAT with **no country selector**, so a non-EU buyer's total
is untested — USD 4.75 if the VAT stands, USD 3.99 if not. Both are under the line.
**HostBrr Value 8GB stays**, because its checkout itself prints the renewal: "Total When
Renewing: 1 Year @ $55.00 USD". It is the only row whose renewal is stated by the
vendor's own cart rather than derived. Both were confirmed **in stock and buyable**: AlphaVPS in Sofia and Los Angeles (sold out in four
other locations), HostBrr in Frankfurt, neither checkout asking for an ID document, a company or
a local address, neither stating a card hold. AlphaVPS's VAT answer was measured rather than
assumed: the same cart priced to a US address totals EUR 50.90 with no tax line; priced to a
German address it adds EUR 9.67 of VAT for EUR 60.57.
## Q2: both buyable, and one is cheaper on a longer term
**C-Servers NanoVPS-384 is in stock at Ashburn**, opens without an account, totals USD 2.39 at
step 2 with no setup fee and no tax line. Its order page sells 6/12/24/36-month terms and the
**36-month rung is USD 0.2497 a month** — the cheapest per-month rate of any documented,
in-stock, entity-verified row in the band.
⛔ **Its UDP statement carries a condition that matters.** The vendor's article requires a UDP
application to "preferentially send a continuous packet stream", which a WireGuard handshake
every 25 seconds is not. That is a stated requirement, not a measured failure, but it is why
**Cheap-Host NAT Start at USD 0.73** ranks above it on ports: 999 TCP/UDP ports, 1 GiB of RAM. Cheap-Host's rails are SBP, SberPay, YooMoney and MIR only, and it names no company — so for a
buyer outside Russia the pick reverts to C-Servers.
**TierHive Micro survives and gets stronger**: six registration fields, **no payment instrument
at all**, so it is the only sub-dollar machine a buyer can start with nothing. Its first payment
is USD 3, not USD 0.10. ⚠ Its own the provider says the service is in "Alpha status" and "data loss can
occur at any time without warning". ## Q3: a real no-card VM, and a verdict finally explained **Opus Host is the find**: 1 vCPU / 1 GiB / 20 GB, **KVM root with one IPv4 and one IPv6**, no
payment data of any kind, from a named German sole trader with an imprint, a phone number and a
status page. The meter is unlimited; the permitted use is not. The honest headline is
**"unlimited compute for work on the repo it belongs to."** The shape is confirmed exactly:
4 vCPU / 16 GiB / 14 GB, 20 concurrent jobs on Free, 6-hour job cap, 5-minute cron floor,
60-day schedule disablement.
**Tencent's `fails-identity` is confirmed, and its stated reason was wrong.** Ordinary purchases
need verification only for the Chinese mainland. But **every promotional campaign, including the
free trial, requires 实名认证** — the individual identity check — because the campaign rules say
so in both English and Chinese. Its phone step is also **gone** — the SMS block is commented out of the live form, which is where the corpus's `any-phone` came from |
| `gitlab-runners` | `paid-only` | **`fails-identity`**, kind `card` | GitLab's own FAQ: "credit/debit card details are required if you choose to use GitLab.com shared runners", verified by a USD 1.00 authorisation |
Also: `buildkite` was recorded as providing no machine on the Free plan; it provides 2 vCPU /
4 GB with 2,000 vCPU-minutes a month.
## The largest repair: 186 identity fields that asserted nothing
**453 compute records carried `identity_cost.detail: "as stated by the provider's signup page"`**
— a string that names no card, no hold, no phone and no document, in the one field that prices
reaching a provider at all. Four lanes repaired **186 of them from evidence already in the
record**.
| measure | before | after |
| --- | --- | --- |
| records asserting nothing | 453 | **267** |
| records stating a hold amount | 26 | **38** |
| of 215 card-gated records, share stating a hold | 12.1% | **18.0%** |
**Four `kind` values were wrong**, and each could have held up a wrong verdict:
- `akamai-edgeworkers`: `card` → **`institution`**. The evidence requires "an active Akamai
contract and login credentials for Akamai Control Center". No evidence row mentions a card.
- `blackbox-ai`: `card` → **`institution`**. The pricing page renders only an Enterprise card.
- `alibaba-cloud-model`: `any-phone` → **`card`**. The trial needs "Mobile number, payment
method, billing address" — a phone is one of three, not the binding one.
- `lium`: `card` → **`email`**. The USD 5 is granted on an email address **or** a first deposit.
⚠ **267 remain.** Ten of the 186 could not be repaired because the record states no identity
fact at all, and they now say `unverified:` with the reason rather than a vacuous sentence. The
rest need a signup-page read each.
## The defect class that keeps recurring
⭐ **Four more hiding negatives were found and corrected in `micro.md` alone**, where the
document asserted:
- "No verified full VPS exists below USD 1.42" — **12 documented records** sit between USD 0.10
and USD 0.90.
- "No record names a passport or residence document" — **26 compute records** carry
`identity_kind: national-id`.
- "`hetzner-dedicated` carries no shape and no price" — its notes price the AX41 at EUR 59.00.
- "Four things would put a row under it" — all four had already happened. That is now **seven** hiding negatives in this topic. Every one was a claim about absence written
without a search that could have found the counterexample. **A negative is a claim about a
search, and it carries the search's scope in the same sentence or it is not a finding.**
## What the document audits found
Four documents audited for the first time, 300+ claims checked:
- **`lowend-vps.md` had the market's shape backwards**: it claimed three rows under USD 2 and
said every one is IPv6-only or NAT. There are **19**, and 8 carry an IPv4. The real shared
constraint is prepay: 15 of the 19 price only a six-month or longer term.
- **`vps-monthly.md` crowned a box nobody can buy**: the Hetzner CX23 is marked "not available"
on every rung of its line. The answer is now Contabo's Cloud VPS 4 at USD 6.60.
- **`cloud-vms.md`: 14 of 35 table rows disagreed with the record they cite**, all drift since
the last rewrite. Five monthly figures elsewhere were the 10-hour column quoted as a monthly
bill.
- **`always-on-free.md`'s tier table was fiction** in five places, including GitHub Codespaces
filed DEAD when its record says `qualifies`.
- **`micro.md` applied Modal's list rate to a Sandbox** in four places; the page prints
"Sandboxes are billed at non-preemptible rates of 3x list price", so a minimum container is
USD 0.0207/h and USD 30 buys 1,446 Sandbox hours, not 4,348.
## The two niche catalogues, audited last
`forum-hosts.md` and `regional-clouds.md` were the last two documents in this topic never checked.
**133 claims checked, 25 failed.** The corrections that matter:
- **`sanfengyun` was mis-kinded.** Its record said `email` while its own offer text says a mobile
number plus a CNY 0.3 real-name certification. Now `national-id`, which is the gate the
operator cannot pass.
- **`cloudcone` prices were recorded as unpublished** when the record carries USD 28, 46 and 69
a year for its three rungs.
- **`iwinv`'s monthly cap was arithmetic that did not hold**: 30 x KRW 210 = 6,300 against a
5,600 monthly ceiling. A false finding, correctly retracted rather than kept.
- **`chataoyun` was a typo** for `chamaoyun`.
⚠ **A count C3 measured mid-pass went stale before it landed.** It reported 450 records naming a
gate without pricing it, against the pre-repair dossier. The repair merged afterwards, so the
figure is now 266. Corrected in place with the sequence stated, along with five other `1,239`
counts that the merge to 1,255 had outdated.
The Q1 winner's month 13 is unknown, the Q2 winner never promised UDP, and the USD 50 hold does not exist
2026-10-24 · corrected · documented
What changed
## Q1: the cheapest 8 GiB is a first-year price, and the worst case is 10x
GreenCloudVPS at USD 45.00 a year is still the cheapest 8 GiB machine found. **Its month-13
price is not knowable**, and the vendor's own pages say so twice:
- The store page never mentions renewal: **44 occurrences of "Annually", zero of "renew" or
"recurring" in 320,626 bytes.**
- Terms §3: *"Prices listed on our website, in special offers, or provided as quotes apply
only to new orders and may not be applied to existing orders due to inventory and stock
management"* — and it reserves the right to *"adjust prices at the start of a customer's next
billing cycle"*.
- ⛔ **The vendor prices the identical shape — 60 GB SSD, 4 cores, 8 GB, 8 TB, 10 Gbps — as
SSDKVM-4 at USD 40.00 a month on its own Budget KVM page.** The clearance card is 9.4% of
that list price. Two years at 45 then 480 averages USD 21.88 a month. So USD 3.75 is a **first-year price on clearance stock**, not a price. A daily driver's cost
is the renewal, not the first invoice.
| row | price | renewal | what it costs |
| --- | --- | --- | --- |
| **AlphaVPS C6G**, 6 GiB / 3 vCPU | USD 4.75/mo | **locked, confirmed three ways on one page**: the banner "LOCKED AT RENEWAL, FOREVER", the invoice block "The price on the order form is the price on every invoice - renewal included", FAQ 04 "What happens to the price at renewal? Nothing." | the only permanent first-party rate lock in the set |
| **HostBrr Value 8GB**, 8 GiB / 2 vCPU | USD 4.58/mo | USD 5.50/mo published, which bounds month 13; the annual is exactly ten times the monthly | 8 GiB with a written ceiling. Whether the line includes IPv4 is not stated, so it is not claimed |
| **Bulutova VPS Sunucu 8**, 8 GiB / 2 vCore | USD 4.07/mo | USD 6.79 if the 40% discount lapses, **written on the page** | **no card**: Havale/EFT bank transfer. Verified in Turkey's ETBİS registry, Mersis 0178147856000001 |
**RackNerd refutes the promo assumption.** Its specials FAQ: *"Yes. These RackNerd VPS specials
are lifetime recurring. You can renew at the same rate for as long as you decide to keep the
service."* No price-change clause in its terms. Its 4 GB sits exactly on the line at USD 5.00.
## Q2: the recommended row never promised UDP, which is the one thing WireGuard needs
Gullo's at USD 0.29 was recommended on a first-hand report of `wireguard-go` running. Five of
its pages were read today and **none states UDP forwarding**; the vendor publishes a WireGuard
how-to but no port-protocol commitment.
**C-Servers NanoVPS-384 at USD 0.40/mo** is the row that does state it: *"la plage de ports
disponibles peut être utilisée pour TCP ou UDP, et les 20 ports peuvent être utilisés pour
n'importe quel protocole"*. Its seller, **Centerfield Ltd (14864789), is Active at Companies
House**, at the same Manchester address the store footer prints, and there is a routed IPv6
/64 beside the NAT address. Against Gullo's it costs USD 0.11 more a month and buys the UDP
sentence, 384 MiB instead of 128, 2 TB instead of 125 GB, and a company.
**TierHive Micro at USD 0.10/mo** is the answer for a health monitor, which needs outbound and
stability rather than ports: the cheapest always-on machine found anywhere in the band, hourly
billing, "No credit card required", and a live UK company (Kernel Keepers LTD, 16294246).
⛔ **Nothing in the band has both a dedicated IPv4 and a verifiable seller.** DediRock at USD
0.82 comes closest — the only sub-dollar plan with a dedicated IPv4, and KVM, so the guest
loads the in-kernel module — and fails the counterparty test: its site names "Dedi Rock LLC"
at Clearwater FL, and a Florida register search for that name returns nothing.
⚠ **DediRock's USD 0.82 needs a 12-month prepay.** USD 2.99 a month is the default on the
linked page; the annual is a separate Black Friday code on an unlinked one. A row quoting
USD 0.82 without that qualifier overstates the plan by 3.6x.
## Q3: the operator's USD 50 hold does not exist in this corpus
The operator's stated reason for distrusting the corpus was that free credits "require a
credit card with ~50$ on hold". **No provider in this corpus places a USD 50 hold.** The
largest anywhere is **Koyeb's USD 29**, cancelled immediately; the typical hold is **USD 1**. The figures that look like USD 50 are something else, and this was the confusion worth killing:
| figure | what it actually is |
| --- | --- |
| Tenki USD 50 | *credit* released when a payment method is added, not a hold |
| Isorun USD 50 | an advertised *credit*, unverified |
| Oracle USD 100 | the **Pay-As-You-Go upgrade**, not signup |
| Oracle USD 1 | a forum report; Oracle publishes that a hold exists and **not** its size |
**The prepaid count was wrong in both directions.** Seven vendors refuse a prepaid card
outright and say so on a page read today: DigitalOcean, Google Cloud, Scaleway, Alibaba Cloud,
Oracle, Fly.io and IBM Cloud. **One accepts it in writing: Kamatera** ("This includes virtual,
prepaid, and electronic cards"). **One is disputed: Tencent Cloud**, whose billing FAQ refuses
prepaid while its registration doc says "Seven types of credit cards/debit cards/prepaid cards
are supported" — two first-party pages that contradict each other. Seven publish nothing. Debit fares better than prepaid: eleven of sixteen accept it, five with a condition.
**The biggest no-card machine is not Daytona.** It is **GitHub Actions on a public repo: 4
vCPU / 16 GB / 14 GB SSD, free and unlimited**, on an email alone — 96 GiB-hours of RAM a day,
more than Oracle's whole always-free ARM allocation. The reap is the caveat and it is not
money: a job is terminated at 6 hours, there is no inbound port, no disk outlives the job, and
GitHub **disables a scheduled workflow on a public repo after 60 days without activity**.
**"No always-free VM without a card" is false as written**, on four counts: EUserv VS2-free (a
free root container on an email, IPv6-only), IBM LinuxONE (2 vCPU / 4 GB, 120 days, no card),
GitHub Actions public runners, and SparkCloud (root and SSH, no card, but open only to
13-to-17-year-olds). The claim that survives is narrower and useful:
> Every always-free machine that takes no card is IPv6-only, clocked, ephemeral, or gated on
> something that is not money. No provider in this corpus sells an always-free VM with a
> routable IPv4 to an adult with an email address.
## The non-English market, and what it does and does not win
Nine sellers found by searching in Turkish, Indonesian, Russian, Vietnamese, Ukrainian and
Romanian. **None beats the incumbent on GiB per USD** — the best is Bulutova at 1.96 against
2.13. What the market wins is signup and durability: two rows need no card, one settles by
domestic QR code, and three sellers are verifiable in government registries.
⭐ **Why 2.13 GiB per USD is hard to beat, measured.** IHOR.ONLINE's Russian price list sells
RAM at the margin: **+1 GB = 100 RUB/month = USD 1.23/GiB**. To reach 2.13 GiB/USD a seller must
price RAM near USD 0.47/GiB, a third of the going marginal rate. The
sub-dollar market is Chinese and Russian; the prepaid answer was sitting in the corpus's own
Tencent record.
⚠ **A price without a renewal is half a price.** Six of the Q1 and Q2 rows published none, and
the one that was recommended as a daily driver published none while pricing the same hardware
at 10.7 times the money on its own list page.A review found 58 defects in the three answers, and the documents had hedged where a page had an answer
2026-10-24 · corrected · documented
What changed
## The review, and why it was needed
An independent reviewer checked **92 claims** across the three documents against the dossier
records they cite. **58 failed.** Three had already been fixed before the review returned; 55
were live. A reader who
stopped after the opening bought from a dissolved company at the wrong price. The correction
that was supposed to remove this residual had already been written and had missed it.
## The three claims a page settled, and the record was the thing that was wrong
| claim | what the documents said | what the page says |
| --- | --- | --- |
| CloudCone's card hold | "about USD 1, refunded within 7 days", in two documents; The hold attaches to *adding a card*, not to signup, and the plan payment is separately non-refundable |
| C-Servers NAT forwards | "UDP forwarding not stated" | **they carry UDP.** The vendor's NAT article names a "UDP-exclusive port-range you have on your VPS for NAT IPv4" and gives a netcat UDP test. No `evidence[]` row carried that quote, and the order page re-read today has no
payment-method section at all: 306 words, "Total Due Today: $3.50", nothing else. The
`payment_rails` field was an unevidenced assertion and now says so.
- **`hetzner-cloud` and `hetzner-cx23` priced the same plan differently.** 6.49 is Hetzner's own
USD conversion printed in its price-adjustment table; 6.70 is the corpus converting the
published EUR 5.99 at the recorded 1.1193. The plan-level record is `hetzner-cx23` at 6.70; `hetzner-cloud` now carries 6.70 and keeps 6.49 in evidence with the gap named, rather than
reading as a stale duplicate.
- **`c-servers` carried `out_of_pocket_usd` 2.69** — the NanoVPS-1024 three-month figure — on a
monthly ExtraVPS-6144 record. Now 4.29. `paid/README.md` also said HostBrr's 2 GiB was USD
2.24 where its record's ladder gives USD 2.15, in two places.
## The defect class that matters most for this operator
⭐ **A hiding negative.** `no-card.md` said "exactly one accepts prepaid in writing: Kamatera",
while the same page's Tencent row quoted "credit cards/debit cards/prepaid cards are
supported". This is the **third** hiding negative this topic has produced, after "no monthly
machine under USD 1" and "NATKVM is the answer". The count is now three refusers in writing
(Google, Oracle, Civo), two acceptors by name (Kamatera, Tencent), and three that publish
nothing either way (DigitalOcean, Scaleway, Alibaba). The operator's stated pain was that free tiers demand a card with about USD 50 held on it. The
corpus now answers that question per provider, and a tool reports the gap:
`scripts/dossier/card-hold.py` finds **204 compute records that require a card and only 17 that
state how much is held**. Every document that ranks registration cost can now say how much of
its ranking rests on a stated hold.
## What the fix passes found that the review missed
The review audited documents against records; these were in the records' silence, not their
contradiction:
- **GitHub Codespaces' shape and clock were invented** in `no-card.md`: "8 GB and 32 GB" and "a
30-minute idle stop and a 12-hour cap" appear in no record. The record states 2 cores, 15
GB-months of storage, and that RAM, disk and any wall-clock cap are not published.
- **Cloudfanatic's "published uptime SLA" and "five years of independent monitoring"** have no
record behind them, and sat in `under-one.md`'s opening recommendation.
- **A correlation of "about -0.47, n=14"** in `under-five.md` had no computation behind it and
the table it described has nine rows. Removed.
- **Time4VPS's "0.4 MB/s at 4k random read"** is in no record. Removed.
- **Noteable, Valohai, Quarto Pub and Observable** were presented in `no-card.md` as live free
options; their records say dead, paid-only, dead, and 0 free compute.
Two negatives refuted
2026-10-24 · corrected · documented · records: compute/luo-cloud-lxc-nat
What changed
## The two negatives, and what killed them
**"No monthly-billed machine under USD 1.00 exists."** It does. luo_cloud sells a German LXC
NAT box at **CNY 1.50 a month, USD 0.22**: one vCPU on a Ryzen 9 7900, 128 MiB, 2 GB SSD,
1 TB at a 2000 Mbit/s shared port, 20 NAT ports and one IPv6, on the store's own monthly cycle
(月繳). Two units were in stock at the time of the read. A US box at CNY 2.00 (USD 0.30) had ten
units, and a Hong Kong box at CNY 1.00 (USD 0.15) was sold out. The refutation took one search
in Chinese: `一元VPS`, `月付 便宜 VPS`, `NAT VPS 月付`.
⛔ **The worse half is that Cheap-Host at USD 0.73 was already in the same document's table**
while a paragraph three lines above said nothing monthly existed. The document contradicted
itself and neither half was checked against the other. A negative claim about a market is the
cheapest claim to write and the most expensive to get wrong.
**"NATKVM is the answer."** Its own site prints "Registered in England & Wales (Company No:
13550380)", and Companies House returns **"Dissolved on 26 December 2023"** for KHAN WEB HOST
LTD, incorporated 2021-08-05, with no successor entity named anywhere. Two public refund
refusals on annual plans sit on either side of that date, and a third thread describes outages
lasting hours almost daily. The money at risk is USD 4.99, so the correction is not that the
vendor is dangerous; it is that the recommendation rested on a counterparty that does not exist
when a cheaper one with a working WireGuard report does.
## The four rows that were simply wrong
| row | was | is | what took it away |
| --- | --- | --- | --- |
| `gullos-hosting-nat-128` | USD 10.00 a year, USD 0.83 a month | **USD 3.50 a year, USD 0.29 a month**, renewing at the same rate | the order page prints "1 Year @ $3.50" and "FR NAT IPv4 128MB (Oct 23, 2026 - Oct 23, 2027) 1 @ $3.50". The row was three times too expensive |
| `eqvps-nat-nano` | "cannot accept a connection at all" | one personal inbound port on the NAT line | the page states inbound on "your personal port" beside "No arbitrary inbound ports". One port is exactly what WireGuard needs |
| `microlxc-tiny` | 256 MiB | **64 MiB** | the deploy page lists 64 MiB while the home page advertises 256 MB; It has no refund at
all and names no company, which is why the row says medium risk and not low.
**Cloudfanatic at USD 2.99 a month** is the answer if the node must not fail: a named Illinois
corporation, monthly billing, a written 7-day guarantee, a published SLA, a dedicated IPv4 with
all ports open, and five years of independent monitoring showing two outages of two or three
minutes. Three times the line, and the only row in the set where nothing important is
unverified.
## The lesson, stated as a rule for the topic
⭐ **Search in the language of the market before writing a negative.** Both negatives in this
pass were English-language searches over English-language hosts. The sub-dollar market is
Chinese and Russian, and one query in each language produced a counterexample. A negative is a
claim about a search, so it carries the search's scope in the same sentence or it is not a
finding.
⚠ **A price under a dollar is usually a shape nobody wants.** luo_cloud's USD 0.22 buys 128 MiB
and 2 GB of disk, FirstByte's USD 0.93 buys 768 MB and a dedicated IPv4 and is sold out, and
Gullo's USD 0.29 buys 128 MiB. The band is real and it is thin; the row worth running for a year
is the one with a report of somebody having run it.
Eleven verdicts moved, and the card gate is now recorded as a gate
2026-10-24 · corrected · documented
What changed
## The moves, and what took each one away
| record | was | is | the sentence that decided it |
| --- | --- | --- | --- |
| `fly-io` | `dead` | `trial-only` | "New organizations don't have a free tier or a monthly free usage allowance. A trial runs up to 2 hours of Machine runtime or 7 days." The free tier is withdrawn; the product is alive |
| `fly-machines` | `dead` | `trial-only` | the same sentence, on the same product. Two records for one product must not disagree |
| `koyeb` | `qualifies-with-caveat` | `fails-identity` | "We require a credit card ... We verify the card you enter by placing a $29 pre-authorization hold", and the Pro plan is charged pro rata |
| `modal` | `qualifies-with-caveat` | `fails-identity` | "you must have a payment method on file in order to use Modal". The USD 30 a month is real and sits behind the card |
| `northflank` | `qualifies` | `fails-identity` | "all users must add a payment method to start creating resources on Northflank, regardless of plan selection" — against the plan card's "No card needed", on the same site |
| `alwaysdata` | `qualifies-with-caveat` | `fails-quota` | the free plan's footnote: "it cannot be used to run services". A listener is out of scope whatever the disk says |
| `blinkenshell` | `qualifies-with-caveat` | `fails-identity` | step five of five: "Enter your personal cell/mobile phone number to receive an SMS with a verification code", after a 20-question quiz and two human vouches |
| `tilde-team` | `qualifies-with-caveat` | `dead` | "tilde.team got hacked. Someone was able to gain a root shell and ran `rm -rf /`", and "*ssh access is currently disabled in the meantime*" |
| `render` | `fails-quota` | `qualifies-with-caveat` | the 750 free instance hours are real and the 15-minute spin-down is the constraint; `fails-quota` read as "the hours are too few", which is not what the page says |
| `baseten` | `qualifies-with-caveat` | `paid-only` | the resources page publishes no free tier and no rate |
| `heroku` | `fails-identity` | `paid-only` | there is no free dyno at any identity level, so the gate is the price and not the account |
| `clever-cloud`, `sevalla` | `qualifies-with-caveat` | `paid-only` | no free row on either pricing page; Sevalla's is a trial, not a tier |
| `isorun`, `shellbox` | `qualifies-with-caveat` | `paid-only` | no free tier on the page; the earlier verdict came from an aggregator card |
| `withruntime` | `trial-only` | `qualifies-with-caveat` | the free allowance is real and the 730-hour figure is USD 6.39, not the USD 1.49 the aggregator's 200-hour model produces |
| `iwinv` | `paid-only` | `fails-identity` | South Korean nationality and a Korean mobile are required, and card registration needs a Korean public certificate |
| `locaweb-vps` | `paid-only` | `fails-identity` | CPF, RG, address and date of birth are collected at purchase |
| `utho` | `trial-only` | `paid-only` | no trial on the page; the entry plan is INR 1,435 |
| `webarena-indigo`, `conoha-vps` | `paid-only`, `trial-only` | `qualifies` | both sell a machine under USD 5 with no card gate; the earlier verdicts were unread rows |
| `xserver-vps` | `dead` | `paid-only` | the product sells; the free tier is what ended |
## Why this is one entry and not twenty
Every move has the same shape: **a verdict was written from an aggregator card, a pricing
page's headline, or a signup form, and the sentence that decides usability was on a different
page.** Koyeb is the clearest: the free instance is byte-identical across the year and the
thing that changed is a USD 29 hold that appears only in the FAQ. No credit card." still
printed, and reversed the verdict to `qualifies`. The incident page read the same hour states
"This is an active investigation and during this time the Platform will remain inaccessible to
all users", and the status banner still reads "Service is down to address a security incident"
with its newest update on 2026-10-19. Both cards read "Starting from" and both product pages
redirect to the cart, so USD 4.99 is the vendor's stated annual floor and not an invoiced
price. The record says so.
Under USD 1 a month exists, and only as annual prepay
2026-10-24 · corrected · documented
What changed
## The rows
| machine | price | monthly equivalent | shape | IPv4 | forwards a UDP port | term |
| --- | --- | --- | --- | --- | --- | --- |
| NATKVM LXC NAT | USD 5.50/yr | **USD 0.46** | 1 vCPU / 256 MiB / 5 GB | shared NAT | **yes, 20 ports, UDP and TCP stated**, TUN/TAP | annual |
| Cheap-Host NAT Start | 59 RUB/mo | USD 0.73 | 1 vCPU / 1 GiB / 10 GB | shared NAT | 999 ports, TCP and UDP stated | monthly |
| SoftShellWeb LXC IPv6 | USD 9.95/yr | USD 0.83 | 1 vCPU / 1 GiB / 15 GB | **none** | IPv6 only, /64 | annual |
| DediRock Promo Saver | USD 9.88/yr | USD 0.82 | 1 vCPU / 1 GiB / 10 GB | dedicated | yes, all ports | annual |
| Gullo's NAT 128 | USD 10.00/yr | USD 0.83 | 1 vCPU / 128 MiB / 5 GB | shared NAT | 20 ports, UDP unstated | annual |
## The negative result
**No monthly-billed machine under USD 1.00 was found.** The cheapest monthly-billed
machine with any IPv4 is DediRock at USD 2.99; the cheapest monthly-billed machine at all
is HostBrr's IPv6-only 1 GiB at USD 1.44. So the sub-dollar band is a prepay band: the
buyer pays USD 6 to USD 12 once and holds the machine for a year.
That changes what the row means. A USD 0.46 a month machine is USD 5.50 out of pocket and
a twelve-month commitment to a small operator, not a monthly subscription. `micro.md`'s
ladder already refused to treat an annual total divided by twelve as a monthly bill, and
this entry applies the same rule to the band below its first rung.
## Why Scaleway's USD 0.20 was not the answer
The STARDUST1-S instance is EUR 0.0006 an hour, and the record priced it at ten hours a day.
Two corrections follow. At 24/7 it is about USD 0.44 a month for the instance, and **a
public IPv4 costs EUR 0.005 an hour, about USD 4.09 a month**, which is nine times the
instance. A WireGuard endpoint needs a reachable address, so the honest 24/7 price of that
row is about USD 4.58, and it belongs in the under-five lane and not this one.
## What the port claim rests on
A WireGuard endpoint needs a UDP socket the internet can reach. Two of the five rows state
UDP forwarding in the vendor's own words; one states TCP only; two state a port count and
no protocol. Only NATKVM states UDP, TUN/TAP and a dedicated IPv6 on the same plan, which is
why it is the row and the others are alternatives. No handshake was run, so this is a
documented capability and not a measured one.
The USD 6.49 floor was wrong, and so were four prices under it
2026-10-24 · corrected · documented
What changed
## What the pages say now
| claim | was | is | what took it away |
| --- | --- | --- | --- |
| the cheapest always-on box | USD 6.49, Hetzner CX23 | **USD 3.75**, GreenCloudVPS BudgetKVM, 8 GiB / 4 vCPU / 60 GB / 8 TB, USD 45.00 a year | `greencloudvps.com` plan cards, read 2026-10-24 |
| Hetzner CX23 | USD 6.49, the recommended entry | **EUR 5.99 (USD 6.70)** and marked "not available" | `hetzner.com/cloud`, read 2026-10-24 |
| Hetzner CX22 at "about EUR 3.79" | the cheap default in several documents | no such rung on the page; the cost-optimised tier is CX23 at EUR 5.99 and CAX11 at EUR 6.49 | the same page |
| DigitalOcean's USD 4 droplet | 1 GiB | **512 MiB**; 1 GiB is USD 6.00 | `digitalocean.com/pricing`, read 2026-10-24 |
| netcup VPS 1000 G11 | the entry rung | the page sells **G12.5**: VPS 500 at EUR 8.26 and VPS 1000 at EUR 14.50 | `netcup.com`, read 2026-10-24 |
| ServerHost USD 16.99 a year | a price | a **code-gated campaign rate** (`FBAD2GB2026`); the homepage advertises "from USD 3/mo" and no renewal is published | `serverhost.com`, read 2026-10-24 |
| RackNerd's cheapest | USD 21.99 a year | confirmed at USD 21.99 a year; the USD 10.99 figure that circulates is not on the page | `racknerd.com/specials`, read 2026-10-24 |
## The two that matter
**The floor claim was a scope error, not a stale price.** `paid/README.md` and
`paid/vps-monthly.md` priced the mainstream set and then wrote a sentence about the market.
The low-end hosts in the same topic's `micro.md` were already under the figure the front page
called the floor, so the topic contradicted itself on its own first page. The fix is the
sentence and the table, not a new discovery.
**The cheapest row is still not the best row.** ServerHost's USD 1.42 for 2 GiB is
USD 0.71 per GiB-month; GreenCloudVPS's USD 3.75 for 8 GiB is USD 0.47. The larger invoice
returns four times the memory for 2.6 times the money, and it is the row a daily driver
should take. That is the same arithmetic `micro.md` already stated, applied to a price the
front page said did not exist.
The credit ladder was widened to twenty, and nine more claims moved
2026-10-23 · corrected · documented · records: compute/databricks, compute/digitalocean, compute/linode, compute/netmind, compute/northflank, compute/ovhcloud, compute/vultr, databases-kv/cockroachdb-basic, storage/confluent-cloud
What changed
## What we believed
The committed ranking carried ten rows. Six further offers were believed to be worth USD 100 to
USD 400: Confluent at USD 400 for 60 days, CockroachDB at USD 400 for 30 days, Databricks at USD
400 for 14 days, Vultr as paid-only, and DigitalOcean and Akamai each at USD 200 and USD 100 for 60
days. Northflank's cheapest plan was recorded as `nf-compute-100-1` at USD 18 a month. OVHcloud's
`c3-16` was costed at USD 0.2498 an hour.
## What we found
Six of the nine changed the amount a reader can count on, and three changed only the shape of a
claim that survives.
- **Confluent is 30 days, not 60.** The signup page reads "New signups receive $400 to spend during
their first 30 days", and the documentation reads "Your free credit expires 30 days after you
receive it." The 60-day figure appears on neither.
- **Northflank's plan is gone.** The live price list runs `nf-compute-50` at USD 0.01667 an hour
(0.5 vCPU, 1 GB, USD 12 a month), `nf-compute-100-2` at USD 0.03333 (USD 24), `nf-compute-200`,
`-400` and `-800-16`. There is no 1 vCPU / 1 GB plan, so USD 20 a month now buys the smallest
plan and leaves USD 8, and the next one overruns by USD 4.
- **OVHcloud's compute line is cheaper and its disk is unpriced.** `c3-16` is USD 0.2154 an hour,
USD 155.09 for 30 days; the USD 0.2498 in the earlier ranking added 200 GB of local NVMe at an
assumed rate. The disk column reads "Local storage low latency" with no size and no footnote, so
the honest total is a range and the record says so.
- **CockroachDB publishes no trial length.** The page states the USD 400 and the 30-day grace
period that follows an unclaimed trial, and nothing states how long the trial itself runs. The
record's 30 days was an inference that read as a fact.
- **NetMind's USD 100 is not on its own page.** `/event/freeCredit` resolves to the homepage, and
the only archive capture reads "you immediately unlock $ of credit" with the figure missing.
- **DigitalOcean and Akamai publish no current amount.** Both live pages carry a worked example
("if you received a $5 credit for 90 days", "if you received a $100 credit for 60 days"). The
DigitalOcean USD 200 survives only in a 2026-05-15 archive of a URL that now redirects home; the
Akamai USD 100 survives only as Japanese meta text whose English equivalent is 404.
- **Databricks states a ceiling and a discretion.** "Up to $400 in credits", with "eligibility ...
the amount of credits (if any), and when any credits expire are solely determined by Databricks
following account creation". The 14 days is platform access, not a credit expiry.
- **Vultr is not paid-only.** Two promo codes publish USD 250 and USD 300, new customers only, and
the documentation states the credits last up to 30 days. A payment method is still required
before any instance exists, so the gate did not soften; the balance appeared.Civo needs a verified card before it will create an instance
2026-10-23 · corrected · documented · records: compute/civo
What changed
The mistake is a category error between the signup form and the product. A form that asks for a name, an email address and a password is not a card-free gate if the account cannot spend its credit until a card is verified. The first page a reader sees is the form, and the sentence that decides usability is one link away in the billing documentation.
This matters more than a normal correction because the ranking placed Civo first among the offers that avoid a card, and the operator's reason for excluding Azure and AWS was a refused signup. A card is now the documented gate on six of the ten ranked offers, not five.
The same pass found two more Civo facts that the record did not carry. Billing is hourly and rounded up, not per second, and the printed monthly price is "illustrative examples using an 'average month' of 730 hours" rather than a cap. A stopped instance also keeps billing in full, so pausing does not stretch the credit. Those are now in the record's limits and notes.
The credit ladder was re-read, and eight claims moved
2026-10-23 · corrected · documented · records: compute/alibaba-cloud-international, compute/amd-developer-cloud, compute/blaxel, compute/boxlite-cloud, compute/digitalocean, compute/ibm-cloud, compute/ovhcloud, inference/together
What changed
A credit page is a promotion, and a promotion changes without an announcement. The eight
corrections above are two different findings wearing one label. Six are withdrawals or narrowings. BoxLite's USD 100 was present on 2026-10-22 and absent one
day later. Alibaba replaced a money credit with points. Blaxel's USD 200 became a sandbox quota
with no cash in it. Together states in its own billing documentation that it does not offer a free
trial, which contradicts every guide that quotes a signup credit. AMD halved its grant and cut the
window from 30 days to 10. Two are false negatives. OVHcloud and IBM both carried `paid-only`, because the record was built
from a price list and the balance lives on a separate trial page. That is the same shape as
Snowflake, whose pricing page carries no trial either. A price list answers what a product costs
after the credit, and it is silent about the credit itself. The lesson is not that the earlier reads were careless. Each one quoted a page that said what the
record claimed. The lesson is that a provider has more than one page, and the page that carries
the number is often not the page a price comparison links to. One further contradiction is recorded and not resolved. Lightning AI carries `verdict: dead`
because the vendor revoked all user access on 2026-10-16. Its pricing page on 2026-10-23 still
advertises five credits on registration and twenty-five more with a card. A pricing page is not
evidence that a signup completes, so the verdict stands and the record names the conflict. One
registration would settle it.
Two storage verdicts were false negatives
2026-10-23 · corrected · documented · records: storage/catbox-moe, storage/dediseedbox
What changed
A failed price read is not a dead service, and a single-day 521 is not a quota
failure. Both records now say which fields were re-read and which were not: the
price, the per-object cap and the retention of each remain unread, and the records
state that rather than repeating an older number.
The adversarial re-read found a free tier with no tunnels
2026-10-23 · corrected · documented · records: egress/openport-pw, egress/proxylink-dev
What changed
## What we believed
That ProxyLink's early-access offer was a free path with TCP and UDP, and that
openport.pw metered requests.
## What took the old claim away
A verifier that did not write these records opened `proxylink.dev/pricing`, which
the original pass never read, and found the same vendor publishing a free plan
with zero tunnels and TCP behind EUR 17 a month. The early-access sentence is
still true today, which is why the old verdict was not false; it was incomplete in
the one direction that decides what a reader builds. For openport.pw, no page states a request count. The unit asserted a meter the
vendor does not publish, and it contradicted the record's own `limits[]`.
## What the records say now
- ProxyLink: `trial-only`, with the grid in `limits_note` and the pricing page in
`evidence`. The verifier also recorded two
extraction traps that look like page changes: the broker's text extractor drops
Oracle's "10 TB per month" sentence and portmap.io's "unlimited" support-page
sentence, and both are present in the raw HTML. A future pass that reads only the
extractor will report both missing.
Four providers had two records each
2026-10-23 · corrected · documented
What changed
The rule is one
provider, one file, so the duplicates were merged rather than deleted: the
surviving record keeps both evidence arrays, both `limits[]` sets and both
`extras`, and its `notes` names the record it absorbed.
## What was kept and what went
- `6project` into `6project-org`, which keeps the higher rung and the routed
prefix detail.
- `netassist-tb` into `netassist-tunnelbroker`, which is the vendor's own name.
- `tunnelbroker-se` into `karabro-tunnelbroker-se`, because the broker rebranded.
- `hoppy-network` into `hoppy`, which is the provider's name. No claim was dropped. The four that were removed existed only as duplicates, and
every fact in them is in the surviving record.
Self-hosted ingress is not a free service
2026-10-23 · corrected · measured · records: egress/frp
What changed
## What we believed
That software which forwards a port was a free tunnel. Six records carried a
qualifying verdict for `frp`, `headscale`, `zrok-selfhost`, `pangolin`,
`wiredoor` and `wireport`, and a reader who stopped at a table took them for
services anybody can use.
## What took the old claim away
The records contradicted their own verdicts. `frp`'s 42.91 MiB/s probe measured the software on one host, so it
establishes that frp works and not that somebody offers it. Every probe, digest and throughput figure is untouched. Nothing measured was
withdrawn.
## What would reopen one
A hosted control plane that publishes a quota, issues a `.conf` and does not
require the client to run a server. That would be a provider, and it would get its
own record. `NetBird` and `Nekotopia` are the two records that already meet that
description, and both carry the caveat their own pages state.
One provider list was not the market, and affiliate comparisons are 14 per cent wrong
2026-10-22 · corrected · measured
What changed
## What we believed
That discovery was finished. A 369-card corpus had been diffed and 368 of its providers were
already recorded, so the remaining work was to measure what existed.
## What we found
That corpus is a sandbox and devbox list. It contains almost none of the cheap VPS market:
- `vpspricetracker.com` listed 128 providers; **106 had no record**.
- TierHive, a live NAT VPS host with a USD 0.10 plan, appeared on no list that had been
consulted. It was missed a second time because its homepage returns an empty extraction on the
raw-HTML path and a full read on the text path, and the first result was treated as the answer.
- LowEndBox's last 52 posts named 18 hosts, 10 of them absent.
- `vps.today` claims 119 hosters and 1,825 tariffs; 14 of its names had no record.
- `zhujiceping.com` listed 25 providers, 20 absent.
The four GitHub repositories offered as a seed are affiliate articles. A lane checked **107 of
their factual claims against the vendors: 15 were wrong and 22 unverifiable**. The three that
matter: the Hong Kong large-disk ladder is 23 to 31 per cent cheaper than both Chinese seeds
print; DediRock's RAID-5 is a migration announced three times and never declared finished; and
Backblaze B2 is USD 6.95 per TB per 30 days rather than the USD 6 printed, which moves a 2 TB
year from USD 144 to USD 166.80.
## What it changes
The registry and its gate check make the omission loud rather than silent: every source that
lists providers carries a cadence and a last-diff date, and the gate fails while one is undiffed,
overdue, or missing from the watchlist. It failed on all three conditions while this was written.
`compute` now holds 1,128 records and 56 documents, including the first storage catalogue with a
price-per-TB column and a largest-machine column. The floor did not move.
The rule left behind: **a coverage claim names the list it was measured against, in the same
sentence.** "368 of 369" was true of one corpus and was read, including by me, as a claim about
the market. Those are different claims, and only one of them was measured.
Coverage against a sandbox list was not coverage of the VPS market
2026-10-22 · corrected · measured
What changed
## What we believed
That discovery was finished. A 369-card provider corpus had been fetched and 368 of its
providers already had a record, so the remaining work was to measure what existed rather than
to find more hosts.
## What we found
That corpus is a sandbox, browser, devbox and hyperscaler list. It does not cover the cheap
VPS market at all. `vpspricetracker.com` listed 128 providers, and **106 of them had no record
anywhere in the corpus**. The two lists overlap barely enough to make the first result look
like a general one.
A second error sat inside the count. The tracker diff matched provider names by substring, so
eight names were treated as covered when they were not, including `hostbrr`, which
`paid/micro.md` had been quoting by name with no dossier record behind it. Reading the record
rather than the name found them.
## What it changes
`compute` went from 962 to 1,076 records in one turn, and the topic's document count from 54
to 55. The floor did not move: `paid/micro.md` still holds it at USD 1.42 a month, because
every provider the tracker added is dearer than that, and every entry it found under USD 2 is
IPv6-only or NAT.
The rule this leaves behind is that a coverage claim needs the list it was measured against,
named in the same sentence. "368 of 369 covered" was true and was read as "the market is
covered", which is a different claim and a false one.
Aeza wants an email, not a card, and states its traffic term
2026-10-22 · corrected · documented · records: compute/aeza
What changed
## What we believed
That the account gate was a card, that the traffic term was unpublished, and that a free
test server might still exist because one catalogue page advertises it.
## What we found
Signup is an email address plus a robot check, and the wiki documents a crypto top-up, so a
card is not the only route to a balance. The traffic term is published as "Traffic
infinity": the constraint is the port at 25 Gbit/s, not a byte counter.
The free test server is gone from the knowledge base. Its page returns 404 and is absent from
the wiki sitemap, while `terminator.aeza.net` answered the broker with HTTP 530, which says
nothing about the target. The vendor's own FAQ answers the trial question with hourly billing
and a test balance for legal entities on request.
The entry price is a promo plan at EUR 1.99 a month in Stockholm, monthly billing only, with
no first-term variant and no reversion rate stated anywhere, so it renews at the same figure
from balance. Hourly billing is unavailable on promo plans.
## What it changes
A reader without a card is no longer excluded by the record, and a reader planning traffic no
longer sees a blank where the vendor states infinity. What remains unverified is whether
unlimited traffic survives a sustained transfer, which only a probe would show, and whether
`terminator.aeza.net` is alive, because a broker 530 is not evidence about the provider.
Worldstream's entry server is EUR 49, not the EUR 104 on its banner
2026-10-22 · corrected · documented · records: compute/worldstream
What changed
## What we believed
That the cheapest Worldstream dedicated server was the AMD EPYC 4000 series at EUR 104 a
month, because that is the figure the landing banner prints, and that no quota bound above
a user's scale, because the landing page states no traffic term.
## What we found
The vendor's own offer list carries 43 entries and the cheapest is not the one on the banner:
a Fujitsu PRIMERGY RX1330 M3 with an Intel Xeon E3-1230v6 at 4 cores and 8 threads, 16 GB of
RAM, one 250 GB SSD and a 1 Gbit/s full-duplex port, at EUR 49.00 a month with 50 TB of
traffic included and delivery within two hours. No setup fee is published. Traffic past the
allowance is priced rather than refused: 100 TB costs EUR 50 a month more and unmetered
costs EUR 99 more. Two traps sat on the same page. The offer list is client-rendered, so only the raw HTML
carries it. And the schema.org block on the entry configuration is stale: it still describes
the EPYC 4245P at EUR 135, which is a different configuration at `/configure/156`.
## What it changes
The record's entry price halves, its shape gains the RAM, disk, port and term it had left
null, and its binding moves from `none` to `volume-quota`, because a 50 TB allowance is a
ceiling a serving workload reaches. The price stays in EUR with no USD figure, because the
vendor publishes none and a conversion would be an invented number. The minimum-term clause is still unstated rather than absent: `/en/terms-and-conditions`
returned 404, so the record says the term was not read.
The claim that no compute record names its funder stopped being true
2026-10-22 · corrected · measured
What changed
## What we believed
That the funding model behind a free compute tier was never stated in the records. The page
used that absence as its reason for being mostly inference, and the absence was true of the
619 records that existed when the sentence was written.
## What we found
The later passes added records that state a funder outright. `aicrowd` sells a "sponsored
credit pool". `aws-activate-portfolio` is gated by an Org ID that an investor issues.
`compound-reverie-grants` is reviewed by a venture firm's partners. `boxybsd` answers the
donation question by refusing donations. Twenty-eight records now contain at least one of the
four words, and most of those carry it in a programme name, such as the Thiel Fellowship,
Emergent Ventures or Hub71.
## What it changes
The argument survives and its strongest sentence does not. A reader can no longer be told the
words never occur; they can be told that 28 records mention a funder and the rest still name
none. The same pass corrected three stale denominators in the topic, which had been written
against a 619-record tree and now sit at 957: the clock census in `the-clock.md` and
`README.md`, the durability census in `dev-environment-long-tail.md`, and the egress census in
`gaps.md`, `paid/README.md` and `free/regional-clouds.md`. The clock census also carried an
arithmetic error, printing 34 where its own two components sum to 35.
Cloud.ru's free VM stopped accepting registrations on 2026-06-30
2026-10-22 · corrected · documented · records: compute/cloud-ru-evolution
What changed
## What we believed
That Cloud.ru Evolution was a live free tier: a 2 vCPU / 4 GiB / 30 GB machine for a new
account, with a RUB 4,000 grant alongside it.
## What we found
The campaign rules approved on 2026-06-30 state that the free VM is closed to accounts
registered after that date, and that the account must be registered in the Russian
Federation. What survives is 25 vCPU-hours a month of Container Apps, 10 TB a month of
object-storage egress, 15 GB of storage and 1,000,000 DNS queries.
A second fact from the same lane makes the offer worse than it looks: the free VM never
included a public IP, and renting one costs RUB 151.40 a month, which is more than a working
VPS from three other hosts in the same market.
## What it changes
The verdict becomes `fails-identity`, because the surviving lanes are gated on a Russian
registration. The record keeps the grant's exclusion list, which is the reason a grant
programme does not repair a closed free tier: the RUB 4,000 grant excludes every GPU SKU and
the Container Apps allowance.
Hetzner's dedicated range publishes prices, so it is paid-only and not a qualifying tier
2026-10-22 · corrected · documented · records: compute/hetzner-dedicated
What changed
## What we believed
That the dedicated line qualified as a cheap paid option, and that its prices were behind a
script that no reader could extract.
## What we found
The AX matrix publishes the range: from EUR 59.00 a month excluding VAT for the AX41, an AMD
Ryzen 5 3600 on Zen 2 with 64 GB of DDR4 and two 512 GB NVMe drives, up to EUR 614 for the
largest model. Nothing about the line is free, and the price is not hidden.
## What it changes
The verdict becomes `paid-only`, which is what `docs/conventions/README.md` defines for a
product that was never free. The record keeps the price matrix as evidence, so a reader
comparing a dedicated box against a VPS has the figure.
NAVER's KRW 200,000 credit is for students and staff of a participating institution
2026-10-22 · corrected · documented · records: compute/naver-cloud-platform
What changed
## What we believed
That the NAVER Cloud entry was a trial any new account could start, gated on a card and a
Korean phone number.
## What we found
The KRW 200,000 Green Rookie credit and the technical-certification exam voucher are
addressed to students and staff of a participating institution. That is an institution gate
on top of the residency and card gates the record already carried.
## What it changes
The verdict becomes `fails-identity`. The card and the Korean phone were already recorded; what this adds is that even a Korean resident needs an affiliation, which makes the offer
unreachable for a user on two independent counts rather than one.
Lizard's USD 19 plan is a fee, not a free tier
2026-10-22 · corrected · documented · records: compute/lizard
What changed
## What we believed
That Lizard qualified as a free tier with a caveat, on the strength of a USD 19 plan that
includes USD 19 of monthly usage.
## What we found
The pricing page states both halves in one paragraph and they mean different things:
> Pro costs $19 a month and includes $19 in monthly credits for the whole platform: apps,
> databases, Sandboxes, storage and egress.
and
> Yes. Pro starts with a 7-day trial and $5 in trial credits. You need a card to start it,
> but we charge nothing during the 7 days, and you can cancel before the trial ends. If you
> keep Pro, we charge $19 when the trial ends and then each month.
A plan whose fee returns as usage is not free capacity. The USD 19 leaves the account and
comes back as a credit; calling that a free tier counts the same money twice. The only free
lane is the 7-day trial with USD 5 of credit, behind a card.
## What it changes
The verdict becomes `trial-only`, the binding constraint becomes the USD 5 credit, and the
record carries the arithmetic: at the medium sandbox rate of USD 0.0324 an hour, USD 5 buys
about 154 sandbox hours; at the small rate of USD 0.0162, about 309.
The per-second rates stay in the paid documents unchanged. Lizard is still one of the
cheapest per-second sandboxes at USD 0.0162 an hour for 2 vCPU / 4 GiB, and a reader
comparing paid lanes is not affected by this correction.
boat has a free trial, and its own pages disagree about its shape
2026-10-22 · corrected · documented · records: compute/boat
What changed
`https://docs.boat.dev/pricing`: "Your first plan starts with a 7-day free trial. A card is
required. The trial has its own lower limits."
`https://boat.dev/`: "Billed per second, free when stopped. 7-day free trial, then from
$20/mo."
`https://boat.dev/compare`: "25 free hours to start". The `/free-trial` page that the documentation links to returns 404, so the trial's allowance
cannot be established from the vendor. Only the clock can.
## What it changes
The verdict becomes `trial-only`, the identity cost becomes `card`, and the binding
constraint becomes the trial clock plus the 14-day stopped-disk window, which is the term
that actually destroys work: a stopped sandbox keeps its disk for 14 days and is then
deleted without recovery. The comparison page also carries the reason this record was opened at all: it lists
fourteen sandbox providers at one shape with list prices dated 2026-09-26, which is a
cross-check the corpus had never used.
Compute deepinfra requires a card
2026-10-22 · corrected · documented · records: inference/deepinfra
What changed
## What we believed
That DeepInfra offered a free tier whose size had not been read, recorded at the
`unverified` rung with a `qualifies-with-caveat` verdict.
## What we found
The pricing page states the opposite in one sentence: "You have to add a card or pre-pay or
you won't be able to use our services. Pre-paid accounts draw down their balance as they
go."
The only free balance on the site is a promotion, "we're thrilled to offer you $20 in free
credits to explore DeepInfra's AI inference cloud", claimed through a deal link aimed at
viewers of one YouTube channel. A channel promotion is not a free tier.
## What it changes
The verdict becomes `paid-only` and the rung becomes `documented`, because a page was read.
A second `unverified` record that asserted a free tier without reading one is now a
documented record that refutes it, which is the direction the ladder is supposed to move.
Three compute lanes were recorded paid-only when the free lane existed behind an institution
2026-10-22 · corrected · documented · records: compute/e2e-networks, compute/heroku, compute/thunder-compute
What changed
Heroku, `https://www.heroku.com/github-students/`, read 2026-10-22: "If you are registered
with the GitHub Student Developer Pack, you are eligible to receive platform credits worth
$13 per month for 24 months (for a total value of $312)." The Student Developer Pack itself
requires the applicant to be "enrolled in a degree- or diploma-granting program" and to
"provide documents that prove your current student status". The self-serve account FAQ
requires "Copy of any one identity proof document" and "Copy of any one address proof", with
activation that "may take up to 3 business days". Thunder Compute, `https://www.thundercompute.com/students`, read 2026-10-22: "Only students
enrolled at US universities qualify. Sign up with your university email; credit is added
automatically." and "Student credit $20.00".
## What it changes
All three become `fails-identity`, and each carries the door in `binding_note`. The distinction
that matters for a user is that a card is reachable and a degree, a company registration
or a US university enrolment is not. Recording as `paid-only` hid capacity that
exists recording it without the gate would have hidden the reason it cannot be used. Two secondary facts are kept in `notes` rather than in the verdict: E2E also gives a
20-infra-credit signup bonus behind phone OTP and document review, and Heroku's incoming note
blamed a card when the failing gate is the student check.
Modal's free credit resets monthly, so it is an allowance and not a trial
2026-10-22 · corrected · documented · records: compute/modal
What changed
## What we believed
That Modal's free credit was a one-time trial, on the strength of an academic grant whose
terms say credits are granted once per conference and expire when submission results are
final.
## What we found
`https://modal.com/pricing`, read 2026-10-22: "Starter has no monthly fee and includes $30 of
compute (GPUs, CPUs, Memory) per month."
The academic grant and the Starter plan are two different programmes. The one-time terms
belong to the grant, which is a separate record; That
matters because a reader planning a monthly batch job needs to know the allowance returns,
while a reader planning a single large run needs to know it does not accumulate.
Four records said 'no free tier' and still carried a qualifies verdict
2026-10-22 · corrected · documented · records: compute/hetzner-cloud
What changed
## What we believed
That these four providers qualified, on the strength of a cheap monthly price.
## What we found
Each record states in its own `free_tier.stated` field that no free tier exists: Hetzner
"no free tier; the entry shape CX23 is USD 6.49 a month excluding IPv4 and VAT", boat "no free
tier is published; the smallest plan is USD 20 a month", Contabo "no free tier", netcup "no
free tier". `docs/conventions/README.md` defines `paid-only` as "it was never free", so the
verdict contradicted the record's own evidence.
## What it changes
All four become `paid-only`. This is an enum conformance fix rather than a price change, and
it moves four rows in the generated table at `docs/compute/README.md`.
Tencent Cloud Studio gives a monthly minute allowance, not a paid-only product
2026-10-22 · corrected · documented · records: compute/tencent-cloud-studio
What changed
## What we believed
That Cloud Studio was a paid product with no free lane.
## What we found
Tencent's product 1039 document, `https://cloud.tencent.com/document/product/1039/94098`, read
2026-10-22, states in the original: "免费额度内每月提供5万分钟通用工作空间使用时长和1万分钟高性能空间使用时长,超出后按量计费。"
That is 50,000 minutes a month of general workspace time and 10,000 minutes a month of
high-performance workspace time inside the free allowance, billed on demand beyond it.
A second regime runs in parallel at `cloudstudio.net`, where a 20 machine-hour pack is granted
on binding a Tencent Cloud account and 2 machine-hours can be claimed on each daily login,
valid 7 days.
## What it changes
The verdict becomes `qualifies-with-caveat`. Three caveats are recorded: an exhausted pack
does not stop the application and bills on demand, a free high-performance workspace idle for
30 days is released without recovery, and reaching the paying account needs Tencent Cloud
real-name verification, which the China site issues for mainland, Hong Kong, Macau and Taiwan
documents.
GitHub Actions public repositories are free and unlimited; the 2,000 minutes are private
2026-10-22 · corrected · documented · records: compute/github-actions
What changed
`https://docs.github.com/en/actions/reference/runners/github-hosted-runners`, read 2026-10-22,
states "Use of the standard GitHub-hosted runners is free and unlimited on public
repositories". The billing page says the same in different words and adds the sentence that
matters for GPU work: "Larger runners are always charged for, even when used by public
repositories".
## What it changes
The verdict becomes `qualifies-with-caveat`, and the binding constraint moves to the job cap:
6 hours per job, 20 concurrent jobs on the Free plan. A job killed at 6 hours cannot use the
rest of an unlimited allowance, so the cap is what decides the shape of a workload. GPU runners are not free on any plan. They are larger runners, billed per minute, and sold to
Team and Enterprise. A reader who reads "unlimited" and plans a GPU job has misread it.
Google Colab's free tier is a standing service, not a trial
2026-10-22 · corrected · documented · records: compute/google-colab
What changed
## What we believed
That the free Colab tier was a time-boxed offer, recorded as `trial-only`.
## What we found
The FAQ, read 2026-10-22, answers the question directly: "Yes. Colab is free of charge to
use". It also states "In the version of Colab that is free of charge notebooks can run for at
most 12 hours, depending on availability and your usage patterns", that "Colab does not
publish these limits, in part because they can vary over time", and that "access to expensive
resources like GPUs is heavily restricted".
Nothing there puts a clock on the offer. What is time-boxed is a session, not the tier.
## What it changes
The verdict becomes `qualifies-with-caveat`. The caveat is not a small one: every limit that
decides whether a workload fits is unpublished and can change without notice, and the 12-hour
figure is itself conditioned on availability. A reader must treat the capacity as
discretionary rather than as a quota.
Hugging Face Spaces has a free lane, and the ZeroGPU allowance recurs daily
2026-10-22 · corrected · documented · records: compute/huggingface-spaces, compute/huggingface-spaces-zerogpu
What changed
## What we believed
That a Gradio or Docker Space required a paid plan, so the whole product was `paid-only`,
and that ZeroGPU was a one-shot trial credit, so its record was `trial-only`.
## What we found
Two sentences on the vendor's own pages, read 2026-10-22, refute both.
`https://huggingface.co/docs/hub/spaces-overview`: "Static Spaces are free for everyone.
Gradio and Docker Spaces run on compute and require a paid plan to create: PRO for personal
accounts, Team or Enterprise for organizations. Free personal accounts in good standing can
still host up to 2 Gradio Spaces running on ZeroGPU."
`https://huggingface.co/docs/hub/spaces-zerogpu`: "Free personal accounts: accounts in good
standing (verified email, account older than 30 days) can host up to 2 ZeroGPU Spaces for
free", with a usage table row "Free account | 5 minutes | Medium".
The allowance is 5 minutes of GPU a day and it resets. That is a recurring allowance, not a
credit, so `trial-only` was the wrong word for it.
## What it changes
`huggingface-spaces` becomes `qualifies-with-caveat`, with the binding constraint named as
the 5 minutes a day and the sleep on inactivity rather than the 2-Space cap. The free lane is
real and small: two Spaces, five minutes of GPU a day, 50 GB of non-persistent disk, a
verified email and an account older than 30 days.
`huggingface-spaces-zerogpu` becomes `qualifies-with-caveat` for the same reason the class
rule already gives: a recurring free allowance is not a trial.
Kamatera's trial needs a card, not an email
2026-10-22 · corrected · documented · records: compute/kamatera
What changed
## What we believed
That the 30-day Kamatera trial was reachable with an email address, recorded with an
unverified identity.
## What we found
`https://www.kamatera.com/free-trial/`, read 2026-10-22, states "Sign up for a free 30-day
trial to receive cloud services worth up to $100", "1 cloud server valued up to $100 with the
configuration of your choice", and on the form itself, "Free trial requires valid credit
card". The FAQ repeats it: "Customers must provide a valid credit card to start the trial".
The stored note also claimed the trial was only a link at signup. The trial page carries its
own terms, so that was wrong too.
## What it changes
The identity cost becomes `card`. The verdict stays `trial-only`: 30 days, up to USD 100 of
configuration, 1 TB of transfer.
Neon's 100 CU-hours are per project, not per account
2026-10-22 · corrected · documented · records: compute/neon
What changed
It also states "Running out of CU-hours or egress (5 GB) suspends compute until the next
billing period", and the pricing page states "The Free plan is permanent (not a trial); no
credit card required."
## What it changes
The verdict becomes `qualifies-with-caveat`. The quota is per project and the plan is
permanent, so the aggregate is larger than the stored note assumed. The verdict is right and the citation was wrong, so the correct pages are cited instead.
Railway has a permanent free plan beside its 30-day trial
2026-10-22 · corrected · documented · records: compute/railway
What changed
Up to 1 vCPU / 0.5 GB per service, 1 replica, and 3-day log
history", and "Free Trial - $5 in credits for 30 days to try Railway. No credit card
required."
One is permanent and one expires. The stored record described only the second.
## What it changes
The verdict becomes `qualifies-with-caveat`. At the page's own rates of USD 20 per vCPU and
USD 10 per GB per month, USD 1 of credit buys about 29 hours of a 1 vCPU / 0.5 GB service in
a month. An always-on process does not fit inside that, which is the caveat. A third lane exists and is recorded separately: an anonymous box reachable as `ssh
railway.new`, 2 vCPU / 2 GB, limited to 3 boxes per IP per day and deleted if unclaimed within
24 hours. It is a sandbox, not a host.
Lightning AI's free Studio is dead, and the pricing page still sells it
2026-10-22 · corrected · documented · records: compute/lightning-ai
What changed
## What we believed
That Lightning AI offered one free Studio that ran continuously, subject to a four-hour
forced restart. The record was built from `https://lightning.ai/pricing`, which states
"Run 1 Studio free 24/7. No credit card. No commitments." and "Free Studios run 24/7 but
require restart every 4 hours." The binding constraint was recorded as
`retention-clamped`, on the grounds that the restart was the first thing to fail.
## What we found
The platform is closed. The incident page states:
> On **October 15, 11:00 PM UTC** we identified a security incident on the Lightning
> Platform involving unauthorized access to credentials. We revoked all user access to the
> Lightning Platform on **October 16 at 1:00 AM UTC** to address the issue.
and
> This is an active investigation and during this time the Platform will remain
> inaccessible to all users as our teams focus on addressing the event.
The same page names the affected services as "Studio, Deployments, Pipelines, and Drive"
and states that the GPU cluster rental infrastructure and the managed services
"like Kubernetes and SLURM" are not affected.
`https://status.lightning.ai` carried the banner "Service is down to address a security
incident" with a last update of 2026-10-19 12:49 UTC, and the incident was still open when
read on 2026-10-22, six days after access was revoked.
`https://lightning.ai/pricing` was not updated. It still offers the free Studio on the day
of the read. The marketing page and the incident page therefore disagree, and the incident
page is both newer and more specific.
## What it changes
The record becomes `dead`, with `write-gated` as the binding constraint: no Studio can be
created, so the free allowance cannot be reached at all. The four-hour restart is no
longer the constraint that matters, and the sentence about it is kept only as history.
The paid lane is not dead. GPU cluster rental and the managed Kubernetes and SLURM
services are outside the incident, so a reader who needs accelerated compute at Lightning
should read the paid documents, not this record.
The lesson worth carrying: a shutdown announced on a security or status page is invisible
to a pricing-page read, and the status page is the only place that dates the closure. Every
record whose free tier is a hosted platform should cite the status page as well as the
pricing page.
The minimum-bill penalty column was exactly twice the right answer
2026-10-22 · corrected · documented
What changed
## What was superseded
`docs/compute/paid/minimum-bill.md` priced a **30-minute run** and printed a
`Penalty` column giving the multiplier each provider's minimum billable unit
applies. Every row was a factor of two too large.
| provider | minimum | printed | correct |
|---|---|---|---|
| hostmyapple | 2,592,000 s | 2,880x | 1,440x |
| AWS EC2 Mac | 86,400 s | 96x | 48x |
| Flow Swiss Mac | 86,400 s | 96x | 48x |
| use-computer | 86,400 s | 96x | 48x |
| Alibaba ECS | 3,600 s | 4x | 2x |
| and 28 more | 3,600 s | 4x | 2x |
## What took it away
The document's own two bill columns. `Seed bill, with the minimum` divided by
`Seed bill, smoothed` gives the correct multiplier on every row, and the `Penalty`
column disagreed with both. ```
3,600 s minimum / 1,800 s workload = 2x
printed: 4x
```
The divisor used was 900 seconds, which is 15 minutes, not the 30-minute workload
the document states in its own title. One detail confirms it: the prose said the mac
rows were extreme "at 96x and 2,880x", which are exactly twice 48 and 1,440.
## Where the correction lives
All 33 rows now carry the ratio of their two bill columns, so a reader can check any
row by hand. The two prose sentences that repeated the doubled figures are corrected.
⚠ **MacStadium's row does not follow its own minimum.** At 30 days its stated rate
would give the largest multiplier on the table and its bill ratio is 20x. It changes every number a reader would quote, and a reader quoting "2,880x"
for a Mac billed by the month is quoting a figure twice the truth.
Twelve GPU rates in a document had no record behind them
2026-10-22 · corrected · documented
What changed
## What was superseded
`docs/compute/paid/gpu-notebooks.md` carried a comparison table of 22 rated rows in
which 12 rates appear in the document and nowhere in the corresponding dossier
record.
| provider | rates in the document | in the record |
|---|---|---|
| Daytona | 0.57, 0.74, 1.74, 2.27, 2.61, 3.59, 4.08 | none. The strings `3.59`, `1.74`, `2.27`, `2.61`, `4.08`, `B200` and `RTX PRO` appear nowhere in `daytona.json` |
| RunPod | B200 at 5.98 and 7.99, RTX PRO 6000 at 1.69 and 2.49 | the record holds B300 at 6.94 / 8.99 and H200 at 3.59 / 5.29 only |
| Lightning AI | A100 80GB at 1.85, RTX PRO 6000 at 4.64 | the record holds six of the eight rates and neither of these |
## What took them away
A field-by-field comparison of the document against `dossier/compute/*.json`. The
Daytona record carries the sandbox rate card: `retention-clamped` for the 15-minute
auto-stop, `request-rate` for 300 sandbox creations a minute, and `per-object-cap`
for the 5 GiB of free disk. It holds no GPU table at all. Its `limits[]` names the B300 and H200
pairs. The B200 and RTX PRO 6000 rows were inherited and attributed to a page read.
## Where the correction lives
`paid/gpu-notebooks.md` now carries a `Backed` column, marks the twelve rows `no`,
and states the count. The two sections that reasoned from those rates carry the
qualification in place rather than being deleted, because the arithmetic in them is
correct and its inputs are what is missing. The first is an
incomplete record; the second is a fabricated citation. Nothing in the tree
distinguishes them, and one page read per row is what settles it.
Six counts in compute prose disagreed with the tables beside them
2026-10-22 · corrected · documented
What changed
2.2 per cent | 11, which is 2.7 per cent |
## What took them away
`scripts/report/render.py` renders the table from the records; the prose was typed
by hand beside it. Every one of those sentences introduced itself as derived from
the records, which is what made the disagreement invisible: a reader who checked
the table found agreement and stopped. The recurring-credit roster was wrong in both directions. The prose table named
Bright Data Browser (`free_tier_kind: allowance`) and Scrapeless (`none`), and it
omitted Airtop, Buddy, Opensteer, Solari and Trigger.dev, which carry
`recurring-credit`. The count and the roster were wrong together, so each made the
other look checked.
## Where the correction lives
Every figure now reads from the record or names the field it counts. `free/free-tier-census.md` carries a note recording that its recurring table listed
two rows that do not belong and omitted five that do. `docs/compute/gaps.md` records the class of defect.
## The rule this restates
`docs/conventions/README.md` section 3.5: a table in `docs/` that restates a record
is generated between markers, and a hand-edited one disagrees with its records at
the next render. A count in *prose* had no such guard, and that is the gap this
event exposes: the tables were protected and the sentences beside them were not.
The egress share of one day's serving was 12 times too high
2026-10-22 · corrected · documented
What changed
## The claim that was superseded
`docs/compute/README.md`, `free/README.md`, `free/always-on-free.md` and
`relay-egress.md` all stated that Google's free 1 GB a month of egress is
**0.08 per cent of one day's serving**.
## What took it away
Arithmetic. The client's serving target is 500 GB a day. ```
1 GB a month / 30 days = 0.0333 GB a day
0.0333 GB / 500 GB = 0.0000667 = 0.0067 per cent
```
The stated figure is 12 times the true one. The likely origin is a division of
1 GB by 15,000 GB, which is a *month* at 500 GB a day and yields 0.0067 per cent,
followed by one further factor of 12 introduced when the monthly figure was
compared to a daily one.
## Where the correction lives
All four documents now read 0.0067 per cent. `paid/cloud-vms.md` carries the
correction note in place, because that document was written after the error and
its own arithmetic section had to be rebuilt from it.
## Why it survived four documents
The number looked small in every sentence, so no reader had a reason to check it,
and the conclusion it supported, that Google's egress is unusable for serving, is
correct at either figure.
The cheapest option in the corpus is not available for a user
2026-10-22 · corrected · documented
What changed
## What we believed
That a 20 TiB archive should be bought as a disk. The corpus priced it, published it as the
headline recommendation in the storage topic, and repeated it as the fallback in
`netdisk-pan`. The arithmetic was correct:
| option | one-time | over 60 months | per TB per month |
|---|---|---|---|
| 20 TB CMR HDD, new | USD 330 | USD 5.50 | USD 0.28 |
| 20 TB shucked or refurbished | USD 200 | USD 3.33 | USD 0.17 |
| plus a used mini-PC | USD 200 | plus USD 3.33 | plus USD 0.17 |
| plus electricity at 6 W idle | n/a | n/a | plus USD 0.03 |
USD 200 / 60 = USD 3.33, and with the mini-PC USD 6.67 to 8.83 per month, plus about
USD 0.66 of power, gives USD 7.33 to 9.49 all in for 20 TB. That is USD 0.37 to 0.48 per TB
per month against EUR 2.03 (USD 2.28) for the best managed box: **five to six times
cheaper**, and two to three times below the cold tier.
## What we found
**The client has no hardware and does not want any.** That is the premise of the project,
not a constraint to trade against. A recommendation to buy a disk is therefore not a cheaper
option — it is an option that does not exist.
Two documents led with it, one table carried it as a row, and a whole section was built
around amortising a purchase for somebody with nothing to plug the disk into. The work was
competent and entirely unusable, which is the worst combination available: a reader who
trusts the arithmetic and skips the premise spends USD 200 on a disk they cannot power.
Mistral's AI-cloud page is a 404, and the record sold it as paid capacity
2026-10-22 · superseded · documented · records: compute/mistral-compute
What changed
## What we believed
That Mistral sold an AI cloud and charged for it, so the row belonged in the paid
tables.
## What we found
The address returns **404** on all three routes and lands on Mistral's help-centre
shell, which offers a help centre, a console login, a Discord invite and a
documentation link. There is no product, no price and no signup for anything called
`aicloud`. A `paid-only` verdict asserts that a price list exists. There is no price list at
this address, so the record had been asserting the existence of something a single
read disproves. This is the eighth of its kind. The other seven are in
[`five-compute-hosts-closed-and-were-filed-as-paid.md`](../2026-10-22T050700Z/five-compute-hosts-closed-and-were-filed-as-paid.md),
written before this one was reached, and they are a different lesson: a shutdown
notice, a parking page, an acquisition. This one is plainer — the page is simply
gone — and it is worth its own line because the landing page makes it look like a
soft 404 rather than a dead host.
Six records said paid-only about a page that offers a free start
2026-10-22 · corrected · documented
What changed
the card had put the *sandbox* quotas, which belong to Hacker, under the free row |
| `teclada` | `Free (non-commercial use)` in the plan table beside $100 and $500 a month |
| `gologin` | `Start free · Flat hourly · Residential IPs included`, and `Free, no card` |
| `agent-relay` | `Sign up and go. Free to start.` |
| `nebius-contree` | `Free while in beta — runs don't consume your credits` |
| `tencent-scf` | the billing overview's own contents list `免费额度`, a free quota |
`tencent-scf` is the one worth reading twice. The record's URL is the billing
*overview*, whose table of contents names a free-quota section and then links the
pricing page that gives the amount. The card read the overview, found no number,
and recorded paid-only. The number was one link away, and the section that held it
was named in the page's own contents.
Nineteen records called a credit a tier, or a tier a credit
2026-10-22 · superseded · documented
What changed
## What we believed
That a record carrying a dollar figure for free usage was a provider with a free
tier. The card gave a number, the number looked like an allowance, and the verdict
followed.
## What we found
A credit that is spent once and a tier that refills are different products, and the
pages say which in the same sentence as the number. Three of the shapes:
**A 30-day clock on a credit.** `celesto`: *"a one-time $5 runtime credit for 30
days, no card required"*. `shardflux`: *"At the cap or after 30 days the account is
on Free, with nothing deleted."* `zo-computer`: *"14-day trial; then recovery
only."* The clock, not the amount, is what a reader plans against.
**A discount instead of an allowance.** `ibm-cloud-vpc` offers *"70% off for 12
months"* on a new VPC. That is a trial by another name and it has a calendar date
on it — 2026-12-31. `kamatera` prices from $4 a month and links a separate
free-trial page rather than granting a tier.
**A credit whose size is the trial.** `runta`: *"$50 trial balance ... 32 vCPU and
64 GiB of memory in aggregate"*. The aggregate cap, not the balance, is what bounds
how many runtimes fit.
The four that moved from `paid-only` to `trial-only` are the mirror error:
`scrapingbee` gives *"1,000 free API credits"*, `cloudbrowser` a 7-day trial,
`depot` 2,000 sandbox minutes inside a 7-day window, and `pipekit` a free trial over
a per-cluster price. Calling those paid-only hid a real trial.
Seventy-three records claimed a free tier the vendor page does not publish
2026-10-22 · superseded · documented
What changed
The shapes
repeat:
| the shape | an example |
| --- | --- |
| a rate card and nothing else | `exoscale`: "Resources are billed by the second", with a 1.42 GiB an hour free *egress* allowance that the card had read as a free instance |
| a free item that is not compute | `self-host-baremetal`: the page's two free items are phone and email *support* |
| "no subscriptions" read as a free tier | `prime-intellect`: "Tier-free pricing built for scale" means there is no plan ladder, not that a tier is free |
| a paying product reached by signup | `claude-managed-agents`, `openai-containers`, `fal`: these are token and model APIs, not machines |
| the compute is the client's own | `dagger`, `okteto`, `porter`, `coder`, `warpbuild`'s caches: a free control plane over hardware the client already pays for |
The `docker-cloud-sandboxes` row is the cleanest illustration. The record carried a
USD 25 credit. The page states *"We meter compute by the second, and nothing else. A paused sandbox costs nothing"* and prices Micro at $0.07 an hour. There is no
credit anywhere on it. The card's number was not wrong when it was written; it was
wrong by the time it was read, and nobody had read it.
The Cloudflare-plus-Brevo chain was claimed and never run, and its two halves meet at DMARC
2026-10-22 · corrected · documented
What changed
## What we believed
`Cloudflare Email Routing for inbound -> Brevo for 300 a day out` was presented as a
working chain: "a whole inbound and outbound mail presence on one domain for the
price of the domain". Nothing in `docs/email/` mentioned SPF, DKIM or MX. `grep -rn "SPF\|DKIM\|MX record" docs/email/` returned no line.
## What we found
Three things, and the second is the one that changes the advice.
**The collision is at DMARC and not at SPF.** Brevo's authentication article states:
"The SPF and MX records are not required to authenticate a domain. We only provide
these records when setting up a dedicated IP." On the free shared-IP tier Brevo
writes a Brevo code TXT, a DKIM record and a DMARC record. Cloudflare writes MX, one
SPF record and a DKIM record at its own selector. Two DKIM selectors coexist, and
only one provider wrote an SPF record, so the two halves do not fight over it. What they do share is `_dmarc`, where one record may exist. Brevo's flow asks before
replacing an existing DMARC record, so the collision is a decision rather than a
silent overwrite.
**On a dedicated IP the collision is real and the merge is mandatory.** Brevo then
provides SPF and MX, and a domain may carry only one SPF record. Brevo publishes
a merge article for this case.
**The chain works on one domain, with a caveat about alignment.** Without a branded
subdomain "SPF passes via Brevo's infrastructure, not your own domain", so on the
shared tier SPF alignment rests on Brevo's return-path and DMARC passes on DKIM
alignment. A reader who wants strict SPF alignment adds a `mail.` subdomain.
Yggdrasil has no exit nodes, so its 2.16 TB a day reaches no reader
2026-10-22 · corrected · documented · records: egress/yggdrasil-public-peers
What changed
## What we believed
A Yggdrasil public peer advertising 200 Mbit/s carries 2.16 TB per day with no
quota, because the protocol has no byte meter. The topic opened with that sentence. It was the only free lane in the topic that cleared 500 GB to 1 TiB per day, and
`docs/egress/free/bulk-egress.md` sorted it first in a table titled "which free path
actually moves 500 GB to 1 TiB a day". The record's `chaining` field said it was
"the only free lane in this topic that carries a day's volume". The arithmetic was right. `200 Mbit/s x 86,400 s / 8` is 2.16 TB, or 1.96 TiB, and a
previous correction had already fixed the unit from TiB to TB. That correction
still holds.
## What we found
The project's own about page states:
> Yggdrasil has **no native exit nodes**, nor does it have any concept of exit
> nodes, for providing access to the public Internet or to other networks. This can
> be achieved using proxies or other tunnelling solutions on top of Yggdrasil but
> this is not something we explicitly aim to provide. The FAQ adds that the network transports only IPv6 internally and routes inside
`0200::/7`, a range the IETF deprecated in 2004. So 2.16 TB per day is capacity **between two Yggdrasil nodes**. It is not capacity
between the client's origin and a reader, and a user's workload is 500 GB to
1 TiB per day of HTTP serving to the public. No part of that traffic can traverse a
Yggdrasil peer. The subject of the sentence was wrong while every number in it was
right.
Forty-nine sections printed a better verdict than their record, and the documents were the defect
2026-10-22 · corrected · documented
What changed
Each prints
a bare `Verdict: \`qualifies\`` over a record that says `fails-quota`. That is not a second opinion; it is a stale view. The direction settles it. In **49 of 49** the document prints a *better* verdict than the record:
21 print `qualifies-with-caveat` over `fails-quota`, 13 print `qualifies` over
`qualifies-with-caveat`, 6 print `qualifies-with-caveat` over `fails-egress`, 3 print
`qualifies-with-caveat` over `fails-identity`, 2 print `qualifies` over `fails-identity`, 2 print
`qualifies-with-caveat` over `trial-only`, and one each print `qualifies` over `fails-egress` and
over `fails-quota`. **Zero print a worse one.** A rule permitting a document its own reading would
make all 49 over-recommendations, and 21 of them would tell a reader that a provider qualifies when
the record says it fails on quota. The records' verdicts are also the *later* reading. in 49 of 49 the record's verdict is the later entry and the document's is an
earlier one. Borealis is the clearest: rows in areas `D/D11` and `D/D2` say `qualifies` and
`qualifies-with-caveat`, and the later `E/E16` row says `fails-identity`, which is the wave that read
the infrastructure document and found "Non-affiliated accounts are explicitly read-only until a
collection administrator grants permission." The optimistic document rests on a row that never found
that sentence. The cause is one layer up. The documents inherited the table's reading; the records did
not.
Xcode Cloud includes 25 compute hours a month, and the record called it paid-only
2026-10-22 · corrected · documented · records: compute/xcode-cloud
What changed
## What we believed
That Xcode Cloud was paid-only, because someone had to pay for it and the corpus
card recorded no free tier.
## What we found
The product page's own first section is headed **"Get started for free with
Xcode"**, and it carries the allowance:
> 25 compute hours/month — Included with Apple Developer Program membership.
Apple Developer Program membership is USD 99 a year. So the hours are not free in
the sense that the corpus uses the word — they attach to a paid account — but they
**recur every month**, and 25 hours is more than every other free tier in this
topic except the ones with no cap at all. The paid ladder above it runs from
$49.99 a month for 100 hours to $3,999.99 for 10,000.
The correct verdict is `qualifies-with-caveat`, and the caveat is the identity
gate rather than the price: `identity_cost.kind` is `card`, because the membership
is the gate. That is a different finding from "no free tier", and it is the one a
reader needs.
OVH's public cloud has no free instance, and the record priced it as one
2026-10-22 · corrected · documented · records: compute/ovh-gpu, compute/ovhcloud
What changed
## What we believed
That OVH's public cloud qualified for a user on the strength of a USD 200
one-time credit, and that a GPU row qualified the same way.
## What we found
The credit is real and it is a **trial**: `### Get started with US$ 200 free`,
with the qualifying sentence *"You can find out if our solutions meet your needs
by trying them out for free."* There is no free instance tier underneath it. The ladder starts at `b2-7` — 2 vCore, 7 GB, 50 GB of SSD — at **$31.19 a month**
or $0.0879 an hour. A `b3-8` is $0.0605 an hour. The largest row, `b3-640` at 160
vCore and 640 GB, is $2,996.39 a month. One clause on the same page matters more than the prices, because it is the axis
the topic has never recorded: **"Outbound public network traffic is included in
the price of instances in all locations except the Asia-Pacific region (Singapore,
Sydney, and Mumbai)."** For a client serving 500 GB to 1 TiB a day, that is the
difference between a metered bill and a flat one, and it is bought with the
instance: the guaranteed bandwidth runs from 250 Mbit/s on `b2-7` to 20 Gbit/s on
`b3-640`. The egress ceiling is a line item in the size you choose. USD 200 at $0.0879 an hour is about 2,275 instance-hours, which is 3.1 months of
one `b2-7` running around the clock. That is a trial, and stating it as a
qualifying free tier overstated the supply by the whole of the rest of the year.
Alibaba's sandbox prices three sleep states, and that is the axis the topic was missing
2026-10-22 · observed · documented · records: compute/alibaba-agentrun
What changed
## What we believed
That the Agent Sandbox product had a free tier of an unknown size, and that the
question "what happens to my state when the machine stops" was unanswerable from
the corpus. `docs/expansion/compute.md` lists state durability on stop versus
delete as an axis **"almost nothing"** establishes.
## What we found
The billing page answers it, in a table of four lifecycle states with the meter
for each:
| state | what happens | what bills |
| --- | --- | --- |
| 活跃 (active) | running and answering | vCPU, memory, disk |
| 浅休眠 (shallow sleep) | automatic when idle; memory snapshot kept | memory, disk |
| 深休眠 (deep sleep) | the whole instance, memory included, is frozen to persistent storage | disk only |
| 销毁 (destroyed) | permanently terminated | nothing |
The trigger for shallow sleep is stated precisely, and it is the same test Azure
puts on Container Apps: **CPU below 0.01 core, network below 1,000 bytes a second,
or no request**. Two independent vendors converging on those thresholds suggests
the numbers come from a shared measurement convention rather than from either
vendor's taste.
The free allowance is 15 GiB of rootfs disk, and the page adds a clause no record
carried: *"深休眠期间不享受 15 GiB 免费磁盘额度"* — the 15 GiB is withdrawn while an
instance is deep-asleep or snapshot-saved. So the cheapest state is the one that
does not get the free disk.
Five compute hosts had closed, and every one of them was filed as `paid-only`
2026-10-22 · corrected · documented · records: compute/kubesail
What changed
## What we believed
That these seven hosts sold compute and had no free tier. `paid-only` is a verdict
about a price list, so it asserts that a price list exists.
## What we found
Seven different ways for a price list not to exist.
| host | what the page says now |
| --- | --- |
| kubesail.com | "we've made the difficult decision to stop operating our hosted services" |
| jamsocket.com | the team joined Modal; Modal testimonials and no Jamsocket plan |
| buildjet.com | "BuildJet for GitHub Actions has been shut down" |
| computeruse.run | HTTP 404, Vercel `DEPLOYMENT_NOT_FOUND` — the project, not the route |
| hyrex.io | HTTP 402, "This deployment is temporarily paused" |
| flowdeploy.com | a parked domain serving paid link-farm text |
| cloudrouter.dev | the domain now belongs to Manaflow and sells a terminal |
The distinction that matters is `dead` versus `paid-only`. A `paid-only` row tells
a reader "this exists and costs money, move on". A `dead` row tells the next
session "do not spend a wave here". All seven had been saying the first, so each
was a standing invitation to re-check a vendor that had already answered.
Two are worth separating from the other five. **Jamsocket** is not dead so much as
absorbed: Modal bought the team, and Modal is already in this topic with a
`documented` USD 30 monthly Starter allowance. The capability did not vanish; it
moved into a record that is fresh. **Hyrex** returns 402, which is what a host in
arrears looks like, so the pause may end — but the record says `dead` with the
status and the body, which is what a later session needs to tell a revival from a
resurrection.
Azure's free compute is a monthly vCPU-second allowance, and three records carried the credit instead
2026-10-22 · corrected · documented · records: compute/azure-container-apps, compute/azure-windows
What changed
## What we believed
That Azure's free compute was the USD 200 thirty-day credit, and that every Azure
row was therefore a trial. It is
the same allowance as Google's Agent Engine, to the second, which suggests both
are priced off a common serverless convention rather than coincidence. The mechanism that decides whether it is usable is the activity test: *"A replica
is active when vCPU usage is above 0.01 cores or when data received is above
1,000 bytes per second."* A scaled-to-zero replica costs nothing; a replica
holding an open connection at any real rate is billing, so an idle agent that
polls does not sit inside the free tier.
**Windows virtual machines** carry *"750 hours each of B2ts v2, B2pts v2, and
B2ats v2 burstable VMs free every month for 12 months."* Three families at 750
hours covers three always-on machines for a year, which is a permanent-ish free
tier of a kind the topic had filed as a trial. Twelve months is still a clock,
so the verdict stays `trial-only` for that row and the number names the clock.
**Azure Pipelines** was the same mistake in a different service: one
Microsoft-hosted job at 1,800 minutes a month, plus a self-hosted job with no
minute cap. The self-hosted half is unlimited and is the half a client with a box
would use.
Google Cloud's free tier is a recurring usage allowance, and the record priced it as a credit
2026-10-22 · corrected · documented · records: compute/gcp-compute, compute/google-agent-engine, compute/google-cloud-build
What changed
The **Free Trial** is the USD 300 credit: valid for 90 days, and if it is spent or
the 90 days pass without upgrading, the billing account closes and the projects
stop. That part is a trial. The **Free Tier** underneath it is not. `cloud.google.com/free` says it plainly:
*"The free usage limit does not expire."* Compute Engine's row is one
non-preemptible `e2-micro` for the whole of every month in `us-west1`,
`us-central1` or `us-east1`, with 30 GB-months of standard disk and 1 GB of North
American egress. The detail that decides usability is a sentence the summary page does not carry:
> Your Free Tier `e2-micro` instance limit is by time, not by instance. Each
> month, eligible use of all of your `e2-micro` instances is free until you have
> used a number of hours equal to the total hours in the current month. So the allowance is **hours**, and one always-on machine consumes the whole
month. Two half-month machines consume exactly the same. A reader who assumed one
instance meant one quota would be surprised by the second machine's bill, and the
exception is stated in the same paragraph: *"GPUs and TPUs are not included."*
Three more allowances were missing from the records because the dollar figure had
replaced them. Agent Engine gets 180,000 vCPU-seconds and 360,000 GiB-seconds a
month, which is 50 vCPU-hours and 100 GiB-hours. Cloud Build gets 2,500
build-minutes a month, which Google calls promotional and subject to change.
Lambda's free tier is 400,000 GB-seconds a month, not a USD 6.87 credit
2026-10-22 · corrected · documented · records: compute/aws-lambda
What changed
## What we believed
That Lambda's free allowance was a USD 6.87 monthly credit, and that the product
was therefore `trial-only`: something that runs out.
## What we found
The pricing page states the allowance in the units Lambda bills in:
> The monthly compute price is $0.0000166667 per GB-s and the free tier provides
> 400,000 GB-s.
>
> The monthly request price is $0.20 per one million requests and the free tier
> provides 1 million requests per month. Both recur every month and neither expires. That is a permanent allowance, not a
trial, so the verdict moves to `qualifies-with-caveat`. The page adds one
exclusion that the record did not carry: *"The Lambda free tier does not apply to
functions enabling Provisioned Concurrency."* A reservation is billed from the
first GB-second. USD 6.87 is the dollar value of the compute half at that rate; it is not what
AWS publishes, and a credit is a different product from a quota.
PulsedMedia's 16 TB box was recorded twice, and one of the two is now marked as the duplicate
2026-10-22 · decided · documented · records: compute/gitpod, compute/kaggle, storage/pulsedmedia-m10g-storage-box, storage/pulsedmedia-m10g-storage-box-16tb
What changed
## What we believed
The topic held two records for a 16 TB PulsedMedia box: `pulsedmedia-m10g-storage-box.json` and
`pulsedmedia-m10g-storage-box-16tb.json`. Both carry EUR 26.99, 16 TB, RAID5, the same page URL and
the same egress string. A reader who
grepped the directory found one offer twice, and had to read prose to learn that.
## What we found
The vendor page settles it. It publishes **one** product line with four tiers, titled
"M10G STORAGE BOX 4TB", "8TB", "16TB" and "32TB", at EUR 8.99, 14.99, 26.99 and 63.99, each on the
same 500 MB RAM and 10 Gbps platform with the same egress string. There is no second 16 TB SKU and
no 12 TB storage box: the 12 TB figure in the second record's `conflicts[]` belongs to the M10G
*seedbox* ladder, which is a different product on a different page. It said the ledger "assigned two seed spellings to two documents". The canonical record also carried a defect of its own: `limits: []` with `binding: "none"`, while its
own `egress.terms` quotes "Unlimited@100Mbps (~30TB/Month / ~1TB/Day)". The port is the constraint
and this repository already has an entry naming it
([`pulsedmedia-port-is-the-cap.md`](../2026-10-22T030746Z/pulsedmedia-port-is-the-cap.md)). The
canonical record now carries the `per-ip-shaping` limit, `binding: per-ip-shaping`, and a link to
that entry. The gate requires a binding constraint on a `documented` record, so this was a live
omission rather than a tidy-up.
Abacus.AI's ladder was readable all along and has no free tier on it
2026-10-22 · corrected · documented · records: coding-subs/abacus-chatllm
What changed
The topic README listed Abacus among the dead ends on the strength of that.
## What we found
`abacus.ai/pricing` returns 200 with 144,207 bytes and the ladder is in the page title:
"ChatLLM Pricing | Basic $10, Pro $20 per user a month". Basic is USD 10 a user a month,
discounted to USD 7 for the first month, with 20,000 credits a month and **3 AI Agent
conversations a month**; Pro is USD 20 a user a month with 30,000 credits a month and
unrestricted Agent and CLI use. The verdict stays `paid-only`, and the rung rises to `documented`. The binding constraint is the one nobody would have guessed from the price: three Agent
conversations a month on Basic bind long before 20,000 credits do.
The prober's answer rates were right and the reading of them was wrong
2026-10-22 · corrected · reported · records: inference/llm7, inference/ovh-ai-endpoints
What changed
It said the
prober's payload gives LLM7 195 of 318 calls (61.3 per cent) and OVH 126 of 138 (91.3
per cent), that the documents printed 380 of 1,029 and 243 of 343, and that **neither
figure appears anywhere in either capture**. On that basis it called both numbers
fabricated.
## What we found
**The review was wrong on the facts and right about the defect.** Both figures exist,
verbatim, on the prober's per-provider track-record pages:
- `stillworks.supercapybara.com/llm/llm7`: "380 of 1029 real chat calls answered in 14
days (37%), median 1133 ms."
- `stillworks.supercapybara.com/llm/ovh-anonymous`: "244 of 343 real chat calls answered
in 14 days (71%), median 814 ms."
The review had only summed the `recent_attempts` and `recent_successes` fields of the
`/api/llm/up` JSON payload, which carries one row per *model* and therefore a rolling
per-model window. `grep -c 1029` over the API payload returns 0; `grep -c 1029` over the provider
page returns 2.
**One figure was still wrong.** The document printed "243 of 343" for OVH. The page says
244. Read correctly, LLM7 answers 68 per cent of the
calls it accepts, and the topic's ordering was wrong: OVH is first on both measures, but
second place belongs to free.ai (96 per cent accepted-only) and Pollinations (100 per
cent), with Kilo at 80 and LLM7 at 68. **LLM7 is fifth on acceptance, not second.**
The 14-day window is the prober's own and is stated on its page.
Cloudflare's free allowance was overstated 1,250 times, and the conclusion built on it was void
2026-10-22 · corrected · documented · records: inference/cloudflare-workers-ai
What changed
The document multiplied by 1,250 instead of by 30 and
never wrote the multiplication out, so nothing in the sentence could be checked
against itself. The error overstates the free allowance by a factor of 1,250. The corrected arithmetic, with the ranges computed from the 39 text-generation
models on the pricing page rather than asserted:
| quantity | value |
| --- | --- |
| free allowance a month | 300,000 Neurons |
| input tokens at 2,457 neurons/M (`llama-3.2-1b-instruct`) | 122.1M a month, 4.07M a day |
| input tokens at 1,542 neurons/M (`granite-4.0-h-micro`, cheapest free-plan input) | 194.6M a month |
| input tokens at 60,000 neurons/M (`qwq-32b`, dearest free-plan input) | 5.0M a month |
| free-plan input spread | a factor of 38.9 |
The old sentence also claimed the spread between cheapest and dearest model was "a
factor of about fifty". Across the 31 models the free plan can reach it is 38.9; across
all 39 including the eight paid-only ids it is 82.5. Neither is fifty.
**The conclusion did not survive.** The client's target workload of 15M input and 37.5M
output tokens a month on `llama-3.2-1b-instruct` costs 15 x 2,457 + 37.5 x 18,252 =
**721,305 neurons**, which is 2.4 times the whole free monthly allocation. The input
half alone is 12.3 per cent of it; the output half alone is 2.28 times it. Workers AI on
a free account cannot carry the target workload, and the row is now stated as a fallback
rather than as a plan. A second number in the same section was wrong in the same direction. The limits page says **300** for
Text Generation; 3,000 is the figure for image classification, object detection and text
embeddings. A reader sizing a pipeline on 3,000 would have designed for 10 times the
ceiling.
The `reported` window is 14 days, and 323 compute records prove it
2026-10-22 · decided · measured
What changed
## What we believed
That the `reported` rung's 14-day window was a rule about forum posts. The
justification in the policy file says so: *"a forum post describes a moment, and
the operator may have fixed it."* Under that reading, the 323 `compute` records
carrying `confidence: reported` at 20 days are a false positive — they are
mechanically converted catalogue cards, not forum whispers, and 20 days is not
long for a price.
## What we found
The window is right and the records are correctly flagged. That is `reported` under the ladder's own
definition — a third party stated it — and the ladder's rule is that an inherited
number starts at `reported` until somebody here re-measures it. The records are
honest. The flag is honest. What is wrong is the assumption that they are
comfortable.
**Second, the alternative was worse.** An earlier fixer proposed treating them as
`documented` because they cite a vendor URL. The rung is correct; the work is outstanding.
The 70 deferred netdisk-pan providers are reconciled: 70 records, 4 new documents, 15 graveyard rows
2026-10-22 · reconciled · mixed
What changed
## What was deferred
The `storage` pass cut `netdisk-pan` out as a peer topic and deferred 70 providers to it rather than writing them. Two did, under `dossier/storage/`: Amazon Photos and Baidu Pan. `dossier/netdisk-pan/` then held 52 records, and those 52 were largely the *public instances* the netdisk writer had probed itself. It had not picked up the deferred set, so the providers the storage pass named — the five purchasable managed Nextcloud hosts, `123pan`, `ploud`, `1yunpan`, `pan.moe`, `quark`, the twelve consumer drives with the largest installed bases — were still unwritten. Six were `qualifies`, and they were the only group in the whole seed for a user could **buy** without an identity problem: paid managed Nextcloud with WebDAV at EUR prices. Writing a second file for the same public instance would have been the duplicate this repository's `dossier/README.md` exists to prevent. That arithmetic is 56 + 14 = 70. The page claimed to be exhaustive and 15 records with an evidence trail had no row.
## The four reserved slugs that could not be used, and one that was
The ledger's reserved slug is a contract, and 60 of the 70 were usable names. the live pricing block gives the counts per tier. This matters because a plan that divides a 10 TB unit across more than ten credentials needs a different provider. The live Seafile page prices Business S by user count and Business L per user. The record carries the live page and names the disagreement. At EUR 2.40/TB/month it is also the cheapest per terabyte found.
StepFun's USD 9.99 tier was live, and a month-old date error hid the cheapest plan in the market
2026-10-22 · corrected · documented · records: coding-subs/stepfun-step-plan
What changed
`under-20.md` said "its page returned a 396-byte
shell today. Not a row."
## What we found
Two errors stacked, and either alone would have hidden the tier.
**The URL was the wrong one.** `www.stepfun.com/pricing` is a 2,262-byte marketing shell
with no plan name and no price, and it still is. The table dated the
row a month earlier than any pass that contains it, then used that age to dismiss the
reading as stale.
Devin and Windsurf were never dead; a broker 404 was read as a vendor death
2026-10-22 · corrected · measured · records: coding-subs/devin, coding-subs/windsurf
What changed
## What we believed
Both records said `verdict: dead` and `confidence: unverified`. Devin's evidence entry
read "the read broker returned 404 with reason no-content; no plan name was present".
Windsurf's note read "the pricing URL is 404 to every extraction route while the product
is still sold ... the next session should try the app subdomain."
## What we found
**Devin is live.** `devin.ai/pricing` returns HTTP 200 with 582,848 bytes and a complete
ladder: Free USD 0, Pro USD 20 a month, Max USD 200 a month, Teams USD 80 a month plus
USD 40 a month per full dev seat. The Free card reads "Light quota to code with agents",
"Unlimited inline edits", "Unlimited Tab completions", and the page carries a
"Compare Plans Free $0/month Pro $20/month Max $200/month Team $80/month" row.
**Windsurf did not 404 and did not move to a subdomain.** `windsurf.com/pricing` returns
`HTTP/1.1 308 Permanent Redirect` with `Location: https://devin.ai/pricing`, and
`windsurf.com` itself 308s to `devin.ai/desktop`. The product was acquired or merged: the
brand, the host and the ladder are Devin's now, and there is no separate Windsurf price
list to find. The old note sent the next session after a subdomain that does not exist
and after a product that no longer has its own pricing.
**Both records were `dead` on a broken link rather than on evidence of death.** That is
the distinction the verdict vocabulary exists to carry, and both got it backwards.
Three hundred and fifty compute records claimed to have been checked after their evidence was
2026-10-22 · corrected · measured
What changed
## What we believed
That 350 `compute` records had been verified on 2026-10-22. Every one carried
`"verified_at": "2026-10-22T00:00:00.000Z"`, which is a claim that somebody
confirmed the record against the live service that day. The staleness gate read
that field as the record's freshness and passed them.
## What we found
Two generator scripts wrote the constant. `gen-records.py:15` defines
`PROBE_AT = "2026-10-22T02:16:12.000Z"` and stamps it on every record at
`gen-records.py:166`; `gen-census.py:14` defines `AT = "2026-10-22T02:35:00.000Z"`
and does the same. Neither script read a page. the card is the source, not the vendor
page". The dates had also been
flattened to midnight, which shows the value never came from a real probe
timestamp. The gate could not see it until the evidence clock existed. this entry fixes the data the clock exposed. The three non-compute records in the same report are a different defect and are
**not** corrected here. `storage/aws-codeartifact`, `storage/blomp` and
`storage/stoat-revolt-self-hosted-instance` fail on `evidence-past-topic`: an
oldest evidence row of 942, 272 and 752 days against a 180-day budget. Their dates
are honest — a genuinely old source is being cited, and the gate is right to say
it has expired. Dropping the row would hide the expiry, so they are left failing
and reported as open findings.
ZenRows' per-1,000 price was the annual-billed rate quoted as the monthly price, and every per-1,000 figure in the paid lane was 15.9% low
2026-10-22 · corrected · measured · records: crawler-scraper/zenrows
What changed
## What we believed
The paid lane's headline was **"ZenRows at USD 0.23 per 1,000 plain pages on Launch is the
cheapest in the class"**, derived from USD 58 a month for 250,000 credits. Build was
USD 16 for 45,000 at USD 0.36. Every rendered, proxied and fully-defended figure in three
documents multiplied one of those two numbers.
## What we found
USD 58 and USD 16 are the **annual monthly rate**, not the monthly price. The vendor
page's own structured data says it, verbatim:
> "The price is the annual monthly rate of the entry rung (pay for 10 months, get 12).
> Annual monthly rates run $16 to $33; monthly billing of the same rungs is $19 to $39."
and for Launch:
> "Annual monthly rates run $58 to $108; monthly billing of the same rungs is $69 to $129."
So the month-to-month prices are **USD 19 and USD 69**, and the per-1,000 figures are:
| plan | annual, as quoted | monthly, the price | error |
| --- | --- | --- | --- |
| Launch, 250,000 credits | USD 58 = USD 0.232 per 1,000 | USD 69 = USD 0.276 per 1,000 | 15.9% low |
| Build, 45,000 credits | USD 16 = USD 0.356 per 1,000 | USD 19 = USD 0.422 per 1,000 | 15.9% low |
Every derived figure moved with it: a rendered page at 5 credits is USD 1.38 not
USD 1.16, a premium proxy at 10 credits USD 2.76 not USD 2.32, and both at 25 credits
USD 6.90 not USD 5.75.
The verdict survives. ZenRows is still the cheapest plain page in the class against
ScrapingAnt's USD 1.90 and ScraperAPI's by-plan pricing. **The number was wrong and the
conclusion was right**, which is the shape that survives a review nobody runs.
The 15.9% is the annual rate's discount against the monthly one: 58/69. The error is
not uniform in the other direction, because the monthly rate is 19.0% above the annual
one, and a document that quotes either without the basis can be checked against neither.
Firecrawl carried the same defect on the same day and in the same three documents: its
Hobby tier is "USD 19/month billed monthly, or USD 16/month billed annually", and the
card above Standard is headed "Prices shown are per month, billed annually". Hobby moved
from USD 3.20 to USD 3.80 per 1,000, which is the same 15.8% discount.
`read` was documented with `curl -f`, which deletes the diagnostic the ladder exists to deliver
2026-10-22 · corrected · measured
What changed
## What we believed
The broker document's `read` examples were written as `curl -qfsS`. The `-f` was copied
from the `search` and `archive` calls beside them, where it is correct: those services
answer `200` or a problem document, so a `-f` failure loses nothing. The document also carried, six lines below the `read` block, the rule that a reader must
read `upstream_status` before the body, and that a `200` from this service is not evidence
about the origin. The two statements contradict each other and the contradiction was not
noticed for a whole wave.
## What we found
`read` passes the origin's status through. The service's own contract states it: "An
origin's 4xx or 5xx page is answered with the origin's status, not 200: the page's
Markdown is the body, and the status is in `x-reader-upstream-status` and
`upstream_status`."
So `-f` turns every 404, 409 and 422 into `curl: (22)` with **no body written at all**. ```
The same on the Reddit thread the document uses as a worked example: `-qfsS` gives
`curl: (22) ... 409`, and without `-f` the answer is a 929-byte problem document naming
the challenge. The repository's own wrapper already disagreed with the document:
`sh scripts/broker/broker.sh read https://example.com/pricing` exits 1 **with the body on
stdout**. A second defect sat on the same lines. The paste URL was `https://example.com/pricing`,
which does not exist: the first command a cold reader ran returned a 404 at best and
`curl: (22)` at worst.
Hurricane Electric's free DNS was recorded with `interface: rest` beside a detail field saying it has no REST API
2026-10-22 · corrected · documented · records: domains-dns/he-dns
What changed
## What we believed
`"interface": ["rest"]`, with `interface_detail` reading "a web panel; **no documented REST API for
record management**, and the dynamic-update path is a key-based URL". The record's `confidence` was
`documented`, and its single evidence entry was a probe of the login portal returning 200 with 16,458
bytes.
## What we found
Three defects in one small record, and the page states the facts the record needed.
The interface field contradicted the sentence beside it. The only programmatic path is a key-based
dyndns URL that takes `ipv4` and `ipv6` separately, with a `txt=` variant for ACME DNS-01 and the
note that the dynamic record must first be created in the panel. It cannot create a zone and cannot
enumerate records, so it is not a REST API and `rest` is the field a reader filters on.
The `documented` rung covered the eligibility gate, not the caps. The page does state the gate: "The
Open Beta has been expanded and now includes our IPv6 certification or tunnelbroker account holders,
Colocation customers and those with Transit services". Nobody had read it, because the only evidence
entry was a probe of the portal.
And the `limits[]` entry carried a `write-gated` value whose content was "the record and query caps
are unpublished", which is a statement about an absence and not a limit.
deSEC was recorded as having no published cap and recommended for many zones, and a new account gets one domain
2026-10-22 · corrected · reported · records: domains-dns/desec
What changed
## What we believed
The comparison table read "deSEC | no published cap; 300 RRset changes per domain per day", the
record set `free_tier.unit` to `unlimited`, and the verdict was "the right choice for many small
zones". The reasoning was that the rate-limit page documents per-domain rates and says nothing about
how many domains an account may hold, which was read as no cap.
## What we found
deSEC's rate page documents per-domain rates and says nothing about the domain count. The count
exists anyway, and it is of order one.
A deSEC staff reply on the project's own forum gives the formula: "the limit is
`max(1, s + round(sqrt(s)))`, were `s` is the number of domains delegated to us with DNSSEC
enabled", which is 6 for `s = 4`. An earlier thread records a new account's allowance: "New accounts
are limited to one domain and there is a note when you add a domain: 'Contact support to apply for a
higher limit.'" An independent write-up records the same experience, and the signup form says only
"Your first domain (you can add more later)".
CockroachDB Basic's trial was recorded as ending in "interruption", and it ends in an unrecoverable deletion
2026-10-22 · corrected · documented · records: databases-kv/cockroachdb-basic
What changed
## What we believed
`retention.stated` read "the trial ends when the last credit is used or the credit expires, and a
payment method must be on file by then to avoid interruption". The finding the documents carried was
the card ambiguity between two first-party pages.
## What we found
The page states: "If the trial ends and a payment method has not been provided, a 30 day grace
period begins where your organization's clusters are throttled, and you are restricted from
modifying their configuration". Then: "If the end of the grace period is reached and no payment
method has been added, all clusters in the organization are deleted. Deleted clusters can not be
restored."
For a client whose constraint is no budget, that is the only free relational tier in this topic whose
published end state is that the data is gone.
Turso's free plan was recorded as having no idle clock, and it archives an inactive database after 10 days
2026-10-22 · corrected · documented · records: databases-kv/turso
What changed
## What we believed
`retention.stated` read "databases persist while the plan is active", and the comparison table had a
write-budget column and no idle-clock column at all. The verdict was `qualifies`.
## What we found
Turso's CLI reference states: "Databases get archived after 10 days of inactivity for users on a
free plan." The API reference exposes a `groups/unarchive` endpoint, so the archive state is
reachable programmatically. Turso's own announcement of its paid Hobby plan sells "your databases
never archived or scale to zero" as the upgrade, which is the vendor saying the free plan does
archive.
The archive is not a deletion: the bytes survive and an unarchive restores service. It is still the
binding constraint, because it is what a job that runs less often than every ten days meets first.
A `measured` claim that GHCR issues no anonymous pull tokens was a probe of a repository that does not exist
2026-10-22 · corrected · measured · records: ci-cd-runners/ghcr
What changed
## What we believed
"GHCR does not issue anonymous pull tokens. A request to
`https://ghcr.io/token?scope=repository:library/hello-world:pull` returned **403**" with
`{"errors":[{"code":"DENIED","message":"requested access to the resource is denied"}]}`. The record
carried the `measured` rung on the strength of that 403, and the document built an asymmetry on it:
Docker Hub base images are free to pull and GHCR ones are not, so the build chain's scarce link was
"pulled anonymously".
## What we found
GHCR issues anonymous pull tokens for any public package. `library/` is Docker Hub's namespace and
does not exist on `ghcr.io`, so the 403 was a 404-shaped answer about the path and not a statement
about anonymity.
Re-run on 2026-10-22, three public packages:
```bash
curl -s "https://ghcr.io/token?scope=repository:catthehacker/ubuntu:pull&service=ghcr.io"
# 200, 69 bytes: a token JSON body
curl -s -H "Authorization: Bearer $TOKEN" \
-H "Accept: application/vnd.oci.image.index.v1+json" \
"https://ghcr.io/v2/catthehacker/ubuntu/manifests/act-latest"
# 200, 754 bytes, schemaVersion 2, application/vnd.oci.image.index.v1+json
```
`actions/actions-runner` returned 200 with a 73-byte token and a 1,609-byte manifest.
`homebrew/core/hello` returned 200 with a 69-byte token and a 9,610-byte manifest at tag `2.12.3`.
The control, `library/hello-world`, returned 403 with 86 bytes every time, which is why the error
was invisible: the writer's own control was the thing under test and it was the wrong resource.
Digests of the saved responses, so the next session can check this claim rather than trust it:
token `e26b35c1dc64bf51b6e02f5a20f7d7fbf436a944d445155e8fc313a42ec3a808`, manifest
`62d572b92f9f32d3427b6d220ad1f9dca9c7b6ffad37d295425037dbff78abaf`.Aiven's free plan was recorded as the one that never pauses, and it powers off on inactivity
2026-10-22 · corrected · documented · records: databases-kv/aiven-free
What changed
## What we believed
Aiven's Free plan was the one free managed Postgres in this corpus that did not pause on
inactivity, and that was the property the class was formed to deliver. The topic's comparison table
read "Aiven | 1 GB per service | **never pauses** | email | qualifies-with-caveat", the class
section explained the trade as "a database that stays up at 1 GB, or one that sleeps at 20 GB", and
the verdict sentence read "The one free Postgres here that a weekly cron can rely on".
## What we found
Aiven's own pages say the opposite, in three places.
The free-PostgreSQL page, under the free-plan limits: "Service powers off after a period of
inactivity (you'll be notified by email and in-platform beforehand)", and in prose: "It's free
indefinitely with no time limit, but the service is automatically powered off after a period of
inactivity".
The free-tier documentation gives the two triggers: "Power off free services with no initial usage
within the first few hours after the service is running", and "Power off free services with no
continuative activity on the service".
The power-cycle documentation gives the consequence: "Services powered off for more than 180 days
are automatically deleted." The 180-day grace does not apply to a service whose major version has
reached end of life, which is deleted within 7 days of the power-off.
The paid step is what removes the clock, and the free-plan page says so: "Developer tier services
are not automatically powered off when inactive", at USD 5 a month for 8 GB.
CSC Allas and LUMI-O were `qualifies` in the table a reader scans first, and `fails-identity` everywhere else
2026-10-22 · corrected · documented · records: storage/csc-allas-10-tib-default-per-project-s3-swift-on-ceph, storage/lumi-o-150-tb-allocated-per-lumi-project-by-default
What changed
## What we believed
`docs/storage/free/research-clouds.md` shipped two table rows in its size-ordered comparison:
| provider | allocation | verdict |
| --- | --- | --- |
| CSC Allas | 10 TiB per project by default | `qualifies` |
| LUMI-O | 150 TB per project by default | `qualifies-with-caveat` |
The same document, forty lines below the table, said the opposite in prose: "That is a quote from
the vendor, and it makes the verdict `fails-identity` rather than a caveat." `gaps.md` and
`free/README.md` both recorded `fails-identity`. The
seed's own `verify/csc-allas.json` and `verify/lumi-o.json` — independently verified round-1
files — said `fails-identity` with `confidence: high`. That part is not in dispute and never was.
**The gate is what decides it.** A CSC project is created through MyCSC only by a holder of a
Haka or Virtu login or a home organisation with a CSC contract. LUMI-O exists only inside a LUMI
or EuroHPC project. `qualifies`
there reads as "10 TiB available", which is the single most expensive misreading this topic
offers. The correct reading was in the prose below the table and in a different document.
**And the sentence promising `conflicts[]` was false.** `research-clouds.md` said "The record
carries all three claims in `conflicts[]`". Neither record carried the key at all, so a reader
who went to check found nothing to check.
Two seed corrections were reverted, and one of them put a closed service back on the table
2026-10-22 · corrected · documented · records: compute/ctrl-c-club, compute/tilde-zone
What changed
Eleven of thirteen did,
some of them improved: Oracle's time-denominated quota, GitHub Codespaces' restored
120 hours, Hugging Face's PRO gate, Koyeb's published free Instance, Blinkenshell's
Supporter-only ports, Northflank's card requirement, Azure F1's real shape,
ModelScope's withdrawal and its `.cn` phone gate, and hashbang's 30-day sweep. Two did not.
## What we found
**Ctrl-C.club's signups are closed and the destination had dropped the fact.** The
seed records it as a correction in its own right and carries the vendor's words:
"Signups are closed for now! Thank you for your interest in Ctrl-C.club! We're
pausing signups to work on some scaling issues. You can still submit a signup to get
on a waitlist." `grep -rli waitlist` over `docs/`, `dossier/` and `history/`
returned three storage files and nothing in compute. The row appeared in two
tables as a service a reader could sign up to. That is the worst shape a stale fact takes here: not a wrong number, but a door a
reader walks into. It set `class: changed`,
`cost_usd: unknown` and an empty quote, and it wrote down what would recover the
row: a first-party page that names an operator and a signup path. Its own
`free_tier.stated` conceded "no quota, lifetime or login policy was published to
either pass" and its `limits_note` said "the terms are unread", which is a record
arguing against its own verdict on one screen.
## What changed
**ctrl-c.club** gained a `write-gated` limit quoting the waitlist sentence, the same
sentence in `identity_cost.detail`, the soft-limit wording in `notes`, and two
`evidence` entries from `signup.ctrl-c.club/`. The document row now reads "email,
and signups are closed: waitlist only", and the paragraph in
`always-on-free.md` carries the vendor's words.
**tilde.zone** is `confidence: unverified` with `verdict: qualifies-with-caveat`,
which is the honest pair: the reachability is measured and the offer is not
established. The record says in its own `notes` that recovering it needs what R22
asked for, and the document says the same.
⚠ **The verdict vocabulary has no `unverified` value**, so the record cannot say in
its verdict field what its confidence field says. `qualifies-with-caveat` is the
least wrong of the eight values because the machine does answer, and the confidence
rung is where the doubt is recorded. That is a schema limitation and not this
record's finding.
## What this cost, and what it would have cost
One row a reader could not sign up to, and one row whose verdict outranked its
evidence. The general lesson is the one this repository keeps relearning. A correction that
lives in a seed's review file does not survive a rewrite unless the rewrite reads
the review file.
EUR 8.21 per TB was the dollar figure, and the ratio built on it was the wrong ratio
2026-10-22 · corrected · documented · records: storage/hetzner-object-storage
What changed
## What we believed
The topic's opening argument was built on a comparison between two Hetzner products:
> The Storage Box is EUR 2.03 per TB per month with unlimited traffic. The Object Storage is
> EUR 8.21 per TB per month and metered. The 4.0x gap is the egress term and nothing else. `docs/storage/paid/storage-boxes.md` carried the same number under a heading that named the
ratio: "Hetzner: two products, one machine, a 4x gap".
## What we found
**EUR 8.21 is the dollar figure.** The record computes it correctly in dollars: EUR 146.16 at
1.1234 USD/EUR is USD 164.19, which is USD 8.21 per TB. The euro figure for the same 20 TB stored
and 20 TB read is **EUR 7.31 per TB**. The arithmetic, from the live page on 2026-10-22:
| line | calculation | EUR |
| --- | --- | --- |
| base, 1 TB storage and 1 TB egress included | `6.49` | 6.49 |
| storage overage, 19 TB for a 730-hour month | `19 x 0.0087 x 730` | 120.67 |
| egress, 19 TB at EUR 1.00 per TB | `19 x 1.00` | 19.00 |
| **total** | | **146.16** |
| per TB | `146.16 / 20` | **7.31** |
So the sentence printed a dollar digit with a euro code, which `docs/conventions/README.md` §4.1
names as the defect the rule exists to prevent: *"Do not print one unit and label it another. That is the defect these rules exist to prevent, and it has been shipped."*
**And the ratio was computed across the error.** `8.21 / 2.03 = 4.04` divides a dollar numerator
by a euro denominator. The document had silently replaced an audited 3.6x with a 4.0x that existed only
because of the unit error.
The rung beside a provider was the rung we wished it had: 405 of 405 sections printed a class their own record did not carry
2026-10-22 · corrected · measured
What changed
## What we believed
Every provider section ended its quoted block with one sentence naming the source and its class:
> That is the record's own wording (`documented`, 2026-10-21). The sentence was true about the *wording*: the block is the record's own `free_tier.stated`
text verbatim. The class beside it was not read from the record. It was written by hand, once
per section, and it said `documented` wherever the writer believed the claim was solid. `docs/storage/README.md` stated the consequence in prose: "The 21 records marked `measured` were
re-run on 2026-10-22 against the live service; Zero `measured`, at a moment when the
other ten topics held 86 between them. So the README's 21 was not a stale count; Two of the topic's own documents
had already noticed the rule and applied it once each (`free/ephemeral-hosts.md`, "read off the
record's own text (`inferred`)"), which is how we know the writer knew it. The cause is not carelessness at the sentence. It is that the class was assigned by the document
author from memory of how the research felt, while the record was assigned by a converter from
what had actually been read. Two assigners, one fact, no reconciliation.
The SSH relay measurement was handed to a topic that never received it
2026-10-22 · restored · measured
What changed
## What we believed
That the relay belonged to the `egress` topic and that `egress` had it. `docs/compute/relay-egress.md:9` said so in a marked line: "The relay itself is the
`egress` topic's. Its transports, tokens, colo pool and byte limits belong there and
this document does not repeat them." A reader who wanted the numbers was sent to a
topic that did not contain them.
## What we found
Neither topic had it. The `egress` topic held 37 records and five documents
and no relay of its own; `expose-a-local-port.md:253` mentioned the 72-hour pair life
in one sentence of prose, which was the only trace of the experiment in the tree. The line was not a filing decision. It was a handoff with nothing on the far side,
and it read as a routing instruction to every later session, which is why the
material stayed lost through a review that counted 366 catalogue rows and found
zero missing providers. A provider inventory cannot see a lost measurement.
## What was decided, and why
The material belongs to `egress`. A relay is a byte transport, not a machine, and the
`egress` topic's own first split is signalling versus relaying. `compute` owns what a
machine costs once its network is accounted for; `egress` owns the relay's byte
limits. Those are two questions and the second is the one the 64 MiB cap answers. The fault that produced
this entry was a cross-reference with no owner behind it; The four configuration facts that make a
sealed host serve SSH (the `-Y` passwd file, the uid match, the non-world-writable
work directory and the client-side preload) are carried as prose in the document,
because they are the reusable part and they cost a wave to find. They are still not established: no session was held to the 720-minute cap,
no `direct` road was forced, no IPv4 egress was observed and no throughput beyond
one 64 MiB object was measured.
Browserless was excluded from two documents on a premise the live page contradicts
2026-10-22 · corrected · documented · records: compute/browserless
What changed
## What we believed
Browserless sold nothing below USD 350 a month. Both browser documents listed it
under "what did not work" and the record was `paid-only`, justified in one
sentence: "the entry plan is USD 350 a month. There is no free lane."
## What we found
The page has a **Free plan at USD 0/month with no card**, 1,000 units a month, 2
concurrent browsers and a 2-minute session cap. The paid ladder starts at
Prototyping, USD 25 for 20,000 units, then Starter at USD 140 for 180,000. The USD
350 tier is the fourth rung, not the entry price.
1,000 units at up to 30 seconds each is 8.3 browser hours a month, and the
consumer-connection proxy draws from the same pool at 6 units per MB, so one gigabyte of
proxied traffic is 6,144 units, or six months of the whole free allowance.
The Modal sandbox rate was a hardcoded literal, 3.2 times the page's own arithmetic
2026-10-22 · corrected · documented · records: compute/modal
What changed
## What we believed
Modal's Sandbox at 2 vCPU / 4 GiB cost USD 0.76 an hour, so the USD 30 monthly
credit bought about 39 hours. That sentence was the topic's headline: it appeared
in the README's "three facts that decide every recommendation", in the free
sandbox table, in the paid sandbox table, in the minimum-bill table, and in the
census of recurring credits. It was the number the topic quoted most often.
## What we found
USD 0.76 is not the 2 vCPU / 4 GiB rate. It is the **8 vCPU / 8 GiB** rate at the
same card: 4 physical cores plus 8 GiB is USD 0.7597 an hour. The 2 vCPU / 4 GiB
shape is **USD 0.2380** an hour, and the USD 30 credit buys **126 hours**.
The arithmetic, from the page's own numbers:
```
1 physical core x 0.00003942 x 3600 s = USD 0.1419/h
4 GiB x 0.00000667 x 3600 s = USD 0.0960/h
= USD 0.2380/h
USD 30 / 0.2380 = 126.1 sandbox hours
300 h = USD 71.39 730 h = USD 173.71
```
Two things made this hard to see. The first is that a physical core is 2 vCPU on
Modal's card, and the page says so in a sentence, so "2 vCPU" is one core and not
two. Charging two cores for two vCPUs is a silent factor of two. The second is
that the 3x non-preemptible multiplier is real, which makes any large number look
explained: a reader who checks that the multiplier was applied stops there.The write-flag lie is a mechanism, not a count: 13 of 14, and the bitmask cannot find the one that works
2026-10-22 · corrected · measured
What changed
## What we believed
The corpus stated the write-flag lie as a count:
> Eight instances advertised `"write": true`; **all eight refused PUT** with
> `{"code":403}` inside an HTTP 200. That is a true observation and it was recorded as the topic's defining trap. For an anonymous guest on no list it returns **true
always**, whatever the role permits. The upload gate (`server/middlewares/fsup.go`) is:
```go
if !user.CanWriteContent() && !common.CanWriteContentBypassUserPerms(parentMeta, parentPath) { deny }
```
`CanWriteContent()` is bit 3. So the listing's `write` field says nothing about the
gate, `write_content_bypass` says everything about one of its two terms, and
neither is the answer on its own. Measured over the 30 listable hosts, one request each:
| field | true | false | absent |
| --- | --- | --- | --- |
| `write` | 14 | 13 | 3 |
| `write_content_bypass` | **1** | 12 | 17 |
## The second correction, which is the more useful one
The plan's first pass used the `permission` bitmask to find a writable host and
would have reported **two**. `permission: 256` is bit 8, WebDAV read, and it is not
write. Both `data.yanshiqwq.cn`, which is writable, and `zhuifan.link`, which is
not, report 256. The writable host is writable **because the bitmask is incomplete**. It reports
`permission: 256` with bit 3 clear, and a per-path metadata override grants the
write. So an argument from the bitmask finds zero hosts and misses the one that
matters.
⛔ **Read the bitmask to explain a result, never to reach one.**Two throughput numbers for one host cannot both stand: the CDN read path is cache state, not a rate
2026-10-22 · corrected · measured
What changed
The unit is also written as MB/s for a byte count over a
second, which is MiB/s.
## What we found
Six whole-object reads of the same 36,747,196-byte file, minutes apart, one
connection each:
```
11.54 12.54 42.96 43.77 67.43 78.58 79.58 MiB/s
```
A factor of 6.9 between the slowest and the fastest read of **one object from one
host in one session**. Parallel ranged reads made it worse rather than better:
| connections | shard | aggregate | single-stream baseline, same run |
| --- | --- | --- | --- |
| 8 | 8 MiB | 6.5 to 7.7 MiB/s | 18.1 to 51.2 MiB/s |
| 8 | 32 MiB | 10.5 MiB/s | 51.2 MiB/s |
| 32 | 8 MiB | 2.6 to 2.9 MiB/s | 13.1 to 35.5 MiB/s |
| 32 | 32 MiB | 7.5 MiB/s | 13.1 MiB/s |
**Every parallel figure is below its own baseline on the same run.** Eight
connections to one cached object contend for one client uplink, and each
connection's share falls as the count rises. The one number that is stable is the range read: five attempts at
`bytes=0-1048575` returned 206 with `Content-Range: bytes 0-1048575/36747196` in
**71 to 88 ms**, which is 11.4 to 14.1 MiB/s and is a first-byte-plus-1-MiB figure
from the nearest PoP.
The public-instance half-life was an impression and is now 9.0 months, and the cohort that produced it was edited in place
2026-10-22 · corrected · measured
What changed
## What we believed
Two claims, both stated as impressions, and both true in direction. It gave no rate, because one wave cannot give one. The recon plan then fitted a half-life of **8.9 months** from a 144-host cohort
dated 2024-01-20, on the stated premise that the source page was "a dated snapshot,
which is what makes the half-life measurable".
## What we found
**The half-life is 9.0 months and the arithmetic holds, but the premise was
wrong.** The page at `kuhehe.github.io/20240120224502/` is not a snapshot. Thirty-six
commits touch that path. The earliest revision the GitHub API returns is
2024-02-29T14:59:37Z and the last is 2025-06-17T14:45:50Z, and the body carries a
section headed `3月23日新发现的alist资源站` ("AList sites newly found on 23 March") and
opens `不定时更新中` ("updating from time to time"). So the 144-host cohort mixes hosts first listed in January 2024 with hosts added as
late as mid-2025, which biases survival upward. Recomputing on the **126 hosts
present in the earliest surviving revision**, dated from that revision:
```
exposure = 2.645 yr, survival = 11/126 = 8.73%
t1/2 = 2.645 x ln2 / ln(1/0.0873) = 0.752 yr = 9.0 months
```
against 2.754 yr and 11/144 = 7.64%, which gives 8.9 months. **The correction
changes the method and not the answer**, and that is the only reason the number is
still quotable. The two claims that were genuinely new are a mechanism and a rate:
- **The write flag is not the write gate.** `write` in a listing is
`common.CanWrite`, a per-user exclusion-list negation that is always true for a
guest on no list; the upload gate is `CanWriteContent() (bit 3) || a per-path
metadata override`. Source: `server/handles/fsread.go` and `server/middlewares/fsup.go`,
read 2026-10-22.
- **7.4% monthly turnover**, derived from the same fit as `1 - 0.5^(1/9.0)`. That
number decides the discovery cadence: monthly, not daily. The census was also re-derived from the raw probe files and differs from the plan's
figures: **169 hosts, 33 answering as an API, 30 listing mounts, 14 advertising a
write, 1 writable.** The plan reported 32, 29 and 1 from a 170-host population; the
difference is a union of overlapping host lists and four individually probed hosts
that the plan counted in the total but not in the numerators.The evidence ladder had two rules, the staleness policy enforced neither, and a retracted AList denominator was published
2026-10-22 · corrected · measured
What changed
## What we believed
Three things, and each had a document behind it. 1. **The evidence ladder was one rule.** Section 3.1 said a record's class is "the class of the
field its verdict depends on most"; the same section's signature line said "the weakest link
sets the class", and its last paragraph said `confidence` is "the weakest rung among the
fields that matter". `dossier/README.md` and the schema's field comment both said weakest. Three homes, two rules, and no check anywhere that could arbitrate. 2. **The staleness policy enforced the windows it stated.** Section 10.2 gave five per-class
windows and section 10.3 a topic table, and said the shorter binds. The shipped
`staleness.policy.json` had no class dimension at all, and `staleness.py` never read
`confidence`. Nothing in the repository could see a record that had been re-dated. 3. **"Eight of nine AList instances" was the rule-3 headline.** Rule 3's failure paragraph
carried it, and `README.md` repeated it.
## What we found
**The ladder.** Two honest readers computed different rungs for one record. Where a record's
quota was `measured` and its egress `inferred`, section 3.1's first sentence gave `measured` and
its second gave `inferred`. The failure mode is the one the document names at section 13: a rung decision is
negotiable when two rules describe it, and a session picks the higher.
**The policy.** Four planted records settled it. A 40-day `reported` claim passed as `fresh` in
a topic with a 120-day window, because the class window did not exist in the data. The derived methodology inherited the brief. That is the defect section 13 calls
"the summary instead of the source", committed by the document that names it.
Yggdrasil example peer is metered
2026-10-22 · corrected · documented · records: egress/yggdrasil-public-peers
What changed
The argument is right and the example has become wrong.
## What we found
The Virginia section of the public-peers directory now reads:
```
* Ashburn, VA, Oracle Cloud VPS(Always Free Tier, 480Mbps, Metered), operated by [Twiztid]. ```
Two changes. The rate is 480 Mbit/s, not 200. And the operator labels it **Metered**, because
Oracle's own 10 TB/month outbound quota sits behind the peer. It is the one case in the network
where a byte quota does apply, and it was the example chosen to prove that byte quotas do not
apply. The advertised rates vary by
an order of magnitude: one national file lists "up to 1000 Mbps", "100 Mbit/s", "1Gbit/s" and
"400 Mbit/s" on adjacent entries. A single peer's rate is not the network's rate.
The 100 MB body cap is not a tunnel limit, and a 400 MiB body traversed a Quick Tunnel
2026-10-22 · corrected · measured · records: egress/cloudflare-quick-tunnel
What changed
## What we believed
The census named `per-object-cap`: 100 MB proxied request body as the binding constraint on
Cloudflare Tunnel, and cited `developers.cloudflare.com/cloudflare-one/account-limits/` for it.
It repeated the figure as the second of six constraints that "actually decide the egress lane".
## What we found
Two separate defects.
**The citation is wrong.** The account-limits page lists tunnels, routes, replicas, virtual
networks and certificates, and contains no request-body figure at all. The 100 MB figure lives on
the Workers limits page and applies to a request through the Cloudflare proxy on a zone plan, with
100 MB for Free and Pro, 200 MB for Business and up to 5 GB for Enterprise.
**The limit does not apply to a Quick Tunnel.** A `trycloudflare.com` hostname is not a zone on any
plan, and there is no proxy in the path that applies the zone's body cap. Measured: a 419,430,400
byte POST to a local sink through a live Quick Tunnel returned 200, the sink reported
`got=419430400`, and the SHA-256 matched the source file
(`d491a95debb39be6132754555606b04a4e16cd40b1f3e065903cea307d3a1839`, 77.1 s). A 150 MiB body and a
50 MiB body also passed.
The 100 MB figure is real for a named tunnel behind a proxied zone, and it belongs in that
record's `limits[]`. It was in the wrong record.
Kimi and zai ladders do not match
2026-10-22 · corrected · documented · records: coding-subs/kimi, coding-subs/zai-glm-coding-plan
What changed
Go excludes Kimi Code entirely. The subscribe page renders the three tier names and not the numbers. So the
seed's USD 72 / 80 / 160 / 168 figures cannot be confirmed or denied from the vendor
today, and the record carries no price for those two tiers.
The free inference endpoint measured on 2026-10-02 was already dead by 2026-10-22, and four more changed state inside one session
2026-10-22 · observed · measured · records: inference/opencode-zen-free
What changed
The larger finding is the second one. Two full probe runs **eight minutes apart**,
same machine, same candidate list, same script, changed the answer state of four
endpoints, and one of those changes is the instrument corrected rather than the
endpoint moving:
| endpoint | run at 03:02Z | run at 03:10Z | reading |
| --- | --- | --- | --- |
| `api.llm7.io/v1` `codestral-latest` | 200, answered | 429 rate limited | a real per-minute refusal |
| `uncensored-llm.sbs/v1` | 403 Cloudflare Error 1010 | 200, answered with filler | the 403 was the instrument's User-Agent |
| `ovh-qwen36-27b` | 200, answered | 200, empty content, reasoning only | budget exhaustion |
| `opencode-spacebunny` | 403 Cloudflare Error 1010 | 400 model unavailable | the 403 was the instrument's |
| `kilo-openrouter-free` | echoed `nemotron-3.5-lightning:free` | echoed `nemotron-3.5-content-safety` | a router choosing per call |
The 403 on `uncensored-llm` was the instrument, not the endpoint: a request carrying
Python's default User-Agent is refused by Cloudflare before it reaches the origin. The same request with a curl User-Agent answered. That is recorded because a probe
that does not fix its User-Agent reports a working endpoint as blocked, and the
direction of that error flatters nothing. The 403 on `uncensored-llm` was the instrument, not the endpoint: a request carrying
Python's default User-Agent is refused by Cloudflare before it reaches the origin. The same request with a curl User-Agent answered. That is recorded because a probe
that does not fix its User-Agent reports a working endpoint as blocked, and the
direction of that error flatters nothing.
Trae's USD 3 Lite tier never existed, and its Pro price was half the real one
2026-10-22 · corrected · documented · records: coding-subs/trae
What changed
## What we believed
The 2026-09-13 seed priced Trae Pro at USD 10 and Trae Lite at USD 3.
## What we found
Today's page states four tiers and no others:
| plan | price a month | included |
| --- | --- | --- |
| Free | USD 0 | auto mode only, limited usage, limited autocomplete |
| Pro | USD 20 | auto plus all models, USD 20 of usage a month, unlimited autocomplete, 10 concurrent cloud tasks |
| Pro+ | USD 60 | USD 60 of usage a month, 15 concurrent cloud tasks |
| Ultra | USD 200 | USD 200 of usage a month, model early access, 20 concurrent cloud tasks |
**There is no Lite tier at any price.** The 2026-09-13 capture was a 1,422-byte
truncation that ended mid-tag and contained no price at all; the 2026-09-20 pass
re-fetched the same URL and got the ladder as machine-readable JSON, corrected Pro
to USD 20, and left Lite at USD 3 in the newer file. The 2026-10-02 pass then
dropped Trae from its plan ladder entirely, so by the newest pass the contradiction
was neither fixed nor flagged.
Cursor repriced into x subscription
2026-10-22 · superseded · documented · records: coding-subs/cursor
What changed
Cursor's current pricing document
describes **The X Subscription**: Free at USD 0, Plus at USD 8, Premium at USD 30,
Super at USD 100 and Ultra at USD 200, with **one weekly usage pool** shared across
Cursor and Grok instead of two monthly pools. The legacy page confirms the old ladder and adds the mapping:
| legacy plan | legacy price | comparable new plan |
| --- | --- | --- |
| Hobby | free | Free |
| Pro | USD 20 | Premium, USD 30 |
| Pro+ | USD 60 | Super, USD 100 |
| Ultra | USD 200 | Ultra, USD 200 |
| Teams Standard | USD 40 a user | Teams, Premium seat, USD 30 a user |
| Teams Premium | USD 120 a user | Teams, Super seat, USD 100 a user |
Two changes matter more than the prices. The usage window moved from monthly to
**weekly**, which is a shorter clock and therefore a smaller buffer at the same
monthly spend. And third-party models left the included allowance: on the new ladder
they are billed at API list price from prepaid credit, which removes the "Other
Models" pool that legacy Pro, Pro+ and Ultra carried.
Three free tiers were recorded without the number that binds them, and two of those numbers are egress
2026-10-22 · corrected · documented
What changed
## What we believed
The census recorded Atlas M0 with `per-ip-shaping: 100 operations/second and a hard 512 MB` and
Pinecone Starter with `quota: 2 GB/org and one project; region locked to us-east-1`. Both were
right and both were incomplete in the same way: neither carried the free tier's traffic allowance.
## What we found
**Atlas M0 caps data transfer at 10 GB in and 10 GB out per rolling seven-day period.** The
limitations page states it, the mechanism is network throttling plus a one-second cooldown per
connection once the queue exceeds the operations limit, and it caps a serving workload at about
1.43 GB a day. The census had the operations rate and not the byte rate, and the byte rate is what
ends a retrieval service.
**Pinecone Starter caps egress at 1 GB per month.** The pricing table lists it beside the 2 GB of
storage. 1 GB a month is 33 MB a day, which at 6 KiB per 1,536-dimensional float32 vector is about
5,500 vector reads a day. The storage cap is unreachable because the egress cap arrives first.
Both pages also carry an idle clock or a pause the census did not record: **Atlas pauses a free
cluster after 30 days with zero connections**, which is the longest idle clock in the topic short
of Aiven.
A first-party page said the free tier was larger than the census recorded, and a second page said it was smaller
2026-10-22 · observed · documented
What changed
## What we believed
The census recorded 25 GiB of row storage and 250 million Request Units per organization, and
marked the figure "corrected upward" from the 5 GiB and 50 million RU that circulate. That is
correct as far as it goes, and it is half the story.
## What we found
Two TiDB pages disagree, and both were read on the same day.
The pricing page states the allowance **per organization, across up to five eligible instances**:
25 GiB of row storage, 25 GiB of columnar storage and 250 million Request Units.
The documentation FAQ states it **per instance**: "5 GiB row data + 5 GiB columnar data + 50
million RUs per TiDB Cloud Starter instance", for up to five instances.
The two readings differ by a factor of five, and both cannot be right. The census took the pricing
page and did not open the FAQ.
The census gave Codeberg 8-core runners and the vendor table gives 4
2026-10-22 · corrected · documented
What changed
## What we believed
The census recorded Codeberg's three hosted runners as "2/4/8 cores at 2/5/10 minutes" and
attributed the figure to Codeberg's `actions/meta` repository, which it had not opened. The
per-job clock was right and the CPU counts were not.
## What we found
The vendor table gives 1, 2 and 4 CPUs, not 2, 4 and 8:
| label | CPU | RAM | runtime |
| --- | --- | --- | --- |
| `codeberg-tiny` | 1 | 2 GB | 2 min |
| `codeberg-small` | 2 | 4 GB | 5 min |
| `codeberg-medium` | 4 | 8 GB | 10 min |
The 8 in the census is the medium runner's **RAM in gigabytes**, and the 2 is the tiny runner's
RAM. The row appears to have been built from the RAM column with the CPU column's units dropped,
which produced a machine that is twice as fast at every tier.
The same page carries a second detail the census did not have: **the RAM allocation includes
writes to the filesystem**, so a job using 1 GB of RAM and writing 1 GB of temporary files counts
as 2 GB, with 2 GB of extra temporary storage granted per container.
Pages is 47.68 TiB, not 48.8 TiB: a unit was printed as the wrong magnitude
2026-10-22 · corrected · measured
What changed
The second figure is the first multiplied by 100 with the unit left as it was. 20,000 files x 25 MiB is 488.28125 GiB. Times 100 projects is 48,828.125 GiB. That is 47.68 TiB,
not 48.8 TiB. The printed figure is the gibibyte count with a tebibyte label on it.
## What we found
The three numbers that produce it are all correct and all verbatim on the page: 20,000 files on
the Free plan, a 25 MiB maximum per file, and a limit of 100 projects per account which the page
notes "is not routinely increased". 100 x 20,000 x 25 MiB = 47.68 TiB. The archive tier's ceiling is 2.3% lower than published. So the corpus held both numbers and
the wrong one was in the recommendation.
hi168's S3 endpoint no longer answers, and the 500 GB to 1 TB grant was never verified
2026-10-22 · superseded · measured
What changed
## What we believed
Three seed artefacts stated the 500 GB rising to 1 TB grant as settled fact: `FINAL-REPORT.md`
sections 4, 8 and 11, and `ROUND2-FINDINGS.md`. The source was a third-party blog published
2026-03-12 and a nodeloc thread, not hi168's own pricing page.
The report's own audit removed the `✅` marks from all three places and marked the figure
disputed, because no login was ever performed. It did not change the figure.
The endpoint finding was separate and it was recorded as `SEC_E_UNTRUSTED_ROOT`, with the note
that the host answers with verification disabled. That reading made hi168 a live router behind an
incomplete certificate chain, which is a fixable problem rather than a dead host.
## What we found
Three things, and the third is the one that changes the verdict.
The grant is contradicted inside the corpus. A nodeloc post dated 2026-01-19 says new signups
already receive 5 GB: "目前新用户注册只有5G了". The March blog still describes 500 GB on
registration. Either the grant was restored, or the later blog repeated marketing copy that the
January poster had already falsified, and the corpus cannot tell which.
The email-login path exists as a form label, `账号/手机号/邮箱`, and no signup was executed. So
"email login verified" was never true.
And the endpoint no longer answers at all. Through the fetch broker on 2026-10-22,
`s3.hi168.com` returned **526**, which is a Cloudflare origin TLS failure, rather than the
earlier certificate error. The `www` host returns 200 with 4,668 bytes. The "live router behind an
incomplete chain" reading does not hold, because there is no router answering now.
PulsedMedia's "unlimited" is a port speed, and 1 TiB/day is 101.8% of it
2026-10-22 · corrected · measured
What changed
Its 16 TB plan at EUR 26.99 was
the cheapest hot option in the corpus at EUR 1.69 per TB, and the report's headline recommendation
was a "$30 hybrid" built on it. Both figures in the vendor's own string look like they support a user's workload. 30 TB per
month is above the 15 to 30 TB a 500 GB to 1 TiB per day serving pattern needs, and ~1 TB per day
is exactly the top of the stated range.
## What we found
The cap is the port, not the allowance, and the two are within 2% of each other at the top of the
range.
| quantity | value |
|---|---|
| 100 Mbps sustained for 24 hours | 1.08 TB, which is 0.982 TiB |
| 1 TiB per day requires | 101.8 Mbps |
| so 1 TiB per day is | 101.8% of the port |
The vendor's "~1TB/Day" is 30 TB divided by 30 days, which is arithmetic rather than a sustained
rate, and the TB there is decimal. So the usable figure is 0.98 TiB per day, which is 2% short of
the specification before any contention. Contention is not speculative. The conclusion re-sizes the recommendation rather than breaking it. At 500 GB per day the box is
comfortable at about half its port. At 1 TiB per day it is at or past the edge, and the right
purchase is Hetzner BX41 at EUR 40.60, whose constraint is a discretionary fair-use threshold
rather than a port speed.
Hetzner's fair-use threshold is 250 TB/month, not 50 to 100, and the margin is 8.3x
2026-10-22 · corrected · documented
What changed
## What we believed
Two seed artefacts carried the same figure with the same framing. `TOP-FINDINGS.md` and
`CHEAP-PAID-FINDINGS.md` both said Hetzner's fair-use letter hits users at "50-100 TB/month" and
that the client's 30 TB per month is "7-30x below" that threshold. The number made Hetzner look risky. A 30 TB workload against a 50 TB threshold is a 1.7x margin,
which is not a margin at all for a plan that might grow.
## What we found
The primary letter reads 250 TB/month:
> "your traffic use, which currently averages above **250 TB/month** on some of your servers ...
> Although these servers include unlimited traffic, this is far above what we consider fair use
> ... we may choose to cancel your contract. (Please see 2.7 of our the provider)" So the correct comparison is 30 TB against 250 TB, which is **8.3x below**, not 7 to 30x. The
direction of the error is more margin rather than less. The 50 TB figure is real and it belongs to a different product. It is a dedicated-server
port-throttle rule, imported into a Storage Box argument where it does not apply. That is a
category error, and it made the strongest paid option in the corpus look weaker than it is.
OpenCSG's 688.6 GB was a repository total, and the per-object cap is 6.58 GB
2026-10-22 · corrected · measured
What changed
## What we believed
Two artefacts disagreed and both were published. `TOP-FINDINGS.md` listed OpenCSG in a
per-object table at "688.6 GB model (multi-shard)". `FINAL-REPORT.md` section 6 carried the same
row at position two of the same table, above GigaFile's 300 GB, in a table whose stated purpose
was "sets your shard size".
The report's own audit caught it and called it "the worst arithmetic defect in the report": 130
times the real shard, in the one table whose entire purpose is to set the chunk size. The audit
moved the row to the bottom at "~5.2 GB/shard" and left the repository total in the capacity
section.
Neither number had been read off the platform's own index. Both were arithmetic over a file
listing.
## What we found
The tree API settles it precisely.
176 files. 688,603,604,082 bytes in total. 163 of them are shards above 1 GB. The largest single
object is 6,584,784,447 bytes.
So the repository total is 688.6 GB, the per-object cap is 6.58 GB, and the audit's "~5.2 GB"
was the largest blob in a different repository. Four numbers were circulating and only two of them
are the same measurement.
The same probe re-confirmed the read-path trap. `GET .../resolve/main/model-00001-of-00005.safetensors`
returned 200 with 135 bytes, which is a git-lfs pointer:
`version https://git-lfs.github.com/spec/v1`, `oid sha256:31d6a825...`, `size 3996250744`. A client
that trusts the status code downloads 135 bytes and reports success.
Compute seed claims superseded on first read
2026-10-22 · superseded · documented · records: compute/lizard, compute/run-cloud
What changed
Its free-tier census counted a USD 15 a month recurring credit
and called it the third largest in the market. `docs.run.cloud/sandboxes/index.md` (read 2026-10-22) states that Linux microVM
sandboxes are deprecated, that the capability is being retired, and that it is no
longer available to new organizations. Existing workloads run during the
deprecation window. The record is `dossier/compute/run-cloud.json`, `verdict: dead`. talaria recorded DEAD. `fly.io/docs/about/pricing/`
(read 2026-10-22) states in one sentence that new organizations get no free tier and
no monthly free usage allowance, and that the trial is 2 hours of Machine runtime or
7 days.
talaria's verdict was right and neither pass gave the reason. The host is up; `lizard.build/pricing` (read 2026-10-22) states
Small at 2 vCPU and 4 GB for USD 0.0162 an hour, Medium for USD 0.0324 and Large
for USD 0.0648. Both were wrong and the two-page conflict both passes agonised over no longer
exists. The record is `dossier/compute/lizard.json` with a note naming both stale
figures.
## Oracle Cloud was reachable, and its allowance is a time quota
Both passes recorded the whole `oracle.com` domain as returning 403 and carried the
A1 allowance unverified. `oracle.com/cloud/free/` returns HTTP 200 from this host,
so the 403 was one host's egress and not a property of the provider. The allowance itself is 1,500 OCPU-hours and 9,000 GB-hours a month, which Oracle
states is equivalent to 2 OCPUs and 12 GB. Both passes discussed it as a size cap. It is a time-denominated quota: 2 OCPUs at 24/7 is 1,460 OCPU-hours and fits with
40 to spare, and 3 OCPUs at 24/7 is 2,190 and does not fit. A reader who believes
the ceiling is a size will build a three-core box and meet a bill.
## Two claims that changed without a provider changing
Modal began charging for network egress on 2026-10-01, three weeks before this read. Both passes were written before the charge existed, so neither carried an egress
term for Modal. Hugging Face Spaces CPU Basic remains 2 vCPU and 16 GB of FREE hardware, and
creating a Gradio or Docker Space that uses it requires PRO. talaria demoted the row
correctly and nemo did not. The hardware did not change; The distribution is
in `docs/compute/measurement.md`. A reader who wants to know which of the 405
records to trust should read that file first, because the honest answer is that 347
of them were inherited without a page read.
RepOD's blanket "Range ignored" claim is withdrawn: it serves small files and not large ones
2026-10-22 · corrected · measured
What changed
## What we believed
Two artefacts said the same thing in different words. `FINAL-REPORT.md` section 4 carried a row
reading "5 GB/file; `Range` ignored". `verify/repod.json` said "Range is accepted syntactically
but IGNORED, so parallel ranged fetch is not available on this host". The verifier had tested it
and the report had copied the conclusion, and neither had tested a second object.
## What we found
The behaviour is conditional and neither artefact is right.
`/api/access/datafile/39782` is a 7,459-byte text file. A request for `bytes=0-1023` returned
`206 Partial Content` with `Content-Range: bytes 0-1023/7459` and 1,024 bytes that are
byte-identical to the first kilobyte of a full GET. A repeat at `bytes=1000-2023` returned 206
twice with the same MD5.
`/api/access/datafile/18` is a 116,201,025-byte binary. The same request returned `200 OK` with
the full `Content-Length` and no `Content-Range`.
Ranged serving works on the small text object and fails on the large binary object, and the
discriminator is not visible from outside. Size, type and path are all candidates and none is
tested.