Skip to content
Open
2 changes: 2 additions & 0 deletions .wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ Repo
Solmate
SPDX
StairstepExponentialDecrease
StarGuard
Starknet
SubDAO
SubDAOs
Expand All @@ -90,6 +91,7 @@ authing
bytecode
casted
checksummed
codehash
collateralization
collaterals
config
Expand Down
4 changes: 2 additions & 2 deletions spell/spell-crafter-mainnet-workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,12 +125,12 @@ Repo: https://github.com/makerdao/spells-mainnet
* [ ] Changes are tested via `testNewOrUpdatedChainlogValues`
* [ ] Adjust system values, collateral values inside `config.sol`
* [ ] Ensure every spell variable is declared as public/internal
* IF Agent spell is provided
* IF Prime Agent spell is provided
* [ ] Handover message matches `XXX spell YYYY-MM-DD deployed to 0x… with hash 0x…, direct execution: yes / no` template
* [ ] IF `direct execution` is `no`
* [ ] The spell is plotted using `StarGuardLike(XXX_STARGUARD).plot(XXX_SPELL, XXX_SPELL_HASH)`
Copy link
Member

Choose a reason for hiding this comment

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

Please, update the name here as well.

* [ ] IF `direct execution` is `yes`
* [ ] The hash is checked via `require(XXX_SPELL.codehash == XXX_SPELL_HASH, "XXX_SPELL/wrong-codehash");`
* [ ] The hash is checked via `require(XXX_SPELL.codehash == XXX_SPELL_HASH, "XXX_SPELL/wrong-codehash");` inside Core spell
* [ ] The spell is executed via `ProxyLike(XXX_PROXY).exec(XXX_SPELL, abi.encodeWithSignature("execute()"));`
* Add specific tests in `DssSpell.t.sol` to have sufficient test coverage for every spell action
* [ ] Test new collaterals
Expand Down
9 changes: 5 additions & 4 deletions spell/spell-reviewer-mainnet-checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,14 +245,15 @@
* IF Prime spell is provided
* [ ] Handover message matches `XXX spell YYYY-MM-DD deployed to 0x… with hash 0x…, direct execution: yes / no` template
* [ ] IF `direct execution` is `no`
* [ ] The spell is plotted using `StarGuardLike(XXX_STARGUARD).plot(XXX_SPELL, XXX_SPELL_HASH)`
* [ ] The Prime spell is plotted using `StarGuardLike(XXX_STARGUARD).plot(XXX_SPELL, XXX_SPELL_HASH)`
* [ ] `XXX` in `XXX_STARGUARD` matches the name of the Prime Agent
* [ ] `XXX_STARGUARD` is fetched from chainlog
* [ ] The test ensures the spell is executable via `StarGuardLike(XXX_STARGUARD).exec()` before `XXX_STARGUARD.maxDelay`
* [ ] The test ensures the `XXX_SPELL` Prime spell is executable via `StarGuardLike(XXX_STARGUARD).exec()` before `XXX_STARGUARD.maxDelay`
* [ ] IF plotted but not yet executed spell is still present in the `XXX_STARGUARD`, Governance Facilitators are aware, already notified
* [ ] IF `direct execution` is `yes`
* [ ] Provided mandatory explanation of why direct execution is required makes sense on the technical level
* [ ] The hash is checked via `require(XXX_SPELL.codehash == XXX_SPELL_HASH, "XXX_SPELL/wrong-codehash");`
* [ ] The spell is executed via `ProxyLike(XXX_PROXY).exec(XXX_SPELL, abi.encodeWithSignature("execute()"));`
* [ ] The hash is checked via `require(XXX_SPELL.codehash == XXX_SPELL_HASH, "XXX_SPELL/wrong-codehash");` inside the Core spell
* [ ] The Prime spell is executed via `ProxyLike(XXX_PROXY).exec(XXX_SPELL, abi.encodeWithSignature("execute()"));`
* [ ] `XXX` in `XXX_PROXY` matches the name of the Prime Agent
* [ ] `XXX_PROXY` is fetched from chainlog
* [ ] Prime spell address (`XXX_SPELL`) matches Exec Sheet
Expand Down
16 changes: 15 additions & 1 deletion spell/star-spell-reviewer-checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,15 @@ This section outlines the review process and provides concrete action items for
- [CHAIN_NAME] `0xADDRESS`, EXTERNAL_SOURCE_URL
- [ ] Matches valid external source (previously approved forum post, external docs, etc).

### StarGuard execution
- [ ] IF a [StarGuard module](https://github.com/sky-ecosystem/star-guard) is onboarded for this Star, the following additional checks are done:
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
- [ ] IF a [StarGuard module](https://github.com/sky-ecosystem/star-guard) is onboarded for this Star, the following additional checks are done:
- [ ] IF a [StarGuard module](https://github.com/sky-ecosystem/star-guard) is onboarded for this Prime Agent, the following additional checks are done:

- [ ] The spell exposes view-only interface `function isExecutable() external view returns (bool result)`.
- [ ] `isExecutable` either simply returns `true` or implements additional logic communicated via the relevant forum post (e.g.: by describing "earliest launch date" or "office hours" logic, etc).
- [ ] The test is preset to ensure that `isExecutable` outputs `true` before `StarGuard.maxDelay()` expires the spell.
- [ ] Third-party actors can not take advantage of the fact that Spell will be executed in a later block than the Core spell, otherwise suggest `direct execution`.
- [ ] IF Prime spell can not be executed in a later block OR have to be executed sequentially to another Prime spell, `direct execution` is clearly proposed in the forum post together with elaborated explanation why it is needed.
- [ ] The `direct execution` explanation makes sense on the technical level and can not be circumvented by the use of `isExecutable()` interface.

#### On-boarding New Contracts
- LIST every new contract present in the spell:
- [CHAIN_NAME] `CONTRACT_NAME`, LINK_TO_THE_DEPLOYED_CONTRACT
Expand Down Expand Up @@ -240,6 +249,8 @@ EXECUTED_TESTS_LOGS
#### Deployed Contract
- [ ] Both reviewers gave explicit "Good to deploy".
- [ ] A new comment in the PR contains link to the deployed spell(s) and Tenderly vnet(s).
- [ ] The comment also contains codehash of the deployed mainnet spell.
- [ ] The codehash matches one produced locally from the reviewed source code.
- [ ] Every spell is verified on Etherscan or other primary block explorer for this chain.
- [ ] Every spell code matches local source code at the "good to deploy" commit.
- [ ] Etherscan settings (optimizer, EVM version, license) match local ones.
Expand All @@ -264,7 +275,10 @@ EXECUTED_TESTS_LOGS
#### Confirmed Handover
- [ ] Both reviewers gave explicit "Good to handover".
- [ ] All review comments have been addressed or resolved.
- [ ] The spell address posted by the crafter in the `#govops` thread matches the spell evaluated above.
- [ ] The spell address, the codehash and the direct execution are posted by the crafter in the `#govops` in the `XXX spell YYYY-MM-DD deployed to 0x… with hash 0x…, direct execution: yes / no` format.
- [ ] Posted spell address matches the spell evaluated above.
- [ ] Posted spell codehash matches the one noted down above.
- [ ] Posted direct execution matches expected value.
- [ ] Confirm the address (via a separate "reply to" message, restating the address to avoid edits).
- [ ] Ensure that no changes were made to the code since the spell was deployed and archived.
- [ ] Approve spell PR for merge via 'Approve' review option.
Expand Down