{ "package_id": "product.service-to-decision", "name": "Governed Service To Decision", "version": "0.1.0", "package_class": "product", "description": "Carry one exact institutional context from service discovery and case intake through parties, authority, formal outcome, communication evidence, and review.", "publisher": "GovOPlaN", "category": "institutional-governance", "license": "AGPL-3.0-or-later", "required_modules": [ {"module_id": "access"}, {"module_id": "audit"}, {"module_id": "cases"}, {"module_id": "decisions"}, {"module_id": "forms"}, {"module_id": "forms_runtime"}, {"module_id": "mandates"}, {"module_id": "parties"}, {"module_id": "payments"}, {"module_id": "policy"}, {"module_id": "portal"}, {"module_id": "services"}, {"module_id": "tasks"}, {"module_id": "workflow_engine"} ], "required_capabilities": [ "access.configuration", "cases.party_context", "cases.service_intake", "decisions.registry", "forms.configuration", "forms.definitions", "mandates.resolver", "parties.resolver", "payments.requests", "portal.service_directory", "services.availability", "services.definitions", "workflow.configuration" ], "optional_modules": [ {"module_id": "approvals"}, {"module_id": "committee"}, {"module_id": "files"}, {"module_id": "postbox"}, {"module_id": "records"}, {"module_id": "search"} ], "data_requirements": [ { "key": "responsible_group_slug", "label": "Responsible permit group key", "data_type": "string", "required": true, "secret": false, "description": "Tenant-local stable key for the group that reviews resident parking permit applications." }, { "key": "responsible_group_name", "label": "Responsible permit group name", "data_type": "string", "required": true, "secret": false, "description": "Human-readable tenant-local name shown for the responsible permit group." } ], "fragments": [ { "module_id": "access", "fragment_type": "roles", "fragment_id": "resident-parking-permit-clerk", "payload": { "items": [ { "slug": "resident-parking-permit-clerk", "name": "Resident parking permit clerk", "description": "Reviews resident parking permit submissions, workflow handoffs, cases, decisions, and payment evidence.", "permissions": [ "cases:case:read", "cases:case:create", "cases:case:update", "decisions:decision:read", "decisions:decision:write", "forms:definition:read", "forms_runtime:workspace:read", "forms_runtime:workspace:write", "payments:payment:read", "payments:payment:write", "tasks:item:read", "tasks:item:write", "workflow:definition:read", "workflow:instance:read", "workflow:instance:start", "workflow:instance:transition" ] } ] } }, { "module_id": "access", "fragment_type": "groups", "fragment_id": "resident-parking-permit-responsibility", "payload": { "items": [ { "slug": {"$data": "responsible_group_slug"}, "name": {"$data": "responsible_group_name"}, "description": "Tenant-local responsibility group for the resident parking permit reference journey." } ] } }, { "module_id": "access", "fragment_type": "group_role_assignments", "fragment_id": "resident-parking-permit-clerk-assignment", "payload": { "items": [ { "group": {"$data": "responsible_group_slug"}, "role": "resident-parking-permit-clerk" } ] } }, { "module_id": "forms", "fragment_type": "definition", "fragment_id": "resident-parking-permit-application", "payload": { "on_conflict": "new_revision", "change_reason": "Install the reviewed resident parking permit reference form.", "fragment": { "kind": "govoplan.forms.definition", "contract_version": "0.1.0", "definition": { "reference": { "kind": "form", "owner_module": "forms", "object_id": "resident-parking-permit-application", "tenant_id": "reference-package", "version": "3", "valid_at": null, "label": null }, "key": "resident-parking-permit-application", "temporal": { "revision": "3", "valid_from": null, "valid_to": null, "recorded_at": "2026-08-22T00:00:00+00:00", "superseded_at": null, "change_reason": "Reference package revision." }, "title": "Resident parking permit", "description": "Apply for a resident parking permit through a digital or assisted channel.", "fields": [ { "key": "applicant_name", "label": "Name", "value_type": "text", "required": true, "help_text": null, "options": [], "constraints": {"min_length": 2, "max_length": 200}, "default_value": null }, { "key": "applicant_email", "label": "Email", "value_type": "text", "required": true, "help_text": null, "options": [], "constraints": {"format": "email"}, "default_value": null }, { "key": "residence_address", "label": "Primary residence", "value_type": "text", "required": true, "help_text": null, "options": [], "constraints": {"max_length": 500}, "default_value": null }, { "key": "licence_plate", "label": "Licence plate", "value_type": "text", "required": true, "help_text": null, "options": [], "constraints": {"max_length": 20}, "default_value": null } ], "publication_state": "published", "allow_drafts": true, "max_attachments": 4, "signature_requirement": "none", "policy_refs": [ "law:resident-parking-permit", "records:resident-parking-permit" ], "handoff_kinds": ["case", "workflow"], "metadata": {}, "pages": [ { "key": "application", "title": "Application", "description": null, "sections": [ { "key": "applicant-and-vehicle", "title": "Applicant and vehicle", "description": null, "field_keys": [ "applicant_name", "applicant_email", "residence_address", "licence_plate" ] } ] } ], "localizations": [ { "locale": "de", "title": "Anwohnerparkausweis beantragen", "description": "Einen Anwohnerparkausweis digital oder mit Unterstützung beantragen.", "field_labels": { "applicant_name": "Name", "applicant_email": "E-Mail-Adresse", "residence_address": "Hauptwohnsitz", "licence_plate": "Kennzeichen" }, "field_help_texts": {}, "option_labels": {}, "page_titles": {"application": "Antrag"}, "section_titles": { "applicant-and-vehicle": "Antragstellende Person und Fahrzeug" } } ], "fallback_locale": "de" }, "definition_sha256": "7dc108002d532c07e5e7f3b14029a9d4deb3836ebb65d97fb6b51166a70e0ed4", "provenance": { "owner_module": "forms", "tenant_id": "reference-package", "form_id": "resident-parking-permit-application", "revision": "3", "exported_at": "2026-08-22T12:00:00+00:00", "exported_by": "GovOPlaN reference package" } } } }, { "module_id": "workflow_engine", "fragment_type": "workflow_definitions", "fragment_id": "resident-parking-permit-workflow", "payload": { "schema_version": 1, "origin_module_id": "configuration_package.service_to_decision", "origin_module_version": "0.1.0", "items": [ { "definition_key": "resident-parking-permit-review", "name": "Resident parking permit review", "description": "Review evidence, record the formal decision, and verify payment evidence for the resident parking permit reference journey.", "scope_type": "tenant", "allow_start": true, "allow_reuse": true, "allow_automation": false, "execution_mode": "guided", "activate_on_install": true, "graph": { "schema_version": 1, "nodes": [ { "id": "start", "type": "workflow.start.manual", "label": "Application received", "config": {"input_schema_ref": "form:resident-parking-permit-application"} }, { "id": "review-evidence", "type": "workflow.review", "label": "Review application evidence", "config": { "title": "Review resident parking permit evidence", "reviewer": { "kind": "group", "id": {"$data": "responsible_group_slug"}, "label": {"$data": "responsible_group_name"} }, "due_after": "P14D", "required_evidence": [ "identity", "primary_residence", "vehicle_registration" ], "view_surface_ids": [] } }, { "id": "record-decision", "type": "workflow.activity", "label": "Record formal decision", "config": { "title": "Record the resident parking permit decision", "instructions": "Record the operative result, reasoning, legal basis, remedy, and exact evidence references through the Decisions capability.", "assignee": { "kind": "group", "id": {"$data": "responsible_group_slug"}, "label": {"$data": "responsible_group_name"} }, "due_after": "P7D", "view_surface_ids": [] } }, { "id": "verify-payment", "type": "workflow.activity", "label": "Verify payment evidence", "config": { "title": "Verify the resident parking permit fee", "instructions": "Verify the EUR 30.00 obligation, immutable receipt evidence, currency, amount, and transaction reference before completion.", "assignee": { "kind": "group", "id": {"$data": "responsible_group_slug"}, "label": {"$data": "responsible_group_name"} }, "due_after": "P14D", "view_surface_ids": [] } }, { "id": "completed", "type": "workflow.end.completed", "label": "Permit journey complete", "config": {"output_mapping": {}} } ], "edges": [ {"id": "start-review", "source": "start", "target": "review-evidence"}, {"id": "review-decision", "source": "review-evidence", "source_port": "approved", "target": "record-decision"}, {"id": "decision-payment", "source": "record-decision", "target": "verify-payment"}, {"id": "payment-completed", "source": "verify-payment", "target": "completed"} ], "metadata": { "reference_journey": "resident-parking-permit", "locale": "de-DE", "payment_amount_minor": 3000, "payment_currency": "EUR" } }, "metadata": { "reference_package": "product.service-to-decision", "form_id": "resident-parking-permit-application" } } ] } } ], "evidence": [ { "kind": "documentation", "reference": "packages/product/service-to-decision/README.md", "summary": "Defines the package boundary, authority path, recovery contract, and known operational limits." }, { "kind": "target_test", "reference": "tests/fixtures/resident_parking_permit_journey.json", "summary": "Pins the resident parking permit actors, channels, exact inputs, work item, formal outcome, filing target, and remaining manual acceptance gates." }, { "kind": "target_test", "reference": "tests/test_institutional_governance_journey.py", "summary": "Executes the SQL-backed provider composition from service discovery through persisted formal Decision reconstruction." }, { "kind": "target_test", "reference": "tests/test_institutional_service_journey.py", "summary": "Executes Portal delegation from an exact Service revision through an exact immutable Form revision to a replay-safe persisted submission." } ], "tags": ["service", "case", "mandate", "party", "decision", "public-sector"] }