Migrate Approvals interface patterns
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user