Skip to content

docs: trim the CELO token page to a short concept page and fix a dead anchor - #2358

Merged
GigaHierz merged 4 commits into
mainfrom
palango/token-duality-dedup
Oct 7, 2026
Merged

GigaHierz merged 4 commits into
mainfrom
palango/token-duality-dedup

Conversation

@palango

@palango palango commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

The CELO token page restated the token duality spec in different words, minus the precompile details, and still opened with the "Celo is no longer a standalone Layer 1" warning from the L2 migration. This cuts it down to a short concept page (intro, how it works, why it matters on Celo, resources, related) that links /operate/specification/token-duality for the precompile and Core Contracts for the GoldToken address, as #2227 suggested. The spec page is untouched, so none of its heading fragments move. The page stays because eight redirects point at it.

It also drops a dead fragment. learn/index.mdx linked /learn/protocol/celo-token#celo-token-duality, an anchor the page lost in the move to Mintlify, before that link was added. It now links the page itself. The other dead anchor this PR used to fix, in add-fee-currency.mdx, reached main through #2363, so it is no longer in the diff.

The fee-abstraction half of #2227 waits on @karlb, so this refs the issue rather than closing it. Refs #2227, refs #2257.

On the rebased branch, mint validate passes, mint broken-links --check-redirects finds no broken links, scripts/check-orphans.sh finds no orphans, and no file links #celo-token-duality or #what-is-token-duality.

@palango
palango requested review from a team as code owners October 2, 2026 09:27
@palango
palango requested review from GigaHierz, ezdac and karlb and removed request for a team and GigaHierz October 2, 2026 09:27

@GigaHierz GigaHierz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

head 6af303e · gate matched API headRefOid (no STALE); 2 commits on merge-base b7cb920, 7 behind origin/main (none touch celo-token.mdx or home/index.mdx; git merge-tree clean); mint broken-links --check-redirects: no broken links; check-orphans: none; CI "Check for broken links" pass; mint dev (desktop 1440 and 412x915): zero console errors, no horizontal overflow, in-page anchors and inbound links clicked

Verdict: REQUEST-CHANGES

