Background
PR #3640 made per-domain reconstruction thresholds mutable via resharing: run_key_resharing_client now takes both old_threshold and new_threshold, and the resharing computation uses old_threshold for all four providers (eddsa/key_resharing.rs, ckd/key_resharing.rs, ecdsa/key_resharing.rs, robust_ecdsa path). Per the design, a domain's t can only change through resharing.
The only test that actually changes a t during resharing (crates/node/src/tests/reconstruction_thresholds.rs, resharing__should_apply_updated_thresholds_while_preserving_unchanged_ones, t=4→2) covers CaitSith only. Frost, CKD, and DamgardEtAl reshare exclusively with old == new, so a regression in the old/new-threshold plumbing for those protocols would pass CI.
Acceptance Criteria
- Integration coverage for a resharing that changes
t for a Frost domain and a CKD domain, asserting the new t gates signing availability afterward (mirroring the existing CaitSith case).
- Coverage for a DamgardEtAl domain reshared with a changed
t, asserting the new 2t−1 signer requirement takes effect.
- Each test fails if the per-domain
old_threshold/new_threshold value is dropped or swapped for the network-wide threshold.
Background
PR #3640 made per-domain reconstruction thresholds mutable via resharing:
run_key_resharing_clientnow takes bothold_thresholdandnew_threshold, and the resharing computation usesold_thresholdfor all four providers (eddsa/key_resharing.rs,ckd/key_resharing.rs,ecdsa/key_resharing.rs,robust_ecdsapath). Per the design, a domain'stcan only change through resharing.The only test that actually changes a
tduring resharing (crates/node/src/tests/reconstruction_thresholds.rs,resharing__should_apply_updated_thresholds_while_preserving_unchanged_ones, t=4→2) covers CaitSith only. Frost, CKD, and DamgardEtAl reshare exclusively withold == new, so a regression in the old/new-threshold plumbing for those protocols would pass CI.Acceptance Criteria
tfor a Frost domain and a CKD domain, asserting the newtgates signing availability afterward (mirroring the existing CaitSith case).t, asserting the new2t−1signer requirement takes effect.old_threshold/new_thresholdvalue is dropped or swapped for the network-wide threshold.