Skip to content

Detach provisionPool governance from economicCommittee (blocks IP config removal) #12736

Description

@turadg

Context

Sub-task of #12719 (remove @agoric/inter-protocol). Splitting this out because it is a design decision with production-bootstrap impact, not a mechanical edit.

The blocker

The checklist item "Remove Inter Protocol from chain configs" (vm-config decentral-{main,test,itest}-vaults, demo, devnet, itest-orchestration) looks like deleting @agoric/builders/scripts/inter-protocol/* entries from the coreProposals arrays. But inter-protocol/init-core.js (with econCommitteeOptions) is what starts the economicCommittee, and:

  • provisionPool is started via startGovernedUpgradable in packages/vats/src/core/startWalletFactory.js.
  • startGovernedUpgradable does await economicCommitteeCreatorFacet (packages/vats/src/core/basic-behaviors.js:322).
  • The economicCommittee is produced only by packages/inter-protocol/src/proposals/startEconCommittee.js.
  • Even the BLD migration packages/vats/src/proposals/upgrade-provisionPool-to-BLD-proposal.js still calls E(electorateCreatorFacet).getPoserInvitation() — provisionPool stays a governed contract requiring the electorate in every form.

So removing init-core.js from the configs makes provisionPool's governed start await forever → bootstrap hangs (not a clean failure). provisionPool is the sole remaining bootstrap consumer of the economicCommittee once IP is gone; all other consumers (upgrade-psm, upgrade-asset-reserve, committee-proposal, replaceElectorate) are IP and die with the package.

Already-done prerequisites do not cover this: #11866 moved provisionPool to @agoric/vats and made credit BLD-denominated, and the econCharterKit wiring was removed from startWalletFactory.js, but neither detaches provisionPool from the economicCommittee electorate.

Options

  1. Ungovern provisionPool — convert to a non-governed startUpgradable start; PerAccountInitialAmount becomes a plain term / creatorFacet setter. Truest to the sunset goal ("don't relocate pieces"); requires a contract change + a governed→ungoverned upgrade handler for existing chains.
  2. Minimal committee in vats — relocate a small startEconCommittee into @agoric/vats so provisionPool stays governed unchanged. Lowest churn, unblocks config edits immediately, but relocates a piece.
  3. Other (e.g. reconsider whether provisionPool needs a governed PerAccountInitialAmount at all).

Blocks

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions