Skip to content

Commit d5cfe3a

Browse files
committed
docs(example): relabel scenario C as B so there is no A->C lettering gap
Two live scenarios now read A (Pendle yield swap) and B (x402 RWA buy) instead of A and C, which invited a 'where is scenario B' question. Also fix two stale DEPLOY.md claims touched in the same pass: test count 25 -> 27 (matches the header and a fresh forge run) and drop the false 'scenario B has no UI yet' line (the RWA flow is live at /rwa-buy).
1 parent 142b26b commit d5cfe3a

2 files changed

Lines changed: 11 additions & 12 deletions

File tree

examples/arbitrum-london/DEPLOY.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
# Deploy runbook - txKit Arbitrum London Buildathon demo
22

3-
Copy-paste deploy of the demo's on-chain pieces to Arbitrum Sepolia (scenario A, Pendle yield swap) and Robinhood Chain testnet (scenario C, x402-paid RWA buy). Both scenarios are live on both chains. Every command below is meant to be pasted as-is after you fill the env vars and the captured addresses.
3+
Copy-paste deploy of the demo's on-chain pieces to Arbitrum Sepolia (scenario A, Pendle yield swap) and Robinhood Chain testnet (scenario B, x402-paid RWA buy). Both scenarios are live on both chains. Every command below is meant to be pasted as-is after you fill the env vars and the captured addresses.
44

55
Verified state (2026-06-11): `forge build` + `forge test` green (27 tests: 15 AgentPolicyGate + 5 MockPendleRouter + 7 MockRwaRouter incl. end-to-end gate->router integration and the x402 settlement-leg tests), app `tsc --noEmit` + `next build` + 10 vitest clean. The deployed addresses + real tx hashes are in the README "Live on-chain" tables and `contracts/deployed.json`; this runbook reproduces them from a funded key you hold.
66

77
## What gets deployed
88

99
| Contract | Chain | Why | Verify on explorer |
1010
|---|---|---|---|
11-
| `AgentPolicyGate` | Arbitrum Sepolia (421614) | scenario A + C policy enforcement point | yes (Arbiscan) |
11+
| `AgentPolicyGate` | Arbitrum Sepolia (421614) | scenario A + B policy enforcement point | yes (Arbiscan) |
1212
| `MockPendleRouter` | Arbitrum Sepolia (421614) | scenario A inner swap target | yes (Arbiscan) |
13-
| `MockRwaRouter` | Arbitrum Sepolia (421614) | scenario C inner buy target (bonus proof) | yes (Arbiscan) |
14-
| `AgentPolicyGate` | Robinhood Chain testnet (46630) | scenario A + C gate (sponsor chain) | yes (Blockscout, 2026-06-11) |
13+
| `MockRwaRouter` | Arbitrum Sepolia (421614) | scenario B inner buy target (bonus proof) | yes (Arbiscan) |
14+
| `AgentPolicyGate` | Robinhood Chain testnet (46630) | scenario A + B gate (sponsor chain) | yes (Blockscout, 2026-06-11) |
1515
| `MockPendleRouter` | Robinhood Chain testnet (46630) | scenario A inner target (proof) | yes (Blockscout, 2026-06-11) |
16-
| `MockRwaRouter` | Robinhood Chain testnet (46630) | scenario C inner buy target (live /rwa-buy) | yes (Blockscout, 2026-06-11) |
16+
| `MockRwaRouter` | Robinhood Chain testnet (46630) | scenario B inner buy target (live /rwa-buy) | yes (Blockscout, 2026-06-11) |
1717

1818
Both scenarios are live: `buildPendleEnvelope` targets Arbitrum Sepolia (`/yield-swap`), `buildRwaEnvelope` targets Robinhood Chain (`/rwa-buy`, x402-gated). The RWA router was also deployed on Arbitrum as a bonus proof. See section 3d for the Robinhood RWA deploy and the Orbit gas gotcha.
1919

