Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
456118f
feat: add IRI security review by OffbeatLabs (#14319)
smartcontracts Feb 25, 2025
2515755
feat: op-deployer cleanupAfterExit, unit tests cleanup and clean cach…
yashvardhan-kukreja Feb 25, 2025
97f2d08
feat(op-program-svc): introduce new service to compute prestates (#14…
sigma Feb 25, 2025
5f227cc
op-service: make signer client compatible with SetCodeTx type (#14489)
bitwiseguy Feb 25, 2025
d5286fa
maint: clean up security reviews table, update codeowners (#14523)
smartcontracts Feb 25, 2025
ee82433
chore: Update drippie config files with actual config from runbook (#…
pauldowman Feb 25, 2025
18d5011
Avoid lookup twice (#14354)
ec2 Feb 25, 2025
c267dd5
vm-runner: Add metrics to track vm panics (#14504)
mbaxter Feb 25, 2025
2e75688
update links in directory structure after PRs #12968 & #12828 (#14525)
NaijaCoderGirl Feb 25, 2025
8d0dd96
feat: do not alias 7702 addresses (#14506)
smartcontracts Feb 25, 2025
1c94e62
Revert "Added footer to op-deployer (#14374)" (#14528)
mslipper Feb 25, 2025
cae6fd1
op-batcher: always `updateCursorAndMetrics` when returning from `proc…
geoknee Feb 25, 2025
df65a15
fix(devnet-sdk): Unique sentinels for devnet-sdk (#14514)
janjakubnanista Feb 25, 2025
0718d51
feat: remove freeze from L1 and dispute contracts (#14438)
maurelian Feb 25, 2025
f45e785
op-challenger: Avoid loading duplicate leaves in same block (#14516)
ajsutton Feb 25, 2025
4ef678a
feat: semgrep rules and check for reinitializer modifiers (#14534)
smartcontracts Feb 26, 2025
aa09c22
Update 404 link VERSIONING.md (#14519)
rebustron Feb 26, 2025
aabf3fe
all: update op-geth to v1.101500.1 (#14500)
sebastianst Feb 26, 2025
6b03d98
Retry chain-id queries (#14539)
mbaxter Feb 26, 2025
5adfa0e
devnet-sdk: Fix casing in book theme (#14545)
mslipper Feb 26, 2025
c016168
chore: Fix another footer (#14548)
mslipper Feb 26, 2025
1d05a2a
op-supervisor: Check message expiry (#14463)
Inphi Feb 26, 2025
3085c73
op-challenger: Add Super DG contract caller (#14551)
Inphi Feb 26, 2025
06c1bc0
op-node: Remove OverrideMessageExpiryTimeInterop from rollup.Config (…
Inphi Feb 26, 2025
f28cfae
feat: remove DeployOPCM (#14556)
maurelian Feb 27, 2025
b21a573
Add updated MT Cannon Spearbit audit (#14497)
pauldowman Feb 27, 2025
0d761a4
op-batcher: remove `ChannelManager.CheckExpectedProgress()` and add c…
geoknee Feb 27, 2025
48b645a
optimize context usage (#14558)
zhiqiangxu Feb 27, 2025
ade9ad0
Add 64-bit tests for signExtend (#14543)
mbaxter Feb 27, 2025
5523d7a
op-batcher: correctly track block metrics in `handleChannelInvalidate…
geoknee Feb 27, 2025
e4297b4
op-batcher: improve `computeSyncActions()` logging (#14563)
geoknee Feb 27, 2025
d290a77
feat: Remove BlockNumber Dispute for SuperFaultDisputeGame + SuperPer…
ControlCplusControlV Feb 27, 2025
8e6dae2
op-supervisor: independent reset preparation (#14444)
axelKingsley Feb 27, 2025
1dce816
op-program, op-challenger: Reduce number of steps per timestamp to 12…
ajsutton Feb 28, 2025
e274a15
op-test-sequencer: initial service scaffolding (#14270)
protolambda Feb 28, 2025
cd6f74c
ci: only tag finalized Docker images as 'latest' (#14582)
sebastianst Feb 28, 2025
6aa2ca5
Match OPCM version with monorepo release version (#14455)
alcueca Feb 28, 2025
3f56e4b
interop: Recursive hazard detection (#14453)
tcrypt25519 Feb 28, 2025
2f15b04
op-service: check if TLS is enabled and move middleware (#14571)
protolambda Feb 28, 2025
e402783
feat: bytecode verification script (#14589)
smartcontracts Feb 28, 2025
414f402
op-e2e: Write jwt.secret to a temp dir instead of into the source cod…
ajsutton Feb 28, 2025
4ba2eb0
default to the correct gameType (#14591)
ControlCplusControlV Mar 1, 2025
d8b84ae
Interop: Rewind tests (#14289)
tcrypt25519 Mar 3, 2025
c46bb16
op-batcher: introduce `PREFER_LOCAL_SAFE_L2` config var (#14587)
geoknee Mar 3, 2025
e1516f0
op-deployer: Start finalizing support for v2.0.0 (#14557)
mslipper Mar 3, 2025
14fdfbe
mipsevm Memory Merklization Abstraction (#14292)
ec2 Mar 3, 2025
f9ee04c
Update README.md (#14590)
leopardracer Mar 3, 2025
aeafa4c
remove devnetL1 files (#14619)
zhiqiangxu Mar 4, 2025
ffd1786
feat: implement EIP-7251, EIP-7002 end-to-end test (#14253)
meyer9 Mar 4, 2025
e76409e
feat: add acceptance test for BLS precompiles (#13934)
meyer9 Mar 4, 2025
44ec5a2
op-node: drop stale todo in finality code (#14620)
protolambda Mar 4, 2025
aa132b3
op-test-sequencer: structure sub-responsibilities (#14501)
protolambda Mar 4, 2025
8fe61f4
ctb: Split up the OPCM (#14600)
mslipper Mar 4, 2025
35d4fc1
ctb: Add upgrade 14 upgrader (#14612)
mslipper Mar 4, 2025
502f002
Remove redundant TODOs (#14610)
ajsutton Mar 4, 2025
8beb603
op-e2e: cleanup unused MessageExpiryTime from interop recipe (#14634)
Inphi Mar 5, 2025
b6ac64c
op-dispute-mon: Support interop (#14598)
ajsutton Mar 5, 2025
989f8e0
contracts: Add solvency invariant test for Super FDG (#14555)
Inphi Mar 5, 2025
9795c85
todo-checker: Fix handling of error codes. (#14611)
ajsutton Mar 5, 2025
6553db0
op-e2e: Update dispute game helpers to support SuperSystem and super …
ajsutton Mar 5, 2025
8d66746
Remove completed todo (#14640)
maurelian Mar 5, 2025
abaad42
ops: Add docs around bailiff re-runs (#14632)
mslipper Mar 5, 2025
6cebf7a
contracts: rm not used format (#14593)
jsvisa Mar 5, 2025
48adf2e
op-program: Consolidate cascading block replacements (#14622)
Inphi Mar 5, 2025
580ad4b
fix(devnet-sdk): allow in-place redeployment (#14412)
sigma Mar 5, 2025
5cc9f00
devnet-sdk: Use geth logger instead of slog (#14644)
pcw109550 Mar 5, 2025
24baeb1
add flags: `txmgr.max-basefee` and `txmgr.max-tip-cap` (#13382)
zhiqiangxu Mar 5, 2025
8699a08
ctb: Add contracts book (#14643)
mslipper Mar 5, 2025
2123532
Adress and remove todo (#14646)
maurelian Mar 5, 2025
43640ae
dependabot(gomod): bump github.com/klauspost/compress (#14436)
dependabot[bot] Mar 5, 2025
8de0d08
feat: update message passing for EIP7623 (#14608)
smartcontracts Mar 5, 2025
be43d0f
Add upgrade 13 audit (#14647)
maurelian Mar 5, 2025
b89549c
op-supervisor: cleanup stale todo comment (#14648)
protolambda Mar 5, 2025
63da401
Test upgrades on a list of chains (#14358)
JosepBove Mar 5, 2025
636ad83
isthmus: operator fee (#12166)
yuwen01 Mar 5, 2025
b0eec05
feat: handle operator fee in OPCM (#14662)
leruaa Mar 5, 2025
a33bba2
op-deployer: `l1-rpc-url` is not needed when `deployment-target` is `…
zhiqiangxu Mar 6, 2025
1db5141
Decouple node from chain (#14660)
pcw109550 Mar 6, 2025
7a7d6ec
op-conductor: Remove block time check for unsafe head progress (#14655)
dpulitano Mar 6, 2025
5be024c
fix: remove requests processing step (#14623)
meyer9 Mar 6, 2025
d31590f
op-e2e: Configurable blocktime setup for interop (#14672)
Inphi Mar 6, 2025
9092fb3
all: update op-geth to v1.101503.0 (#14560)
geoknee Mar 6, 2025
61272aa
ct docs: update release process without suffixes in contract semvers …
maurelian Mar 6, 2025
17a51ed
Fix broken link in versioning.md (#14688)
mbaxter Mar 6, 2025
13862fe
op-node: continue sequencing when `L1TemporaryErrorEvent` happens (#1…
zhiqiangxu Mar 6, 2025
050cb1a
op-challenger: Add config option to set dependency set config (#14666)
ajsutton Mar 6, 2025
7d435a7
Add 1.5.0-rc.3 to releases.json (#14695)
ajsutton Mar 6, 2025
596d089
ci: Enforce correct formatting for TODOs. (#14639)
ajsutton Mar 6, 2025
2c037d0
op-challenger: Update op-program executor to handle interop properly …
ajsutton Mar 7, 2025
7cab3e7
Add ToSuper() method to convert super reponse to Super instance. (#14…
ajsutton Mar 7, 2025
ffec668
Add devnet-sdk validators for fork configuration (#14668)
teddyknox Mar 7, 2025
61e8f4e
Improve address management in kurtosis-devnet and devnet-sdk (#14703)
teddyknox Mar 7, 2025
6f68dc3
kt-devnet: add missing network params for supervisor (#14708)
pcw109550 Mar 7, 2025
9a81b5b
show more error info when EngineAPIError is returned (#14673)
zhiqiangxu Mar 7, 2025
46736af
Misc renames for clarity to fields in devnet-sdk and kurtosis-devnet …
teddyknox Mar 7, 2025
8a5ee6b
fix(op-deployer): goreleaser linker flags for rendering version (#14344)
yashvardhan-kukreja Mar 7, 2025
aaedad6
feat: rm unnecessary generic type arguments (#12663)
jsvisa Mar 7, 2025
d190011
ops: remove outdated legacy env rc example (#14724)
protolambda Mar 7, 2025
21d120f
Ingest L1 Chain ID into devnet-sdk (#14704)
teddyknox Mar 7, 2025
a7af912
Unfreeze MIPS contracts (#14726)
mbaxter Mar 7, 2025
c7ae618
cannon: Consolidate state version logic (#14725)
mbaxter Mar 7, 2025
95c3642
contracts: use full compiler target for semver key (#14722)
bitwiseguy Mar 7, 2025
b0e8e31
contracts: reenable semver-diff-check in ci (#14727)
bitwiseguy Mar 7, 2025
b11a819
Refreeze MIPS contracts (#14732)
mbaxter Mar 7, 2025
b84e4c4
cannon: Add more differential tests (#14684)
mbaxter Mar 7, 2025
2f3669d
op-deployer: add command to verify contracts (#14633)
bitwiseguy Mar 8, 2025
e3a9294
op-validator: Add mainnet validators (#14734)
mslipper Mar 8, 2025
eeb9411
all: Implement optional PectraBlobSchedule fork/feature (#14680)
sebastianst Mar 8, 2025
4b36aa4
Don't split log.msg (#14735)
trianglesphere Mar 9, 2025
1b90c05
op-challenger: Interop vm runner (#14669)
ajsutton Mar 10, 2025
dc0842e
op-deployer: Upgrade contracts support to v3.0.0 (#14733)
mslipper Mar 10, 2025
1ef70a7
op-deployer: add documentation for verify command (#14745)
bitwiseguy Mar 10, 2025
9c902da
ci: Fix preimage-reproducibility (#14742)
ajsutton Mar 10, 2025
cd2b0c1
dependabot(gomod): bump github.com/prometheus/client_golang (#14628)
dependabot[bot] Mar 10, 2025
ef780b2
kt-devnet: remove network params for supervisor (#14746)
pcw109550 Mar 10, 2025
64ce18a
op-service: Expand EthClient for tx handling (#14747)
pcw109550 Mar 10, 2025
b0b5309
op-supervisor,op-service: fix server-client API consistency (#14720)
protolambda Mar 10, 2025
57f78e1
op-program: Update prestate reproducibility check to compare against …
ajsutton Mar 10, 2025
a466a38
Fix problem with kurtosis-devnet deploy (#14729)
teddyknox Mar 10, 2025
e673e61
allow specifying a custom package (#14750)
zhiqiangxu Mar 10, 2025
7569975
op-program: Add a host subcommand to list available chain configs. (#…
ajsutton Mar 10, 2025
ab06b2e
go: update SR to cb1b645b35813b8dd3a900b9f99c46614e466a2c via op-geth…
sebastianst Mar 10, 2025
4d832fa
op-batcher: force use of TerminalString throughout syncActions loggin…
geoknee Mar 10, 2025
bdde878
update TODO #11693 and #14765 (#14766)
axelKingsley Mar 10, 2025
08e3744
op-program: Fix todo (#14773)
Inphi Mar 10, 2025
cbe9921
feat: interop portal updates (#14664)
smartcontracts Mar 10, 2025
9ff945a
Add consistency checks in ChainsDB Queries (#14769)
axelKingsley Mar 10, 2025
3d5540c
feat(op-acceptance-tests): introduce op-acceptance-tests. (#14706)
scharissis Mar 10, 2025
7887930
op-program: Update issue number on TODO (#14776)
ajsutton Mar 11, 2025
ac1f32d
op-batcher: introduce `ClearAllStateMetrics()` and call from `channel…
geoknee Mar 11, 2025
a132e63
Merge branch 'develop' into chore/sync-develop
0xDiscotech Mar 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
64 changes: 54 additions & 10 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,15 @@ commands:
install-contracts-dependencies:
description: "Install the dependencies for the smart contracts"
steps:
- run:
name: Install SVM compilers
command: |
# Have to wipe out the SVM directory to avoid issues with the SVM version
rm -rf ~/.svm/*
svm install 0.8.15
svm install 0.8.19
svm install 0.8.25
svm install 0.8.28
- run:
name: Install dependencies
command: |
Expand Down Expand Up @@ -342,8 +351,6 @@ jobs:
- "packages/contracts-bedrock/cache"
- "packages/contracts-bedrock/artifacts"
- "packages/contracts-bedrock/forge-artifacts"
- "packages/contracts-bedrock/deploy-config/devnetL1.json"
- "packages/contracts-bedrock/deployments/devnetL1"
- notify-failures-on-develop

check-kontrol-build:
Expand Down Expand Up @@ -793,7 +800,8 @@ jobs:
no_output_timeout: <<parameters.test_timeout>>
- run:
name: Print failed test traces
command: just test-rerun
command: |
just test-rerun | tee failed-test-traces.log
environment:
FOUNDRY_PROFILE: <<parameters.test_profile>>
ETH_RPC_URL: https://ci-mainnet-l1-archive.optimism.io
Expand All @@ -803,10 +811,25 @@ jobs:
disable_search: true
files: ./packages/contracts-bedrock/lcov-all.info
flags: contracts-bedrock-tests
- store_artifacts:
path: packages/contracts-bedrock/failed-test-traces.log
when: on_fail
- notify-failures-on-develop

contracts-bedrock-tests-upgrade:
circleci_ip_ranges: true
parameters:
fork_op_chain:
description: Fork OP Chain
type: string
default: "op"
fork_base_chain:
description: Fork Base Chain
type: string
default: "mainnet"
fork_base_rpc:
description: Fork Base RPC
type: string
docker:
- image: <<pipeline.parameters.default_docker_image>>
resource_class: large
Expand All @@ -833,28 +856,35 @@ jobs:
command: |
just print-pinned-block-number > ./pinnedBlockNumber.txt
cat pinnedBlockNumber.txt
environment:
FORK_BASE_CHAIN: <<parameters.fork_base_chain>>
working_directory: packages/contracts-bedrock
- restore_cache:
name: Restore forked state
key: forked-state-contracts-bedrock-tests-upgrade-{{ checksum "packages/contracts-bedrock/pinnedBlockNumber.txt" }}
key: forked-state-contracts-bedrock-tests-upgrade-<<parameters.fork_op_chain>>-<<parameters.fork_base_chain>>-{{ checksum "packages/contracts-bedrock/pinnedBlockNumber.txt" }}
- run:
name: Run tests
command: just test-upgrade
environment:
FOUNDRY_FUZZ_SEED: 42424242
FOUNDRY_FUZZ_RUNS: 1
FOUNDRY_PROFILE: ci
ETH_RPC_URL: https://ci-mainnet-l1-archive.optimism.io
ETH_RPC_URL: <<parameters.fork_base_rpc>>
FORK_OP_CHAIN: <<parameters.fork_op_chain>>
FORK_BASE_CHAIN: <<parameters.fork_base_chain>>
working_directory: packages/contracts-bedrock
no_output_timeout: 15m
- run:
name: Print failed test traces
command: just test-upgrade-rerun
command: |
just test-upgrade-rerun | tee failed-test-traces.log
environment:
FOUNDRY_FUZZ_SEED: 42424242
FOUNDRY_FUZZ_RUNS: 1
FOUNDRY_PROFILE: ci
ETH_RPC_URL: https://ci-mainnet-l1-archive.optimism.io
ETH_RPC_URL: <<parameters.fork_base_rpc>>
FORK_OP_CHAIN: <<parameters.fork_op_chain>>
FORK_BASE_CHAIN: <<parameters.fork_base_chain>>
working_directory: packages/contracts-bedrock
when: on_fail
- save_cache:
Expand All @@ -864,10 +894,13 @@ jobs:
- "/root/.cache/go-build"
- save_cache:
name: Save forked state
key: forked-state-contracts-bedrock-tests-upgrade-{{ checksum "packages/contracts-bedrock/pinnedBlockNumber.txt" }}
key: forked-state-contracts-bedrock-tests-upgrade-<<parameters.fork_op_chain>>-<<parameters.fork_base_chain>>-{{ checksum "packages/contracts-bedrock/pinnedBlockNumber.txt" }}
when: always
paths:
- "/root/.foundry/cache"
- store_artifacts:
path: packages/contracts-bedrock/failed-test-traces.log
when: on_fail
- notify-failures-on-develop

contracts-bedrock-checks:
Expand Down Expand Up @@ -900,6 +933,8 @@ jobs:
command: snapshots-check-no-build
- run-contracts-check:
command: interfaces-check-no-build
- run-contracts-check:
command: reinitializer-check-no-build
- run-contracts-check:
command: size-check
- run-contracts-check:
Expand All @@ -921,7 +956,7 @@ jobs:
command: sudo apt-get install -y ripgrep
- run:
name: Check TODO issues
command: ./ops/scripts/todo-checker.sh --verbose <<#parameters.check_closed>> --check-closed <</parameters.check_closed>>
command: ./ops/scripts/todo-checker.sh --verbose --strict <<#parameters.check_closed>> --check-closed <</parameters.check_closed>>
- notify-failures-on-develop

fuzz-golang:
Expand Down Expand Up @@ -1184,7 +1219,12 @@ jobs:
steps:
- utils/checkout-with-mise
- setup_remote_docker
- run: make -C op-program verify-reproducibility
- run:
name: Verify reproducibility
command: make -C op-program verify-reproducibility
- store_artifacts:
path: ./op-program/temp/logs
when: always
- notify-failures-on-develop:
mentions: "@proofs-team"

Expand Down Expand Up @@ -1446,6 +1486,9 @@ workflows:
- contracts-bedrock-build
- contracts-bedrock-tests-upgrade:
name: contracts-bedrock-tests-upgrade
fork_op_chain: op
fork_base_chain: mainnet
fork_base_rpc: https://ci-mainnet-l1-archive.optimism.io
- contracts-bedrock-checks:
requires:
- contracts-bedrock-build
Expand Down Expand Up @@ -1506,6 +1549,7 @@ workflows:
op-e2e/actions
op-e2e/faultproofs
packages/contracts-bedrock/scripts/checks
packages/contracts-bedrock/scripts/verify
op-dripper
requires:
- contracts-bedrock-build
Expand Down
68 changes: 0 additions & 68 deletions .envrc.example

This file was deleted.

3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,6 @@

# Contracts
/packages/contracts-bedrock @ethereum-optimism/contract-reviewers

# Security docs
/docs @ethereum-optimism/evm-safety
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ cache

!op-deployer/pkg/deployer/artifacts

packages/contracts-bedrock/deployments/devnetL1

packages/contracts-bedrock/deployments/anvil

# vim
Expand Down
32 changes: 30 additions & 2 deletions .semgrep/rules/sol-rules.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ rules:
- id: sol-safety-proper-initializer
languages: [solidity]
severity: ERROR
message: Proxied contracts must have an initialize function with the initializer modifier and external visibility
message: Proxied contracts must have an initialize function with the initializer or reinitializer modifier and external or public visibility
patterns:
- pattern-regex: "///\\s*@custom:proxied\\s+true(?P<CONTRACT>[\\s\\S]*)"
- focus-metavariable: $CONTRACT
Expand All @@ -259,6 +259,34 @@ rules:
function initialize(...) external initializer {
...
}
- pattern-not: |
function initialize(...) public initializer {
...
}
- pattern-not: |
function initialize(...) external reinitializer(...) {
...
}
- pattern-not: |
function initialize(...) public reinitializer(...) {
...
}
paths:
exclude:
- packages/contracts-bedrock/src/L1/SystemConfig.sol
- packages/contracts-bedrock/src/L1/SystemConfigInterop.sol

- id: sol-safety-proper-upgrade-function
languages: [solidity]
severity: ERROR
message: Upgrade functions must be external and have the reinitializer modifier
patterns:
- pattern-regex: "///\\s*@custom:proxied\\s+true(?P<CONTRACT>[\\s\\S]*)"
- focus-metavariable: $CONTRACT
- pattern: |
function upgrade(...) {
...
}
- pattern-not: |
function upgrade(...) external reinitializer(...) {
...
}
21 changes: 18 additions & 3 deletions .semgrep/tests/sol-rules.sol-safety-proper-initializer.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,28 @@ contract SemgrepTest__sol_safety_proper_initializer {
// ...
}

// ruleid: sol-safety-proper-initializer
function initialize() external {
// ok: sol-safety-proper-initializer
function initialize() public initializer {
// ...
}

// ok: sol-safety-proper-initializer
function initialize() external reinitializer(1) {
// ...
}

// ok: sol-safety-proper-initializer
function initialize() external reinitializer(1) {
// ...
}

// ok: sol-safety-proper-initializer
function initialize() public reinitializer(2) {
// ...
}

// ruleid: sol-safety-proper-initializer
function initialize() public initializer {
function initialize() internal {
// ...
}

Expand Down
64 changes: 64 additions & 0 deletions .semgrep/tests/sol-rules.sol-safety-proper-upgrade-function.t.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// Semgrep tests for Solidity rules are defined in this file.
// Semgrep tests do not need to be valid Solidity code but should be syntactically correct so that
// Semgrep can parse them. You don't need to be able to *run* the code here but it should look like
// the code that you expect to catch with the rule.
//
// Semgrep testing 101
// Use comments like "ruleid: <rule-id>" to assert that the rule catches the code.
// Use comments like "ok: <rule-id>" to assert that the rule does not catch the code.

/// NOTE: Semgrep limitations mean that the rule for this check is defined as a relatively loose regex that searches the
/// remainder of the file after the `@custom:proxied` natspec tag is detected. This means that we must test the case
/// without this natspec tag BEFORE the case with the tag or the rule will apply to the remainder of the file.

// If no proxied natspec, upgrade functions can have no upgrade modifier and be public or external
contract SemgrepTest__sol_safety_proper_upgrade_function_1 {
// ok: sol-safety-proper-upgrade-function
function upgrade() external {
// ...
}

// ok: sol-safety-proper-upgrade-function
function upgrade() public {
// ...
}
}

/// NOTE: the proxied natspec below is valid for all contracts after this one
/// @custom:proxied true
contract SemgrepTest__sol_safety_proper_upgrade_function_2 {
// ok: sol-safety-proper-upgrade-function
function upgrade() external reinitializer(1) {
// ...
}

// ok: sol-safety-proper-upgrade-function
function upgrade() external reinitializer(1) {
// ...
}

// ruleid: sol-safety-proper-upgrade-function
function upgrade() public reinitializer(2) {
// ...
}

// ruleid: sol-safety-proper-upgrade-function
function upgrade() external initializer {
// ...
}

// ruleid: sol-safety-proper-upgrade-function
function upgrade() public initializer {
// ...
}

// ruleid: sol-safety-proper-upgrade-function
function upgrade() external {
// ...
}

// ruleid: sol-safety-proper-upgrade-function
function upgrade() public {
// ...
}
}
Loading