Supporting contracts and tools for filecoin-project/FIPs#1249
docs/DEPLOYMENT.md: the live proxy addresses, the two deploy scripts (everything, or implementations only) and how to run them locally or through the Deploy Contract workflow, and bringing up a new network.
docs/UPGRADE.md: the runbook for replacing the implementation behind the live proxies, step by step through the Upgrade workflow, built on these tools, in the order they are used:
tools/storage_layout.pywithtest/layout/StorageLayoutProbe.solandtest/StorageSlots.t.sol: CI gate for ERC-7201 namespaced storage; fails non-append-only changes and pins slot constants.- Version bumps in
version.jsonwith notes inCHANGELOG.md; the Releaser workflow tags and pre-releases them. tools/upgrade.py, run withuv run: every upgrade operation as one command; drives the forge scripts below and uses safe-eth-py for the Safe proposals.script/Rehearse.s.sol: full upgrade of both contracts in a local fork (impersonated owners, hold, execute).- Deploy Contract workflow (see docs/DEPLOYMENT.md).
script/Verify.s.sol: read-only check that the live proxies and implementations match the checked-out source anddeployments.json; with candidate addresses given, checks those before they are proposed.script/UpgradeBase.solholds what the two scripts share.
tools/lint_workflows.py, run with uv run --locked tools/lint_workflows.py: lints .github/workflows with actionlint, which also runs shellcheck on every run: script. The Linter workflow runs the same command on every PR.