@@ -66,7 +66,7 @@ Confirm tests green and balances funded:
6666
```bash
6767
cd examples/arbitrum-london/contracts
6868
forge build
69-
forge test # expect: 25 passed
69+
forge test # expect: 27 passed
7070

7171
DEPLOYER=$(cast wallet address --private-key $DEPLOYER_PRIVATE_KEY)
7272
cast balance $DEPLOYER --rpc-url arbitrum_sepolia
@@ -161,7 +161,7 @@ cast send $GATE_ROBINHOOD "setAllowedRecipient(address,bool)" $ROUTER_ROBINHOOD
161161
--private-key $DEPLOYER_PRIVATE_KEY
162162
```
163163

164-
### 3d. MockRwaRouter (scenario C, live /rwa-buy)
164+
### 3d. MockRwaRouter (scenario B, live /rwa-buy)
165165

166166
Deploy via `forge create` (not `forge script`) because of the Orbit gas gotcha above:
167167

@@ -266,7 +266,7 @@ That is the recordable Loom path for scenario A.
266266

267267
## 7. Capture real tx hashes (required - AI Agentic category)
268268

269-
The UI sign button already lands a real `executeEnvelope` tx (the recordable Loom moment). For a reproducible, no-wallet artifact - and the only way to land a tx on Robinhood Chain, where scenario C has no UI yet - run the smoke script. It reproduces exactly what the dApp does: the agent signs an envelope, then it executes through the gate. The full path (deploy -> allow-list -> smoke tx) was rehearsed on a local anvil before shipping.
269+
The UI sign button already lands a real `executeEnvelope` tx (the recordable Loom moment). For a reproducible, no-wallet artifact - a scriptable way to land a tx on Robinhood Chain (scenario B) - run the smoke script. It reproduces exactly what the dApp does: the agent signs an envelope, then it executes through the gate. The full path (deploy -> allow-list -> smoke tx) was rehearsed on a local anvil before shipping.
270270

271271
Arbitrum Sepolia:
272272

@@ -283,7 +283,7 @@ GATE_ADDRESS=$GATE_ROBINHOOD ROUTER_ADDRESS=$ROUTER_ROBINHOOD \
283283
forge script script/SmokeExecuteEnvelope.s.sol --rpc-url robinhood_testnet --broadcast
284284
```
285285

286-
RWA buy (scenario C). On Robinhood, `forge script --broadcast` OOGs (Orbit gas gotcha), so dry-run to compute the signed calldata, then send it with `cast` (which honours `--gas-limit`). On Arbitrum the script broadcast is fine.
286+
RWA buy (scenario B). On Robinhood, `forge script --broadcast` OOGs (Orbit gas gotcha), so dry-run to compute the signed calldata, then send it with `cast` (which honours `--gas-limit`). On Arbitrum the script broadcast is fine.
287287

288288
```bash
289289
# Robinhood RWA buy (dry-run then cast send)

examples/arbitrum-london/README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ binding - before anything executes. Even a rogue or compromised agent cannot mov
2525
the rules.
2626

2727
- **Scenario A (live):** Pendle yield swap on Arbitrum Sepolia (`/yield-swap`).
28-
- **Scenario C (live):** x402-paid RWA stock buy on Robinhood Chain testnet (`/rwa-buy`).
29-
(Scenario B - an EVM batch flow - is reserved for a future protocol kind, hence the lettering gap.)
28+
- **Scenario B (live):** x402-paid RWA stock buy on Robinhood Chain testnet (`/rwa-buy`).
3029

3130
> **Why Arbitrum.** The decoded preview is Arbitrum-native: the fee row splits the L2 execution
3231
> fee from the L1 calldata-posting fee by reading `NodeInterface.gasEstimateComponents` (the 0xC8
@@ -126,7 +125,7 @@ The verification layer - not agent autonomy - is the point. It scales to any age
126125
- Scenario A is live end to end. The swap target is a deterministic `MockPendleRouter` (flat
127126
1:0.995, no token custody) so the gate path executes on a testnet without funding real input
128127
tokens - real plumbing, mock payload.
129-
- Scenario C is live end to end on Robinhood Chain: an x402 paywall (real EIP-712 payment-auth
128+
- Scenario B is live end to end on Robinhood Chain: an x402 paywall (real EIP-712 payment-auth
130129
verify with signer recovery, via a self-hosted facilitator - Coinbase's x402 facilitator does
131130
not support Arbitrum Orbit chains), the agent prepares the RWA buy, and the gate executes it
132131
on-chain.

0 commit comments

Comments
 (0)