diff --git a/src/pages/docs/guide/node/network-upgrades.mdx b/src/pages/docs/guide/node/network-upgrades.mdx
index 9e4c84d8..36edc3ac 100644
--- a/src/pages/docs/guide/node/network-upgrades.mdx
+++ b/src/pages/docs/guide/node/network-upgrades.mdx
@@ -15,6 +15,7 @@ For detailed release notes and binaries, see the [Changelog](/docs/changelog).
| Release | Date | Network | Description | Priority |
|---------|------|---------|-------------|----------|
+| TBD | TBD | Testnet + Mainnet | Required for T9; adds TIP-403 registry support for TIP-20 token policy bindings and targeted migration for existing tokens. Release details and activation timing are TBD. | Required |
| [v1.11.0](https://github.com/tempoxyz/tempo/releases/tag/v1.11.0) | Jul 22, 2026 | Testnet + Mainnet | Required for T8; active on testnet and scheduled for mainnet activation on July 30. Includes current committee state, FeeAMM policy changes, versioned Stablecoin DEX order storage, DEX V2Order support, and final TIP-20 rewards deprecation. | Required |
| [v1.10.1](https://github.com/tempoxyz/tempo/releases/tag/v1.10.1) | Jun 29, 2026 | Testnet + Mainnet | Required for T7; includes storage credits for DEX order storage and TIP-20 channel storage, dynamic base fee behavior, and TIP-20 rewards deprecation. | Required |
| [v1.9.1](https://github.com/tempoxyz/tempo/releases/tag/v1.9.1) | Jun 19, 2026 | Testnet + Mainnet | Patch release with follow-mode stability fixes, payload-builder latency fixes, Reth/Rust dependency updates, and transaction-pool/RPC improvements. | Recommended |
@@ -36,6 +37,22 @@ For detailed release notes and binaries, see the [Changelog](/docs/changelog).
| [v1.3.1](https://github.com/tempoxyz/tempo/releases/tag/v1.3.1) | Feb 22, 2026 | Testnet + Mainnet | Fixes high-load issues and finalizes T1A/T1B hardening for expiring nonce replay protection and keychain precompile gas handling | Required |
| [v1.2.0](https://github.com/tempoxyz/tempo/releases/tag/v1.2.0) | Feb 13, 2026 | Mainnet only | Fixes validation bug rejecting transactions with gas limits above ~16.7M, blocking large contract deployments | Required |
+## T9
+
+| | |
+|---|---|
+| **Scope** | TIP-20 policy IDs in TIP-403 and targeted migration for existing tokens that need a registry-backed policy binding |
+| **TIPs** | [TIP-20 Policy IDs in TIP-403](https://github.com/tempoxyz/tempo/blob/main/tips/tip-1092.md) |
+| **Details** | [T9 network upgrade](/docs/protocol/upgrades/t9) |
+| **Release** | TBD |
+| **Testnet** | TBD |
+| **Mainnet** | TBD |
+| **Priority** | Required |
+
+T9 is not scheduled yet. The T9-compatible release, testnet activation time, and mainnet activation time are TBD. Node operators should run the T9-compatible release before activation once it is published.
+
+---
+
## T8
| | |
diff --git a/src/pages/docs/protocol/upgrades/t9.mdx b/src/pages/docs/protocol/upgrades/t9.mdx
new file mode 100644
index 00000000..de78b66e
--- /dev/null
+++ b/src/pages/docs/protocol/upgrades/t9.mdx
@@ -0,0 +1,84 @@
+---
+title: T9 Network Upgrade
+description: T9 adds TIP-403 registry support for TIP-20 token policy bindings and targeted migration for existing tokens.
+---
+
+# T9 Network Upgrade
+
+T9 updates how Tempo records the transfer policy used by TIP-20 tokens. It lets TIP-403 store the active policy for a token, so policy-aware tooling can read that answer from the registry when it needs to.
+
+For ecosystem partners, T9 matters most if you issue TIP-20 tokens, maintain wallets or indexers that read token policy state, or build flows that need a registry-backed answer for token policy checks.
+
+:::info[T9 status]
+T9 is not scheduled yet. The T9-compatible release, testnet activation time, and mainnet activation time are TBD.
+:::
+
+## Timeline
+
+| Milestone | Date | Timestamp |
+|-----------|------|-----------|
+| Testnet activation | TBD | TBD |
+| Mainnet activation | TBD | TBD |
+
+Node operators should run the T9-compatible release before the activation timestamp on each network. Nodes that are not updated before activation will fall out of sync.
+
+## Overview
+
+T9 focuses on one protocol change:
+
+- **TIP-20 policy IDs in TIP-403.** TIP-403 can store which transfer policy a TIP-20 token is currently using.
+
+This keeps token policy information in one registry when a flow needs that stronger guarantee. Existing tokens keep working even if they have not been migrated yet.
+
+## Features
+
+### Token policy lookup in TIP-403
+
+TIP-403 already stores transfer policy data. T9 also lets TIP-403 store the active transfer policy ID for a TIP-20 token.
+
+In plain terms, this gives contracts and offchain tools a registry-backed way to ask: "Which transfer policy is this token using?"
+
+New TIP-20 tokens write this TIP-403 binding when they are created. After T9, token policy changes also update the TIP-403 binding.
+
+Read the specification [here](https://github.com/tempoxyz/tempo/blob/main/tips/tip-1092.md).
+
+### Existing tokens keep working
+
+Existing TIP-20 tokens do not all need to move at activation. If a token has not been migrated, normal token behavior can still use the token's existing local policy ID.
+
+The difference is for flows that specifically need the policy answer to come from TIP-403. Those flows should require the TIP-403 binding to exist before using that token.
+
+### Targeted migration
+
+T9 adds a targeted migration path for existing TIP-20 tokens that need a TIP-403 binding.
+
+The migration copies the token's current local policy ID into TIP-403. It does not choose a new policy or change the token's rules; it only registers the policy the token is already using.
+
+This means teams can migrate the tokens they need instead of forcing every historical token into the registry at once.
+
+## Compatible releases
+
+The T9-compatible release is not published yet.
+
+| Ecosystem | T9-compatible releases |
+|-----------|------------------------|
+| Node operators | TBD |
+| Rust SDK crates | TBD |
+
+Release notes and binaries will be linked here when the T9-compatible release is published.
+
+## Integration impact
+
+### For TIP-20 issuers and token admins
+
+- New TIP-20 tokens write their TIP-403 policy binding during creation.
+- Existing tokens keep working if they are not migrated.
+- Existing tokens should be migrated when a flow needs their policy ID to be available from TIP-403.
+- After activation, policy changes update the active policy in TIP-403.
+
+### For SDKs, indexers, and low-level tooling
+
+- Existing token policy reads can keep using the current TIP-20 API when they only need the effective policy ID.
+- Tooling that needs a registry-backed token-to-policy answer should read TIP-403.
+- Migration tooling should migrate only the tokens that need a TIP-403 binding.
+- Apps that do not read or enforce TIP-20 policy state do not need an immediate integration change for T9.
diff --git a/vocs.config.ts b/vocs.config.ts
index 822784e1..be20feff 100644
--- a/vocs.config.ts
+++ b/vocs.config.ts
@@ -882,6 +882,11 @@ export default defineConfig({
text: 'Network Upgrades',
collapsed: false,
items: [
+ {
+ text: 'T9',
+ badge: { text: 'Planned', variant: 'note' as const },
+ link: '/docs/protocol/upgrades/t9',
+ },
{
text: 'T8',
badge: { text: 'Planned', variant: 'note' as const },