38 lines
2.3 KiB
Markdown
38 lines
2.3 KiB
Markdown
# 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.
|
|
- Electorate matching and new-ballot defaults use the canonical authenticated
|
|
principal account ID, falling back to the shell user's account ID when the
|
|
richer principal context has not loaded yet.
|
|
- 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.
|