Skip to content

fix(data): replace non-ASCII lookalike characters in network listings - #3246

Open
CodeRabbit-byte wants to merge 2 commits into
Chain-Love:mainfrom
CodeRabbit-byte:fix-nonascii-lookalikes-listings
Open

fix(data): replace non-ASCII lookalike characters in network listings#3246
CodeRabbit-byte wants to merge 2 commits into
Chain-Love:mainfrom
CodeRabbit-byte:fix-nonascii-lookalikes-listings

Conversation

@CodeRabbit-byte

Copy link
Copy Markdown
Contributor

Companion to #3245. Same defect, same two substitutions, applied to the network listing files: 15 occurrences across 11 lines in 7 files. Split out so each PR stays inside the 100-line limit.

file lines characters
listings/specific-networks/base/faucets.csv 3 3
listings/specific-networks/zcash/faucets.csv 3 6
listings/specific-networks/algorand/analytics.csv 1 1
listings/specific-networks/algorand/wallets.csv 1 1
listings/specific-networks/arbitrum/sdks.csv 1 1
listings/specific-networks/arbitrum/services.csv 1 1
listings/specific-networks/optimism/bridges.csv 1 2

U+2011 NON-BREAKING HYPHEN becomes an ASCII hyphen; U+00A0 NO-BREAK SPACE becomes an ASCII space. The rationale is in #3245 — briefly, these are visually identical to their ASCII counterparts, so they survive review unnoticed and then silently defeat string matching.

The whitespace cases here are the interesting ones. Three faucet rows carried dripLimitAmount values ending in a no-break space — 0.5 ETH␣, 0.001 ETH␣ — and arbitrum-sdk had price = $0␣. A trailing U+00A0 survives .strip() in several languages' default behaviour, so these values would not trim or parse cleanly. They are now 0.5 ETH, 0.001 ETH and $0.

optimism-standart in bridges.csv had both assetTypes = ["ETH","ERC‑20"] and technology = Cross‑chain Messaging — the ERC‑20 matching problem described in #3245, here in a network listing rather than the master.

One edit beyond a plain substitution, stated rather than buried. The Algorand lute wallet listed supportedPlatforms as ["Web","␣Chrome"] with a no-break space at the start of the second element. Substituting the character alone would have left [" Chrome"] — a leading ASCII space inside a JSON value, which is the same defect in a different costume. That element is now "Chrome".

Spotted but deliberately not touched. listings/specific-networks/arbitrum/sdks.csv:58 (py-sdk) has price = $0␣ with an ordinary trailing ASCII space. It is pre-existing, unrelated to these two characters, and on a line this PR does not otherwise modify, so it is out of scope here. Happy to fix it separately if you want trailing whitespace cleaned generally.

Safety. Verified after the edit: zero U+2011 or U+00A0 remain in these files, no cell has leading or trailing whitespace introduced, no JSON array element has leading or trailing whitespace, no column widths changed, and the line count is unchanged.

validate_csv.py from the json-tools branch: All checks passed.

Reward address: 0x1589423BeCC3F87EA9406155EaF4D5E04C34Dcf1 (USDC/USDT, Ethereum mainnet)

Companion to Chain-Love#3245, which covers references/. Same two characters, same
substitutions, 15 occurrences across 11 lines in 7 network listing files.

U+2011 NON-BREAKING HYPHEN -> ASCII hyphen, and U+00A0 NO-BREAK SPACE ->
ASCII space. Trailing no-break spaces on faucet dripLimitAmount values
such as '0.5 ETH' and on an arbitrum-sdk price of '$0' are removed, so
those values now trim and parse normally.

One extra edit, called out rather than buried: the algorand lute wallet
listed supportedPlatforms as ["Web","<U+00A0>Chrome"]. Substituting the
character alone would have left a leading ASCII space inside the JSON
value, so the element is now "Chrome".

validate_csv.py: All checks passed.
@github-actions

Copy link
Copy Markdown

Summary

Status Count
🔍 Total 12
🔗 Unique 12
✅ Successful 9
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 3
⛔ Unsupported 0

Errors per input

Errors in ./listings/specific-networks/arbitrum/services.csv

Errors in ./listings/specific-networks/base/faucets.csv

Errors in ./listings/specific-networks/zcash/faucets.csv

Full Github Actions output

@USS-Supervisor USS-Supervisor left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: REQUEST_CHANGES
Risk: MEDIUM
Summary: The CSV normalization itself is mechanically narrow, and the changed files keep stable row counts and column widths. However, the current-cycle link-check report for the touched additions found three URL errors, so this cannot be approved yet.
Findings:

  • MEDIUM listings/specific-networks/arbitrum/services.csv row 12: the added arbitrum-sdk row still contains https://docs.arbitrum.io/sdk, and the current-cycle link-check reports it as 404 Not Found. Please replace it with the current Arbitrum SDK/docs URL or remove the broken link from the touched row.
  • MEDIUM listings/specific-networks/base/faucets.csv row 5: the touched ethereum-ecosystem-faucet row still links to https://www.ethereum-ecosystem.com/faucets/base-sepolia, which the current-cycle link-check reports as 402 Payment Required. Please replace it with a publicly reachable source/faucet URL or remove the non-working link.
  • MEDIUM listings/specific-networks/zcash/faucets.csv row 3: the touched claimcrypto row still links to https://claimcrypto.in/faucet/currency/zec, and the current-cycle link-check reports it as 404 Not Found. Please replace it with a working faucet URL or remove the broken link.
    Confidence: HIGH

