Pin the executed Fireblocks-signer revocation as an absence - #323
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (12)
💤 Files with no reviewable changes (6)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe PR removes the retired Fireblocks service signer from the canonical grant map, adds an explicit absence check, updates signer and grant-count references, and deletes the signer revocation script with its tests and harnesses. ChangesRetired service signer cleanup
Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: ⚪ Minimal · up to This change records the executed signer revocation as an enforced absence and updates dependent fixtures and tests; no actionable merge-blocking risk remains beyond normal checks and review. Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (6 skipped: 6 unsupported.) ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
a5458af to
93d2905
Compare
The 20260810-revoke-fireblocks-service-signer bundles executed on all three chains (verified live: the retired signer 0x1C66...D1A9 holds no DEPOSIT/WITHDRAW/CERTIFY anywhere), which turned its forcing-function tests red on main since 2026-08-22 - by design, demanding this pin PR. Per the script's own retire instructions: the retired signer's three rows leave the canonical grant map (16 -> 13), assertExpectedGrants now asserts the ABSENCE (new UnexpectedRetiredSignerGrant refusal, so a re-grant red-lines cron), and the spent script, its artifact-workflow registry entry, and its test fixtures retire. The GRANTEE_SERVICE_1C66 constant stays as the audit-trail record the absence is asserted against. Verified against live forks: the full previously-red set (provisioning prod tests, timelock migration surface, cross-chain parity, Base prod-state) passes on Base, Ethereum and HyperEVM. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KbsbYN4C4YDa8pu9DdudoX
93d2905 to
2345558
Compare

Why
Main's test CI (and cron) has been red since 2026-08-22, and #314's inherits it: the
20260810-revoke-fireblocks-service-signerSafe bundles executed on all three chains (verified live — the retired signer0x1C66…D1A9holds noDEPOSIT/WITHDRAW/CERTIFYon Base, Ethereum, or HyperEVM), which flipped its forcing-function tests red by design: they demand this pin PR.What (per the script's own retire instructions)
expectedGrants(16 → 13 entries). TheGRANTEE_SERVICE_1C66constant stays as the audit-trail record.assertExpectedGrantsgainsassertRetiredSignerAbsent— any action role landing back on the retired signer red-lines cron with the newUnexpectedRetiredSignerGrant. Strictly stronger than the old presence rows.run-script.yamlregistry entry, the.prod.t.solforcing tests, the unit tests, and both harnesses are deleted — the standing absence assertion supersedes their pre-flight per the registry's deletion rule.Consumers of the retired rows (second round — surfaced by CI, masked locally by RPC rate limits)
20260619-deploy-v4-authoriser-clone:MIRROR_COUNT9 → 6 (the operational slice is now Safe + service signer) plus its replica test.20260729-migrate-governance-to-timelock: the governance-loop proof's sample no-op op re-grantedDEPOSITto the retired signer — post-revocation that's a real grant and trips the absence check. Now re-grants to the live signer (GRANTEE_SERVICE_3D0C, a genuine no-op again).20260723-provision-additional-service-signerdrift test: drift is now created by revoking the Safe'sDEPOSITrow instead of the departed retired-signer row.Verification
Against live forks on all three chains: the full previously-red set passes — provisioning prod tests (
AlreadyProvisionedrefusals restored), timelock-migration surface, cross-chain parity, Base prod-state, Ethereum clone pin.slither .0, fmt/reuse clean.Merge order
This merges first; the orchestrator stack (#314 → #316 → #317) restacks on it and its inherited test failures disappear.
🤖 Generated with Claude Code
https://claude.ai/code/session_01KbsbYN4C4YDa8pu9DdudoX
Summary by CodeRabbit
Updates
DEPOSIT.Maintenance