01 · Stack at a glance

Three layers. One launch.

Layer 1 · Frontend

18 static HTML pages

Deploy as static site behind Cloudflare or Vercel. All pages share m5-chrome.css, m5-chrome.js, and m5-shader.js. Mobile-tested at 375 / 768 / desktop.

Layer 2 · Backend

Supabase + Resend

Single edge function /functions/v1/submit handles every form. Writes to Postgres tables, mints placeholder TCID, sends notification to the TitleChain Foundation inbox. Full spec in devin-spec.html.

Layer 3 · On-chain

Base Mainnet · L2

M5x402 settlement, TitleChain TCID anchor, Ricardian contract attestations. Bitcoin notary for permanence. Contracts deployed to Base Mainnet, witnessed via wyomingchain.eth namespace.

02 · Page-by-page deployment

18 launch pages + 4 whitepapers. All canonical.

Build target: every row below must respond 200 OK at the canonical URL, render correctly at 375px / 768px / desktop, and route every CTA without dead ends.

FileCanonical URLRoleStatusForm?On-chain?
home.html/Front door · Three Doors heroLive
wsw-activation.html/reserveReserve block · Founding waveForm ChainreserveBlockTCID issue
iam-activate.html/iamPick jurisdiction chain · Mint TCIDForm ChainactivateIAMTCID mint
bom-onboard.html/bom-onboardBank of Me onboarding · jurisdiction + ENS + WSWForm ChainonboardBom
bank-of-me.html/meDoor 01 · Individual sovereigntyLive
bank-of-business.html/businessDoor 02 · Org sovereigntyLive
bank-of-us.html/buildDoor 03 · Build / work / powerLive
onboard-business.html/onboard-businessBusiness onboarding · TCID held / registration pending · BOB/BOU/BOI/BOGForm ChainonboardBiz
circle.html/circleInvestor relations · Private inviteFormcircleApply
learn.html/learnCredentials · 28 SOPHIA tracksFormlearnSignupSOPHIA cred
trust.html/trustHow M5 protects youLive
governance.html/governancePax Economica · Cyrus ProtocolLive
sovereign-web-map.html/map15 standards corridorsLive
library.html/libraryWhitepapers + research indexLive
dev-docs.html/docsM5x402 · M5-MCP · M5-A2ALiveMintlify mirror
agents.html/agents30 M5AgentsLive
m5-capital.html/capitalValue rails · Valoris protocolLiveVSP anchor
member-dashboard.html/dashboardPost-activation dashboardMemberauth-onlyread TCID
contact.html/contactContact + routed formsFormcontact
whitepaper-m5x402.html/whitepapers/m5x402M5x402 public specLive
whitepaper-m5x402-dev.html/whitepapers/m5x402-devM5x402 dev specLive
whitepaper-sovereign-internet.html/whitepapers/sovereign-internetSovereign internet architectureLive
PaxEconomica_Part1–5.html/pax/part-1 … /pax/part-5Pax Economica · 5 partsLive
Pages outside this list are not for launch. Folders all_html/, m5-site/, uploads/, standalone/, screenshots/, and files ending in v1.html / v2.html are archive/backup. Disallowed in robots.txt. Do not deploy.
03 · Base mainnet integration — for the Base agent

What lives on Base.

M5 operates Base Mainnet as its L2 settlement layer. Three on-chain primitives ship with launch.

Primitive A · TCID

TitleChain Identifier — soul-bound NFT

One TCID per sovereign entity (human, business, asset, agent). Non-transferable ERC-5192. Storage: just the identifier + jurisdiction-chain reference. Zero PII on-chain — PII lives in the M5POD vault, only proof hashes are anchored.

  • Contract: TCID.sol · ERC-721 + ERC-5192 (soul-bound)
  • Anchor: Base Mainnet · CL chainId 8453
  • Mock contract: 0x4MOCK0a7b32c1d8e9f1A2b3C4d5E6f7A8B9c0D1e2 (staging)
  • Witness: every mint mirrored to Bitcoin notary every 24h
  • Mint trigger: WSW Activation success state in /reserve form
Primitive B · M5x402

Machine-native payment protocol

HTTP-402 settlement on Base. Stablecoin-denominated (USDC). Every M5-OpenAPI endpoint can be priced. Receipts written to the M5 ledger and anchored to Base every block.

Primitive C · Ricardian contracts

Human-readable, machine-executable

Every M5 agreement is a Ricardian contract — human prose + machine clauses + on-chain attestation. Contracts deployed via TitleChain Foundation, never by M5Capital LLC.

  • Schema: ricardian-v1.json
  • Attestor: TitleChain Foundation multisig (3-of-5)
  • Storage: IPFS (content) + Base (attestation hash)
Primitive D · Custody

M5 never touches member value

This is non-negotiable. Members hold their own keys via self-custody options: Arculus card (Block / Compsecure), Ledger, or Gnosis Safe on Base Mainnet. M5 wallet flow signs locally — no server-side custody, ever.

