Three findings, credit-first. Method: normal page loads with a headless browser (desktop 1366×900 and mobile 390×844, both @2x, console and network captured), plain DNS lookups, plain TLS handshakes, and plain HTTP GET/HEAD with a standard browser user agent, at most one request per second, nothing sent beyond what any visitor's browser sends automatically. No login attempted anywhere. Every claim below has a repro command.
noindex, not sent anywhere without explicit review.No jargon, just what each fix is worth. Technical detail is below this box.
Real, and worth saying plainly before anything else.
Every path we tried on www.klimadao.finance, including deep links like /llms.txt and a specific resources guide URL pulled straight from the in-app banner, 308-redirects to the matching path on klimaprotocol.com, not just the homepage. Rebrand redirects that preserve the full path are the exception, not the rule, industry-wide.
app.klimadao.finance banners "The Klima 2.0 fair launch period has begun" with a working link to app.klimaprotocol.com and a step-by-step guide. That is respectful, in-product migration UX, not an abandoned page.
A genuine schema.org/Organization JSON-LD block on the homepage, and a hand-authored robots.txt with a deliberate Disallow: /concepts/ rule, not a boilerplate default.
Covered in full in our July 16 note: two real llms.txt files, GitBook markdown exports, an 84 KB OpenAPI spec, and a published Claude-Code skill plugin. Not repeated here; still true.
Klima's Base-chain carbon-retirement bridge used to live at this address (search engines still index a "Retire carbon on BASE" result pointing here). Today, loading it in a normal browser returns a 301 redirect to rajakencang.com, an Indonesian online-gambling ("Toto Slot") site. This is not a guess: DNS, TLS, and the HTTP response line up into one clear picture.
base.klimadao.finance, desktop 1366×900 @2x, captured 2026-08-18. A mobile capture (390×844 @2x) shows the same thing.
What's happening, mechanically: your DNS record for this subdomain is still a CNAME into Vercel's shared edge. Vercel routes an incoming request by which of its customers currently claims that exact hostname as a custom domain, not by who owns the DNS record. At some point the Vercel project that used to serve Klima's Base bridge here was deleted or the domain detached, which released the claim. Someone else has since added base.klimadao.finance as a custom domain on their own Vercel account and completed domain validation for it, TLS certificate included. The CNAME still points at Vercel, so Vercel serves their site under your name.
base.klimadao.finance CNAME 0bc72fd56da9d439.vercel-dns-016.com, still a live Vercel edge targetHTTP/2 301, location: https://rajakencang.com/, server: VercelCN=base.klimadao.finance, issued by Let's Encrypt, notBefore=2026-07-19, notAfter=2026-10-17: someone completed ACME validation for this exact hostname three and a half weeks before this reviewdig +short base.klimadao.finance CNAME # 0bc72fd56da9d439.vercel-dns-016.com. curl -sI https://base.klimadao.finance/ # HTTP/2 301 # location: https://rajakencang.com/ # server: Vercel echo | openssl s_client -connect base.klimadao.finance:443 -servername base.klimadao.finance 2>/dev/null \ | openssl x509 -noout -subject -issuer -dates # subject=CN=base.klimadao.finance # issuer=C=US, O=Let's Encrypt, CN=YR1 # notBefore=Jul 19 19:08:03 2026 GMT # notAfter=Oct 17 19:08:02 2026 GMT
base.klimadao.finance DNS record (or repoint it somewhere you control), or reclaim the hostname inside your own Vercel dashboard if the project still exists under a different name. Either is a DNS-panel change, not a code change, and doesn't touch the Retirement Aggregator or anything else that's actually retiring carbon today. Worth a quick tidy since it's live and public, and answering under your name right now, and worth a scan of any other subdomain (blog., staging., app-old., anything you've retired from active use) for the same pattern, since this is exactly the shape a scan would catch before a screenshot does.app.klimadao.finance does the right thing first: it banners "The Klima 2.0 fair launch period has begun" and links to app.klimaprotocol.com and a fair-launch guide (credited above). But the page underneath still boots its old Polygon Web3 stack, which tries to open a connection to polygon.drpc.org. That connection fails completely at the TLS layer, not a timeout, not a rate limit, an actual protocol-level failure, which cascades into a visible React error and an ethers.js "could not detect network" error in the browser console.
app.klimadao.finance, desktop 1366×900 @2x, captured 2026-08-18. The banner and page render visually; the errors are in DevTools, which is exactly why they're easy to miss and easy for a visiting developer to find.
We ruled out our own network before writing this down: the same sandbox reaches other TLS-1.3 hosts (including drpc.org's own root domain) with no issue, and independently reproduced the exact failure with curl and openssl against polygon.drpc.org specifically, both returning a TLS record-layer error, not a DNS or routing problem.
net::ERR_SSL_PROTOCOL_ERROR on requests to polygon.drpc.orgError: could not detect network (event="noNetwork", code=NETWORK_ERROR, version=providers/5.7.2), ethers.js, from the app's own bundlecurl and openssl s_client against polygon.drpc.org:443 both fail with a TLS record-header error at TLS 1.2 and TLS 1.3; drpc.org root and other modern hosts succeed from the same machine at the same timecurl -sI --max-time 10 https://polygon.drpc.org/ # curl: (35) SSL routines:ST_CONNECT:tlsv1 alert protocol version echo | openssl s_client -connect polygon.drpc.org:443 -servername polygon.drpc.org -tls1_3 # error:...:SSL routines:tls_validate_record_header:wrong version number # control, same machine, same minute: curl -sI https://drpc.org/ -o /dev/null -w "%{http_code}\n" # 200 curl -sI https://cloudflare-eth.com/ -o /dev/null -w "%{http_code}\n" # 301
Retirement receipts live at klimaprotocol.com/retirements/<address>/<id>. We requested a receipt URL that search engines currently index (a real, or at least once-real, retirement) and a completely fabricated one (0xNONSENSE.../999) with a plain HTTP GET, the way a search crawler, a Slack/Discord/X unfurler, or a lightweight agent would. Both returned HTTP 200 with the exact same generic <title>, meta description, and schema.org/Organization JSON-LD, no retirement-specific data at all, and byte counts within 7 bytes of each other (85,963 vs. 85,956).
/retirements/0x7e2213f4.../1 → HTTP 200, 85,963 bytes, title "Klima Protocol | Open Infrastructure for Carbon Markets"/retirements/0xNONSENSE.../999 → HTTP 200, 85,956 bytes, identical generic titleOrganization schema, no certification/amount/beneficiary/date fieldsklimaprotocol.com/sitemap.xml lists 16 static marketing pages, zero retirement URLscurl -sL -o /dev/null -w "%{http_code} %{size_download}\n" \
"https://www.klimaprotocol.com/retirements/0x7e2213f499920c35346F3BF881D86748B12c23b4/1"
# 200 85963
curl -sL -o /dev/null -w "%{http_code} %{size_download}\n" \
"https://www.klimaprotocol.com/retirements/0xNONSENSE0000000000000000000000000000000/999"
# 200 85956 (control, a made-up address, made-up id)
Two costs bundled in one gap. First, growth: when someone shares a retirement link to show they offset carbon, Discord, X, and Slack all read the same generic metadata and show a plain "Klima Protocol" card, not the achievement, which is a free viral moment left unclaimed on every share. Second, verification: neither a search crawler nor an agent that fetches HTML without executing JavaScript can tell a real retirement from a fabricated URL from the page itself; both look identical until a full browser runs the client app, which is the only place the true state (present, or "Page Not Found") ever appears.
<title>, og:title/og:description, and a schema.org DigitalDocument or a custom Certification-shaped JSON-LD block per retirement, tonnage, beneficiary, project, date, transaction hash, server-side, before any client JS runs. That single change both makes shared links show the real achievement and gives any agent a way to verify a retirement from the URL alone. A concept version of that JSON-LD block is in the Agent Kit.v1.x402.klimalabs.com, the rails EcoWealth's own agent settles through, are untouched by all three findings, and the migration off klimadao.finance is careful everywhere we checked except the one orphaned subdomain. The one item worth same-week attention is finding 1, because it's a live redirect to someone else's site, answered under your domain, today. The other two are worth a look when convenient.