What happened? (exact commands + REAL output)
build-on-celo/build-with-ai/overview.mdx:125 lists the Celo Sepolia USDC token address as 0x2F25deB3848C207fc8E0c34035B3Ba7fC157602B. That is the mainnet USDC fee-currency adapter (same page, line 123, and fee-abstraction/using-fee-abstraction.mdx:44). On Celo Sepolia that address has no contract:
$ curl -s -X POST https://forno.celo-sepolia.celo-testnet.org -H 'content-type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x2F25deB3848C207fc8E0c34035B3Ba7fC157602B","data":"0x95d89b41"},"latest"]}'
{"jsonrpc":"2.0","id":1,"result":"0x"} # symbol() → empty: no code at this address on Sepolia
$ ... same call, "to":"0x01C5C0122039549AD1493B8220cABEdD739BC44E"
symbol() → USDC ; decimals() → 6 # the address the x402 page uses as Celo Sepolia USDC
Expected: the Sepolia row names the Sepolia USDC token. The x402 page on the same site (build-on-celo/build-with-ai/x402.mdx:216) uses 0x01C5C0122039549AD1493B8220cABEdD739BC44E as Celo Sepolia USDC, and it answers symbol()=USDC, decimals()=6 on Sepolia.
The same wrong row also appears in build-on-celo/fee-abstraction/using-fee-abstraction.mdx:52 (Sepolia table, "Token" column) and in legacy/protocol/transaction/erc20-transaction-fees.mdx:47 (labelled Alfajores).
Steps to reproduce
- Open https://docs.celo.org/build-on-celo/build-with-ai/overview#adapter-addresses
- Copy the Sepolia USDC "Token Address"
- Call
symbol() on it against https://forno.celo-sepolia.celo-testnet.org → 0x
Root cause (file:line), if known
Copy-paste of the mainnet adapter into the Sepolia token column: build-on-celo/build-with-ai/overview.mdx:125, build-on-celo/fee-abstraction/using-fee-abstraction.mdx:52. The Sepolia adapter column (0x4822e58de6f5e485eF90df51C41CE01721331dC0) is not checked by this issue — OPEN: verify it with eth_getCode on Sepolia before the fix lands.
Version / commit tested
bdf40b37 (main, 2026-08-21)
Where is the defect (not just where you noticed it)?
The agent-facing overview page that llms.txt and the per-page .md export serve to AI tools — an agent following it on testnet sends funds or approvals to an address with no code.
How would we know it's fixed?
symbol() via eth_call on every address in the Sepolia rows returns the ticker in the row; a one-line script over the three files is the pinned check (could live next to the orphan check in CI).
Priority
critical — user-visible wrong data (a contract address)
Size
S — hours
What happened? (exact commands + REAL output)
build-on-celo/build-with-ai/overview.mdx:125lists the Celo Sepolia USDC token address as0x2F25deB3848C207fc8E0c34035B3Ba7fC157602B. That is the mainnet USDC fee-currency adapter (same page, line 123, andfee-abstraction/using-fee-abstraction.mdx:44). On Celo Sepolia that address has no contract:Expected: the Sepolia row names the Sepolia USDC token. The x402 page on the same site (
build-on-celo/build-with-ai/x402.mdx:216) uses0x01C5C0122039549AD1493B8220cABEdD739BC44Eas Celo Sepolia USDC, and it answerssymbol()=USDC,decimals()=6on Sepolia.The same wrong row also appears in
build-on-celo/fee-abstraction/using-fee-abstraction.mdx:52(Sepolia table, "Token" column) and inlegacy/protocol/transaction/erc20-transaction-fees.mdx:47(labelled Alfajores).Steps to reproduce
symbol()on it againsthttps://forno.celo-sepolia.celo-testnet.org→0xRoot cause (file:line), if known
Copy-paste of the mainnet adapter into the Sepolia token column:
build-on-celo/build-with-ai/overview.mdx:125,build-on-celo/fee-abstraction/using-fee-abstraction.mdx:52. The Sepolia adapter column (0x4822e58de6f5e485eF90df51C41CE01721331dC0) is not checked by this issue — OPEN: verify it witheth_getCodeon Sepolia before the fix lands.Version / commit tested
bdf40b37(main, 2026-08-21)Where is the defect (not just where you noticed it)?
The agent-facing overview page that llms.txt and the per-page
.mdexport serve to AI tools — an agent following it on testnet sends funds or approvals to an address with no code.How would we know it's fixed?
symbol()viaeth_callon every address in the Sepolia rows returns the ticker in the row; a one-line script over the three files is the pinned check (could live next to the orphan check in CI).Priority
critical — user-visible wrong data (a contract address)
Size
S — hours