Base agent · environment (mock for staging — swap for real on cutover)

# ENS root (canonical — mainnet) M5_ENS_ROOT=titlechainfoundation.eth M5_ENS_JURISDICTION=wyomingchain.titlechainfoundation.eth # Required env vars (Vercel / Cloudflare Workers) — MOCK values, valid format NEXT_PUBLIC_BASE_CHAIN_ID=8453 # Base mainnet NEXT_PUBLIC_BASE_RPC_URL=https://mainnet.base.org NEXT_PUBLIC_TCID_CONTRACT=0x4MOCK0a7b32c1d8e9f1A2b3C4d5E6f7A8B9c0D1e2 # STAGING MOCK NEXT_PUBLIC_RICARDIAN_ATTESTOR=0x5MOCK1b43d2e9f0A1b2C3d4E5f6A7B8c9D0e1F2a3 # STAGING MOCK NEXT_PUBLIC_M5X402_GATEWAY=https://m5x402.titlechainfoundation.eth NEXT_PUBLIC_USDC_BASE=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 # real USDC on Base # Mock block heights / TCID series for staging displays M5_TCID_GENESIS=TCID-2026-M5HUM-000001 M5_TCID_SERIES_OFFSET=000240 # first founding-wave reservation lands at 000241 M5_BASE_BLOCK_ANCHOR=21034771 # mock anchor block for sandbox # Server-only (Supabase edge function) — store in 1Password, never commit BASE_DEPLOYER_PRIVATE_KEY=[1Password → M5 → Base deployer] TITLECHAIN_MULTISIG_ADDRESS=0x3MOCKa1b2C3d4E5f6A7b8C9d0E1f2A3b4C5d6E7f8 # 3-of-5 attestor BITCOIN_NOTARY_RPC=https://btc-notary.titlechainfoundation.eth
Mock vs production swap. Every address marked 0x*MOCK* is a staging placeholder so the front-end renders end-to-end without a deployed contract. On launch day, Base agent ships real contracts and pushes the actual addresses in one PR — search for MOCK in env. The ENS roots (titlechainfoundation.eth and m5x402.titlechainfoundation.eth) are already reserved and resolve to the multisig.
04 · Forms → emails

Every submission lands in Supabase. Every submission emails the team.

Full schema, edge-function source, and client-helper code are in devin-spec.html. This section is the executive summary + smoke-test checklist.

Routing

One inbox, one sending domain

  • Sending domain: titlechainfoundation.org (Resend verified)
  • SPF · DKIM · DMARC: all three must be green before launch
  • From: Foundation no-reply sender (FOUNDATION_FROM env)
  • To: Foundation routing inbox (FOUNDATION_INBOX env · real distribution group)
Edge function

Single POST · dispatched by form field

  • Endpoint: POST /functions/v1/submit
  • Body: { form: 'reserveBlock', ...payload }
  • Rate limit: 5 req/min/IP for waitlist, 1/min for Circle
  • Returns: { ok: true, tcid?, block_account? }

Smoke test before cutover

  • Reserve block — submit /reserve form, confirm row in reservations table, confirm email in inbox, confirm success state shows generated TCID + block account.
  • IAM activate — submit /iam, confirm chain selection round-trips, success state shows TCID on chosen chain.
  • Circle application — submit /circle, confirm row in circle_applications, confirm gated email (delayed 5 min for review).
  • Onboard / Onboard Business — confirm row in onboarding_starts, confirm immediate confirmation email to applicant.
  • Learn signup — confirm row in learn_signups with track selection.
  • Contact form — confirm row in contacts, confirm routed email to hello@.
  • Bot honeypot — submit with hidden website field filled → must 200 silently, no row, no email.
  • Rate limit — hammer endpoint, confirm 429 after 5 / 1 / min thresholds.
Member access (M5HUM accounts): not in scope for July 4 launch. Dashboard page is pre-built but hidden from primary nav until member auth ships in phase 2. Reservations get a placeholder M5HUM-XXXXXX immediately; real account credentials issued at mainnet activation.
05 · SEO + findability

Crawlable. Shareable. Indexable.

Every launch page has been swept with canonical URL, full OG / Twitter meta, and a description. Sitemap and robots are at the project root.

Per-page (already applied)
  • <link rel="canonical">https://m5bank.app/[route]
  • <meta property="og:type|site_name|url|title|description|image">
  • <meta name="twitter:card|title|description|image"> (summary_large_image)
  • <meta name="description"> per-page, 140–180 chars
Root files
  • /sitemap.xml — 25 URLs, priority + changefreq tagged
  • /robots.txt — allow all, disallow archives + member surfaces, sitemap referenced
  • GPTBot · PerplexityBot · ClaudeBot allowed · CCBot blocked
  • Still TODO: ship /assets/og-default.png (1200×630 brand image)

