Skip to content

Feat/security council - #270

Merged
GuiDupont merged 42 commits into
feat/v0.6.0from
feat/security-council
Feb 4, 2026
Merged

Feat/security council#270
GuiDupont merged 42 commits into
feat/v0.6.0from
feat/security-council

Conversation

@GuiDupont

Copy link
Copy Markdown
Contributor

No description provided.

jfrancai and others added 30 commits November 4, 2025 17:06
…the change of entryRate doesn't affect claim
…lt factory to support v0_6_0; rename various vault files to avoid output confusion
Comment thread src/v0.5.0/Vault.sol

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should not touch v0.5.0 files in this pr

Comment thread src/v0.5.0/Roles.sol

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should not touch v0.5.0 files in this pr

/// @param performanceRate The performance fee rate.
/// @param rateUpdateCooldown The cooldown period for updating the fee rates.
/// @param enableWhitelist A boolean indicating whether the whitelist is enabled.
struct InitStruct {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we need to have this in one place only. It's currently defined in this file, VaultInit and the factories which often break tests etc when we forgot to update

Comment thread src/protocol-v3/OptinProxyFactory.sol Outdated
/// @notice Performance fee rate (in basis points)
uint16 performanceRate;
/// @notice Flag to enable whitelist functionality
bool enableWhitelist;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

outdated

Comment thread src/protocol-v3/OptinProxyFactory.sol Outdated
/// @title InitStruct
/// @notice Initialization structure for creating new vault proxies
/// @dev Contains all necessary parameters to initialize a vault
struct InitStruct {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should import the struct and not re declare it

Comment thread src/v0.6.0/Roles.sol
RolesLib.updateSafe(_safe);
}

function giveUpSafeUpgradeability() external onlyOwner {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same

Comment thread src/v0.6.0/Whitelistable.sol Outdated
/// @custom:storage-definition erc7201:hopper.storage.Whitelistable
/// @param isWhitelisted The mapping of whitelisted addresses.
/// @param isActivated The flag to check if the whitelist is activated.
/// @param whitelistState The current whitelist mode (whitelist or blacklist).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

outdated natspecs

Comment thread test/v0.6.0/SafeAsOperator.t.sol Outdated
vm.prank(operator);
vm.expectRevert(ERC7540InvalidOperator.selector);
vault.requestDeposit(100, controller, controller, controller);
// Note: safe cannot call requestDeposit for users - onlyOperator excludes safe

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merge error the tests were legit

return RolesLib._getRolesStorage().feeRegistry.protocolFeeReceiver();
}

function gaveUpSafeUpgradeability() public view returns (bool) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updateRates does not check MAX_HAIRCUT_RATE

jfrancai and others added 3 commits February 4, 2026 16:54
- Revert v0.5.0 files to main branch state
- Add separate security council entry point (securityCouncilUpdateTotalAssets)
- Add haircutRate validation in FeeLib.updateRates()
- Add haircutRate to InitStruct and FeeManager init
- Add HaircutTaken event emission in syncRedeem
- Fix duplicate imports in RolesLib.sol
- Fix natspecs (syncRedeem, Whitelistable, Roles)
- Import InitStruct in protocol-v3 factory instead of redeclaring
- Reorder FeeLib constants (MAX_HAIRCUT_RATE after MAX_PROTOCOL_RATE)
- Update tests for new security council function
- Fix comment style // to /// for modifiers in Vault-v0.6.0.sol
- Fix typo "maximun" to "maximum" in Vault-v0.6.0.sol
- Fix typo "express" to "expressed" in FeeLib.sol
- Fix wrong storage reference "FeeManager" to "GuardrailsManager" in GuardrailsLib.sol
- Convert JSDoc style to /// natspec in GuardrailsLib.sol
- Fix invalid @inheritdoc to actual natspec in GuardrailsManager.sol
- Add missing @PARAM haircutRate in Struct.sol
- Change @PARAM owner to @dev owner in Roles.sol (not a struct field)
- Add missing @PARAM sharesToRedeem in Vault-v0.6.0.sol
- Add missing @PARAM _logic in OptinProxyFactory.sol
@GuiDupont
GuiDupont merged commit 96afb29 into feat/v0.6.0 Feb 4, 2026
3 checks passed
@GuiDupont
GuiDupont deleted the feat/security-council branch April 3, 2026 10:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants