Migrate Approvals interface patterns

This commit is contained in:
2026-08-03 12:55:27 +02:00
parent 62d0f300cb
commit 24e95591e0
9 changed files with 333 additions and 22 deletions
@@ -235,6 +235,62 @@ manifest = ModuleManifest(
kind="repository",
),
),
metadata={
"seed": True,
"help_contexts": [
"approvals.navigation",
"approvals.workspace",
"approvals.state.permission-blocked",
"approvals.state.empty",
],
"privacy_notes": [
"Approval lists and histories remain tenant-bound and permission-filtered.",
"Signature references identify evidence but do not expose private key material.",
"Decision history retains actor and reason as governed evidence.",
],
},
),
DocumentationTopic(
id="approvals.reference.fields-and-consequences",
title="Approval fields and consequences",
summary="Exact-subject identity, selector, separation-of-duty, signature, and decision consequences.",
body=(
"Subject module, type, identifier, version, and SHA-256 digest freeze the exact object revision being approved. "
"Ordered steps, actor selectors, required counts, requester separation, unique actors, and signature requirements "
"are copied into the immutable request and do not follow later template changes. Actor values are provider-neutral "
"identifiers interpreted through Access and IDM contracts. Approval or rejection appends a decision with actor, "
"reason, optional signature reference, and optimistic-concurrency revision. Completed, rejected, cancelled, and "
"expired requests remain evidence and cannot be decided again."
),
layer="configured",
documentation_types=("admin", "user"),
audience=("user", "operator", "module_admin", "auditor"),
related_modules=OPTIONAL_DEPENDENCIES,
links=(
DocumentationLink(
label="Approvals boundary and recovery",
href="govoplan-approvals/docs/APPROVALS_DOMAIN_BOUNDARY.md",
kind="repository",
),
),
metadata={
"seed": True,
"help_contexts": [
"approvals.field.subject-reference",
"approvals.field.subject-digest",
"approvals.field.actor-selector",
"approvals.field.separation-of-duties",
"approvals.field.signature-reference",
"approvals.action.create-request",
"approvals.action.decide-request",
],
"consequence_classes": {
"create_request": "Freezes an exact subject and immutable approval chain.",
"approve_step": "Appends an attributable decision and may advance or complete the chain.",
"reject_request": "Appends a rejection and completes the request according to its frozen policy.",
"retain_evidence": "Keeps request revisions, decisions, reasons, and signature references for reconstruction.",
},
},
),
),
architecture=declared_module_architecture(