Addresses review on Chain-Love#3246. All three confirmed dead with two independent
clients.

- arbitrum/services.csv arbitrum-sdk: https://docs.arbitrum.io/sdk is 404.
  Arbitrum restructured its docs and no replacement SDK page exists - even
  the OffchainLabs/arbitrum-sdk repository's own homepage field still
  points at the dead docs.arbitrum.io/sdk/introduction. Repointed at the
  repository itself, which is the SDK's live canonical home, and relabelled
  the button from Docs to GitHub to match what it now links to.

- base/faucets.csv ethereum-ecosystem-faucet: the whole domain returns 402
  with header X-Vercel-Error: DEPLOYMENT_DISABLED, so the site is switched
  off rather than paywalled. No working URL exists to substitute.

- zcash/faucets.csv claimcrypto: the faucet path structure is gone
  entirely - /faucet/currency/btc 404s too, not just zec - so this is not
  a moved ZEC page.

For the two faucets the dead link is removed, leaving actionButtons empty.
That is an established pattern in this data: 29 of 142 faucet rows already
carry no actionButtons.

validate_csv.py: All checks passed.
@CodeRabbit-byte

Copy link
Copy Markdown
Contributor Author

All three fixed. I reproduced each one with two independent clients before changing anything.

arbitrum-sdkhttps://docs.arbitrum.io/sdk is indeed 404. Arbitrum restructured its documentation and there is no replacement SDK page: I checked /sdk/introduction, /build-decentralized-apps/reference/arbitrum-sdk, /build-decentralized-apps/arbitrum-sdk and sdk.arbitrum.io, all dead, and searched docs.arbitrum.io/llms.txt — the only SDK-titled pages there are for the Chain SDK, which is a different product from the TypeScript bridging SDK this row describes.

Telling detail: the OffchainLabs/arbitrum-sdk repository's own homepage field still points at https://docs.arbitrum.io/sdk/introduction, which 404s. The upstream metadata is stale too, so there is nothing current to point a Docs link at.

I repointed the row at the repository itself — live, actively maintained, last pushed 2026-08-11 — and relabelled the button from [Docs] to [GitHub] so the label matches what it actually links to.

ethereum-ecosystem-faucet — the 402 is not a paywall. The response carries X-Vercel-Error: DEPLOYMENT_DISABLED, and every path on the domain returns it, including the root. The deployment is switched off, so no substitute URL exists.

claimcrypto — not a moved ZEC page. The whole faucet path structure is gone: /faucet/currency/btc 404s as well, along with /faucet, /faucets, /currency/zec and /zec. Only the site root still responds.

For those two I removed the dead link rather than inventing a replacement, leaving actionButtons empty. That is an established pattern here rather than a new shape — 29 of the 142 faucet rows already carry no actionButtons.

Two things I deliberately did not do, since they are listing decisions rather than data fixes and yours to make. Both providers are now unreachable, so those rows may warrant removal outright — I have only removed their links. And I did not touch any dead link on a row this PR does not otherwise modify.

Verified after the edit: line counts and column widths unchanged in all three files, only actionButtons differs, and validate_csv.py reports All checks passed.

Reward address: 0x1589423BeCC3F87EA9406155EaF4D5E04C34Dcf1 (USDC/USDT, Ethereum mainnet)

@USS-Supervisor

Copy link
Copy Markdown
Member

Hi @CodeRabbit-byte - this PR is stale and still has unresolved requested changes. Could you please address the review feedback and update the PR when it is ready?

@CodeRabbit-byte

Copy link
Copy Markdown
Contributor Author

All three requested link fixes were pushed on 2026-08-27 and this PR has been waiting on a re-review since.

Taking the findings in order:

  1. listings/specific-networks/arbitrum/services.csv, arbitrum-sdkhttps://docs.arbitrum.io/sdk (404) removed. The row now carries only https://github.com/OffchainLabs/arbitrum-sdk, which returns 200 and is the SDK's canonical repository.
  2. listings/specific-networks/base/faucets.csv, ethereum-ecosystem-faucethttps://www.ethereum-ecosystem.com/faucets/base-sepolia (402) removed. No replacement was substituted, because I could not find a publicly reachable faucet URL for it, and the remaining fields on the row still describe the faucet accurately.
  3. listings/specific-networks/zcash/faucets.csv, claimcryptohttps://claimcrypto.in/faucet/currency/zec (404) removed, on the same basis.

Where I could not verify a working replacement I removed the link rather than guess at one, which I took to be the intent of "replace it or remove the non-working link".

The rest of the PR is unchanged: the stated U+2011 to - and U+00A0 to space substitutions, with stable row counts and column widths. The required validation is passing and the PR shows as mergeable.

Ready for re-review whenever the cycle allows.

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown

Summary

Status Count
🔍 Total 10
🔗 Unique 10
✅ Successful 10
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 0
⛔ Unsupported 0

Full Github Actions output

@USS-Supervisor USS-Supervisor left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: APPROVE
Risk: LOW
Summary: The updated network-listing normalization clears the previous link findings while staying mechanically scoped to non-ASCII/lookalike cleanup and corrected action links. All seven touched listing CSVs parse with stable row widths, referenced offers resolve, required validation is passing, and the current-cycle link-check run 33490790172 completed successfully with 10/10 links and 0 errors, timeouts, or unsupported URLs.
Findings: None.
Confidence: HIGH

@USS-Supervisor

Copy link
Copy Markdown
Member

Hi @eugene17kotov - this PR is stale, required CI is passing, and I do not see a current creator-side blocker. I requested your review; could you please take a look when you have a chance?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants