Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
fc332c4
feat: add `statusCheck` field to `emergency-config` schema for better…
zeroxnoodle Mar 26, 2026
bec68f8
feat: update `validate-emergency-config.js` with statusCheck validation
zeroxnoodle Mar 26, 2026
8be1cfe
refactor: validate `contractKey` on all `availableOn` chains in `vali…
zeroxnoodle Mar 26, 2026
abf724f
Merge pull request #224 from OlympusDAO/emergency-script-improvements
0xJem Mar 27, 2026
8983ee9
chore(ci): standardize pnpm-only workflows and guard installs
0xJem Apr 2, 2026
bbaf51f
chore(ci): install foundry in audit workflow
0xJem Apr 2, 2026
baa8fb8
chore(deps): pin vulnerable transitive packages via pnpm overrides
0xJem Apr 2, 2026
29d0a13
fix(lint): pin solhint ajv to restore lint checks
0xJem Apr 2, 2026
a21e45a
chore(deps): consolidate pnpm override ranges
0xJem Apr 2, 2026
5691c54
Merge pull request #226 from OlympusDAO/chore/pnpm-hardening-2026-04-02
0xJem Apr 2, 2026
0b0edfd
chore: add hardening baseline for CI comparison
0xJem Apr 3, 2026
9d57e87
chore(ci): remove redundant ci workflow
0xJem Apr 3, 2026
a32f3c5
chore(deps): pin only-allow preinstall
0xJem Apr 6, 2026
d13a2bd
chore(ci): pin workflow actions and freeze pnpm lockfile installs
0xJem Apr 13, 2026
bf43668
chore(node): standardize Node 22 across ci and tooling
0xJem Apr 13, 2026
072ed20
chore(node): require Node >=24 for dev and CI
0xJem Apr 13, 2026
496d6aa
chore(ci): read Node version from .nvmrc in workflows
0xJem Apr 13, 2026
aae10a0
chore(ci): extract composite bootstrap workflow action
0xJem Apr 13, 2026
0b43e62
chore(ci): hardcode bootstrap action defaults
0xJem Apr 13, 2026
19866bb
chore(ci): require workflow checkout before bootstrap
0xJem Apr 13, 2026
6260545
chore(ci): add shell for bootstrap run step
0xJem Apr 13, 2026
dd6fd2d
chore(ci): migrate to Node 24 bootstrap action
0xJem Apr 13, 2026
02e72c6
chore(ci): default-foundry in bootstrap action
0xJem Apr 13, 2026
5461e12
chore(ci): format bootstrap action and workflows
0xJem Apr 13, 2026
4754fc9
Merge pull request #227 from OlympusDAO/chore/dependency-hardening-20…
0xJem Apr 13, 2026
1cc6ee5
feat(proposals): add OIP-194A cooler drip update
0xJem Apr 14, 2026
3eee892
chore(proposals): suppress OIP-194A solhint warnings
0xJem Apr 14, 2026
a71a7d1
docs(proposals): clarify OIP-194A submission timing
0xJem Apr 14, 2026
4578b81
chore(proposals): remove OIP-194A preview file
0xJem Apr 14, 2026
ca5bd8f
feat(proposals): restore cooler drip guard to pre-update value
0xJem Apr 14, 2026
a10f31f
Merge pull request #229 from OlympusDAO/feat-cooler-drop
0xJem Apr 15, 2026
9b25a9d
script: add script to change the kernel executor for a given chain
0xJem Apr 30, 2026
0a8d4fd
chore: record kernel executor on Arbitrum
0xJem Apr 30, 2026
b3bc0d2
chore(env): record kernel executor config
0xJem Apr 30, 2026
110eafb
script: format JSON files after deployment
0xJem May 1, 2026
4d789f0
chore(price): clarify v1.2 configuration
0xJem May 1, 2026
1a0df80
chore(price): label v1.2 configuration contracts
0xJem May 1, 2026
2809e55
chore(price): update sUSDS expected price
0xJem May 1, 2026
2ecb790
chore(price): log v1.2 post-batch prices
0xJem May 1, 2026
5a98402
script: fix broadcasting of PriceCache deployment
0xJem May 1, 2026
f2f9a10
script: make script executable
0xJem May 1, 2026
60c3421
script: add missing activation of PriceCache policy
0xJem May 1, 2026
cc1f3f2
Merge branch 'price-config-v2-timelock-review' into chore/price-deplo…
0xJem May 4, 2026
59fb660
docs: update configuration for OHM
0xJem May 4, 2026
8d38e94
script: remove obsolete configuration arguments
0xJem May 4, 2026
821e1bd
fix: loosen compiler pragma
0xJem May 4, 2026
390d6f8
fix(proposals): mock oracle feed timestamps in simulation
0xJem May 4, 2026
006ab09
script: codex scripts
0xJem May 5, 2026
1be7692
script: pin foundry to v1.5.1
0xJem May 5, 2026
94f8153
Merge pull request #273 from OlympusDAO/fix/ci
0xJem May 5, 2026
d5c7771
Merge branch 'develop' into fix/arbitrum-kernel-executor
0xJem May 5, 2026
ae73419
Merge pull request #274 from OlympusDAO/fix/arbitrum-kernel-executor
0xJem May 5, 2026
2929046
chore(gitignore): ignore pnpm store
0xJem May 5, 2026
03c2754
feat(batch): add Treasury Working Group setup
0xJem May 5, 2026
a6784fd
feat(batch): add heartbeat validation skip
0xJem May 5, 2026
018b06a
Merge branch 'develop' into fix/cross-port-susde
0xJem May 5, 2026
e8fe6a1
fix(scripts): update kernel executor pragma
0xJem May 5, 2026
98049ac
fix(proposals): update OIP 194A test pragma
0xJem May 5, 2026
a385067
Merge pull request #275 from OlympusDAO/fix/cross-port-susde
0xJem May 5, 2026
cbb526c
Script to update Cooler OLTV on Sepolia
0xJem Jan 8, 2026
48dd069
fix: adjust compiler version
0xJem May 5, 2026
af9bc7b
Add missing script for transferring token pool ownership
0xJem Jul 2, 2025
d15f6fc
chore(coderabbit): relax script review guidance
0xJem May 5, 2026
dc9970d
chore(lint): exclude irrelevant forge lint rules
0xJem May 5, 2026
cd178ee
ci(lint): add forge lint inline annotations
0xJem May 5, 2026
a61879d
ci: add missing permission
0xJem May 5, 2026
8e84c20
Merge pull request #277 from OlympusDAO/ccip-bridge-script-fix
0xJem May 5, 2026
c6247d6
Merge pull request #278 from OlympusDAO/forge-lint-excludes
0xJem May 5, 2026
f6ee7ed
Merge pull request #279 from OlympusDAO/sepolia-cooler-oltv
0xJem May 5, 2026
e2ab2e6
Merge pull request #280 from OlympusDAO/ci/forge-lint-inline-action
0xJem May 5, 2026
83f9286
Merge branch 'develop' into chore/price-deployment
0xJem May 6, 2026
4248bd6
docs: add note on OHM deviation bps
0xJem May 6, 2026
8601d8a
chore(deps): pin fast-uri to 3.1.2
0xJem May 11, 2026
31168ca
Merge pull request #287 from OlympusDAO/chore-fast-uri
0xJem May 11, 2026
75cb636
docs(workflow): streamline repo publish process
0xJem May 12, 2026
0bb6a52
chore: harden pnpm installs (#289)
0xJem May 14, 2026
120266b
Merge pull request #288 from OlympusDAO/docs/repo-workflow
0xJem May 15, 2026
88a3eff
chore(docs): update audit report, PR and documentation
0xJem May 19, 2026
d14c7df
chore(docs): add link to oracle documentation
0xJem May 19, 2026
7e27578
chore(deps): patch brace-expansion vulnerability
0xJem May 19, 2026
6baf599
chore(pnpm): remove npx preinstall guard
0xJem May 19, 2026
ab021c3
Merge pull request #291 from OlympusDAO/chore/brace-expansion-5-0-6
0xJem May 19, 2026
7ef09f9
Merge branch 'price-feed-improvements' into chore/price-deployment
0xJem May 20, 2026
eff1c0b
Merge branch 'develop' into chore/price-deployment
0xJem May 20, 2026
3f27812
fix: missing comma
0xJem May 20, 2026
2813edd
ci(workflows): harden checkout credentials
0xJem May 20, 2026
0279d27
ci(workflows): harden remaining permissions
0xJem May 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .claude/commands/update-emergency-config.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ Analyze the contract source in this order. Stop at the first match:
- Owner: **ask user**
- For each arg: determine if a static value can be inferred from context
- If any arg is dynamic (can't determine a static value from the source), flag to user and ask how to resolve
- **statusCheck detection:** If the shutdown call goes through a proxy/policy to affect a different module (e.g., `Emergency.shutdownMinting()` affects `MINTR`), a `statusCheck` is needed. Read the shutdown function's implementation to find which module it modifies, then find the view function on that module that reflects the state change. Add a `statusCheck` pointing to the target module.

##### Level 5 — None of the above

Expand Down Expand Up @@ -171,6 +172,12 @@ Before asking the user, **generate suggested values** for all metadata fields by

6. **Dependencies** (optional): Other component IDs that should be shutdown together — check if any existing components reference related contracts

7. **statusCheck** (optional): Determine if a `statusCheck` is needed. A `statusCheck` is needed when the contract being called for shutdown is NOT the same contract whose state you'd read to verify the shutdown worked.
- For PolicyEnabler/PeripheryEnabler contracts: **NOT needed** (`isEnabled()` lives on the same contract)
- For components that call through a proxy/policy to affect a different module: **NEEDED** (e.g., `Emergency.shutdownMinting()` affects `MINTR`, so status should be read from `OlympusMinter.active()`)
- When needed, read the shutdown function's implementation to find which module it modifies, then find the view function on that module that reflects the state change
- Include `contractKey`, `abi`, `functionName`, and `trueIsShutdown` (whether `true` return means shut down)

**Step 2: Present all suggestions to the user for confirmation:**

Use AskUserQuestion to present the generated values. Format the suggestions clearly so the user can approve, modify, or skip each one. For example:
Expand Down Expand Up @@ -233,13 +240,20 @@ Suggest a short, descriptive kebab-case component ID for the contract and confir
"abi": "<matched abi key>"
}
],
"statusCheck": {
"contractKey": "<module env key, if needed>",
"abi": "<abi key for module>",
"functionName": "<view function name>",
"trueIsShutdown": false
},
"availableOn": ["<chains from env.json>"],
"postShutdownSteps": ["<from user, if provided>"],
"dependencies": ["<from user, if provided>"]
}
```

