Skip to content

Fix signer and board rotation with configuration-bound authorization - #2

Merged
Ay-obami merged 2 commits into
mainfrom
audit/authorization-epochs
Sep 29, 2026
Merged

Ay-obami merged 2 commits into
mainfrom
audit/authorization-epochs

Conversation

@Ay-obami

@Ay-obami Ay-obami commented Sep 28, 2026 •

Copy link
Copy Markdown
Owner

Signer and board replacement left removed addresses authorized, rejected retained members, and retained partial quorums across configuration changes.

This patch clears old membership and versions each configuration. Pending signatures/votes reset on rotation; EIP-712 release instructions use version 2 with signerEpoch, invalidating old signatures even when a key is retained or re-added. Signing-window changes also invalidate pending payloads. Completed authorizations preserve their original signers, digest and deadline; completed reviews preserve their votes.

Service and frontend ABIs match v2. The signer service rejects v1 deployments, skips removed/already-collected signers, and revisits registry IDs in bounded batches. The frontend distinguishes finalized authors from the current roster. Migration policy: docs/AUTHORIZATION_ROTATION_V2.md.

Validation: seven contract regressions failed before the fix; 62 Foundry tests and seven mocked signer-service regressions pass, and frontend TypeScript passes. A new Anvil rehearsal deploys actual modules and invokes production signer/mock-custodian scan methods: service/Solidity digest agreement, stale-payload rejection, partial signer and board quorum resets, retained-member reapproval, preserved historical data and two settlements. It passed locally twice and now runs in CI. Independent review found no remaining important regression.

PR #1 is merged; this PR targets main. This is a breaking source release, not a public-network deployment. Existing v1 addresses retain v1 behavior; operators must coordinate new contracts and client configuration before public-network cutover. Settlement EIP-712 remains version 1. The rehearsal uses a mock token and mock custodian; it does not prove real-world custody settlement.

@Ay-obami
Ay-obami changed the base branch from audit/attestor-membership-count to main September 28, 2026 09:22
@Ay-obami
Ay-obami marked this pull request as ready for review September 29, 2026 10:15
@Ay-obami
Ay-obami merged commit 45a6e8c into main Sep 29, 2026
3 checks passed
@Ay-obami
Ay-obami deleted the audit/authorization-epochs branch October 2, 2026 07:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant