
Seven Agents Before a Line of Code: The Week 0 Agentic Planning Pipeline
Seven agents. Hard sequential dependencies. No ambiguous handoffs.

Why I'm Starting with Base (And What Comes After)
Chain selection, stack decisions, and why the Solana week forced everything else.

Proof of Support: Five Weeks, Five Chains, One App
Same app. Different chain each week. Scored before the first line of code.

Honest developer retrospectives on building the same app across five different blockchains — scored weekly on tooling, documentation, deployment, and cost.


Seven Agents Before a Line of Code: The Week 0 Agentic Planning Pipeline
Seven agents. Hard sequential dependencies. No ambiguous handoffs.

Why I'm Starting with Base (And What Comes After)
Chain selection, stack decisions, and why the Solana week forced everything else.

Proof of Support: Five Weeks, Five Chains, One App
Same app. Different chain each week. Scored before the first line of code.
Honest developer retrospectives on building the same app across five different blockchains — scored weekly on tooling, documentation, deployment, and cost.

Subscribe to Satori Geeks

Subscribe to Satori Geeks
The app deployed cleanly. I ran the function. Nothing happened.
I stared at the terminal for a moment, then at the Anvil output. The contract was there — address confirmed, bytecode matching, tests passing 14/14. I had called sendSupport. Nothing moved.
The command was cast call. Cast call simulates a transaction against a local node; it never broadcasts one. The fix was cast send. One word, thirty seconds to diagnose once I asked the right question. The broader point is more interesting than the mistake: returning to a toolchain after time away means re-learning where the sharp edges are, even when the tooling is genuinely excellent. Foundry's cast is well-designed. That didn't stop me from mixing up two commands I'd used before.
Before writing a line of code, I ran a verification pass on Base's OP Stack migration. Infrastructure consolidation, not a developer-surface change — every tool confirmed unchanged.
Getting testnet ETH turned out to be the most friction-dense part of the week. The research had listed several no-auth faucets; the reality was more complicated. Ethereum Ecosystem required an ENS name. Bware Labs was under maintenance. QuickNode and Alchemy both required an ETH balance on Ethereum mainnet. LearnWeb3 required wallet connection and GitHub authentication. Six faucets, five blocked. The one that worked — Coinbase Developer Platform — required a sign-in and delivered 0.0001 Sepolia ETH. Enough to deploy, but the path was materially harder than the research suggested. This is where the D1 score comes from.
The natural instinct was to avoid .env for the private key — the right call. Foundry's encrypted keystore handles this cleanly; the method is in a dedicated article.
Deploy to Sepolia: one command.
forge script script/Deploy.s.sol:Deploy \
--rpc-url baseSepolia \
--broadcast \
--verify \
--etherscan-api-key $BASESCAN_API_KEY
Contract deployed, Basescan showed "Pass - Verified" within forty-five seconds. No flattening, no manual ABI upload, no second command. That's the D6 experience in practice.
Mainnet followed the same path. Contract address: 0x6D89c4974f8f211eD07b8E8DA08177DEE627DeFa. One detail: the mainnet address is identical to the Sepolia address — the EVM derives contract addresses from deployer nonce, and mine matched on both networks. A separate Farcaster thread covers the mechanics.
Wiring the frontend to mainnet was one environment variable: VITE_BASE_CONTRACT_ADDRESS. Wallet connect, form submit, sendSupport(), on-chain confirmation, message on the wall. End-to-end in one take, no debugging. The first live mainnet message was "First message outside the testnet." — real entry, verifiable on Basescan at the address above.
After QA PASS, a second frontend pass — six user stories, thirty tasks, all clean. One fix: the first mainnet message came in at 10,000,000,000,000 wei; formatAmount displayed it incorrectly below 0.0001 ETH. Tests written, implementation fixed. This is the difference between "passes tests" and "handles real data."

