Skip to main content

Governance Lifecycle

This is the end-to-end operational flow for publishing a new dapp version.

1. Start prerequisites

  • Start local IPFS.
  • Start contracts devnet.
  • Ensure CLI ABIs are refreshed.

2. Package dapp content

cd cli
bun run src/index.ts package \
--path ../dapp-examples/uniswap-v2 \
--name "Uniswap V2" \
--dapp-version "0.0.1" \
--description "Uniswap V2 example" \
--json

Capture the returned rootCid.

3. Propose publication

bun run src/index.ts dapp:propose \
--root-cid <rootCid> \
--name "Uniswap V2" \
--dapp-version "0.0.1" \
--description "Uniswap V2 example"

4. Vote and finalize

bun run src/index.ts vote:cast <proposalId> --support for
bun run src/index.ts proposals:queue <proposalId>
bun run src/index.ts proposals:execute <proposalId>

5. Validate registry state

bun run src/index.ts dapp:list --json

6. Retrieve and run in client

bun run src/index.ts dapp:fetch --root-cid <rootCid> --out .vibefi/cache
cd ../client
cargo run -- --bundle ../cli/.vibefi/cache/<rootCid>

Security controls in this flow

  • Proposal eligibility is contract-enforced.
  • Governance executes through timelock.
  • Security Council can pause/deprecate and veto proposals.
  • Client runtime prevents arbitrary network exfiltration from frontend bundles.