Skip to content

docs: retire IBC and tokenfactory usage guidance - #66

Merged
alexander-sei merged 2 commits into
mainfrom
docs/retire-ibc-tokenfactory-guides
Aug 18, 2026
Merged

docs: retire IBC and tokenfactory usage guidance#66
alexander-sei merged 2 commits into
mainfrom
docs/retire-ibc-tokenfactory-guides

Conversation

@alexander-sei

@alexander-sei alexander-sei commented Aug 17, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • remove active IBC monitoring and tokenfactory/native-denom usage guidance while retaining shutdown and deprecation notices
  • narrow Bank, CosmWasm, pointer, registry, and AI examples to native SEI or supported EVM paths
  • route legacy IBC and tokenfactory URLs to canonical status notices while leaving changelog history unchanged

Test plan

  • Validate docs.json with python3 -m json.tool
  • Validate scripts/generate-llms.mjs with node --check
  • Run git diff --check
  • Confirm targeted searches find no active IBC or tokenfactory command/API examples
  • Run mint broken-links (the Mintlify CLI does not support the local Node 26 runtime)

Made with Cursor

Route legacy URLs to status notices and narrow examples to supported native SEI and EVM workflows, while preserving deprecation context for existing users.

Co-authored-by: Cursor <cursoragent@cursor.com>
@mintlify

mintlify Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
sei-docs 🟢 Ready View Preview Aug 17, 2026, 2:29 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@seidroid seidroid Bot 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.

The automated review did not complete; see the failing AI Review check for details.

@seidroid seidroid Bot 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.

A well-executed documentation retirement: the anchors, redirects, and cross-references all check out, docs.json is valid, and no dangling references to removed helpers remain. No blocking issues, but several deletions reach past the stated IBC/tokenfactory scope (Bank precompile metadata queries, the IBC node-metrics reference, a generic registry helper), the Vale heading-exception removal will flag still-valid headings, and the committed llms-full.txt still ships the retired guidance.

Findings: 0 blocking | 17 non-blocking | 11 posted inline

Blockers

  • None at the file/PR level.

Non-blocking

  • REVIEW_GUIDELINES.md is empty, so there were no repo-specific review standards to apply; I reviewed against AGENTS.md and STYLE_GUIDE.md instead.
  • The OpenAI Codex second-opinion pass produced no output (codex-review.md is empty) — no findings merged from it.
  • The Cursor second-opinion pass produced no output (cursor-review.md is empty) — no findings merged from it.
  • Stale generated artifacts. llms-full.txt at the repo root still contains the retired content this PR removes: 5 tokenfactory mentions and 15 all_balances/getNativePointer occurrences. Since scripts/generate-llms.mjs fetches each page's .md from the deployed site, it can't be regenerated in this PR — but per AGENTS.md:51 ("trigger it manually via workflow_dispatch after large content updates"), the regenerate-llms.yml workflow should be dispatched once this deploys. Otherwise the new Tokenfactory unsupported guidance block added to the generator has no effect on what LLM consumers actually read.
  • Deletion vs. deprecation is applied inconsistently across the PR. Most pages keep the surface documented and add a <Warning>/<Danger> banner narrowing its scope — which is the right call, and matches the PR's own statement that "legacy module and RPC surfaces may still exist for compatibility." But three places delete reference material outright instead: the Bank precompile's metadata/multi-balance queries, the IBC OpenTelemetry metrics tables in node/advanced-config-monitoring.mdx, and the findByDenom registry helper. None of those three are IBC- or tokenfactory-specific. Consider applying the banner treatment uniformly so the docs stay a complete reference to what the chain actually exposes.
  • Vale prose linting will now flag valid headings. Dropping IBC from the Headings.yml exceptions makes the sentence-case rule fire on three headings that survive this PR in learn/sip-03-migration.mdx: ## Affected IBC assets (line 84), ### Can I still bridge assets into or out of Sei over IBC? (line 256), and ### I hold an IBC asset on Sei — is it gone? (line 260). Impact is limited because prose-style.yml sets fail_on_error: false and filter_mode: added, so CI won't break and the annotations only appear if those lines are later touched — but it's avoidable noise. See the inline comment.
  • 11 suggestion(s)/nit(s) flagged inline on specific lines.