Findings (severity-ordered)

  1. MEDIUM · home/protocol/celo-token.mdx:6-15 · The trimmed page is a Concept page but ends after "How it works", with no "Why it matters on Celo", "Resources" or "Related" section (AGENTS.md section 3 Concept order; section 8 rule 7).
    Failure scenario: five redirects (/celo-codebase/protocol/transactions/native-currency, /protocol/transaction/native-currency, /learn/celo-economic-model, /learn/platform-native-stablecoins-summary, /legacy/protocol/transaction/native-currency) land readers and agents on this page. It is now two paragraphs whose only outgoing links are inline; there is no closing link list, so it is a dead end for an agent traversing the link graph, and a reader sent from "celo-economic-model" gets nothing on what to read next.
    Fix shape: add ## Why it matters on Celo (one or two sentences: no wrapping, one balance across native and ERC-20, apps and wallets use either interface), ## Resources (Resource | Link table: spec, Core Contracts, CELO on the explorer if desired) and ## Related (bullets with a dash and half-sentence: /operate/specification/token-duality, /tooling/contracts/core-contracts, /tooling/overview/migrate/from-ethereum for tracking balances).

  2. LOW · home/protocol/celo-token.mdx:6-8 · The page opens with ## What is Token Duality? directly after the frontmatter: no intro prose before the first ## (AGENTS.md section 3 Frontmatter), no statement of who the page is for (section 3 "first paragraph says who"), and the heading is a Title Case question (section 3 Headings: sentence case, no questions as headings; heading rewritten in this PR so the rule applies).
    Failure scenario: a developer or holder landing from a redirect cannot tell in one sentence whether the page is for them; the H1 "CELO Token Duality" is immediately repeated by an H2 "What is Token Duality?".
    Fix shape: replace the H2 with a one-to-two sentence intro that names the audience (app developers and holders using CELO as native currency or ERC-20) and drop the heading (or call it ## How CELO works as native and ERC-20). Note the in-page anchor #what-is-token-duality has no inbound links (checked), so renaming is safe; if you keep a heading, nothing else needs updating.

  3. LOW · home/protocol/celo-token.mdx:3 · sidebarTitle: "Celo Token" names the token with the chain casing; AGENTS.md section 7 Names: "Celo" is the chain, "CELO" the token. Rendered in the sidebar as "Celo Token" (confirmed under mint dev).
    Failure scenario: the nav label contradicts the page title and the casing rule the repo enforces on every other page.
    Fix shape: sidebarTitle: "CELO Token".

Verified good

Removed content (git diff b7cb920..HEAD) and where each fact lives now:

  • Stale L1 <Warning> (Layer 1 -> L2, block 31,056,500, link to /build#celo-l2-mainnet): intentionally dropped; no equivalent statement is needed, and grep finds no "Layer 1"/"standalone" left on the page. Matches #2227 "drop the stale L1 warning".
  • "Unique in being native and ERC-20" and "What is Token Duality" (native vs ERC-20 transfer, both balances reflect, no wrap/unwrap): kept in the new intro paragraph and on the spec page (token-duality.mdx "What is token duality?").
  • Implementation Details, native transfers/balances like Ethereum, ERC-20 reads native balance: spec "Implementation" and "Reading balances via ERC20"; new "How it works" also states it.
  • balanceOf passes through native balance; transfer/transferFrom do not touch storage and initiate a native transfer; transfer precompile callable only by the CELO token: spec "Transfers via ERC20" plus "The transfer precompile"; also stated in the new "How it works".
  • GoldToken lookup via Registry: kept in the new last paragraph; GoldToken rows exist for both mainnet and Celo Sepolia in /tooling/contracts/core-contracts (lines 29 and 62), so the "address on each network" claim is true.
  • Closing marketing sentence ("seamless interoperability ... highly flexible"): dropped; no fact in it.
    Result: no fact now exists nowhere. The PR also gains something: the precompile address/params/gas (0xff-2, 9000 gas, Jovian warming) were never on this page and are now one click away.

Inbound links and anchors (git grep over mdx, md, json, sh; docs.json redirects):

  • Links to /home/protocol/celo-token: home/index.mdx:30 (now without fragment) and 5 docs.json redirects (lines 1099, 2371, 3075, 3131, 3359) plus the nav entry (line 104). None carries a fragment. No redirect source has a fragment pointing at this page. Spec page untouched, so its fragments (#the-transfer-precompile used by operate/specification/index.mdx:23) are unchanged.
  • Remaining anchors on the page: #what-is-token-duality, #how-it-works; both render with ids under mint dev, and the TOC links to both work. No other page links to them.
  • Dead anchor 1: main's page heading was "What is Token Duality?" -> id what-is-token-duality; #celo-token-duality never existed. After the PR the link has no fragment and clicking it from /home/index lands on /home/protocol/celo-token (confirmed by click under mint dev).
  • Dead anchor 2: overview.mdx has no "Adapters for Non-18-Decimal Tokens" heading (headings: Why Fee Abstraction Matters, How It Works, Wallet support for CIP-64, Whitelisted Fee Currencies (Mainnet), Related). using-fee-abstraction.mdx:26 has it; under mint dev it renders id="adapters-for-non-18-decimal-tokens" and the new link scrolls to it (top 176px). Existing links from overview.mdx and fee-currencies.mdx already used this target.
  • Redirect nit, pre-existing and not a finding: /learn/celo-economic-model and /learn/platform-native-stablecoins-summary redirect here although the topics differ; the trim makes the mismatch more visible but it predates this PR.

#2227 alignment: the suggested direction was "cut celo-token down to a short conceptual introduction that links to /specs/token-duality for the precompile detail, drop the stale L1 warning". The PR does exactly that; the spec path is now /operate/specification/token-duality and the PR links that path (correct; the issue's /specs/ path is stale). The fee-abstraction half stays open, and the PR uses Refs rather than Closes, which is correct. The issue's "Also noticed" add-fee-currency anchor is fixed here.

PR body claims checked against the diff: "five redirects point at it" true (5); "still opened with the Layer 1 warning" true on main; "linking the spec and Core Contracts for the GoldToken address" true; "spec page untouched" true (3 files changed: add-fee-currency.mdx, home/index.mdx, celo-token.mdx); "fixes two links whose anchors never existed" true; mint broken-links success reproduced; rendered ids claim reproduced. No claim outran the diff.

AGENTS.md checks that pass: frontmatter has title and description, no og:description/id/icon/mode, description is one sentence with no trailing period and says the outcome; no H1 in body; no promotional adjectives; no competitor positioning (the ETH/WETH contrast is the same wording as the spec page and a technical contrast, not a Celo-vs-chain positioning; AGENTS.md section 4 and the canonical spec both use it, so I do not flag it); "CELO" for the token and "Celo" for the chain in body prose; "ERC-20" spelling consistent; no stale L1 statements; internal links root-relative, no extension; no emoji. Core Contracts link resolves.

Rendering: /home/protocol/celo-token at 1440x900 and 412x915, no horizontal overflow, zero console errors; /home/index link and add-fee-currency link click through correctly.

What the PR got right

  • Correct call to trim the guide and leave the spec page and its heading fragments alone (the constraint #2227 spells out), and to keep the page rather than delete it because five redirects land on it.
  • Every technical statement in the new text is traceable to the spec page; nothing invented, and the precompile detail is linked rather than restated (one fact, one page).
  • Fixed the second dead anchor to the heading's real home, consistent with the existing links in overview.mdx and fee-currencies.mdx, and used Refs, not Closes, for the half of #2227 that is still open.
  • Body states the verification actually run, and it reproduces.

Merge-order hazards

Open PRs touching shared files (gh pr list --json number,files):

  • #2363 (fee-abstraction restructure) also changes build-on-celo/fee-abstraction/add-fee-currency.mdx with the byte-identical edit to the same line (identical blob 96f41385 in both). Either order merges without conflict, the second becomes a no-op on that file. No other overlap with #2363 (it does not touch celo-token.mdx or home/index.mdx).
  • #2364 and #2346 and #2344 touch docs.json only; this PR does not edit docs.json, so no conflict. git merge-tree of the head against current origin/main is clean.
  • Findings 1 to 3 are all inside celo-token.mdx, which no other open PR touches, so fixing them adds no merge risk.

@palango

palango commented Oct 2, 2026

Copy link
Copy Markdown
Contributor Author

All three are in a62a643, rebased onto current main.

  1. Added "Why it matters on Celo" (one balance that both interfaces read and change, nothing to wrap, wallets and apps can use either interface), a Resources table (the token duality spec and Core Contracts) and a Related list (the spec, Core Contracts, and Celo for Ethereum developers for tracking balances). All three targets are in the nav, and the new section adds no fact that is not already on the spec page.
  2. The page now opens with a short intro naming app developers and CELO holders who use CELO as the native currency, as an ERC-20 token, or both. The "What is Token Duality?" heading is gone. I re-checked that nothing links to #what-is-token-duality, and the spec page is untouched.
  3. sidebarTitle is now "CELO Token".

I also dropped the trailing period from the description, per AGENTS.md section 3. mint broken-links and scripts/check-orphans.sh pass.

@palango
palango force-pushed the palango/token-duality-dedup branch from 6af303e to a62a643 Compare October 2, 2026 12:32
@palango
palango requested a review from GigaHierz October 2, 2026 12:32

@GigaHierz GigaHierz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

head a62a643 · API headRefOid == refs/pull/2358/head (matched after re-fetch); 3 commits on merge-base 92b8cc6, 4 behind origin/main (a12466b, the learn/ move); merge into main conflicts in learn/index.mdx; on the hand-resolved merge: mint broken-links --check-redirects "no broken links found", check-orphans "No orphan pages found"; CI "Check for broken links" pass; mint dev on 3421 at 1280 and 412x915: zero console errors, no horizontal overflow

Verdict: REQUEST-CHANGES

Status of earlier findings

  1. MEDIUM, missing Why it matters on Celo, Resources, Related: FIXED. home/protocol/celo-token.mdx now has ## How it works, ## Why it matters on Celo, ## Resources (Resource | Link table) and ## Related (three bullets with dash and half-sentence), in Concept order. All targets resolve (200 under mint dev): /operate/specification/token-duality, /tooling/contracts/core-contracts, /tooling/overview/migrate/from-ethereum.
  2. LOW, no intro prose and Title Case question heading: FIXED. The page opens with an audience sentence ("This page is for app developers and CELO holders ...") and "What is Token Duality?" is gone. No file links to #what-is-token-duality or #celo-token-duality (grep over mdx and json on the merged tree).
  3. LOW, sidebarTitle "Celo Token": FIXED. Frontmatter is sidebarTitle: "CELO Token"; rendered sidebar label under mint dev is "CELO Token".

Also fixed unprompted: description lost its trailing period (AGENTS.md section 3).

New findings

  1. MEDIUM · home/index.mdx:30 (PR head) · The PR does not merge into current main: #2367 moved home/ to learn/, and this PR edits the Token Duality bullet in home/index.mdx that main now carries as learn/index.mdx:31 (still with the #celo-token-duality fragment).
    Failure scenario: GitHub shows the PR as conflicting; the squash cannot land until someone rebases. If the conflict is resolved by keeping the PR side, learn/index.mdx links /home/protocol/celo-token, which only works through a redirect. The PR comment says "rebased onto current main", which was true when pushed and is no longer.
    Fix shape: rebase on origin/main and resolve to [**Token Duality**](/learn/protocol/celo-token) (no fragment). The celo-token.mdx rename follows automatically (git merge-tree reports learn/index.mdx as the only conflict). I resolved it that way in a temp worktree and mint broken-links and check-orphans were clean.

Verified good

  • Every changed fact against primary sources: GoldToken Registry id resolves on both networks (cast call 0x...ce10 getAddressForStringOrDie("GoldToken") on forno mainnet and the Celo Sepolia RPC both return 0x471EcE3750Da237f93B8E339c536989b8978a438), which matches the rows at tooling/contracts/core-contracts.mdx:29 and :62 ("address on each network" is true). "balanceOf returns the native balance", "transfer and transferFrom trigger a native transfer through a precompile only the CELO token can call", and "address, parameters and gas cost" are all in operate/specification/token-duality.mdx (address 0xff-2, abi-encoded from/to/value, gas 9000). The Related bullet about tracking balances matches tooling/overview/migrate/from-ethereum.mdx ("follow native value transfers as well as ERC-20 Transfer events").
  • add-fee-currency.mdx edit (anchor using-fee-abstraction#adapters-for-non-18-decimal-tokens): the heading exists at using-fee-abstraction.mdx:26; the same edit already landed on main through #2363, so on the merged tree that file shows no diff. The PR body still lists it as a change; harmless.
  • PR body claims: five redirects land on the page (docs.json shows them, now targeting /learn/protocol/celo-token on main); spec page untouched; Refs not Closes for the half of #2227 that stays open. mint broken-links claim reproduced.
  • AGENTS.md: title and description present, no og:description, no H1, sentence-case headings, no emoji, no promotional wording, no > callouts, links root-relative without extension. The "unlike ETH and WETH" contrast carries the same wording as the canonical spec page and states a technical difference, so I do not flag it.
  • Resources table with the path as link label has precedent (learn/celo-l1.mdx:58-61).

What the PR got right

All three earlier findings were addressed in one commit with the author re-checking the inbound anchors before dropping the heading; the Concept page now has the AGENTS.md order, every statement traces to the spec page, and the precompile detail is linked instead of restated. The trim kept the page because five redirects land on it and left the spec's heading fragments alone.

Merge-order hazards

  • Needs a rebase on a12466b (learn/ move) before merge; one-line conflict in learn/index.mdx (above).
  • The build/ merge is open as #2368 and not on main. This PR links /tooling/contracts/core-contracts and /tooling/overview/migrate/from-ethereum; if #2368 lands first, those become redirected links (mint broken-links --check-redirects would flag them) and should be repointed to the build/tools/... paths at rebase; if this lands first, #2368 must rewrite those two links.
  • #2363's identical add-fee-currency.mdx edit is already on main; no conflict.

@palango
palango enabled auto-merge (squash) October 6, 2026 12:29
@palango
palango force-pushed the palango/token-duality-dedup branch from a62a643 to 65d29d7 Compare October 6, 2026 12:34
@palango palango changed the title docs: trim the CELO token page to an intro and fix two dead anchors docs: trim the CELO token page to a short concept page and fix a dead anchor Oct 6, 2026
@palango

palango commented Oct 6, 2026

Copy link
Copy Markdown
Contributor Author

Rebased onto main and resolved learn/index.mdx to /learn/protocol/celo-token with no fragment. The add-fee-currency edit dropped out because #2363 already has it, so I reworded that commit, the title and the description to match. While checking the description I found the page has eight inbound redirects, not five. mint validate, broken-links --check-redirects and check-orphans are clean. I left the /tooling/ links alone; whichever of this PR and #2368 lands second repoints them.

@palango
palango requested a review from GigaHierz October 6, 2026 12:40

@GigaHierz GigaHierz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

head 65d29d7 · API headRefOid == refs/pull/2358/head after re-fetch; 3 commits on merge-base a12466b (the learn/ move), origin/main 7b8f97c; git merge-tree --write-tree origin/main refs/remotes/pr/2358 is CLEAN; trial merge: mint broken-links --check-redirects "no broken links found", check-orphans.sh "No orphan pages found"; gh pr checks: Check for broken links pass; mint dev (port 3521): zero console errors, no horizontal overflow

Verdict: REQUEST-CHANGES

Layout-move conflict check

No conflict. The author already rebased onto a12466b, so learn/index.mdx and learn/protocol/celo-token.mdx are at their final paths and neither file was touched by #2368. The only layout-related work left is two links inside the PR's own text (finding 1). No other open PR touches learn/index.mdx or learn/protocol/celo-token.mdx.

Status of earlier findings

  1. MEDIUM, missing Why it matters on Celo / Resources / Related: FIXED (held at head). Rendered h2 ids in order: how-it-works, why-it-matters-on-celo, resources, related, which is the AGENTS.md Concept order.
  2. LOW, no audience intro and Title Case question heading: FIXED. Intro opens "This page is for app developers and CELO holders ...". No What is Token Duality? heading remains.
  3. LOW, sidebarTitle "Celo Token": FIXED. Frontmatter sidebarTitle: "CELO Token". The rendered sidebar label reads "CELO Token".
  4. MEDIUM, conflict with main in learn/index.mdx: FIXED. learn/index.mdx:30 now links /learn/protocol/celo-token with no fragment and merges cleanly into current main.

New findings

  1. MEDIUM · learn/protocol/celo-token.mdx:13, :24, :29, :30 · After #2368 the page links /tooling/contracts/core-contracts (three times) and /tooling/overview/migrate/from-ethereum, paths that no longer exist and resolve only through the /tooling/:slug* wildcard redirect (docs.json:787).
    Failure scenario: on the trial merge curl returns 307 -> /build/tools/contracts/core-contracts and 307 -> /build/tools/overview/migrate/from-ethereum. Every reader of the page takes a redirect hop, and mint broken-links --check-redirects stays green because the wildcard matches, so CI will not catch it. AGENTS.md section 2 says to update every inbound link, not rely on redirects. The PR body also tells the reviewer these two links "need repointing" if #2368 lands first; #2368 has landed.
    Fix shape: replace /tooling/contracts/core-contracts with /build/tools/contracts/core-contracts and /tooling/overview/migrate/from-ethereum with /build/tools/overview/migrate/from-ethereum, then delete the "if #2368 merges first" paragraph from the PR body. Both targets return 200 and have titles "Core Contracts" and "Celo for Ethereum Developers" matching the link text.
  2. LOW · learn/protocol/celo-token.mdx:7, :11, :13 · AGENTS.md section 4 (Writing style) says to link jargon on first use on introductory pages. ERC-20, precompile and Registry appear unlinked in the intro and "How it works".
    Failure scenario: a CELO holder (the page's stated first audience) reads "ERC-20", "precompile" and "Registry" with no definition and no link.
    Fix shape: link the first ERC-20 to https://eips.ethereum.org/EIPS/eip-20, replace "precompile" with "built-in contract (precompile)" or link it to the spec's #the-transfer-precompile section, and link Registry to the Registry row of Core Contracts (/build/tools/contracts/core-contracts).

Verified good

  • Removed content still exists: operate/specification/token-duality.mdx carries "What is token duality?" (line 6), "Reading balances via ERC20" (balanceOf passes through the native balance), "Transfers via ERC20" (transfer/transferFrom initiate a native transfer, precompile callable only by the CELO token), and the transfer precompile section (address 0xff - 2, gas 9000, Jovian warming). Nothing the old page said is now missing from the docs.
  • GoldToken Registry id, read-only: getAddressForStringOrDie("GoldToken") on Registry 0x...ce10 returns 0x471EcE3750Da237f93B8E339c536989b8978a438 on both https://forno.celo.org and https://forno.celo-sepolia.celo-testnet.org. This matches build/tools/contracts/core-contracts.mdx lines 29 (mainnet) and 62 (Celo Sepolia), so "its address on each network is listed" is true.
  • Inbound links, by hand over mdx/json/md/js on the merged tree: the page is linked from learn/index.mdx:30 (no fragment), the nav entry docs.json:95, and eight redirect destinations (docs.json lines 884, 940, 944, 1520, 2792, 3356, 3412, 3636), which matches the PR body's "eight". No file links #celo-token-duality, #what-is-token-duality or #implementation-details. The new ids #how-it-works, #why-it-matters-on-celo, #resources, #related are not linked from anywhere else.
  • Concept page section order, CELO sidebar label and description (one sentence, no trailing period) verified as above. No H1, no emoji, no > callouts, no promotional adjectives, no og:description.
  • The "unlike ETH and WETH" clause states a technical difference and repeats the spec page's wording; same call as last round, not flagged.
  • Related bullet 3 is accurate: build/tools/overview/migrate/from-ethereum.mdx:67 says to follow native value transfers as well as ERC-20 Transfer events.
  • Smoke render only (the preview cache is shared with other sessions; my first load served stale content until it picked up this tree): after restart the page shows the new sections, 0 console errors, no horizontal overflow, /learn/index returns 200.

What the PR got right

It trimmed the page instead of deleting it because eight redirects land on it, left the spec's heading fragments alone, and linked the precompile detail instead of restating it (one fact, one page). Every technical sentence traces to the spec page and the chain read. It correctly uses Refs #2227 and Refs #2257, not Closes, and rewrote the PR title and body when the add-fee-currency edit dropped out. Remaining work is one round of two link repoints and one jargon-link pass.

Merge-order hazards and rebase work

  • No rebase is needed for a clean merge; the branch already sits on the learn/ move and merges into 7b8f97c without conflict. The "rebase work" is a fix commit: repoint the two /tooling/... targets (four occurrences) to /build/tools/....
  • No other open PR edits these two files, so the order against other PRs does not matter.

@palango
palango force-pushed the palango/token-duality-dedup branch from 65d29d7 to 21b469b Compare October 7, 2026 05:13
@palango

palango commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

Thanks. Rebased onto current main (no conflicts) and fixed both in 21b469b.

  1. The three Core Contracts links now go to /build/tools/contracts/core-contracts and the Ethereum migration link to /build/tools/overview/migrate/from-ethereum. I also took the "if docs: merge Build on Celo and Tooling into one Build tab #2368 merges first" paragraph out of the description.
  2. ERC-20 links to EIP-20 on first use. "Precompile" now reads "a contract built into the chain (a precompile)", and the spec link next to it points at #the-transfer-precompile. Table rows have no anchors, so for the Registry I said what it is in plain words ("the on-chain directory of Celo's core contracts") and the Core Contracts link right after it gives both the Registry and GoldToken addresses.

mint validate, mint broken-links --check-redirects and check-orphans.sh all pass on the rebased branch.

@palango
palango requested a review from GigaHierz October 7, 2026 05:13

@GigaHierz GigaHierz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

head 21b469b · API headRefOid == refs/pull/2358/head (fetched, matched); merge base is current origin/main 7f5d9bb, git merge-tree --write-tree origin/main refs/remotes/pr/2358 exit 0 (no conflict, 4 commits, 2 files); mint broken-links --check-redirects "no broken links found", mint validate "build validation passed", check-orphans.sh "No orphan pages found"; gh pr checks: Check for broken links, GitGuardian, StepSecurity pass (Mintlify Deployment skipping); mint dev on :3721 (own server, served content is the PR's): 0 console errors, no horizontal overflow

Verdict: APPROVE

Status of earlier findings

  1. MEDIUM, /tooling/... links through the wildcard redirect: FIXED. grep finds no /tooling/, /home/ or build-on-celo in learn/protocol/celo-token.mdx or learn/index.mdx. Rendered hrefs on the served page: /build/tools/contracts/core-contracts (three times) and /build/tools/overview/migrate/from-ethereum; both files exist on disk and the first is in the nav. The "if #2368 merges first" paragraph is gone from the PR body.
  2. LOW, ERC-20 / precompile / Registry not linked on first use: FIXED.
    • ERC-20 links to https://eips.ethereum.org/EIPS/eip-20 (HTTP 200, page title "ERC-20: Token Standard"), in the first sentence.
    • "precompile" is now "a contract built into the chain (a precompile)" with the spec link /operate/specification/token-duality#the-transfer-precompile. The served spec page has <h3 id="the-transfer-precompile"> ("The transfer precompile"), so the anchor resolves; this matches the Mintlify slug (backticks dropped, lowercase, hyphens).
    • Registry is replaced with a plain-words definition ("the on-chain directory of Celo's core contracts") followed by the Core Contracts link, which lists the Registry (0x...ce10, lines 36 and 69) and GoldToken rows. Accepted: AGENTS.md section 4 allows replacing jargon with the plain word.
  3. Earlier rounds (Concept sections, audience intro, "CELO Token" sidebar label, learn/index.mdx fragment): still FIXED. Served h2 ids in order: how-it-works, why-it-matters-on-celo, resources, related; sidebar link text "CELO Token"; learn/index.mdx:30 links /learn/protocol/celo-token with no fragment.

New findings

None.

Verified good

  • No fact lost versus main: the removed text (native vs ERC-20 transfer, both balances reflect, no wrap or unwrap, native balances work as on Ethereum, balanceOf reads the native balance, transfer/transferFrom initiate a native transfer, precompile callable only by the CELO token, GoldToken Registry id) is on operate/specification/token-duality.mdx ("What is token duality?", "Implementation", "Reading balances via ERC20", "Transfers via ERC20", "The transfer precompile"; address 0xff - 2, gas 9000) and the retained sentences on the page restate only what that spec says. The dropped Layer 1 Warning and closing marketing sentence carry no fact.
  • GoldToken on chain, read-only: cast call 0x000000000000000000000000000000000000ce10 "getAddressForStringOrDie(string)(address)" GoldToken returns 0x471EcE3750Da237f93B8E339c536989b8978a438 on https://forno.celo.org and on https://forno.celo-sepolia.celo-testnet.org; matches build/tools/contracts/core-contracts.mdx lines 29 and 62, and the address is already EIP-55 checksummed in the page it appears on.
  • Concept page order (intro, How it works, Why it matters on Celo, Resources, Related), description is one sentence with no trailing period, no H1, sentence-case headings, no emoji, no > callouts, no promotional wording, links root-relative without extension. The "unlike ETH and WETH" clause repeats the spec page's technical contrast; not flagged.
  • Related bullet 3 matches build/tools/overview/migrate/from-ethereum.mdx (follow native transfers as well as ERC-20 Transfer events).
  • Inbound links: the page is linked from learn/index.mdx:30, nav entry docs.json:95 and eight redirect destinations; no file links an anchor on the page.
  • PR body matches the diff and uses Refs, not Closes, for the part of #2227 that stays open.

What the PR got right

It kept the page because eight redirects land on it, left the spec's heading fragments alone, linked the precompile detail instead of restating it, and answered each review round with a targeted commit and an accurate body.

Merge-order hazards

None. The branch sits on current main; no other open PR edits learn/index.mdx or learn/protocol/celo-token.mdx that I know of, and the docs.json redirects it relies on are already on main.

@GigaHierz
GigaHierz merged commit c725175 into main Oct 7, 2026
5 checks passed
@GigaHierz
GigaHierz deleted the palango/token-duality-dedup branch October 7, 2026 07:18
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