Skip to content

[Contracts] deploy.ts points MultisigGovernance at LoanManager, the only contract lacking set_admin, so finalize_admin_transfer traps and governance is inert #1154

Description

@grantfox-oss

Telegram (ask questions / claim the issue here first): https://t.me/+DOylgFv1jyJlNzM0

Why this matters

MultisigGovernance.finalize_admin_transfer cross-invokes symbol set_admin on its target (contracts/multisig_governance/src/lib.rs:409-413). scripts/deploy.ts:265 initializes governance with target = LoanManager. But LoanManager exposes only propose_admin/accept_admin and has NO set_admin (only RemittanceNFT and LendingPool implement set_admin). The cross-contract call to a non-existent function traps, so the multisig can never transfer LoanManager's admin - the governance contract deployed by the script governs nothing.

Acceptance criteria

  • Either add pub fn set_admin to LoanManager matching the signature governance invokes, or change finalize_admin_transfer to call the target's propose_admin/accept_admin flow, or repoint the deploy target to a contract that exposes set_admin
  • Add a regression test exercising governance.finalize against the chosen real target
  • deploy.ts target selection is documented to match the contract's admin API

Files to touch

  • scripts/deploy.ts
  • contracts/multisig_governance/src/lib.rs
  • contracts/loan_manager/src/lib.rs

Out of scope

  • Transferring contract admin to the governance address at deploy time
  • delay_seconds bound

Metadata

Metadata

Assignees

No one assigned

    Labels

    architectureArchitectural changesbugSomething isn't workingcontractsIssues related to smart contractscriticalHigh-impact / hard issuerustPull requests that update rust code

    Type

    No type

    Fields

    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