Repository navigation
docs: trim the CELO token page to a short concept page and fix a dead anchor - #2358
Conversation
GigaHierz
left a comment
There was a problem hiding this comment.
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)
-
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). -
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-dualityhas no inbound links (checked), so renaming is safe; if you keep a heading, nothing else needs updating. -
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.
balanceOfpasses through native balance;transfer/transferFromdo not touch storage and initiate a native transfer; transfer precompile callable only by the CELO token: spec "Transfers via ERC20" plus "Thetransferprecompile"; 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-dualitynever 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.
|
All three are in a62a643, rebased onto current main.
I also dropped the trailing period from the description, per AGENTS.md section 3. |
6af303e to
a62a643
Compare
GigaHierz
left a comment
There was a problem hiding this comment.
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
- 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. - 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-dualityor#celo-token-duality(grep over mdx and json on the merged tree). - 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
- MEDIUM · home/index.mdx:30 (PR head) · The PR does not merge into current main: #2367 moved
home/tolearn/, and this PR edits the Token Duality bullet inhome/index.mdxthat main now carries aslearn/index.mdx:31(still with the#celo-token-dualityfragment).
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.mdxlinks/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:
GoldTokenRegistry 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-20Transferevents"). - 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;
RefsnotClosesfor the half of #2227 that stays open.mint broken-linksclaim 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-contractsand/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 thebuild/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.
a62a643 to
65d29d7
Compare
|
Rebased onto main and resolved |
GigaHierz
left a comment
There was a problem hiding this comment.
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
- 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. - 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. - LOW, sidebarTitle "Celo Token": FIXED. Frontmatter
sidebarTitle: "CELO Token". The rendered sidebar label reads "CELO Token". - MEDIUM, conflict with main in
learn/index.mdx: FIXED.learn/index.mdx:30now links/learn/protocol/celo-tokenwith no fragment and merges cleanly into current main.
New findings
- 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 mergecurlreturns307 -> /build/tools/contracts/core-contractsand307 -> /build/tools/overview/migrate/from-ethereum. Every reader of the page takes a redirect hop, andmint broken-links --check-redirectsstays 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-contractswith/build/tools/contracts/core-contractsand/tooling/overview/migrate/from-ethereumwith/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. - 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,precompileandRegistryappear 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 firstERC-20to https://eips.ethereum.org/EIPS/eip-20, replace "precompile" with "built-in contract (precompile)" or link it to the spec's#the-transfer-precompilesection, and linkRegistryto the Registry row of Core Contracts (/build/tools/contracts/core-contracts).
Verified good
- Removed content still exists:
operate/specification/token-duality.mdxcarries "What is token duality?" (line 6), "Reading balances via ERC20" (balanceOfpasses through the native balance), "Transfers via ERC20" (transfer/transferFrominitiate a native transfer, precompile callable only by the CELO token), and thetransferprecompile section (address0xff - 2, gas 9000, Jovian warming). Nothing the old page said is now missing from the docs. GoldTokenRegistry id, read-only:getAddressForStringOrDie("GoldToken")on Registry0x...ce10returns0x471EcE3750Da237f93B8E339c536989b8978a438on both https://forno.celo.org and https://forno.celo-sepolia.celo-testnet.org. This matchesbuild/tools/contracts/core-contracts.mdxlines 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 entrydocs.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-dualityor#implementation-details. The new ids#how-it-works,#why-it-matters-on-celo,#resources,#relatedare 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, noog: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:67says to follow native value transfers as well as ERC-20Transferevents. - 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/indexreturns 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.
The build/ move left four links resolving only through the /tooling/ wildcard. AGENTS.md asks introductory pages to link ERC-20, precompile and Registry.
65d29d7 to
21b469b
Compare
|
Thanks. Rebased onto current main (no conflicts) and fixed both in 21b469b.
|
GigaHierz
left a comment
There was a problem hiding this comment.
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
- MEDIUM,
/tooling/...links through the wildcard redirect: FIXED.grepfinds no/tooling/,/home/orbuild-on-celoinlearn/protocol/celo-token.mdxorlearn/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. - 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">("Thetransferprecompile"), 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) andGoldTokenrows. Accepted: AGENTS.md section 4 allows replacing jargon with the plain word.
- ERC-20 links to
- Earlier rounds (Concept sections, audience intro, "CELO Token" sidebar label,
learn/index.mdxfragment): 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:30links/learn/protocol/celo-tokenwith 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,
balanceOfreads the native balance,transfer/transferFrominitiate a native transfer, precompile callable only by the CELO token,GoldTokenRegistry id) is onoperate/specification/token-duality.mdx("What is token duality?", "Implementation", "Reading balances via ERC20", "Transfers via ERC20", "Thetransferprecompile"; address0xff - 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. GoldTokenon chain, read-only:cast call 0x000000000000000000000000000000000000ce10 "getAddressForStringOrDie(string)(address)" GoldTokenreturns0x471EcE3750Da237f93B8E339c536989b8978a438on https://forno.celo.org and on https://forno.celo-sepolia.celo-testnet.org; matchesbuild/tools/contracts/core-contracts.mdxlines 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-20Transferevents). - Inbound links: the page is linked from
learn/index.mdx:30, nav entrydocs.json:95and eight redirect destinations; no file links an anchor on the page. - PR body matches the diff and uses
Refs, notCloses, 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.
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-dualityfor the precompile and Core Contracts for theGoldTokenaddress, 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.mdxlinked/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, inadd-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 validatepasses,mint broken-links --check-redirectsfinds no broken links,scripts/check-orphans.shfinds no orphans, and no file links#celo-token-dualityor#what-is-token-duality.