Migrate Committee interface patterns

This commit is contained in:
2026-08-03 12:48:55 +02:00
parent 11b946ea78
commit e64af30534
10 changed files with 719 additions and 79 deletions
@@ -237,6 +237,17 @@ DOCUMENTATION = (
),
metadata={
"seed": True,
"help_contexts": [
"committee.navigation",
"committee.workspace",
"committee.state.read-only",
"committee.state.permission-blocked",
],
"privacy_notes": [
"Committee lists expose only records authorized by the active tenant and permission context.",
"Provider-backed voting stores aggregate result evidence, not individual confidential ballots.",
"Protected decision reasoning requires the dedicated protected-read permission.",
],
"domain_objects": [
"committee bodies",
"meeting agendas",
@@ -252,6 +263,53 @@ DOCUMENTATION = (
],
},
),
DocumentationTopic(
id=f"{MODULE_ID}.reference.fields-and-consequences",
title="Committee fields and consequences",
summary="Field provenance, lifecycle restrictions, optional provider references, and evidence consequences for Committee records.",
body=(
"Body organization-unit references determine institutional context but do not grant access by themselves. "
"Meeting times establish agenda context. Subject, Decision, Approval, record, and ballot identifiers are stable "
"cross-module references and remain optional only where the current lifecycle allows it. State transitions create "
"new immutable revisions; terminal records cannot be edited in place. Closing a vote or accepting minutes requires "
"the corresponding governed evidence. Provider ballot finalization imports only an aggregate result and assurance "
"evidence. Change reasons are retained with every revision. Cancelling, withdrawing, or retiring a record stops future "
"work but does not erase existing revisions, decisions, minutes, or audit evidence."
),
layer="available",
documentation_types=("admin", "user"),
audience=("user", "operator", "module_admin", "auditor"),
order=110,
related_modules=OPTIONAL_DEPENDENCIES,
links=(
DocumentationLink(
label="Committee domain boundary",
href="govoplan-committee/docs/COMMITTEE_DOMAIN_BOUNDARY.md",
kind="repository",
),
),
metadata={
"seed": True,
"help_contexts": [
"committee.field.state",
"committee.field.organization-unit-reference",
"committee.field.subject-reference",
"committee.field.decision-reference",
"committee.field.approval-reference",
"committee.field.evidence-reference",
"committee.field.ballot-provider-reference",
"committee.field.change-reason",
"committee.action.change-state",
"committee.action.finalize-ballot",
],
"consequence_classes": {
"save_revision": "Creates a new immutable Committee record revision with its change reason.",
"change_lifecycle": "Changes which future actions remain possible; terminal states are immutable.",
"finalize_ballot": "Imports a governed aggregate result and evidence without retaining individual ballots.",
"cancel_or_retire": "Stops future use while retaining institutional and audit evidence.",
},
},
),
)
manifest = ModuleManifest(