- CLI
- SDK
- NFT
- IBC

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.

[suggestion] Consider keeping this exception. IBC is still a proper acronym in prose this PR deliberately retains, and removing it makes the sentence-case rule flag three headings that survive the change — learn/sip-03-migration.mdx:84 (## Affected IBC assets), :256, and :260. ## IBC is disabled escapes because $sentence allows a capitalized first word, but the mid-heading uses won't.

CI won't break (prose-style.yml uses fail_on_error: false and filter_mode: added), so this is advisory — but the exception list exists for exactly this case, and IBC hasn't stopped being an acronym just because the feature is disabled.

/// Sends the attached native SEI to a native Sei address.
function sendNative(
string memory toNativeAddress
) external payable returns (bool success);

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.

[suggestion] This trims the documented interface further than the PR's stated scope. all_balances, name, symbol, decimals, and supply are not IBC- or tokenfactory-specific — they still exist on the precompile at 0x…1001 and are legitimate native-SEI queries. supply("usei") (total SEI supply) and decimals("usei") in particular are common, EVM-only-safe reads with no Cosmos-side equivalent reachable from Solidity.

Same concern for send(): it was the documented mechanism the registered ERC-20 native pointer uses, and with getNativePointer also removed from pointer-contracts.mdx, nothing in the docs now explains how native SEI moves through its ERC-20 pointer.

Suggest keeping these documented but scoped to usei (consistent with the <Warning> at line 10) rather than deleting them — the page currently under-describes the precompile's real surface, which pushes readers to the sei-chain source to find out what exists.


# Install Sei EVM bindings for precompile addresses and ABIs
npm install @sei-js/precompiles@2.1.2
npm install ethers @sei-js/precompiles

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.

[nit] The version pin was dropped here. Every other precompile page pins it — staking.mdx:471, governance.mdx:126, addr.mdx:112, and the sibling cosmwasm.mdx:109 all use @sei-js/precompiles@2.1.2, and json.mdx uses @^2.1.2. Suggest npm install ethers @sei-js/precompiles@2.1.2 for consistency.


</Tab>
<Tab title="Solidity">
You can make the same query from Solidity:

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.

[nit] The TypeScript and Solidity samples for the same operation are now consecutive bare code fences. AGENTS.md:33 asks for <Tabs>/<Tab> for parallel code samples, and the version this replaces did use them (<Tab title="JavaScript"> / <Tab title="Solidity">). Same applies to the pair under ## Send native SEI to a native address at line 96.

/// @param contractAddress The Sei address of the contract to execute.
/// @param msg The msg to send for execution. The format is specified by the contract code.
/// @param coins Any non-sei denominations that the contract requires for execution.
/// @param coins A JSON-encoded coin list required by the legacy ABI.

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.

[suggestion] "required by the legacy ABI" is both vague and slightly inaccurate as parameter documentation — coins is a parameter of the current precompile ABI, not a legacy artifact, and this phrasing tells a reader nothing about the expected shape.

Suggest keeping it factual and putting the policy in the surrounding <Danger> block (where you've already added it at line 14), e.g.: /// @param coins JSON-encoded array of Bank Module coins ([{"denom":"...","amount":"..."}]). Pass [] — see the note above.

COUNTER_CONTRACT_ADDRESS,
toUtf8Bytes(JSON.stringify(executeMsg)),
toUtf8Bytes(JSON.stringify([{ denom: 'uusdc', amount: '100' }])), // Also send 100 uusdc
toUtf8Bytes(JSON.stringify([])), // No Bank Module funds attached

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.

[suggestion] This comment is misleading in context: the section is "Executing a payable function" and overrides five lines up attaches ethers.parseEther('3.2'), so funds are being sent — and SEI is itself a Bank Module asset. A reader could reasonably conclude the donate call transfers nothing.

Suggest: // No additional coins — the 3.2 SEI is attached via msg.value.

Comment thread evm/sei-js/registry.mdx
import { TOKEN_LIST } from '@sei-js/registry';

// All tokens on mainnet
// Registry metadata on mainnet

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.

[nit] Two nits in this hunk:

  1. // Registry metadata on mainnet is less accurate than the // All tokens on mainnet it replaces — TOKEN_LIST['pacific-1'] really is the full token list, and the new <Warning> above already handles the "presence ≠ supported" caveat.
  2. The findByDenom helper removed just below is a generic lookup by base denom that works for native SEI and has nothing to do with tokenfactory. Since the <Warning> already tells readers not to treat legacy entries as integration targets, deleting the lookup pattern seems like collateral damage rather than intended scope.

Sei runs two token execution environments side by side — EVM and CosmWasm. Pointer contracts are automatically deployed EVM contracts that proxy a CosmWasm token, and vice versa.

<Warning>
This guide covers pointers for already-deployed CosmWasm contracts only. It does not document native-denom pointer workflows. IBC is disabled in both directions, and tokenfactory is not a supported development path. See [IBC is disabled](/learn/sip-03-migration#ibc-is-disabled) and [Tokenfactory is not supported](/cosmos-sdk#tokenfactory-is-not-supported).

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.

[suggestion] The banner text and the code changes don't quite line up. The warning says "Do not use native-denom pointers to build IBC or tokenfactory integrations" — a scoped prohibition — but the diff removes native-denom pointer lookup entirely, including the usei case, which isn't an IBC or tokenfactory denom.

This also drops the only documented use of getNativePointer in the repo, and it contradicts what learn/pointers.mdx said before this PR ("Native (Bank Module) pointers continue to work normally"). If native pointers for native SEI still function, consider keeping the row and the getNativePointer('usei') example and letting the banner do the narrowing — matching the approach taken on registry.mdx and cosmwasm.mdx.

Comment thread cosmos-sdk/index.mdx

</Danger>

## Tokenfactory is not supported

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.

[suggestion] Worth reconsidering where this canonical notice lives. Six pages plus scripts/generate-llms.mjs, skill.md, and three docs.json redirects now all point at /cosmos-sdk#tokenfactory-is-not-supported, while the parallel IBC notice they cite in the same breath lives at /learn/sip-03-migration#ibc-is-disabled. Splitting the two deprecation policies across two pages hurts discoverability.

There's also a practical wrinkle: cosmos-sdk/** is excluded from prose linting (.vale.ini) and from spell-checking (_typos.toml), so this heavily-referenced policy text gets no CI coverage. Putting it in learn/sip-03-migration alongside ## IBC is disabled would fix both. The anchor itself resolves correctly, so this is a placement suggestion, not a defect.

- The per-cache series that were previously separate metric names (for example `chunk_read_cache_*` and `chunk_write_cache_*`) are now the shared `litt_chunk_cache_*` metrics distinguished by the `cache` attribute.
- The `MetricsNamespace` and `MetricsRegistry` config fields no longer exist. Metric names are fixed, and metrics are always backed by the global OTel provider; supply the scrape port via `MetricsPort`.

## IBC OpenTelemetry Metrics

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.

[suggestion] This is node-operator observability reference material, not usage guidance — it documents metrics the binary emits, and the IBC modules are disabled by parameter, not removed from the build. Operators upgrading or building dashboards may still encounter these ibc_* series, and the PR itself states elsewhere that "legacy module and RPC surfaces may still exist for compatibility."

Everywhere else this PR keeps the reference and adds a banner; here it deletes ~56 lines with no replacement, so an operator seeing ibc_transfer_send in Prometheus now has nowhere in the docs to look it up. Suggest a short deprecation note above the tables ("these meters remain registered but stay at zero — IBC is disabled per Proposals 116/120/121") instead of removal.

The deletion itself is clean — no dangling intro text, and no page or docs.json entry links to #ibc-opentelemetry-metrics.

@alexander-sei
alexander-sei merged commit 5f480d2 into main Aug 18, 2026
20 of 26 checks passed
@alexander-sei
alexander-sei deleted the docs/retire-ibc-tokenfactory-guides branch August 18, 2026 11:01
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.

1 participant