- Omit `shutdownCriteria`, `postShutdownSteps`, `dependencies` only if the user explicitly chose to skip them (the skill should always suggest values first)
- Omit `statusCheck` when the shutdown target and status check target are the same contract (e.g., PolicyEnabler/PeripheryEnabler contracts). Include it when the shutdown action goes through a proxy/policy to affect a different module.

1. Update `version` (bump patch version), `lastUpdated`, and `updatedBy` using `jq`:

Expand Down Expand Up @@ -294,6 +308,8 @@ Match function signatures to ABI keys in `documentation/emergency/emergency-abis
| `shutdown(address[])` | `yield_repurchase_facility` |
| `withdrawLiquidity(uint256)` | `ccip_lock_release_pool` |
| `emergencyShutdownFixedExpiryMarket(uint256)` | `bond_manager` |
| `active()` (OlympusMinter status check) | `mintr` |
| `active()` (OlympusTreasury status check) | `trsry` |

**Disambiguation:** If a function signature matches multiple ABI keys (e.g., `shutdown()` maps to both `emergency` and `emission_manager`; `deactivate()` maps to both `heart` and `reserve_migrator`), determine the correct key by checking which ABI contains the full set of functions used by the contract. If still ambiguous, ask the user.

Expand Down
5 changes: 5 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,8 @@ reviews:
auto_review:
# Review all branches, not just PRs against the base branch
base_branches: [".*"]
path_instructions:
- path: "src/scripts/**/*.sol"
instructions: |
Solidity files under src/scripts are operational scripts, not deployed contracts.
Do not flag require statements, string revert messages, or missing custom errors in this path.
21 changes: 21 additions & 0 deletions .codex/environments/environment.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# THIS IS AUTOGENERATED. DO NOT EDIT MANUALLY
version = 1
name = "olympus-v3"

[setup]
script = "pnpm install"

[[actions]]
name = "lint"
icon = "tool"
command = "pnpm run lint"

[[actions]]
name = "format"
icon = "tool"
command = "pnpm run prettier"

[[actions]]
name = "unit tests"
icon = "tool"
command = "pnpm run test:unit"
30 changes: 30 additions & 0 deletions .github/actions/bootstrap/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Bootstrap CI environment
description: Standardized repository setup for CI.

inputs:
install-foundry:
description: Install foundry toolchain if required by the project.
required: false
default: "true"

runs:
using: composite
steps:
- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version-file: .nvmrc

- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0

- name: Install Foundry
if: ${{ inputs.install-foundry == 'true' }}
uses: foundry-rs/foundry-toolchain@8789b3e21e6c11b2697f5eb56eddae542f746c10 # v1.7.0
with:
# Anything higher requires a change to foundry.toml compiler restrictions
version: 1.5.1

- name: Install dependencies
run: pnpm install --frozen-lockfile
shell: bash
30 changes: 30 additions & 0 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Dependency Audit

on:
pull_request:
workflow_dispatch:

permissions:
contents: read
pull-requests: write

jobs:
audit:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Comment thread
coderabbitai[bot] marked this conversation as resolved.
with:
persist-credentials: false

- name: Bootstrap
uses: ./.github/actions/bootstrap

- name: Audit pnpm dependencies (fail on moderate+)
uses: JamesRobertWiseman/pnpm-audit@a6a8cc297d146014c029926e49d43571e776f85e # v3.2.0
with:
package_json_path: ./
github_token: ${{ secrets.GITHUB_TOKEN }}
level: moderate
fails: true
single_comment: true
34 changes: 12 additions & 22 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,50 +5,40 @@ on:
- master
pull_request:

permissions:
contents: read

jobs:
run-ci:
coverage:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- uses: actions/setup-node@v4
with:
node-version: 20

- uses: pnpm/action-setup@v2
with:
version: 9

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Comment thread
coderabbitai[bot] marked this conversation as resolved.
with:
version: 1.5.1
persist-credentials: false

- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Bootstrap
uses: ./.github/actions/bootstrap

- name: Build
run: pnpm run build

# FYI: currently version 1.14
- name: Setup lcov
uses: hrishikesh-kadam/setup-lcov@v1
uses: hrishikesh-kadam/setup-lcov@6c1aa0cc9e1c02f9f58f01ac599f1064ccc83470 # v1

- name: Run Code Coverage
run: pnpm run test:coverage

- name: Add Artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: lcov.info
path: lcov.info

# This action runs genhtml (which gives an error), but does not support providing arguments to ignore the error
# - name: Report Code Coverage
# uses: zgosalvez/github-actions-report-lcov@v3
# uses: zgosalvez/github-actions-report-lcov@5aba2ff56b3dd258ec9916d3b5049dc5994db23e # v7.0.9
# with:
# coverage-files: lcov.info
# github-token: ${{ secrets.GITHUB_TOKEN }}
Expand Down
29 changes: 13 additions & 16 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,27 @@ on:
- master
pull_request:

permissions:
contents: read

jobs:
run-ci:
lint:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Comment thread
coderabbitai[bot] marked this conversation as resolved.
with:
submodules: recursive
persist-credentials: false

- uses: actions/setup-node@v4
with:
node-version: 20
- name: Bootstrap
uses: ./.github/actions/bootstrap

- uses: pnpm/action-setup@v2
- name: Run forge lint inline annotations
uses: 0xJem/forge-lint-inline-action@7f2d23ba91fe2839c0e16034869f4881d3fd2d41 # v0.1.0
with:
version: 9

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: 1.5.1

- name: Install Node dependencies
run: pnpm install --frozen-lockfile
install-foundry: false
fail-level: error

- name: Run lint check
run: pnpm run lint:check
27 changes: 9 additions & 18 deletions .github/workflows/size.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,21 @@ on:
- master
pull_request:

permissions:
contents: read

jobs:
run-ci:
size-check:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- uses: actions/setup-node@v4
with:
node-version: 20

- uses: pnpm/action-setup@v2
with:
version: 9

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Comment thread
coderabbitai[bot] marked this conversation as resolved.
with:
version: 1.5.1
persist-credentials: false

- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Bootstrap
uses: ./.github/actions/bootstrap

# Build will fail if a contract is over the size limit
- name: Contract Size
Expand Down
27 changes: 9 additions & 18 deletions .github/workflows/tests-crosschain.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,21 @@ on:
- master
pull_request:

permissions:
contents: read

jobs:
run-ci:
crosschain-tests:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- uses: actions/setup-node@v4
with:
node-version: 20

- uses: pnpm/action-setup@v2
with:
version: 9

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
version: 1.5.1
persist-credentials: false

- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Bootstrap
uses: ./.github/actions/bootstrap
Comment thread
coderabbitai[bot] marked this conversation as resolved.

- name: Build
run: pnpm run build
Expand Down
27 changes: 9 additions & 18 deletions .github/workflows/tests-fork.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@ on:
- master
pull_request:

permissions:
contents: read

jobs:
run-ci:
fork-tests:
name: Fork tests - ${{ matrix.shard.name }}
runs-on: ubuntu-latest
strategy:
Expand All @@ -23,25 +26,13 @@ jobs:
script: test:fork:misc

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- uses: actions/setup-node@v4
with:
node-version: 20

- uses: pnpm/action-setup@v2
with:
version: 9

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
version: 1.5.1
persist-credentials: false

- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Bootstrap
uses: ./.github/actions/bootstrap

- name: Build
run: pnpm run build
Expand Down
Loading
Loading