# Forms Module Boundary `govoplan-forms` owns reusable form definitions and validation metadata. Runtime submissions and workflow handoff are separate behavior. The core boundary decision register is in `/mnt/DATA/git/govoplan-core/docs/MODULE_ARCHITECTURE.md`. ## Ownership Forms owns: - form definitions, field schemas, sections, validation rules, and visibility rules - localization, accessibility metadata, versioning, draft/published lifecycle, and admin editing - form import/export and configuration-package fragments - schema contracts that let portal, workflow, cases, and reporting understand a form without importing form internals `govoplan-forms-runtime` owns, when implemented: - public/internal submission sessions, drafts, receipts, submitted values, validation evidence, attachment references, and submission status - submission handoff events to workflow, cases, tasks, mail, reporting, files, DMS, or portal ## Boundaries Forms does not own: - public portal identity and anonymous/authenticated public entry points - file storage and file permissions for uploaded attachments - cases, workflow transitions, tasks, or assignment state - DMS document lifecycle and generated record storage - reporting aggregation or dataflow transformation ## Submission Status Model Candidate runtime statuses: - `draft` - `submitted` - `validated` - `needs_review` - `accepted` - `rejected` - `handed_off` - `archived` The definition module can declare valid transitions and required evidence, but runtime state belongs to the runtime module. ## Accessibility And Validation Requirements Form definitions should carry: - labels, descriptions, required markers, and help text - machine-readable validation rules - field grouping and ordering - keyboard and screen-reader metadata where needed - localization keys and fallback text - data classification for privacy/retention decisions ## Candidate Capabilities - `forms.catalog` - `forms.schema` - `forms.validation` - `forms.packageFragments` - `forms.runtime` when runtime is installed ## First Implementation Slice 1. Define manifest metadata, permissions, and capability names. 2. Add form definition/version DTOs. 3. Add validation metadata for one reusable form schema. 4. Add package fragment import/export format. 5. Add tests that portal/workflow/reporting can detect form capabilities without importing form internals.