Thanks for your interest in contributing to multyr-core. This file describes
how external contributions are handled.
| Branch pattern | Purpose |
|---|---|
main |
Latest tagged release |
pierdev |
Development integration branch (not stable) |
reorg/runbook-<id> |
Individual Run Book execution branches |
feat/<short-name> |
Feature branches — rebase onto pierdev before review |
fix/<short-name> |
Bug fix branches |
Internal commits use the Run Book step format:
runbook-<id>: step <N> — <one-line action>
External contributors may use a simpler <area>: <imperative summary> style.
Examples:
core: fix fee accounting rounding in FeeMixin
docs: update access-control.md role matrix
test: add edge case for zero-asset deposit
- Open the PR against
pierdev(never againstmaindirectly). - Ensure CI passes:
forge build,forge test,forge fmt --check. - Update
CHANGELOG.mdunder the relevant heading. - A Foundation reviewer will respond within 7 days.
- Squash or rebase before merge if requested.
- Solidity 0.8.20
forge fmtis the canonical formatter — run before pushing- Storage namespaces follow EIP-7201; add a new namespace entry per new stateful contract
- All new public functions need at least one unit test
- All revert paths need a named custom error in the relevant interface file
- Comments in English only
- Unit and integration tests:
forge test --no-match-path "test/fork*" - Fork tests require
ARBITRUM_ARCHIVE_RPC_URL— seedocs/testing.md - Coverage goal: ≥ 90% line coverage on
src/
This repo contains the core vault and warm adapters only. Periphery contracts
live in multyr-periphery. Public strategies live in multyr-strategies.
Do not add strategy-specific logic to src/core/.
By contributing, you agree that your contribution is licensed under the same
Business Source License 1.1 terms as the rest of this repository, except for
interface files placed under src/interfaces/ which are MIT licensed.