Launch-day SEO checklist

  • Set up Google Search Console for m5bank.app, verify via DNS TXT, submit /sitemap.xml.
  • Set up Bing Webmaster Tools, import from Google Search Console.
  • Create the OG image — 1200×630 PNG, gold M5 wordmark on dark cosmic shader, save as assets/og-default.png. (Pages already reference this path.)
  • Plausible / GA4 — install before launch so day-1 traffic is captured.
  • Schema.org JSON-LD — add Organization + WebSite schema to home.html (optional but recommended for rich results).
  • Open Graph debugger — verify each canonical URL renders correctly in Twitter Card Validator, LinkedIn Post Inspector, and Facebook Debugger.
  • Lighthouse — must score ≥90 on every page for SEO + Best Practices. Performance target ≥80 (shaders cost some).
06 · Final site map · v2026.05

The full canonical tree, with cross-references.

The full visual map lives at site-map.html. This is the launch reference.

/ → Home — Three Doors hero, WSW map banner, activation promise /reserve → WSW Activation — Founding wave form, success badge → /iam on success: Activate IAM (NEW) /iam → IAM Activate — Pick jurisdiction chain, mint TCID → /dashboard on success: Open Dashboard /bom-onboard → Bank of Me onboarding (individual) /onboard-business → Business onboarding · TCID held / registration pending /me → Door 01 — Bank of Me /business → Door 02 — Bank of Business /build → Door 03 — Build · Work · Power /trust → Trust & Permissions — How M5 Protects You (NEW) /governance → Pax Economica · Cyrus Protocol /map → Sovereign Web Map — 15 standards corridors /library → Whitepapers + research → /whitepapers/m5x402 → /whitepapers/m5x402-dev → /whitepapers/sovereign-internet → /pax/part-1 … /pax/part-5 /docs → Dev Docs (M5x402 · M5-MCP · M5-A2A) → mirror at titlechain.mintlify.io /learn → Credentials · 28 SOPHIA tracks /agents → 30 M5Agents /capital → M5 Capital — Value rails → /circle → Investor Relations CTA (NEW) /circle → Investor relations · Private invitation /contact → Routed forms · Office of the Founder / Press / Sovereign /dashboard → Member Dashboard (auth-only, phase 2)
07 · Devin's day-of checklist

In order. Tick as you go.

Full backend spec in devin-spec.html. This is the launch sequence.

  • Deploy static site to Cloudflare Pages or Vercel. Point m5bank.app to it. Confirm HTTPS, HSTS, and 200 status on every URL in the sitemap.
  • Spin up Supabase project. Run DDL from devin-spec.html §03. Enable RLS. Generate service-role key. Store in 1Password.
  • Verify Resend domain. titlechainfoundation.org with SPF, DKIM, DMARC. Confirm hello@ distribution group has real recipients.
  • Deploy edge function /functions/v1/submit. Test every form branch with curl. Confirm DB row + Resend email both arrive.
  • Wire m5-submit.js into m5-chrome.js bundle so every page has the helper.
  • Rewire client forms: submitReserve(), submitIAM(), submitCircle(), submitOnboard(), submitLearn(), submitContact(). Replace existing no-ops.
  • Mint dev TCID contract on Base Sepolia. Smoke-test full reservation → mint flow end-to-end.
  • Deploy production TCID contract on Base Mainnet (chain 8453). Update env var, verify on Basescan.
  • Generate OG image at /assets/og-default.png. Run all canonical URLs through Twitter Card Validator + LinkedIn Post Inspector.
  • Search Console + Bing Webmaster: verify domain, submit sitemap, request indexing on the 4 priority-1.0 URLs.
  • Analytics: install Plausible or GA4 before opening day-1 traffic.
  • Final QA pass: Lighthouse ≥90 SEO on every page. No console errors. Mobile/iPad layouts verified.
  • Cutover at 2026-07-04 00:00 UTC. M5x402 gateway → mainnet endpoint. TCID minting → mainnet contract. WSW Activation copy switches "founding wave" → "live".
08 · Open items (pre-launch blockers)

Known gaps that need a human decision.

Non-blocking

OG share image

Generated and shipped at /assets/og-default.png (1200×630). Auto-renders on Twitter, LinkedIn, iMessage, Slack, etc. Brand team can replace with a polished version pre-launch — every page already references this path.

Blocking

Base mainnet contract addresses

Staging unblocked: mock addresses are wired in env so the front-end renders end-to-end. Real Base Mainnet TCID + Ricardian attestor addresses must be deployed and the env vars updated before 2026-07-04 cutover. Search MOCK in env to swap.

Non-blocking

Pax Economica Part 3

Now shipped — was "Coming soon" placeholder. Live at /pax/part-3.

Non-blocking

Mintlify mirror

Dev_Docs page links to titlechain.mintlify.io. Mintlify space needs M5x402 / M5-MCP / M5-A2A docs imported by launch.

M5 · Sovereign Internet · Mainnet 2026-07-04 · Briefed for Devin + Base Agent · v2026.05.22