Upgrade & Immutability Status

4.4 Upgrade & Immutability Status

This page defines whether Modulexo contracts are upgradeable, owner-controlled, governance-controlled, or fully immutable.

All statements must be verified on-chain via:

owner() • Proxy admin address • Implementation address • Ownership transfer events


I. Upgrade Model Classification

Each contract belongs to one of the following categories:

  1. Immutable (No Proxy, Ownership Renounced)

  2. Owner-Controlled (No Proxy)

  3. Governance-Controlled (No Proxy)

  4. Upgradeable via Proxy (Owner or Governance Controlled)

The status must be explicitly listed per contract in Contract Directory.


II. Execution Layer (Recycle Contracts)

RecyclingEngine

Verify:

• Is contract a proxy? • If proxy:

  • Proxy address

  • Implementation address

  • Proxy admin address • If not proxy:

  • Code immutable after deployment

Verify:

Possible states:

• Private Owner • Timelock • Zero address (renounced)

If ownership renounced:

Parameter updates are permanently disabled.

If ownership transferred to Timelock:

Upgrades or parameter changes require governance proposal.


SponsorshipLedger

Same verification steps apply:

• Proxy or not • Owner or Timelock • Renounced or active

Ledger math itself is immutable unless contract upgradeable via proxy.


RecycleAssetRegistry

Asset enablement and caps depend on ownership state.

If owner active:

Asset list mutable.

If renounced:

Registry frozen.


III. Router

Verify:

• Proxy status • Owner

Router rail configuration is mutable only if owner active.

If ownership renounced:

Rail topology becomes permanent.


IV. Fund (Ethereum)

Fund may be:

• Direct deployment (immutable code) • UUPS / Transparent Proxy (upgradeable)

If proxy:

List:

• Proxy address • Implementation address • Proxy admin

Ownership must equal Timelock for governance control.

If proxy admin retained by private address:

Upgrade risk remains.

This must be disclosed.


V. Governance Contracts

Weighted Governor

Typically immutable.

Verify:

• No proxy admin • Constructor parameters fixed


Timelock

Verify:

getMinDelay() • Admin role assignments

If Timelock admin is self-governed:

Upgrade path is constrained by governance.


VI. Upgrade Authority Matrix

Contract
Proxy?
Owner
Upgrade Authority
Immutable?

RecyclingEngine

Yes/No

Address

Owner / Governance

Depends

Ledger

Yes/No

Address

Owner / Governance

Depends

Registry

Yes/No

Address

Owner / Governance

Depends

Router

Yes/No

Address

Owner

Depends

Fund

Yes/No

Timelock

Governance

Depends

This matrix must be filled with real deployment data.


VII. What Cannot Be Changed (If Immutable)

If contracts are non-proxy and ownership renounced:

The following become permanent:

• Distribution formula • Weight mint logic • Unit consumption logic • Burn routing • Rail math • Governance structure

No upgrade path exists.


VIII. Proxy Risk Disclosure

If any contract uses a proxy pattern:

Risks include:

• Implementation upgrade • Admin key compromise • Governance manipulation

Verify:

on proxy contract (if applicable).

Upgrade events must be monitored.


IX. Parameter Freeze State

If renounceOwnership() called:

Parameter update functions become inaccessible.

Verify via:

This permanently disables:

• setParams • setAsset • setRails

Freeze state must be documented.


X. Governance Lock Scenario

If:

• All execution contracts owned by Timelock • Fund owned by Timelock • Timelock controlled by Governor

Then system upgrades require:

  1. Proposal

  2. Vote

  3. Delay

  4. Execution

No unilateral change possible.


XI. Immutability Summary Categories

Category A — Fully Immutable

• No proxy • Owner renounced

Permanent.


Category B — Governance Controlled

• Owner = Timelock • No private admin

Upgradeable via governance.


Category C — Owner Controlled

• Owner is private address

Upgradeable or mutable without governance.


Each contract must be assigned one category.

Last updated