Repository navigation
feat: render and propose the offboard and set-parameters votes - #67
Open
haikoschol wants to merge 1 commit into
Open
haikoschol wants to merge 1 commit into
haikoschol wants to merge 1 commit into
Conversation
… [ci] SRARC_ArchiveSynchronizerRegistration and SRARC_SetSynchronizerGovernanceParameters were unsupported actions: their vote pages failed with "Unsupported Action" and neither could be proposed. - Both render in the vote lists and on their page, showing the synchronizer id and operator of the pinned registration, and for set-parameters the current and proposed parameters side by side. An open vote whose registration is no longer active says so, since executing it would fail. - Both can be proposed. Each form resolves a synchronizer id through the SV app's registration lookup and shows the registration before proposing; the offboard form also takes a registration contract id, to reach a duplicate. A form rejects a registration another open vote already pins. - The set-parameters form states the whole GovernanceParameters record, from a field spec that stops compiling when Daml adds a field. - actionCoverage.ts classifies every DsoRules and AmuletRules vote action as a UI vote or not, exhaustively over the generated tag unions, and requires the UI votes to be exactly SupportedActionTag. Adding an action in Daml fails the frontend type check until it is classified. Signed-off-by: Haiko Schol <haiko@chainsafe.io>
moritzkiefer-da
left a comment
There was a problem hiding this comment.
thanks for the pr! overall looks sensible but let's please split the backend changes into a separate pr and then stack the frontend changes on top of it for easier review
haikoschol
changed the base branch from
main
to
feat/registration-lookup-by-contract-id
October 2, 2026 08:50
Collaborator
Author
|
Thanks! Split as suggested: the backend (Scan + SV app lookup by contract id) is now #68, and this PR is stacked on it and contains only the SV UI. |
This branch has not been deployed
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#128.
Stacked on #68 (backend: registration lookup by contract id); please review that first. This PR contains only the SV UI.
Summary
The SV UI did not support the two dedicated-synchronizer votes that SVs cast by hand:
SRARC_ArchiveSynchronizerRegistration: offboards a synchronizer.SRARC_SetSynchronizerGovernanceParameters: today, changes its discount.Their vote pages failed with "Unsupported Action", their rows in the vote lists had no name, and neither vote could be proposed from the UI. This PR adds both, following the shape of #52 (RegisterSynchronizer), plus a compile-time check that every Daml vote action has a UI decision.
Both votes pin a registration by contract id, and that is all their payload carries, so the vote pages and forms rely on a backend lookup by contract id, added in #68. The issue calls itself UI only; that endpoint is the one exception. It does not change Daml, so it fits the 0.10.3 cut.
Backend
The contract-id lookup these pages and forms use is in #68, which this PR is stacked on.
SV UI
Vote lists and vote pages
Create-proposal forms
GovernanceParametersrecord from a field spec (governanceParameterFields.ts) that is typed over every field of the Daml record. A field added in Daml stops the build until it has an entry, so it can't be silently dropped.Coverage check (
utils/actionCoverage.ts)DsoRules_ActionRequiringConfirmationandAmuletRules_ActionRequiringConfirmationtag is classified as either a UI vote or "no UI", and each "no UI" entry carries a reason.SupportedActionTag.tscuntil the action is classified. I checked this by adding a constructor to the generated types, and separately by dropping a tag fromSupportedActionTag.Testing
type:check, prettier/eslint andtest:sbtare all green (307 tests).register-synchronizer-form.test.tsx.