The rubric. (Eight dimensions, three weights, max 60. Full methodology: How I'm Scoring the Chains)
D2, D3, D5, D6 all came in at 5/5. Foundry worked identically to any EVM mainnet. OZ v5.0.2 installed cleanly. Wagmi had a base chain import out of the box. forge script --broadcast --verify deployed and auto-verified in a single run. These don't need elaboration — the score is the verdict.
D7 (5/5): per-sendSupport transaction cost under $0.005 at current ETH prices and 0.005–0.006 gwei effective gas price. For a tip jar, that's effectively free. The deploy cost the same order of magnitude.
Three misses.
D1 (4/5): faucet access. Five of six faucets I tried were blocked — ENS requirements, mainnet ETH balance gates, one under maintenance. The one that worked required sign-in. Testnet ETH was obtained; the build proceeded. But the "multiple no-auth faucets" story from the research didn't hold at build time. That's a real gap in the getting-started experience.
D4 (4/5): documentation. The official Base quickstart uses forge create, not forge script. The [etherscan] block in foundry.toml needed for auto-verification isn't in the primary guide — it came from the research doc. Minor gap, specific one. Docs are otherwise good.
D8 (4/5): ecosystem. Base's community is large and active — Coinbase backing, Farcaster native, highest daily transaction volume of any L2. The score is 4 because Base is in the middle of departing the Optimism Superchain. The OP token dropped around 7% on the announcement. The practical impact on deploying a contract this week was zero. But a chain leaving a shared ecosystem is a signal worth naming.
Weighted total: 56/60. Outstanding band.
The research estimated 56. The build delivered 56. That's not a surprise — Base is home ground for an EVM developer. The toolchain is identical to what you'd use on Ethereum mainnet. A zero delta is what you want from a baseline: the research held up, which means the rubric is functioning. The interesting data starts next week.
Verdict: I would build a production app on Base, with the standard caveats — no live fraud proofs yet, Coinbase trust assumption, the Superchain transition still in progress. None of those are blockers at this scale. The live app is at https://proof-of-support.pages.dev. The contract is verified at 0x6D89c4974f8f211eD07b8E8DA08177DEE627DeFa on Base mainnet.
Base is home. If you've built on Ethereum mainnet, you already know this toolchain — you just haven't paid these gas fees.
Week 2 is coming. The chain is chosen. The toolchain will not be identical. That's the point.
The app deployed cleanly. I ran the function. Nothing happened.
I stared at the terminal for a moment, then at the Anvil output. The contract was there — address confirmed, bytecode matching, tests passing 14/14. I had called sendSupport. Nothing moved.
The command was cast call. Cast call simulates a transaction against a local node; it never broadcasts one. The fix was cast send. One word, thirty seconds to diagnose once I asked the right question. The broader point is more interesting than the mistake: returning to a toolchain after time away means re-learning where the sharp edges are, even when the tooling is genuinely excellent. Foundry's cast is well-designed. That didn't stop me from mixing up two commands I'd used before.
Before writing a line of code, I ran a verification pass on Base's OP Stack migration. Infrastructure consolidation, not a developer-surface change — every tool confirmed unchanged.
Getting testnet ETH turned out to be the most friction-dense part of the week. The research had listed several no-auth faucets; the reality was more complicated. Ethereum Ecosystem required an ENS name. Bware Labs was under maintenance. QuickNode and Alchemy both required an ETH balance on Ethereum mainnet. LearnWeb3 required wallet connection and GitHub authentication. Six faucets, five blocked. The one that worked — Coinbase Developer Platform — required a sign-in and delivered 0.0001 Sepolia ETH. Enough to deploy, but the path was materially harder than the research suggested. This is where the D1 score comes from.
The natural instinct was to avoid .env for the private key — the right call. Foundry's encrypted keystore handles this cleanly; the method is in a dedicated article.
Deploy to Sepolia: one command.
forge script script/Deploy.s.sol:Deploy \
--rpc-url baseSepolia \
--broadcast \
--verify \
--etherscan-api-key $BASESCAN_API_KEY
Contract deployed, Basescan showed "Pass - Verified" within forty-five seconds. No flattening, no manual ABI upload, no second command. That's the D6 experience in practice.
Mainnet followed the same path. Contract address: 0x6D89c4974f8f211eD07b8E8DA08177DEE627DeFa. One detail: the mainnet address is identical to the Sepolia address — the EVM derives contract addresses from deployer nonce, and mine matched on both networks. A separate Farcaster thread covers the mechanics.
Wiring the frontend to mainnet was one environment variable: VITE_BASE_CONTRACT_ADDRESS. Wallet connect, form submit, sendSupport(), on-chain confirmation, message on the wall. End-to-end in one take, no debugging. The first live mainnet message was "First message outside the testnet." — real entry, verifiable on Basescan at the address above.
After QA PASS, a second frontend pass — six user stories, thirty tasks, all clean. One fix: the first mainnet message came in at 10,000,000,000,000 wei; formatAmount displayed it incorrectly below 0.0001 ETH. Tests written, implementation fixed. This is the difference between "passes tests" and "handles real data."

The rubric. (Eight dimensions, three weights, max 60. Full methodology: How I'm Scoring the Chains)
D2, D3, D5, D6 all came in at 5/5. Foundry worked identically to any EVM mainnet. OZ v5.0.2 installed cleanly. Wagmi had a base chain import out of the box. forge script --broadcast --verify deployed and auto-verified in a single run. These don't need elaboration — the score is the verdict.
D7 (5/5): per-sendSupport transaction cost under $0.005 at current ETH prices and 0.005–0.006 gwei effective gas price. For a tip jar, that's effectively free. The deploy cost the same order of magnitude.
Three misses.
D1 (4/5): faucet access. Five of six faucets I tried were blocked — ENS requirements, mainnet ETH balance gates, one under maintenance. The one that worked required sign-in. Testnet ETH was obtained; the build proceeded. But the "multiple no-auth faucets" story from the research didn't hold at build time. That's a real gap in the getting-started experience.
D4 (4/5): documentation. The official Base quickstart uses forge create, not forge script. The [etherscan] block in foundry.toml needed for auto-verification isn't in the primary guide — it came from the research doc. Minor gap, specific one. Docs are otherwise good.
D8 (4/5): ecosystem. Base's community is large and active — Coinbase backing, Farcaster native, highest daily transaction volume of any L2. The score is 4 because Base is in the middle of departing the Optimism Superchain. The OP token dropped around 7% on the announcement. The practical impact on deploying a contract this week was zero. But a chain leaving a shared ecosystem is a signal worth naming.
Weighted total: 56/60. Outstanding band.
The research estimated 56. The build delivered 56. That's not a surprise — Base is home ground for an EVM developer. The toolchain is identical to what you'd use on Ethereum mainnet. A zero delta is what you want from a baseline: the research held up, which means the rubric is functioning. The interesting data starts next week.
Verdict: I would build a production app on Base, with the standard caveats — no live fraud proofs yet, Coinbase trust assumption, the Superchain transition still in progress. None of those are blockers at this scale. The live app is at https://proof-of-support.pages.dev. The contract is verified at 0x6D89c4974f8f211eD07b8E8DA08177DEE627DeFa on Base mainnet.
Base is home. If you've built on Ethereum mainnet, you already know this toolchain — you just haven't paid these gas fees.
Week 2 is coming. The chain is chosen. The toolchain will not be identical. That's the point.
<100 subscribers
<100 subscribers
Share Dialog
Share Dialog
No activity yet