Conversation
The governance UI did not know SRARC_RegisterSynchronizer, so a registration vote rendered as an unsupported-action error in the detail view and an undefined action name in the listing: every SV was asked to vote on a proposal it could not display. The detail view now shows the synchronizer id, its operator, and the traffic discount the registration would carry. Signed-off-by: Timothy Wu <tim.wu@chainsafe.io>
…UI [ci] A registration vote had to be built as an ActionRequiringConfirmation through the API, which is how the end-to-end test does it. The create-proposal page now offers it as a proposal type, with the synchronizer id checked for the name::fingerprint shape rather than only for being non-empty, and the optional traffic discount bounded to (0, 1] as the template's ensure does. Setting the discount here is what keeps registration one vote: the same proposal that registers the synchronizer carries the parameters it is registered with. Signed-off-by: Timothy Wu <tim.wu@chainsafe.io>
3 tasks
timwu20
marked this pull request as draft
September 18, 2026 18:31
timwu20
marked this pull request as ready for review
September 18, 2026 21:06
timwu20
marked this pull request as draft
September 18, 2026 21:10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes ChainSafe/canton-extending-mainnet#121
Stacked on #47, which adds the governance parameters to the registration choice.
Summary: the SV governance UI can now display and propose a
SRARC_RegisterSynchronizervote. Two commits, because the first is a defect fix on its own.
Render (83c7834). The UI's action list is a closed union, so a registration vote was
an unknown action to it:
voteRequestDetailsreturned "Error, something went wrong.Unsupported Action: SRARC_RegisterSynchronizer" and the listing showed an undefined action
name. Every SV asked to vote on a registration saw a broken row and an error page instead
of the synchronizer id and operator it was approving. The detail view now shows the
synchronizer id, the operator, and the traffic discount the registration would carry.
Propose (ee91987). A registration vote had to be assembled as an
ActionRequiringConfirmationthrough the API, which is whatLocalNetDedicatedSyncIntegrationTestdoes. The create-proposal page now offers"Register Dedicated Synchronizer" and builds the same action that test constructs.
Two checks the form adds beyond the Daml choice, which only requires a non-empty id:
name::fingerprint, the shape agreed on the design docthread
ensure.Leaving it empty registers at the full price
Setting the discount here is the point of the stack: the proposal that registers a
synchronizer carries the parameters it is registered with, so an agreed discount does not
need a second vote while the synchronizer runs at full price.
How it's verified
apps-common-frontend/npmTestgreen, including a newregister-synchronizer-form.test.tsx: fields render, an empty form reports its requiredfields and re-enables submit once filled with the discount left empty, a malformed
synchronizer id is rejected, and 1.5 is rejected where 0.5 is accepted.
apps-frontends/npmLintgreen.Not in scope: the duplicate-id warning, which needs a Scan client in the SV frontend
(ChainSafe/canton-extending-mainnet#54).