Skip to content

Conversation

@SidestreamBurningBanana
Copy link
Contributor

@SidestreamBurningBanana SidestreamBurningBanana commented Oct 8, 2025

This PR applies several changes to the checklists in order to make them up-to-date.

Context: It has been opened to be used as a comparing point towards #52 and #53. The PR contents itself have been independently developed internally in September.

Differences from #52 and #53

Missing in this PR

Note: items marked with ✅ have been added to this PR.

Added in this PR

  • Commit order re-organized to match the actual flow:

    * [ ] Commit the cleanup (e.g. `git commit -am "Base spell"`)

    * [ ] Push the local changes

  • All possible tokens are mentioned for crafter:

    * [ ] Test DAI/MKR/USDS/SKY/SPK streams and payments, lerps
    * [ ] Test the sum of all DAI/MKR/USDS/SKY/SPK payments matches the Exec Sheet

  • Proof URL rule extended to include https check:

    * Every proof url from the Exec Sheet, such as `Reasoning URL` and `Authority URL`:
    * [ ] Is present in the spell code under relevant section or instruction (depending on which row the url is present)
    * [ ] Has the `https` scheme
    * [ ] Has prefix derived from the url itself
    * `// Executive Vote:` if URL starts with `https://vote.sky.money/executive/`
    * `// Poll:` if URL starts with `https://vote.sky.money/polling/`
    * `// Forum:` if URL starts with `https://forum.sky.money/t/`
    * `// MIP:` if URL starts with `https://mips.makerdao.com/mips/details/`
    * `// Atlas:` if URL starts with `https://sky-atlas.powerhouse.io/`

  • Single import layout rule changed:

    * [ ] Only single import layout is used (e.g. `import { VatAbstract } from "dss-interfaces/dss/VatAbstract.sol";`)

  • All possible tokens are mentioned for reviewer:

    * IF `MKR` transfers are present
    * [ ] Recipient address in the instruction is in the checksummed format
    * [ ] Recipient address matches Exec Sheet
    * [ ] Recipient address variable name matches one found in `addresses_wallets.sol`
    * [ ] Transfer amount matches Exec Sheet
    * [ ] Transfer amount is specified with (at least) 2 decimals using `ether` keyword
    * [ ] IF `ether` keyword is used, comment is present on the same line `// Note: ether is a keyword helper, only MKR is transferred here`
    * [ ] The transfers are tested via `testPayments` test
    * [ ] Sum of all MKR transfers tested in `testPayments` matches number in the Exec Sheet
    * IF `SKY` transfers are present
    * [ ] Recipient address in the instruction is in the checksummed format
    * [ ] Recipient address matches Exec Sheet
    * [ ] Recipient address variable name matches one found in `addresses_wallets.sol`
    * [ ] Transfer amount matches Exec Sheet
    * [ ] The transfers are tested via `testPayments` test
    * [ ] Sum of all SKY transfers tested in `testPayments` matches number in the Exec Sheet
    * IF `DAI` surplus buffer transfers are present
    * [ ] Recipient address in the instruction is in the checksummed format
    * [ ] Recipient address matches Exec Sheet
    * [ ] Recipient address variable name matches one found in `addresses_wallets.sol`
    * [ ] Transfer amount matches Exec Sheet
    * [ ] The transfers are tested via `testPayments` test
    * [ ] Sum of all DAI transfers tested in `testPayments` matches number in the Exec Sheet
    * IF `USDS` surplus buffer transfers are present
    * [ ] Recipient address in the instruction is in the checksummed format
    * [ ] Recipient address matches Exec Sheet
    * [ ] Recipient address variable name matches one found in `addresses_wallets.sol`
    * [ ] Transfer amount matches Exec Sheet
    * [ ] The transfers are tested via `testPayments` test
    * [ ] Sum of all USDS transfers tested in `testPayments` matches number in the Exec Sheet
    * IF `MKR` / `DAI` / `SKY` / `USDS` / `SPK` streams (`DssVest`) are created

    * IF MKR stream ([DssVestTransferrable](https://github.com/sky-ecosystem/dss-vest/blob/master/src/DssVest.sol#L463)) is present
    * [ ] Vest contract's MKR allowance increased by the cumulative `total` (the sum of all `tot` values)
    * [ ] Ensure allowance increase follows archive patterns
    * IF SKY stream ([DssVestTransferrable](https://github.com/sky-ecosystem/dss-vest/blob/master/src/DssVest.sol#L463)) is present
    * [ ] Vest contract's SKY allowance increased by the cumulative `total` (the sum of all `tot` values)
    * [ ] Ensure allowance increase follows archive patterns
    * IF SPK stream ([DssVestTransferrable](https://github.com/sky-ecosystem/dss-vest/blob/master/src/DssVest.sol#L463)) is present
    * [ ] Vest contract's SPK allowance increased by the cumulative `total` (the sum of all `tot` values)
    * [ ] Ensure allowance increase follows archive patterns
    * [ ] Tested via:
    * `testVestDai`
    * `testVestMkr`
    * `testVestSky`
    * `testVestSkyMint`
    * `testVestUsds`
    * `testVestSpk`
    * IF `MKR` / `DAI` / `SKY` / `USDS` / `SPK` vest termination (`Yank`) is present
    * [ ] Yanked stream ID matches Exec Sheet
    * [ ] `MCD_VEST_MKR_TREASURY` chainlog address is used for MKR stream `yank`
    * [ ] `MCD_VEST_SKY_TREASURY` chainlog address is used for SKY stream `yank`
    * [ ] `MCD_VEST_SPK_TREASURY` chainlog address is used for SPK stream `yank`
    * [ ] `MCD_VEST_DAI` chainlog address is used for DAI stream `yank`
    * [ ] `MCD_VEST_USDS` chainlog address is used for USDS stream `yank`
    * [ ] Tested via:
    * `testYankDAI`
    * `testYankMKR`
    * `testYankSky`
    * `testYankSkyMint`
    * `testYankUsds`
    * `testYankSpk`

  • tau error is fixed:

    * [ ] `tau` is expressed as `fin - bgn` (i.e. `MONTH_DD_YYYY - MONTH_DD_YYYY`)

  • Code actuality check is added:

    * [ ] Ensure local code is up-to-date with the remote branch (e.g. `git pull`)

  • "Good to Handover" item is added:

    * [ ] Publish an explicit "good to handover" comment

@SidestreamBurningBanana SidestreamBurningBanana marked this pull request as ready for review October 8, 2025 08:56
Comment on lines 134 to 135
* [ ] Test DAI/MKR/USDS/SKY/SPK streams and payments, lerps
* [ ] Test the sum of all DAI/MKR/USDS/SKY/SPK payments matches the Exec Sheet
Copy link
Contributor

Choose a reason for hiding this comment

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

I believe it's safe to say that we can remove DAI and MKR mentions here.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I believe that both DAI and MKR, while not recently used in payments or streams, are still owned by the protocol. In case of DAI, it is still used under the hood of several things (like transferUsds).

Keeping them in seems like a zero-effort and no-compromise solution to me as they can be ignored unless required.

I would also be fine with removing only MKR as it is now officially retired and there is practically zero chance of getting new MKR payments or streams.

Copy link
Contributor

Choose a reason for hiding this comment

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

There will be no DAI or MKR payments/vesting streams in the future. Since we're making the effort to update the checklist, I'd say we should simply remove mentions to it.

Also notice that sendPaymentFromSurplusBuffer will support USDS in the next release of DssExecLib.

* Interfaces imported from `dss-interfaces`
* [ ] No unused `dss-interfaces`
* [ ] Only single import layout is used (e.g. `import "dss-interfaces/dss/VatAbstract.sol";`)
* [ ] Only single import layout is used (e.g. `import { VatAbstract } from "dss-interfaces/dss/VatAbstract.sol";`)
Copy link
Contributor

Choose a reason for hiding this comment

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

There are 744 matches in the archive with named imports WITHOUT spaces, while there are 254 examples of imports WITH spaces.

forge fmt by default formats imports without spaces, even though we still don't use it in this repo.

Suggested change
* [ ] Only single import layout is used (e.g. `import { VatAbstract } from "dss-interfaces/dss/VatAbstract.sol";`)
* [ ] Only single import layout is used (e.g. `import {VatAbstract} from "dss-interfaces/dss/VatAbstract.sol";`)

* [ ] IF vest amount is expressed in 'per year' or similar in the Exec Sheet, account for leap days
* [ ] `bgn` (Vest start timestamp) matches Exec Sheet
* [ ] `tau` is expressed as `bgn - fin` (i.e. `MONTH_DD_YYYY - MONTH_DD_YYYY`)
* [ ] `tau` is expressed as `fin - bgn` (i.e. `MONTH_DD_YYYY - MONTH_DD_YYYY`)
Copy link
Contributor

Choose a reason for hiding this comment

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

That's not always the case.
This item was included back when Core Units were paid by streams with predefined bgn and fin, but more recently the most common use cases for vesting streams are the farms.
Usually tau is expressed as an interval in such cases.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Comment on lines 276 to 282
* [ ] Tested via:
* `testYankDAI`
* `testYankMKR`
* `testYankSky`
* `testYankSkyMint`
* `testYankUsds`
* `testYankSpk`
Copy link
Contributor

Choose a reason for hiding this comment

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

This was recently refactored. Now both creations and yanks are handled by the testVest{TOKEN} tests.

Copy link
Contributor

@amusingaxl amusingaxl left a comment

Choose a reason for hiding this comment

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

I believe we should remove anything related to DAI/MKR payments/vests from the checklists.

* [ ] Check if oracle deployment is required (e.g. univ3-lp-oracle, new ilk pip, ...) with responsible ecosystem actor
* IF addresses are used in the spell
* [ ] Use `immutable` visibility when declaring addresses using `DssExecLib.getChangelogAddress`, OTHERWISE use `constant` for statically defined addresses
* [ ] Fetch addresses as type `address` and wrap with `Like` suffix interfaces inline (when making calls), EXCEPT `MKR` and vesting contracts
Copy link
Member

Choose a reason for hiding this comment

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

I think we should remove this, or at least remove the exception?

## Development Stage

* Install stable Foundry version
* [ ] Find the first [Foundry release](https://github.com/foundry-rs/foundry/releases) that is older than 7 days from now
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
* [ ] Find the first [Foundry release](https://github.com/foundry-rs/foundry/releases) that is older than 7 days from now

With Amusing, we were considering removing this line and the next one.

@SidestreamBurningBanana
Copy link
Contributor Author

DAI/MKR payments/vests

I have removed MKR mentions from the checklists. Unfortunately, there are still several DAI vests with unpaid amounts (e.g. IDs 30-32). I don't have enough context to assume that they will never be Yanked (they have fin set to Sat May 23 11:59:59 PM UTC 2026).

If it's fine with you, I'd prefer to keep DAI in the checklists for now.

Comment on lines 202 to 210
* IF `DAI` surplus buffer transfers are present
* [ ] Recipient address in the instruction is in the checksummed format
* [ ] Recipient address matches Exec Sheet
* [ ] Recipient address variable name matches one found in `addresses_wallets.sol`
* [ ] Transfer amount matches Exec Sheet
* [ ] The transfers are tested via `testDAIPayments` test
* [ ] Sum of all DAI transfers tested in `testDAIPayments` matches number in the Exec Sheet
* IF `MKR` or `DAI` streams (`DssVest`) are created
* [ ] The transfers are tested via `testPayments` test
* [ ] Sum of all DAI transfers tested in `testPayments` matches number in the Exec Sheet
Copy link
Contributor

Choose a reason for hiding this comment

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

This one for sure will no longer be used. Could be removed.

Comment on lines 246 to 247
* IF SKY stream ([DssVestTransferrable](https://github.com/sky-ecosystem/dss-vest/blob/master/src/DssVest.sol#L463)) is present
* [ ] Vest contract's SKY allowance increased by the cumulative `total` (the sum of all `tot` values)
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
* IF SKY stream ([DssVestTransferrable](https://github.com/sky-ecosystem/dss-vest/blob/master/src/DssVest.sol#L463)) is present
* [ ] Vest contract's SKY allowance increased by the cumulative `total` (the sum of all `tot` values)
* IF new SKY streams ([DssVestTransferrable](https://github.com/sky-ecosystem/dss-vest/blob/master/src/DssVest.sol#L463)) are present
* [ ] Vest contract's SKY allowance increased by the cumulative total (the sum of all `tot` values)

Comment on lines 249 to 250
* IF SPK stream ([DssVestTransferrable](https://github.com/sky-ecosystem/dss-vest/blob/master/src/DssVest.sol#L463)) is present
* [ ] Vest contract's SPK allowance increased by the cumulative `total` (the sum of all `tot` values)
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
* IF SPK stream ([DssVestTransferrable](https://github.com/sky-ecosystem/dss-vest/blob/master/src/DssVest.sol#L463)) is present
* [ ] Vest contract's SPK allowance increased by the cumulative `total` (the sum of all `tot` values)
* IF new SPK streams ([DssVestTransferrable](https://github.com/sky-ecosystem/dss-vest/blob/master/src/DssVest.sol#L463)) are present
* [ ] Vest contract's SPK allowance increased by the cumulative total (the sum of all `tot` values)

* [ ] Where addresses are fetched from the `ChainLog`, the variable name must match the value of the ChainLog key for that address (e.g. `MCD_VAT` rather than `vat`), except where the archive pattern differs from this pattern (e.g. MKR)
* [ ] Fetch addresses as type `address` and wrap with `Like` suffix interfaces inline (when making calls), UNLESS archive patterns permit otherwise (such as `SKY`)
* [ ] Use the [DssExecLib Core Address Helpers](https://github.com/sky-ecosystem/dss-exec-lib/blob/master/src/DssExecLib.sol#L166) where possible (e.g. `DssExecLib.vat()`)
* [ ] Where addresses are fetched from the ChainLog, the variable name must match the value of the ChainLog key for that address (e.g. `MCD_VAT` rather than `vat`), EXCEPT where the archive pattern differs from this pattern
Copy link
Contributor

Choose a reason for hiding this comment

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

I'd suggest we remove this exception, as it doesn't bring any value.

Suggested change
* [ ] Where addresses are fetched from the ChainLog, the variable name must match the value of the ChainLog key for that address (e.g. `MCD_VAT` rather than `vat`), EXCEPT where the archive pattern differs from this pattern
* [ ] Where addresses are fetched from the ChainLog, the variable name must match the value of the ChainLog key for that address (e.g. `MCD_VAT` rather than `vat`)

* [ ] Exec Doc for the specified date is found in the [`makerdao/community` GitHub repo](https://github.com/makerdao/community/tree/master/governance/votes)
* [ ] Exec Doc file name follows the format `Executive vote - Month DD, YYYY.md`
* [ ] Exec Doc for the specified date is found in the [`sky-ecosystem/executive-votes` GitHub repo](https://github.com/sky-ecosystem/executive-votes)
* [ ] Exec Doc is located in the directory matching the target spell date year (e.g. `2025/`)
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: we can be more generic here:

Suggested change
* [ ] Exec Doc is located in the directory matching the target spell date year (e.g. `2025/`)
* [ ] Exec Doc is located in the directory matching the target spell date year (e.g. `YYYY/`)

@SidestreamColdMelon SidestreamColdMelon merged commit ae35b45 into master Oct 24, 2025
2 checks passed
@SidestreamColdMelon SidestreamColdMelon deleted the refresh-checklists branch October 24, 2025 08:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants