Files
govoplan-voting/docs/INTERFACE_PATTERN_MIGRATION.md
T

2.1 KiB

Voting Interface Pattern Migration

This migration applies the GovOPlaN interface pattern language to Voting's catalogue, ballot editor, casting, result, and governance-transition surfaces. It preserves the strict distinction between recorded and provider-backed assurance profiles.

Surface Inventory

Surface Archetype Consequence class Contract
/voting catalogue Governed work queue Select, create, or manage ballot Shared loading/empty/error/help and explicit management permission state
Ballot editor Consequential definition editor Save mutable draft Guarded draft, contextual assurance/electorate help, validation reasons
Recorded cast panel Guided decision Record or replace authorized vote Frozen eligibility, explicit selection, confirmation, privacy-bounded receipt
Result and assurance Evidence/provenance Inspect tally and hashes Result visibility follows assurance profile and backend authorization
Open/close/certify/challenge/annul Governed lifecycle Freeze, tally, certify, challenge, or annul Permission/lifecycle reasons, confirmations, required reasons, retained evidence

Consequence And Availability Rules

  • Opening freezes options, electorate, weights, threshold, replacement rule, assurance profile, and provider binding.
  • Recorded ballots are reconstructable and are not secret. Provider-backed privacy claims never exceed the installed provider contract.
  • Closing stops casting and records a tally; certification adds evidence. Challenge and annulment append reasoned events and erase nothing.
  • Missing permission or electorate membership identifies the required action, responsible actor, and destination.
  • Optional Committee, Decision, Encryption, Forms, Trust, Policy, Reporting, and Workflow integrations remain behind declared contracts.

The module uses shared controls, dialogs, confirmations, blockers, field help, statuses, alerts, loading/empty states, disabled reasons, and unsaved-draft guards. English and German catalogues cover the owned interaction vocabulary; history timestamps follow the selected platform locale.