Context
The DeepSeek PC-09 finding (the last Open item in the legacy audit reconciliation) tracks proxy ownership. As of the readiness review:
- On-chain
owner() of both PaymentChannel and Adjudicator proxies is the deployer EOA 0x327fa3369B1D1D42120d84bc407e5865ECa7c458 (per the README).
- Deploy scripts are correct (
packages/contracts/script/DeployTimelock.s.sol enforces 48h min delay; TransferOwnership.s.sol validates that the new owner is a contract with the right interface), but they haven't been run on mainnet.
- A single key compromise today permits unilateral token allowlist changes, min-amount resets, or a malicious UUPS upgrade.
Acceptance criteria
Severity
Critical — GA blocker. No code changes needed; operator-only.
Evidence pointers
final_readiness_report.html §3.3 SC-02, §13.1 item 2.
docs/runbooks/ownership-transfer.md (full procedure).
packages/contracts/script/{DeployTimelock,TransferOwnership}.s.sol.
Context
The DeepSeek
PC-09finding (the lastOpenitem in the legacy audit reconciliation) tracks proxy ownership. As of the readiness review:owner()of bothPaymentChannelandAdjudicatorproxies is the deployer EOA0x327fa3369B1D1D42120d84bc407e5865ECa7c458(per the README).packages/contracts/script/DeployTimelock.s.solenforces 48h min delay;TransferOwnership.s.solvalidates that the new owner is a contract with the right interface), but they haven't been run on mainnet.Acceptance criteria
DeployTimelock.s.solexecuted; resultingTimelockControlleraddress recorded withgetMinDelay() == 172800verified on Taikoscan.TransferOwnership.s.solexecuted against both proxies;owner()post-conditions verified on-chain.final_readiness_report.html.Severity
Critical — GA blocker. No code changes needed; operator-only.
Evidence pointers
final_readiness_report.html§3.3 SC-02, §13.1 item 2.docs/runbooks/ownership-transfer.md(full procedure).packages/contracts/script/{DeployTimelock,TransferOwnership}.s.sol.