# Governance workflows

The following workflows illustrate how governance actions are validated and executed through Tapio's multi-layered system.

#### **Parameter Adjustment Flow**

Parameter changes flow through the constraint enforcement system:

1. **Governor** sets parameter bounds in ParameterRegistry (via `setBounds()`) and calls other parameter functions (`setSwapFee()`, `setMintFee()`, etc.) on Keeper during initial setup.
2. **Curator** calls `rampA()`  on Keeper with desired values
3. Keeper validates changes against ParameterRegistry bounds automatically via `checkBounds()`
4. Target contracts (SPA, RampAController) receive validated parameter updates
5. Events are emitted from both Keeper and target contracts for monitoring

#### **Emergency Response Flow**

Emergency actions bypass normal constraints for immediate effect:

1. **Guardian** calls `pause()` or `cancelRamp()` functions on the Keeper contract
2. Keeper executes emergency actions immediately without bounds checking
3. Target SPAs enter paused state, blocking user operations but allowing admin functions
4. **PROTOCOL\_OWNER** must call unpause() to restore normal operations
5. Governance events provide audit trail for emergency actions

#### **Role Management Flow**

Role permissions are managed through hierarchical access control:

1. **PROTOCOL\_OWNER** calls `grantRole(GOVERNOR_ROLE, address)` to manage governors
2. **GOVERNOR** calls `grantRole(CURATOR_ROLE, address)` or `grantRole(GUARDIAN_ROLE, address)` to manage curators/guardians on Keeper.
3. OpenZeppelin AccessControl validates caller permissions and updates role mappings
4. Role changes take effect immediately for subsequent function calls
5. AccessControl events provide complete audit trail of permission changes
