You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The filecoin-services release version is the stack version. It may differ from an individual contract VERSION() when the stack changes without an FWSS code change.
FilOzone/synapse-sdk#844 merged on 2026-06-11 after successful manual workflow run 27367127348, updating Synapse to final v1.3.0 deployment metadata from #523. Earlier #831 was merged before final Mainnet metadata landed.
Component Versions
Component
Version
Changed?
Notes
Stack (filecoin-services)
v1.3.0
Yes
Git tag / GitHub Release
FilecoinWarmStorageService
1.3.0
Yes
Merged in #510; verify via proxy VERSION() after upgrade
PDPVerifier
v3.4.0
No
Already live from the v1.2.1 compatibility rollout; no PDP change in this FWSS release
Upgrade Schedule
Network
AFTER_EPOCH
Status
Calibnet
3790520
Corrective execute verified; proxy now points to the corrected v1.3.0 implementation; SP-relayed terminateService validation passed on-chain.
Mainnet
6093399
Corrective execute and StateView switch verified; proxy now points to the corrected v1.3.0 implementation; getPriceList() works through the new StateView. Mainnet Synapse SDK storage E2E/createDataSet validation recorded. Deployment metadata PR #523 is merged.
Execute tx success at epoch 6096291; implementation slot verified as 0xaF996097790c17D3C23Cc45A3035a29D293d1492; VERSION() returns 1.3.0; interim execute migrated to StateView 0x73f0E21A2Ca905636456FEbfe45E1273d555239f; follow-up setView tx 0xd96309a7f89af8f07cc8ef6dbb01a510726fa80430c959a0cec6c520260c15cc set final StateView 0xAD28BBF18A72f728Ed816D07F5a1d7Ec40D68b5e; nextUpgrade() is cleared; getPriceList() works through the final StateView. Deployment metadata PR #523 merged after checksum validation and live-slot verification. Earlier Mainnet implementation 0xaD5c7e49fb0407Ec607d8880431b705Ea292DA4c and the earlier AFTER_EPOCH=6093240 plan are superseded within this v1.3.0 rollout.
Additional Mainnet validation evidence: Synapse SDK storage E2E smoke test completed on 2026-06-12 using NETWORK=mainnet; data set 1271 confirmed on provider 5, pieceId 0, PieceCID bafkzcibdyeaqjke44f3y4fpzelqzbhdgtx27vtiy3ve2w34f2arzv7q27ywpneik, commit tx 0x40e9152bb6690e2aa2686f63dda7773dcd2b714b15fcaf44fc4888c5cdd743bf; download verification matched the original 315-byte test file. The run completed with one warning: SDK selected two SPs but only provider 5 committed successfully (1/2 copies stored; provider 1 commit failed). Full evidence in comment.
Scope
In scope: FilecoinWarmStorageService implementation upgrade behind the existing FWSS proxy.
Out of scope by default: FilecoinWarmStorageServiceStateView, ServiceProviderRegistry, PDPVerifier, FilecoinPay, and SessionKeyRegistry.
If this release needs an out-of-scope change, add a clearly labeled exception section to this issue before starting that work.
Cross-Repo Impact
List every required cross-repo change or release. Use None only after the technical owner confirms the upgrade is FWSS-only.
Cross-repo impact is filled from Rod's Devnet 1.3.0 Frontier Smoke Report, especially the "Code Used" section and Rod's follow-up comment. Later go/no-go still needs confirmation that required changes are merged/released or explicitly waived.
#823 pricing/cost calculation plus regenerated FWSS ABI/types; #827 SP-relayed terminateService; #828findPiece polling fix. Follow-up SDK/core release after FWSS v1.3.0 is live.
Required for Synapse-facing GA validation/release path. #823 notes it should not be published until Calibnet and Mainnet have the new FWSS implementation because getPriceList() reverts on current live contracts.
Confirmed as smoke-test code by #513. #823 open, approved, CI green; #827 open draft, CI green, changes requested; #828 merged on 2026-06-05.
Current Curio main as used in #513, including #1270 PDP user termination / cleanup flow. Track follow-ups #1283 local-state reconciliation after third-party abandonment cleanup and #1284 retrieval behavior after PDP/FWSS cleanup.
Current Curio main is the GA code path used in #513; Mainnet readiness still needs a build/release or explicit waiver for SP rollout. Follow-up issues are tracked unless owner marks them blockers.
#1270 merged on 2026-06-02 with CI green. #1283 and #1284 open from #513 findings. No public Curio release found earlier containing #1270; release/build status still needs confirmation before Mainnet.
#279 fixes the unintended second inactivity window for third-party abandonment cleanup found in #513.
No for this FWSS v1.3.0 upgrade. PDP rollout is deferred to a later point in time.
#279 merged on 2026-06-05 with CI green, but deployment/release is intentionally deferred and tracked outside this FWSS implementation upgrade.
Dependency Targets and Compatibility
Record the intended deployed dependency versions or addresses, then verify actual deployed state against those targets before go/no-go.
Observed on 2026-06-05 against the current live FWSS proxies, which still report VERSION() == 1.2.1. The v1.3.0 implementation deployment should keep these dependency targets unless the technical owner records an exception before deployment.
FWSS sessionKeyRegistry() matches target; no VERSION() getter exposed
FWSS sessionKeyRegistry() matches target; no VERSION() getter exposed
Address matches service_contracts/deployments.json; VERSION() call reverts as expected for this dependency.
Rollback Plan
State whether rollback is safe before any live announce transaction. Link the approved rollback procedure or script when available.
Field
Value
Rollback status
Not obtained for this rollout: previous implementation addresses were confirmed, but no technical-owner-approved rollback safety decision or procedure was finalized before execution. Treat this as a documented rollout exception and a required process improvement for future upgrades.
Previous FWSS implementation
Calibnet: 0xC196EFddF64C4c2605284Ab66bdbc24fC795dE9E Mainnet: 0xEBc8CD859d0D389235bDe59B97485936daA1aED5 Confirmed by Phi on 2026-06-05.
Rollback procedure/script
No approved rollback procedure/script was finalized for this rollout. Future upgrade checklists should require an explicit technical-owner rollback decision before live announce, including whether rollback is safe after migration/reinitializer state changes and the exact Safe/script procedure if rollback is allowed.
Decision notes
Rollout proceeded without a finalized rollback plan. This should be captured in the lessons-learned/checklist follow-up so future FWSS upgrades do not reach live announce without either an approved rollback plan or an explicit written no-rollback decision.
Pre-Live Validation
Record validation that proves the planned upgrade works against the full contract, Curio, and Synapse state before live rollout.
Validation
Evidence/status
foc-devnet post-upgrade state validation
Devnet 1.3.0 Frontier Smoke Report #513 exercised Synapse, Curio, FWSS, PDPVerifier, and FilecoinPay across create, add, remove, prove, terminate, cleanup, abandonment, and negative/security paths. It found release-relevant FWSS #512, now included in frozen tag v1.3.0 at c2ff7f8. On 2026-06-08, the SP abandonment/cleanup flow was confirmed working (Slack thread). PDP #279 remains intentionally deferred and is not a blocker for this FWSS v1.3.0 upgrade.
Network Constants
Network
Chain ID
RPC URL
FWSS Proxy
Safe Owner
Calibnet
314159
https://api.calibration.node.glif.io/rpc/v1
0x02925630df557F957f70E112bA06e50965417CA0
0x6386622B4915B027900d65560b0ab84F8a1ff2AA
Mainnet
314
https://api.node.glif.io/rpc/v1
0x8408502033C418E1bbC97cE9ac48E5528F371A9f
0x6386622B4915B027900d65560b0ab84F8a1ff2AA
Operating Rules
Use the release issue as the rollout source of truth. Keep the schedule, Run Log, tx links, and post-upgrade evidence current.
Create the stack tag and GitHub Release before any live proxy switch. Mark the GitHub Release as a pre-release until Mainnet is complete and verified.
Keep the GitHub pre-release page updated as the external rollout tracker for consumers; keep this issue updated as the operator runbook.
Keep CHANGELOG focused on what changed. Put mutable deployment status, addresses, epochs, and transaction links on the GitHub Release page.
The technical owner owns the written upgrade plan, dependency target verification, and final go/no-go decision.
Before any live announce transaction, fill in the Technical Owner, Cross-Repo Impact, Dependency Targets and Compatibility, Rollback Plan, and foc-devnet validation status.
Generate owner-action calldata with CALLDATA_ONLY=true and submit it through Safe Transaction Builder.
In Safe Transaction Builder, use the script output exactly: target is the printed FWSS proxy, value is 0, and data is the printed calldata.
Do not announce Mainnet until Calibnet execution, on-chain checks, explorer checks, smoke/E2E checks, and createDataSet validation are complete.
Do not announce Mainnet until required cross-repo changes are merged/released or explicitly waived by the technical owner.
service_contracts/deployments.json reflects what is live behind proxies. Update it only after the relevant proxy switch is complete, normally in a follow-up PR.
If an AFTER_EPOCH changes, submit a new announcePlannedUpgrade() transaction and record that it supersedes the previous announcement.
Notice Guidance
Upgrade Type
Minimum Notice
Recommended
Routine
2880 epochs (~24h)
1-2 days
Breaking change
20160 epochs (~1 week)
1-2 weeks
Calibnet can use a shorter window for rehearsal and validation, but use enough time for signers to coordinate.
export UPGRADE_WAIT_DURATION_EPOCHS=2880 # use 240+ for Calibnet rehearsal, 20160 for breaking changes
CURRENT_EPOCH=$(cast block-number --rpc-url "$ETH_RPC_URL")
AFTER_EPOCH=$((CURRENT_EPOCH + UPGRADE_WAIT_DURATION_EPOCHS))echo"Current: $CURRENT_EPOCH, Upgrade after: $AFTER_EPOCH"
Post-Upgrade Evidence Required
For each network, record evidence that:
FWSS proxy implementation slot equals the new implementation address.
VERSION() returns the expected FWSS contract version without the leading v.
nextUpgrade() is cleared.
Blockscout shows the proxy and transaction as expected.
A smoke/E2E test passes. The v1.2.0 rollout used the Synapse SDK storage E2E example.
A createDataSet flow succeeds after the upgrade, either by a manual network-specific transaction or Dealbot canary graph evidence.
Changes
Replaces mutable FWSS owner-pricing helpers with FilecoinWarmStorageServiceStateView.getPriceList() as the price-discovery path.
Adds lifecycle reserve accounting and one-time operation fees for data set lifecycle actions.
Updates consent-based termination so PDP rails terminate immediately while CDN rails persist until data-set deletion.
Adds abandonment cleanup support for inactive data sets and includes the #512 settlement/deletion fix found during devnet validation.
Action Required for Integrators
Continue using the existing FWSS proxy addresses; this rollout upgrades the implementation behind each proxy.
Stop calling removed FWSS pricing helpers and update consumers of removed pricing/CDN events.
Use FilecoinWarmStorageServiceStateView.getPriceList() for price discovery after the upgraded implementation is live on the target network.
Update funding, allowance, settlement, and termination assumptions for lifecycle reserve and one-time operation fees.
Release Checklist
Work through the phases in order. Do not announce Mainnet until the Calibnet execute transaction, on-chain checks, smoke/E2E test, and createDataSet validation are complete.
Phase 1: Branch, Issue, PR, and Checks
All intended FWSS contract changes are merged into main (tracking issue #453)
cd service_contracts
forge test --match-contract FilecoinWarmStorageServiceUpgradeTest
forge inspect src/FilecoinWarmStorageService.sol:FilecoinWarmStorageService storageLayout --extra-output storageLayout
Version bump PR merged so main contains the final FilecoinWarmStorageService version string (#510, merge 1fdaa85)
Create release branch from main after the version bump lands (release-v1.3.0, fast-forwarded to c2ff7f8 to include #512, docs-only #514, and changelog follow-up #515)
Name the technical owner, update the Overview, and confirm they own the written upgrade plan and go/no-go decision (@rvagg / Rod confirmed by Phi)
Fill Cross-Repo Impact with required PRs, issues, releases, or None (filled from Devnet 1.3.0 Frontier Smoke Report #513 Code Used / Rod follow-up comment; merge/release confirmation remains for go/no-go)
Fill Dependency Targets and Compatibility by comparing target versions/addresses with observed Calibnet and Mainnet deployed state (live dependencies matched targets on 2026-06-05)
Record Rollback Plan status (no approved rollback plan was obtained for this rollout; capture as a lessons-learned/checklist follow-up for future upgrades)
Freeze the deploy commit and record it in Release Tracking (c2ff7f8)
Create and push the stack tag from the frozen deploy commit before any live proxy switch (v1.3.0 retagged to c2ff7f8; #516 remains a follow-up for #511):
git tag v1.3.0
git push origin v1.3.0
Create the GitHub Release from v1.3.0, mark it as a pre-release, and include component versions plus a FWSS rollout status table (v1.3.0 pre-release)
Confirm the Update Synapse SDK workflow opened the expected Synapse SDK PR from the tag/pre-release, or record an exception in Release Tracking (exception recorded: tag-push run 27101304131 and release-published run 27101771307 failed in Synapse SDK lint and opened no PR)
Release issue Overview and Release Tracking updated with PR links, release link, summary, and action required
Capture CALI_NEW_IMPL and add it to the Run Log (0x68f9c0ACdA8489dc9F08eD279B33D0c5Eb39F95B)
Verify implementation on Sourcify and Blockscout (FWSS implementation verified in run 27103068161; batch summary also notes SignatureVerificationLib Sourcify verification failed)
Attempt FilFox verification and record result (FWSS implementation Filfox verification succeeded in run 27103068161)
Mainnet FWSS Implementation
Run Deploy Contract workflow with network=Mainnet, contract=FWSS Implementation, dry_run=true (skipped by release decision; Calibnet dry run and deployment succeeded from the same frozen v1.3.0 ref)
Capture MAIN_NEW_IMPL and add it to the Run Log (0xaD5c7e49fb0407Ec607d8880431b705Ea292DA4c)
Verify implementation on Sourcify and Blockscout (FWSS implementation verified in run 27103486934; batch summary also notes SignatureVerificationLib Sourcify verification failed)
Attempt FilFox verification and record result (FWSS implementation Filfox verification succeeded in run 27103486934)
Add both implementation addresses to the GitHub pre-release rollout status. Do not update service_contracts/deployments.json until proxy slots are live. (Calibnet 0x68f9c0ACdA8489dc9F08eD279B33D0c5Eb39F95B, Mainnet 0xaD5c7e49fb0407Ec607d8880431b705Ea292DA4c)
Verification command pattern:
cd service_contracts
# Calibnet: CHAIN=314159 and FWSS_IMPL="$CALI_NEW_IMPL"# Mainnet: CHAIN=314 and FWSS_IMPL="$MAIN_NEW_IMPL"export CHAIN=314159
export FWSS_IMPL="$CALI_NEW_IMPL"source tools/verify-contracts.sh
verify_sourcify "$FWSS_IMPL""src/FilecoinWarmStorageService.sol:FilecoinWarmStorageService"
verify_blockscout "$FWSS_IMPL""src/FilecoinWarmStorageService.sol:FilecoinWarmStorageService"
verify_filfox "$FWSS_IMPL""src/FilecoinWarmStorageService.sol:FilecoinWarmStorageService"
Phase 3: Calibnet Announce + Execute
Announce
Compute Calibnet AFTER_EPOCH and update the schedule table (3786814 = 2026-06-08 15:00:00 UTC)
export ETH_RPC_URL="https://api.calibration.node.glif.io/rpc/v1"export UPGRADE_WAIT_DURATION_EPOCHS=240 # use a longer window if desired
CURRENT_EPOCH=$(cast block-number --rpc-url "$ETH_RPC_URL")
AFTER_EPOCH=$((CURRENT_EPOCH + UPGRADE_WAIT_DURATION_EPOCHS))echo"$CURRENT_EPOCH -> $AFTER_EPOCH"
cd service_contracts/tools
export ETH_RPC_URL="https://api.calibration.node.glif.io/rpc/v1"export FWSS_PROXY_ADDRESS="0x02925630df557F957f70E112bA06e50965417CA0"export NEW_WARM_STORAGE_IMPLEMENTATION_ADDRESS="$CALI_NEW_IMPL"
CALLDATA_ONLY=true ./warm-storage-execute-upgrade.sh
In Safe Transaction Builder, set target to the printed FWSS proxy, value to 0, and data to the printed calldata (executed; generated calldata: 0x4f1ef28600000000000000000000000068f9c0acda8489dc9f08ed279b33d0c5eb39f95b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024ce5494bb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)
Verify VERSION() returns the release version without the leading v (1.3.0)
Verify nextUpgrade() is cleared via FilecoinWarmStorageServiceStateView.nextUpgrade() (0x0000000000000000000000000000000000000000, 0)
export ETH_RPC_URL="https://api.calibration.node.glif.io/rpc/v1"export FWSS_PROXY_ADDRESS="0x02925630df557F957f70E112bA06e50965417CA0"export EXPECTED_FWSS_IMPLEMENTATION_ADDRESS="$CALI_NEW_IMPL"export EXPECTED_FWSS_VERSION="v1.3.0"# use the FWSS contract VERSION() if it differs from the stack tag
EXPECTED_FWSS_VERSION="${EXPECTED_FWSS_VERSION#v}"
CURRENT_VIEW=$(cast call --rpc-url "$ETH_RPC_URL" \"$FWSS_PROXY_ADDRESS" \'viewContractAddress()(address)')
IMPLEMENTATION_SLOT=$(cast rpc --rpc-url "$ETH_RPC_URL" \ eth_getStorageAt \"$FWSS_PROXY_ADDRESS" \ 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc \ latest | tr -d '"'| sed 's/^0x000000000000000000000000/0x/')
ACTUAL_VERSION=$(cast call --rpc-url "$ETH_RPC_URL" \"$FWSS_PROXY_ADDRESS" \'VERSION()(string)'| tr -d '"')
NEXT_UPGRADE=$(cast call --rpc-url "$ETH_RPC_URL" \"$CURRENT_VIEW" \'nextUpgrade()(address,uint96)')echo"Implementation slot: $IMPLEMENTATION_SLOT (expected $EXPECTED_FWSS_IMPLEMENTATION_ADDRESS)"echo"VERSION(): $ACTUAL_VERSION (expected $EXPECTED_FWSS_VERSION)"echo"nextUpgrade(): $NEXT_UPGRADE (expected zero address and 0)"
Update Calibnet StateView: v1.3.0 StateView 0xF4B446171b3677fD2B9b183a9fB76d517365700a deployed by run 27153663060, configured by setViewContract tx, and verified via configured viewContractAddress(); configured view service(), nextUpgrade(), getCurrentPricingRates(), and getPriceList() checks pass.
Run and record a Calibnet smoke/E2E test result
Validate a Calibnet createDataSet flow manually or with Dealbot canary graph evidence, then record the tx/link in the Run Log
Verify the proxy/execute transaction on Blockscout (execute tx)
Update the GitHub pre-release Calibnet rollout status with execute tx, checks, StateView update, and smoke/E2E evidence (release page updated with corrective Calibnet execute, StateView, and SP-relayed terminateService validation)
Technical owner confirms Calibnet results are good before announcing Mainnet (implicit: Mainnet announce and execute proceeded)
Phase 4: Mainnet Announce + Execute
Announce
Technical owner records Mainnet go/no-go after reviewing Calibnet evidence, rollback status, dependency targets, and cross-repo status (go: Mainnet announced and executed)
Confirm required cross-repo changes are merged/released or explicitly waived by the technical owner
Notify stakeholders before announcing Mainnet, including FilB so they can propagate the upgrade notice
Compute Mainnet AFTER_EPOCH and update the schedule table (6093240 = 2026-06-10 15:00:00 UTC)
Verify VERSION() returns the release version without the leading v (1.3.0)
Verify nextUpgrade() is cleared (zero address / 0)
export ETH_RPC_URL="https://api.node.glif.io/rpc/v1"export FWSS_PROXY_ADDRESS="0x8408502033C418E1bbC97cE9ac48E5528F371A9f"export EXPECTED_FWSS_IMPLEMENTATION_ADDRESS="$MAIN_NEW_IMPL"export EXPECTED_FWSS_VERSION="v1.3.0"# use the FWSS contract VERSION() if it differs from the stack tag
EXPECTED_FWSS_VERSION="${EXPECTED_FWSS_VERSION#v}"
CURRENT_VIEW=$(cast call --rpc-url "$ETH_RPC_URL" \"$FWSS_PROXY_ADDRESS" \'viewContractAddress()(address)')
IMPLEMENTATION_SLOT=$(cast rpc --rpc-url "$ETH_RPC_URL" \ eth_getStorageAt \"$FWSS_PROXY_ADDRESS" \ 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc \ latest | tr -d '"'| sed 's/^0x000000000000000000000000/0x/')
ACTUAL_VERSION=$(cast call --rpc-url "$ETH_RPC_URL" \"$FWSS_PROXY_ADDRESS" \'VERSION()(string)'| tr -d '"')
NEXT_UPGRADE=$(cast call --rpc-url "$ETH_RPC_URL" \"$CURRENT_VIEW" \'nextUpgrade()(address,uint96)')echo"Implementation slot: $IMPLEMENTATION_SLOT (expected $EXPECTED_FWSS_IMPLEMENTATION_ADDRESS)"echo"VERSION(): $ACTUAL_VERSION (expected $EXPECTED_FWSS_VERSION)"echo"nextUpgrade(): $NEXT_UPGRADE (expected zero address and 0)"
Run and record a Mainnet smoke/E2E test result (evidence)
Validate a Mainnet createDataSet flow manually or with Dealbot canary graph evidence, then record the tx/link in the Run Log (data set 1271, commit tx; evidence)
Update the GitHub pre-release Mainnet rollout status with execute tx, checks, and smoke/E2E evidence
Phase 5: Promote Release and Close Out
Confirm live Calibnet and Mainnet FWSS implementation slots match the new implementation addresses (Calibnet: 0x9e4e6699d8F67dFc883d6b0A7344Bd56F7E80B46, Mainnet: 0xaF996097790c17D3C23Cc45A3035a29D293d1492)
Confirm cross-repo follow-ups are complete or tracked with owners
Open or update a follow-up PR for service_contracts/deployments.json with live implementation addresses plus pdp_version and fwss_version fields for each network (#523)
Merge the service_contracts/deployments.json follow-up PR after checksum validation and live-slot verification (#523 merged; Check deployments.json Checksums passed; live slots verified)
Merge release-prep/changelog PRs if still open, keeping mutable rollout details on the GitHub Release page (#526 merged)
Promote the GitHub Release from pre-release to latest after Mainnet proxy switch, checks, and release-page status are complete (v1.3.0)
Merge relevant auto-generated PRs in filecoin-cloud (FilOzone/filecoin-cloud#317 contract-address sync merged; SDK package-update PRs are downstream follow-ups, not blockers for this contract release close-out)
No separate "Upgrade Synapse to use newest contracts" issue needed; Synapse SDK contract-address update completed through FilOzone/synapse-sdk#844 and the follow-up release path is already complete/tracked (synapse-sdk-v1.0.1)
Capture lessons learned from this rollout and update service_contracts/tools/UPGRADE-CHECKLIST.md if the process should change. Rollback-plan lesson learned: no technical-owner-approved rollback plan was finalized before this rollout executed; future upgrades should require either an approved rollback procedure or an explicit written no-rollback decision before live announce.
Overview
v1.3.0Breaking ChangeReleased; close-out pendingRelease Tracking
The filecoin-services release version is the stack version. It may differ from an individual contract
VERSION()when the stack changes without an FWSS code change.c2ff7f8(v1.3.0); includes #512, docs-only #514, and changelog follow-up #515.Pre-release; Mainnet proxy switch verified, close-out pendingComponent Versions
filecoin-services)v1.3.0FilecoinWarmStorageService1.3.0VERSION()after upgradePDPVerifierv3.4.0Upgrade Schedule
3790520terminateServicevalidation passed on-chain.6093399getPriceList()works through the new StateView. Mainnet Synapse SDK storage E2E/createDataSetvalidation recorded. Deployment metadata PR #523 is merged.Run Log
Keep this table current as values become known.
0x9e4e6699d8F67dFc883d6b0A7344Bd56F7E80B463790561; implementation slot verified as0x9e4e6699d8F67dFc883d6b0A7344Bd56F7E80B46;VERSION()returns1.3.0;viewContractAddress()returns v1.3.0 StateView0xF4B446171b3677fD2B9b183a9fB76d517365700a;nextUpgrade()is cleared. SP-relayedterminateServicevalidation passed on Calibnet in tx 0xbbf0dd675f46d839c14e106a9c07fa937b2ec33374fff120af6a9e907276101b. Earlier Calibnet implementation0x68f9c0ACdA8489dc9F08eD279B33D0c5Eb39F95B, announce tx 0xd79f3a0854d55c2996f9af022eb2b0fe33345a1ca856502212e560aac30fabb4, and execute tx 0x16ae39ffb31887b89fd8f3dea14bb7befe7ce3860ce6829213e6ddffeb8eb5aa are superseded within this v1.3.0 rollout.0xaF996097790c17D3C23Cc45A3035a29D293d1492AFTER_EPOCH=6093399)6096291; implementation slot verified as0xaF996097790c17D3C23Cc45A3035a29D293d1492;VERSION()returns1.3.0; interim execute migrated to StateView0x73f0E21A2Ca905636456FEbfe45E1273d555239f; follow-up setView tx 0xd96309a7f89af8f07cc8ef6dbb01a510726fa80430c959a0cec6c520260c15cc set final StateView0xAD28BBF18A72f728Ed816D07F5a1d7Ec40D68b5e;nextUpgrade()is cleared;getPriceList()works through the final StateView. Deployment metadata PR #523 merged after checksum validation and live-slot verification. Earlier Mainnet implementation0xaD5c7e49fb0407Ec607d8880431b705Ea292DA4cand the earlierAFTER_EPOCH=6093240plan are superseded within this v1.3.0 rollout.Additional Mainnet validation evidence: Synapse SDK storage E2E smoke test completed on 2026-06-12 using
NETWORK=mainnet; data set1271confirmed on provider5, pieceId0, PieceCIDbafkzcibdyeaqjke44f3y4fpzelqzbhdgtx27vtiy3ve2w34f2arzv7q27ywpneik, commit tx 0x40e9152bb6690e2aa2686f63dda7773dcd2b714b15fcaf44fc4888c5cdd743bf; download verification matched the original 315-byte test file. The run completed with one warning: SDK selected two SPs but only provider5committed successfully (1/2copies stored; provider1commit failed). Full evidence in comment.Scope
FilecoinWarmStorageServiceimplementation upgrade behind the existing FWSS proxy.FilecoinWarmStorageServiceStateView,ServiceProviderRegistry,PDPVerifier,FilecoinPay, andSessionKeyRegistry.Cross-Repo Impact
List every required cross-repo change or release. Use
Noneonly after the technical owner confirms the upgrade is FWSS-only.Cross-repo impact is filled from Rod's Devnet 1.3.0 Frontier Smoke Report, especially the "Code Used" section and Rod's follow-up comment. Later go/no-go still needs confirmation that required changes are merged/released or explicitly waived.
FilOzone/synapse-sdkterminateService; #828findPiecepolling fix. Follow-up SDK/core release after FWSS v1.3.0 is live.getPriceList()reverts on current live contracts.filecoin-project/curiomainas used in #513, including #1270 PDP user termination / cleanup flow. Track follow-ups #1283 local-state reconciliation after third-party abandonment cleanup and #1284 retrieval behavior after PDP/FWSS cleanup.mainis the GA code path used in #513; Mainnet readiness still needs a build/release or explicit waiver for SP rollout. Follow-up issues are tracked unless owner marks them blockers.FilOzone/pdpDependency Targets and Compatibility
Record the intended deployed dependency versions or addresses, then verify actual deployed state against those targets before go/no-go.
Observed on 2026-06-05 against the current live FWSS proxies, which still report
VERSION() == 1.2.1. The v1.3.0 implementation deployment should keep these dependency targets unless the technical owner records an exception before deployment.PDPVerifierv3.4.0Calibnet:
0x85e366Cf9DD2c0aE37E963d9556F5f4718d6417CMainnet:
0xBADd0B92C1c71d02E7d520f64c0876538fa2557FpdpVerifierAddress()matches target; dependencyVERSION()returns3.4.0pdpVerifierAddress()matches target; dependencyVERSION()returns3.4.0service_contracts/deployments.jsonand live proxy dependency getters.FilecoinPay0x09a0fDc2723fAd1A7b8e3e00eE5DF73841df55a0Mainnet:
0x23b1e018F08BB982348b15a86ee926eEBf7F4DAapaymentsContractAddress()matches target; noVERSION()getter exposedpaymentsContractAddress()matches target; noVERSION()getter exposedservice_contracts/deployments.json;VERSION()call reverts as expected for this dependency.ServiceProviderRegistryv1.1.0Calibnet:
0x839e5c9988e4e9977d40708d0094103c0839Ac9DMainnet:
0xf55dDbf63F1b55c3F1D4FA7e339a68AB7b64A5eBserviceProviderRegistry()matches target; dependencyVERSION()returns1.1.0serviceProviderRegistry()matches target; dependencyVERSION()returns1.1.0service_contracts/deployments.jsonand live proxy dependency getters.SessionKeyRegistry0x518411c2062E119Aaf7A8B12A2eDf9a939347655Mainnet:
0x74FD50525A958aF5d484601E252271f9625231aBsessionKeyRegistry()matches target; noVERSION()getter exposedsessionKeyRegistry()matches target; noVERSION()getter exposedservice_contracts/deployments.json;VERSION()call reverts as expected for this dependency.Rollback Plan
State whether rollback is safe before any live announce transaction. Link the approved rollback procedure or script when available.
Not obtained for this rollout: previous implementation addresses were confirmed, but no technical-owner-approved rollback safety decision or procedure was finalized before execution. Treat this as a documented rollout exception and a required process improvement for future upgrades.0xC196EFddF64C4c2605284Ab66bdbc24fC795dE9EMainnet:
0xEBc8CD859d0D389235bDe59B97485936daA1aED5Confirmed by Phi on 2026-06-05.
Pre-Live Validation
Record validation that proves the planned upgrade works against the full contract, Curio, and Synapse state before live rollout.
v1.3.0atc2ff7f8. On 2026-06-08, the SP abandonment/cleanup flow was confirmed working (Slack thread). PDP #279 remains intentionally deferred and is not a blocker for this FWSS v1.3.0 upgrade.Network Constants
314159https://api.calibration.node.glif.io/rpc/v10x02925630df557F957f70E112bA06e50965417CA00x6386622B4915B027900d65560b0ab84F8a1ff2AA314https://api.node.glif.io/rpc/v10x8408502033C418E1bbC97cE9ac48E5528F371A9f0x6386622B4915B027900d65560b0ab84F8a1ff2AAOperating Rules
CALLDATA_ONLY=trueand submit it through Safe Transaction Builder.0, and data is the printed calldata.createDataSetvalidation are complete.service_contracts/deployments.jsonreflects what is live behind proxies. Update it only after the relevant proxy switch is complete, normally in a follow-up PR.AFTER_EPOCHchanges, submit a newannouncePlannedUpgrade()transaction and record that it supersedes the previous announcement.Notice Guidance
2880epochs (~24h)20160epochs (~1 week)Calibnet can use a shorter window for rehearsal and validation, but use enough time for signers to coordinate.
Post-Upgrade Evidence Required
For each network, record evidence that:
VERSION()returns the expected FWSS contract version without the leadingv.nextUpgrade()is cleared.createDataSetflow succeeds after the upgrade, either by a manual network-specific transaction or Dealbot canary graph evidence.Changes
FilecoinWarmStorageServiceStateView.getPriceList()as the price-discovery path.Action Required for Integrators
FilecoinWarmStorageServiceStateView.getPriceList()for price discovery after the upgraded implementation is live on the target network.Release Checklist
Phase 1: Branch, Issue, PR, and Checks
main(tracking issue #453)feat: FWSS v1.3.0 version bump, including theFilecoinWarmStorageServiceVERSION()bump (#510)maincontains the finalFilecoinWarmStorageServiceversion string (#510, merge1fdaa85)mainafter the version bump lands (release-v1.3.0, fast-forwarded toc2ff7f8to include #512, docs-only #514, and changelog follow-up #515)@rvagg/ Rod confirmed by Phi)None(filled from Devnet 1.3.0 Frontier Smoke Report #513 Code Used / Rod follow-up comment; merge/release confirmation remains for go/no-go)c2ff7f8)v1.3.0retagged toc2ff7f8; #516 remains a follow-up for #511):v1.3.0, mark it as a pre-release, and include component versions plus a FWSS rollout status table (v1.3.0 pre-release)Phase 2: Deploy Contracts
Deploy both networks before any announce/execute.
Calibnet FWSS Implementation
network=Calibnet,contract=FWSS Implementation,dry_run=true(run 27102915473, success)dry_run=false(run 27103068161, success)CALI_NEW_IMPLand add it to the Run Log (0x68f9c0ACdA8489dc9F08eD279B33D0c5Eb39F95B)Mainnet FWSS Implementation
network=Mainnet,contract=FWSS Implementation,dry_run=true(skipped by release decision; Calibnet dry run and deployment succeeded from the same frozenv1.3.0ref)dry_run=false(run 27103486934, success)MAIN_NEW_IMPLand add it to the Run Log (0xaD5c7e49fb0407Ec607d8880431b705Ea292DA4c)service_contracts/deployments.jsonuntil proxy slots are live. (Calibnet0x68f9c0ACdA8489dc9F08eD279B33D0c5Eb39F95B, Mainnet0xaD5c7e49fb0407Ec607d8880431b705Ea292DA4c)Verification command pattern:
Phase 3: Calibnet Announce + Execute
Announce
AFTER_EPOCHand update the schedule table (3786814= 2026-06-08 15:00:00 UTC)nextUpgrade()verified)0, and data to the printed calldata (Safe tx executed)AFTER_EPOCHExecute
AFTER_EPOCH(current Calibnet epoch3786815>3786814)0, and data to the printed calldata (executed; generated calldata:0x4f1ef28600000000000000000000000068f9c0acda8489dc9f08ed279b33d0c5eb39f95b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024ce5494bb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)CALI_NEW_IMPL(0x68f9c0ACdA8489dc9F08eD279B33D0c5Eb39F95B)VERSION()returns the release version without the leadingv(1.3.0)nextUpgrade()is cleared viaFilecoinWarmStorageServiceStateView.nextUpgrade()(0x0000000000000000000000000000000000000000,0)viewContractAddress(); configured viewservice(),nextUpgrade(),getCurrentPricingRates(), andgetPriceList()checks pass.createDataSetflow manually or with Dealbot canary graph evidence, then record the tx/link in the Run LogPhase 4: Mainnet Announce + Execute
Announce
AFTER_EPOCHand update the schedule table (6093240= 2026-06-10 15:00:00 UTC)0, and data to the printed calldata (Safe tx executed)AFTER_EPOCHExecute
AFTER_EPOCH(execute at epoch6096291>AFTER_EPOCH=6093399)0, and data to the printed calldata (Safe tx executed)MAIN_NEW_IMPL(0xaF996097790c17D3C23Cc45A3035a29D293d1492)VERSION()returns the release version without the leadingv(1.3.0)nextUpgrade()is cleared (zero address /0)createDataSetflow manually or with Dealbot canary graph evidence, then record the tx/link in the Run Log (data set1271, commit tx; evidence)Phase 5: Promote Release and Close Out
0x9e4e6699d8F67dFc883d6b0A7344Bd56F7E80B46, Mainnet:0xaF996097790c17D3C23Cc45A3035a29D293d1492)service_contracts/deployments.jsonwith live implementation addresses pluspdp_versionandfwss_versionfields for each network (#523)service_contracts/deployments.jsonfollow-up PR after checksum validation and live-slot verification (#523 merged;Check deployments.json Checksumspassed; live slots verified)service_contracts/tools/UPGRADE-CHECKLIST.mdif the process should change. Rollback-plan lesson learned: no technical-owner-approved rollback plan was finalized before this rollout executed; future upgrades should require either an approved rollback procedure or an explicit written no-rollback decision before live announce.Resources