diff --git a/src/pages/docs/guide/node/network-upgrades.mdx b/src/pages/docs/guide/node/network-upgrades.mdx
index 8db7d58d..4c5f1d44 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 |
|---------|------|---------|-------------|----------|
+| v1.13.0 | Aug 17, 2026 | Testnet + Mainnet | Required for T10. Enshrines ZoneFactory, assigns deterministic ZonePortal addresses, and installs canonical shared zone runtimes. Testnet activation is scheduled for Aug 20, 2026; mainnet activation is scheduled for Aug 21, 2026. | Required |
| [v1.12.0](https://github.com/tempoxyz/tempo/releases/tag/v1.12.0) | Aug 3, 2026 | Testnet + Mainnet | Required for T9. Adds TIP-403 storage for TIP-20 token policy bindings used by zones/provable contract flows, plus a targeted migration path for existing tokens that need one. T9 is active on testnet and mainnet. | Required |
| [v1.11.0](https://github.com/tempoxyz/tempo/releases/tag/v1.11.0) | Jul 22, 2026 | Testnet + Mainnet | Required for T8. Includes current committee state, FeeAMM policy changes, versioned Stablecoin DEX order storage, DEX V2Order support, and final TIP-20 rewards deprecation. T8 is active on testnet and mainnet. | 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 |
@@ -37,6 +38,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 |
+## T10
+
+| | |
+|---|---|
+| **Scope** | Native ZoneFactory, deterministic ZonePortal accounts, and protocol-managed shared zone runtimes |
+| **TIPs** | [Enshrined ZoneFactory](https://github.com/tempoxyz/tempo/blob/main/tips/tip-1091.md) |
+| **Details** | [T10 network upgrade](/docs/protocol/upgrades/t10) |
+| **Release** | v1.13.0 (forthcoming) |
+| **Testnet** | Scheduled: August 20, 2026 at 14:00 UTC (`1787234400`) |
+| **Mainnet** | Scheduled: August 21, 2026 at 14:00 UTC (`1787320800`) |
+| **Priority** | Required |
+
+T10 is scheduled for testnet on August 20, 2026 and mainnet on August 21, 2026. Node operators must upgrade to v1.13.0 before activation once the release is available.
+
+---
+
## T9
| | |
diff --git a/src/pages/docs/protocol/upgrades/t10.mdx b/src/pages/docs/protocol/upgrades/t10.mdx
new file mode 100644
index 00000000..18dc57ea
--- /dev/null
+++ b/src/pages/docs/protocol/upgrades/t10.mdx
@@ -0,0 +1,64 @@
+---
+title: T10 Network Upgrade
+description: T10 enshrines ZoneFactory and installs canonical ZonePortal runtimes for native zone creation.
+---
+
+# T10 Network Upgrade
+
+T10 makes zone creation a native Tempo protocol operation. It enshrines `ZoneFactory`, assigns each zone a deterministic `ZonePortal` address, and installs canonical shared runtimes for portals, verification, and messaging.
+
+For most partners, T10 matters if you operate a node, create Tempo Zones, or integrate directly with `ZoneFactory` and `ZonePortal`.
+
+:::info[T10 status]
+T10 is scheduled for testnet on August 20, 2026 at 14:00 UTC and mainnet on August 21, 2026 at 14:00 UTC. The forthcoming v1.13.0 release is required; see the [Network Upgrades and Releases table](/docs/guide/node/network-upgrades#node-operator-updates) for the current node-operator release status.
+:::
+
+## Timeline
+
+| Network | Date | Unix timestamp |
+|---------|------|----------------|
+| Testnet | August 20, 2026 at 14:00 UTC | `1787234400` |
+| Mainnet | August 21, 2026 at 14:00 UTC | `1787320800` |
+
+Node operators must run v1.13.0 before T10 activates on their network to stay synced.
+
+## T10 upgrade overview
+
+T10 introduces three related protocol changes:
+
+- **Native zone creation.** `ZoneFactory` becomes a precompile at `0x5AF2000000000000000000000000000000000000`.
+- **Deterministic zone portals.** Every new zone receives a `ZonePortal` account whose address encodes its zone ID.
+- **Protocol-managed shared runtimes.** The hardfork installs canonical portal, verifier, and messenger runtimes at reserved addresses.
+
+Read the [TIP-1091 specification](https://github.com/tempoxyz/tempo/blob/main/tips/tip-1091.md).
+
+## Native `ZoneFactory`
+
+Zone creation moves from a separately deployed factory contract into the Tempo protocol. The native factory retains the canonical registry behavior, including sequential zone IDs, `zones`, `nextZoneId`, `isZonePortal`, and the `ZoneCreated` event.
+
+The initial T10 rollout is permissioned. Only the factory owner can call `createZone`; a later hardfork can open zone creation. A successful `createZone` call consumes at least 15,000,000 gas.
+
+An initial TIP-20 token must have an explicit [TIP-403 policy binding](/docs/protocol/upgrades/t9) before the factory can create a zone with it.
+
+## Deterministic `ZonePortal` accounts
+
+Each zone receives a portal at a reserved vanity address. The high 12 bytes are the fixed prefix `0x5AD000000000000000000000`, and the low 8 bytes contain the zone ID in big-endian form. For example, zone ID `1` maps to:
+
+```text
+0x5AD0000000000000000000000000000000000001
+```
+
+Use `ZoneFactory.isZonePortal(address)` to validate portal addresses instead of reproducing the prefix and zone-ID checks in application code.
+
+Each portal is an ERC-1167 proxy to a shared, protocol-managed implementation. Portals keep independent state while using the same canonical logic.
+
+## Protocol-managed Zone runtimes
+
+At activation, T10 installs the factory and three shared runtimes atomically:
+
+| Component | Address |
+|-----------|---------|
+| `ZoneFactory` | `0x5AF2000000000000000000000000000000000000` |
+| `ZonePortal` implementation | `0x5AD1000000000000000000000000000000000000` |
+| Zone verifier | `0x5a56000000000000000000000000000000000000` |
+| Zone messenger | `0x5A4d000000000000000000000000000000000000` |
diff --git a/src/pages/docs/protocol/zones/architecture.mdx b/src/pages/docs/protocol/zones/architecture.mdx
index 57dce550..2f95c4ce 100644
--- a/src/pages/docs/protocol/zones/architecture.mdx
+++ b/src/pages/docs/protocol/zones/architecture.mdx
@@ -66,6 +66,15 @@ The system consists of contracts on both Tempo Mainnet and within each Tempo Zon
- **`ZonePortal`** is the central bridge contract. It locks all deposited tokens, verifies validity proofs, and processes withdrawals. The Zone Portal contract maintains the authoritative state: which deposits have been made, which batches have been proven, and which withdrawals are pending.
- **`ZoneMessenger`** handles withdrawals that include callbacks. When a user wants to withdraw tokens and trigger a contract call atomically, the messenger executes both operations together. If the callback fails, the entire withdrawal reverts and funds bounce back to the zone.
+The protocol manages the shared Tempo contracts at these addresses:
+
+| Component | Address |
+|-----------|---------|
+| `ZoneFactory` | `0x5AF2000000000000000000000000000000000000` |
+| `ZonePortal` implementation | `0x5AD1000000000000000000000000000000000000` |
+| Zone verifier | `0x5a56000000000000000000000000000000000000` |
+| `ZoneMessenger` | `0x5A4d000000000000000000000000000000000000` |
+
### Zone Predeploys
Tempo Zones have four system contract predeploys at fixed addresses:
diff --git a/vocs.config.ts b/vocs.config.ts
index d18e738c..6af86af1 100644
--- a/vocs.config.ts
+++ b/vocs.config.ts
@@ -893,6 +893,11 @@ export default defineConfig({
text: 'Network Upgrades',
collapsed: false,
items: [
+ {
+ text: 'T10',
+ badge: { text: 'Planned', variant: 'note' as const },
+ link: '/docs/protocol/upgrades/t10',
+ },
{
text: 'T9',
badge: { text: 'Latest', variant: 'info' as const },