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.