feat(KI-12): SAFE Wallet integration — Phase A discovery + Phase B treasury module #107
Merged
syntropicagent opened 2 weeks ago

KI-12 — SAFE Wallet Integration (Phases A + B + C)

Iteration: v1.2 · Status: Draft — full v1.2 scope implemented.

Phase A — Discovery (on-chain verified, Gnosis)

Two distinct Kokonut SAFEs confirmed via SAFE Transaction Service API:

SAFEAddressConfig
Core Team SAFE0x03779B674CbCBfc0B801c4cAc9DFaC8aACbbD5c52-of-3, v1.4.1+L2
DAO Treasury SAFE0xeB55b75328a8dFfd45Bbf34B7e7efC431A1790851-of-1, Baal = owner AND module

Treasury SAFE's owner/module = Baal contract (0x8977c56e...) — confirming the DAOHaus model (governance votes in Baal, execution flows through the SAFE). → docs/treasury.md

Phase B — Read-side services/treasury/ module

  • safe.py: chain-agnostic SafeReadClient (status, balances, multisig txs), 8 chains mapped (gnosis/mainnet/celo/sepolia/polygon/arbitrum/optimism/base)
  • cli.py: kokonut treasury status|balances|transactions
  • tests/test_treasury.py: 6 tests, mocked, green

Phase C — Farm SAFE provisioning (agent proposes, human approves)

  • schemas/postgres/354_safe_treasury_accounts.sql: safe_account + safe_transaction tables, governed lifecycle, provisioning_status proposed→approved→deployed→active. Seeded with both canonical SAFEs.
  • services/treasury/provisioning.py: propose_farm_safe (agent inserts draft), approve_farm_safe (human gate), list_farm_safes. Lazy DB imports.
  • cli.py: kokonut treasury propose|approve|farms
  • tests/test_treasury_provisioning.py: 7 tests, mocked, green

Total: 13 new tests, all passing locally.

Design alignment (per Wasabi)

  • Chain-agnostic: farms may be inside the DAO (Gnosis) or standalone on any SAFE-supported chain
  • SAFE "propose function role" = agents propose, humans approve/sign
  • Official SAFE Factory + APIs for deployment (no custom contracts)
  • Two SAFEs deliberately NOT conflated: Core Team (ops) vs DAO Treasury (Baal-controlled)

Next (Phase D, future iteration)

Escrow settlement + attestation signing through SAFE.

Refs KI-12 · iteration v1.2

Commits were merged into target branch
  • feat(ki12): SAFE Wallet integration — Phase A + Phase B
    Phase A — Discovery (on-chain verification):
    - docs/treasury.md: architecture doc for the two Kokonut SAFEs
      (Core Team 2-of-3, DAO Treasury Baal-owned), verified on Gnosis
      via SAFE Transaction Service API
    
    Phase B — Read-side treasury module:
    - services/treasury/safe.py: SafeReadClient, chain-agnostic SAFE
      Transaction Service API client (status, balances, transactions)
    - services/treasury/cli.py: typer CLI (mounts as 'treasury' in meta-CLI)
    - services/treasury/__init__.py, __main__.py
    - tests/test_treasury.py: 6 tests (mocked API, no network)
    - services/cli.py: register treasury CLI group
    
    Refs KI-12 · iteration v1.2
    2 weeks ago
  • feat(ki12): SAFE farm provisioning — Phase C (agent proposes, human approves)
    - schemas/postgres/354_safe_treasury_accounts.sql: safe_account + safe_transaction
      tables (chain-agnostic, governed lifecycle, provisioning_status
      proposed→approved→deployed→active). Seeded with the two canonical Kokonut SAFEs.
    - services/treasury/provisioning.py: propose_farm_safe (agent inserts draft),
      approve_farm_safe (human gate → approved or active with deployed address),
      list_farm_safes. Lazy DB imports so the module is import-safe without SOPS.
    - services/treasury/cli.py: add propose / approve / farms commands.
    - tests/test_treasury_provisioning.py: 7 tests (mocked DB) — all green.
    - docs/treasury.md: Phase C workflow + schema + CLI documented.
    
    Refs KI-12 · iteration v1.2
    2 weeks ago
  • syntropicagent merged 2 weeks ago (merge commit: f11dd510 )
1/1
Submitter syntropicagent
Target main
Source feat/ki12-safe-wallet
Jobs
Merge Strategy
Create Merge Commit
Watchers (1)
Reference
pr KI-107
Please wait...
Connection lost or session expired, reload to recover
Page is in error, reload to recover