refactor!: rename ComposableCoW to ComposableCow - #44
Merged
Conversation
mfw78
force-pushed
the
refactor/rename-composable-cow
branch
from
July 30, 2026 04:01
25cfedc to
98596d3
Compare
mfw78
force-pushed
the
chore/author-email-nxm
branch
from
July 30, 2026 04:01
93d4416 to
b373717
Compare
mfw78
marked this pull request as ready for review
July 30, 2026 06:52
mfw78
force-pushed
the
refactor/rename-composable-cow
branch
from
July 30, 2026 06:59
98596d3 to
d11ef66
Compare
mfw78
force-pushed
the
chore/author-email-nxm
branch
from
July 30, 2026 07:02
21d097d to
70314b1
Compare
mfw78
force-pushed
the
refactor/rename-composable-cow
branch
2 times, most recently
from
July 30, 2026 07:07
38e2912 to
99b52b0
Compare
Solidity's CapWords convention does not carry branding capitalisation into an identifier, and the registry was the last place the fork still spelled it that way. The surrounding code had already moved on: the poller work uses `ComposableCowPoller`, and `TWAP` holds a `composableCow` while `ERC1271Forwarder` held a `composableCoW`, which is the same inconsistency in miniature. Renames the contract, its library, the test and script counterparts, the matching filenames, and the `networks.json` key. The `CoW Protocol` spelling is retained in prose and in vendored upstream identifiers such as `GPv2Settlement` and `CoWSettlement`. The audit PDFs are published artefacts and keep their filenames; only the link text in the README is updated. `.gas-snapshot` keys are rewritten in place. A rename cannot change gas, and the committed snapshot is byte-exact against a fresh `forge snapshot` here, so the rewrite and a regeneration agree. BREAKING CHANGE: the contract, its build artefact and the `networks.json` key are all renamed. The manifest describes a version that is not yet deployed and will be superseded by `deployments/networks.json`, so no live consumer is affected.
mfw78
force-pushed
the
refactor/rename-composable-cow
branch
from
July 30, 2026 07:09
99b52b0 to
e694e29
Compare
mfw78
added a commit
that referenced
this pull request
Jul 30, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 30, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 30, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 30, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 30, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 30, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 30, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 30, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 30, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 30, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 30, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 30, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 30, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 31, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 31, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 31, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 31, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 31, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 31, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 31, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 31, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 31, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 31, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
mfw78
added a commit
that referenced
this pull request
Jul 31, 2026
`test/ComposableCoW.t.sol` was missed by the rename in #44. The pattern used there matched `test/ComposableCoW.*.t.sol`, which requires a middle segment, so the one file without one slipped through. Its contents were renamed correctly, which is why a content search over file bodies did not catch it. Filename only: the contract inside is already `ComposableCowTest` and nothing references the path.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Solidity's CapWords convention does not carry branding capitalisation into an identifier, and the registry was the last place the fork still spelled it
ComposableCoW. The surrounding code had already moved on: the poller work usesComposableCowPoller, andTWAPholds acomposableCowwhileERC1271Forwarderheld acomposableCoW, which is the same inconsistency in miniature.Changes:
ComposableCoW->ComposableCow,composableCoW->composableCow,ComposableCoWLib->ComposableCowLib, and the*Testcontract namessrc/ComposableCow.sol,script/deploy_ComposableCow.s.sol,test/ComposableCow.*.t.sol,test/libraries/ComposableCowLib.t.solnetworks.jsontop-level keyREADME.md,docs/architecture.md,docs/discovery.md.gas-snapshotkeysLeft alone deliberately:
CoW Protocolspelling in prose, and vendored upstream identifiers such asGPv2SettlementandCoWSettlementgnosis-ComposableCoWMayJul2023.pdfstill resolvesbroadcast/, which records what was actually deployed under the old namedev/verify-contracts.shderives itsnetworks.jsonlookup key from the contract filename, so renaming the key alongside the file keeps verification working rather than needing a mapping shim.BREAKING: the contract, its build artefact and the
networks.jsonkey are all renamed. The manifest describes a version that is not yet deployed and will be superseded bydeployments/networks.json, so no live consumer is affected.How to test
.gas-snapshotkeys were rewritten textually rather than regenerated, on the grounds that a rename cannot change gas. That is verifiable:forge snapshot && git diff --exit-code .gas-snapshotClean: the textual rewrite and a regeneration agree exactly.
forge buildandforge testare green (74 passing).Part of #1.