Skip to content

feat: Phase 2 contract layer — call / deploy / send - #3

Merged
anil-rome merged 1 commit into
mainfrom
phase2-actions
Jul 20, 2026
Merged

feat: Phase 2 contract layer — call / deploy / send#3
anil-rome merged 1 commit into
mainfrom
phase2-actions

Conversation

@anil-rome

Copy link
Copy Markdown
Contributor

First layer of the comprehensive design (approved): rome stops being read-only and starts helping deploy + interact.

Architecture — the core now supports actions (kind: read | action) + single-verb commands (rome deploy, not rome contract deploy). Actions are CLI-only, key-gated (ROME_EVM_KEY from env only — never a flag, never logged, never through MCP) and are never registered as MCP tools — a tested security invariant.

New commands

  • rome call <chain> <addr> <sig> [args] — read via eth_call (read; on CLI + MCP)
  • rome deploy <chain> <artifact> [args] — deploy a compiled contract, handling Rome's gas quirks (action)
  • rome send <chain> <addr> <sig> [args] — write via submitRomeTx (action)

Validation

  • Funded works-gate GREEN on Hadrian: rome deploy Store → rome send set(42)rome call value() == 42 (real on-chain txs; deploy 0x3b04c637…).
  • rome call live-verified (wUSDC decimals/symbol).
  • 39/39 tests (action model, key-gating, verb dispatch, helpers); typecheck + build + MCP smoke green (smoke confirms deploy/send are NOT MCP tools).
  • No keys in the tree (throwaway wallet key stays in git-excluded scratchpad).

Next: fund/bridge (funding on-ramp) then Phase 3 verify/tx (the works-gate + diagnose).

Extend the read-only core to support ACTIONS: capabilities gain kind (read|action)
+ single-verb dispatch. Actions are CLI-only, key-gated (ROME_EVM_KEY from env only,
never a flag/logged/through MCP), and NEVER registered as MCP tools — a tested
security invariant.

New commands:
- rome call <chain> <addr> <sig> [args]   read via eth_call (read; CLI+MCP)
- rome deploy <chain> <artifact> [args]   deploy w/ Rome gas quirks (action)
- rome send <chain> <addr> <sig> [args]   write via submitRomeTx (action)

Funded works-gate GREEN on Hadrian: deploy Store → send set(42) → call value()==42
(deploy 0x3b04c637…, txs on-chain). 39/39 tests, MCP smoke confirms actions excluded.
@anil-rome
anil-rome merged commit 8c070fe into main Jul 20, 2026
6 checks passed
@anil-rome
anil-rome deleted the phase2-actions branch July 20, 2026 12:12
anil-rome added a commit that referenced this pull request Jul 23, 2026
rome new <app-name> [--chain <chain>]: shell out to the canonical
create-rome-app scaffolder, then add what it can't know — the chain,
resolved from the registry and pre-wired into the app's .env — and
return the lifecycle next-steps in the CLI's own commands (fund →
deploy → demo → verify). Validates name/chain and refuses an existing
target BEFORE any npx spend.

Keyless action: CLI-only (MCP never writes to disk) but requires no
signing key — mkCap gains an explicit requiresKey override, and the
actions invariant is TIGHTENED (the keyless set must equal exactly
{new.new}).

Works-gate (live): scaffold on martius → CHAIN_ID=121214 pre-wired →
npm install → gen-config resolves chain 121214 from the registry →
vite build green. Driving this gate surfaced + fixed two shipped
create-rome-app bugs upstream (#3 npx empty-scaffold, #4 CHAIN_ID
ignored). 115 unit tests; GUIDES "Start an app" + ARCHITECTURE rows.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant