2.1 KiB
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.