Migrate Forms Runtime interface patterns

This commit is contained in:
2026-08-03 13:02:19 +02:00
parent b4388b1e1e
commit 07dd35bcc0
9 changed files with 440 additions and 32 deletions
@@ -317,6 +317,66 @@ manifest = ModuleManifest(
kind="repository",
),
),
metadata={
"seed": True,
"help_contexts": [
"forms_runtime.navigation",
"forms_runtime.workspace",
"forms_runtime.instance",
"forms_runtime.state.read-only",
"forms_runtime.state.permission-blocked",
],
"privacy_notes": [
"Form values are returned only through tenant-bound instance permissions and ownership rules.",
"Validation messages expose field-level diagnostics without disclosing unrelated submissions.",
"Handoff rows retain provider references and outcomes but do not bypass target-module authorization.",
],
},
),
DocumentationTopic(
id="forms_runtime.reference.fields-and-consequences",
title="Form values, submission, and handoff consequences",
summary="Runtime field behavior, immutable receipts, draft revisions, optional evidence, and recoverable external effects.",
body=(
"The active instance resolves one exact published Form definition revision. Visibility conditions alter presentation, "
"not server validation or authorization. Saving a permitted draft creates a new revision with its change reason. "
"Submitting validates values, attachments, signatures, and policy requirements and records an immutable receipt; it is "
"not an editable draft save. A Case or Workflow handoff records intent before calling its optional provider and uses a "
"stable idempotency key. Rejected effects may be retried. Unknown outcomes must be reconciled before retry to avoid a "
"duplicate target. Administrative compensation records verified absence and never deletes a remote target."
),
layer="configured",
documentation_types=("admin", "user"),
audience=("user", "operator", "module_admin", "auditor"),
related_modules=OPTIONAL_DEPENDENCIES,
links=(
DocumentationLink(
label="Forms Runtime security and recovery",
href="govoplan-forms-runtime/docs/FORMS_RUNTIME_DOMAIN_BOUNDARY.md",
kind="repository",
),
),
metadata={
"seed": True,
"help_contexts": [
"forms_runtime.field.dynamic-value",
"forms_runtime.field.change-reason",
"forms_runtime.field.handoff-kind",
"forms_runtime.field.target-binding",
"forms_runtime.action.save-draft",
"forms_runtime.action.submit",
"forms_runtime.action.start-handoff",
"forms_runtime.action.reconcile-handoff",
"forms_runtime.action.compensate-handoff",
],
"consequence_classes": {
"save_draft": "Creates an immutable draft revision with a change reason.",
"submit": "Validates the exact definition and creates an immutable submission receipt.",
"start_handoff": "Persists intent before invoking an optional Case or Workflow provider.",
"reconcile": "Resolves an outcome-unknown effect without unsafe duplicate execution.",
"compensate": "Records an administrative proof that no target effect exists.",
},
},
),
),
architecture=declared_module_architecture(