Skip to content

chore(register): pin the beta root register at 5 members / quorum 3 and derive every fleet-shaped fixture from the pin - #868

Merged
cryptskii merged 2 commits into
mainfrom
chore/beta-register-pin-5-of-3
Sep 13, 2026
Merged

chore(register): pin the beta root register at 5 members / quorum 3 and derive every fleet-shaped fixture from the pin#868
cryptskii merged 2 commits into
mainfrom
chore/beta-register-pin-5-of-3

Conversation

@cryptskii

Copy link
Copy Markdown
Collaborator

Change the beta root register from 3-member/quorum-2 to 5-member/quorum-3 and update all fleet-shaped fixtures to derive topology/quorum from the authoritative pin.

Why one PR

The pin bump and the fixture migration are one atomic change. Measured on a clean checkout of origin/main, over the six fleet-shaped SDK suites (faucet_flow_tests, bilateral_finality_tests, storage_routes, sender/recipient_admission_tests, dlv_routes::funded_creation_tests, vault_state_composition, storage_set):

branch result
pin bump alone 42 pass / 100 fail (fixtures still hard-code a 3-node fleet)
fixture migration alone 138 pass / 4 fail (delivery_quorum() = 2 on the old pin vs 3 observed deliveries)
both 142 pass / 0 fail

Neither half is correct against main on its own; together they are.

What changes

Pin (dsm)

  • economic/register.rs: BETA_ROOT_REGISTER_MEMBERS pins the five provisioned GCP members; resolve_root_register_profile resolves the 5/3 profile.
  • dlv/beta_storage_profile.rs: SOFI_BETA_MEMBERS = 5, SOFI_BETA_QUORUM = 3; profile tests follow.
  • dsm_sdk/src/sdk/storage_set.rs: the set-id derivation test names all five members and the set id each of them logged.

Fixtures (dsm_sdk) — no fixture carries a fleet size or quorum literal any more:

  • economic_fixtures.rs: canonical_member_ids(), canonical_quorum(), delivery_quorum(), members_to_break_quorum() derive from the pin; install_canonical_fleet / take_register_offline / bring_register_online iterate the pinned ids.
  • faucet_flow_tests, bilateral_finality_tests, storage_routes, sender_admission_tests, recipient_admission_tests, dlv_routes::funded_creation_tests, vault_state_composition, test_support::two_device: fleets are spawned per pinned member, below-quorum tests fail exactly members_to_break_quorum(), and ack/replay/certificate counts assert delivery_quorum(); per-node submit baselines replace "every node received it".

What is deliberately NOT here

Verification

  • cargo test --release -p dsm --lib economic::register dlv::beta_storage_profile: 5/5
  • cargo test --release -p dsm_sdk --lib over the suites above, --test-threads=1: 142/0 (1 ignored)
  • make lint and ci/production_safety_checks.sh: green on this branch
  • Board: CI on this PR.

…nd derive every fleet-shaped fixture from the pin

Change the beta root register from 3-member/quorum-2 to 5-member/quorum-3
and update all fleet-shaped fixtures to derive topology/quorum from the
authoritative pin.

The two halves are one atomic change. Measured on a clean origin/main over
the six fleet-shaped SDK suites: the pin bump alone is 42/100 (fixtures
still hard-code a 3-node fleet); the fixture migration alone is 138/4
(delivery_quorum() = 2 on the old pin against 3 observed deliveries);
together 142/0.

Pin: BETA_ROOT_REGISTER_MEMBERS names the five provisioned GCP members,
SOFI_BETA_MEMBERS = 5, SOFI_BETA_QUORUM = 3; the storage-set derivation
test names all five members and the set id each of them logged.

Fixtures: canonical_member_ids / canonical_quorum / delivery_quorum /
members_to_break_quorum derive from the pin; fleets are spawned per pinned
member; below-quorum tests fail exactly members_to_break_quorum(); ack,
replay and certificate counts assert delivery_quorum(); per-node submit
baselines replace "every node received it". No fixture carries a fleet
size or quorum literal.

Not here: owner-managed Terraform / node config / device network config,
and the b0x fan-out literal quorum_k: 3 (b0x_sdk.rs:540), which the 5/3
pin happens to agree with — tracked in #867, deliberately not described
by delivery_quorum().
…t quorum three

dsm/tests/economic_lineage_register.rs pinned the old profile by name and
by literal (3 members, quorum 2) and is an integration binary that a
`--lib` run never compiles; CI on #868 caught it. The candidate set in
that test already derives from `pinned_root_register_members`, so only the
two literals and the name encode the profile — and this test is the one
place that SHOULD state the pin literally.

Re-proven with an isolated target directory: `dsm --test
economic_lineage_register` 13/0, `dsm_sdk --lib` 1906/0.
@cryptskii
cryptskii merged commit 5736e8c into main Sep 13, 2026
19 checks passed
@cryptskii
cryptskii deleted the chore/beta-register-pin-5-of-3 branch September 13, 2026 13:37
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