| ← Back to Gatherings | Waivers plugin |
4.6.4 Waiver Exemptions and Attestations
Waiver exemptions are owned by the Waivers plugin, not the core gathering schema. They allow an authorized operator to attest that a configured waiver type is not required for a gathering activity and to record the permitted reason.
Data contract
- A
WaiverTypecan configure zero or more allowed exemption reasons. - A
GatheringWaiverrepresents either collected documentation or an exemption/attestation, using the plugin’s current fields and validation rules. - The record identifies the gathering, waiver type, actor, reason/state, and audit timestamps required by the plugin.
Treat the migration and table validation as the schema source of truth; do not duplicate the field list in core documentation.
Processing
WaiverMobileService::processAttestation() handles the mobile attestation path. WaiverFileService calculates required types and summarizes collection state. WaiverStateService manages ready-to-close, close, reopen, and decline transitions. The waiver-closure workflow coordinates durable closure behavior.
Security and audit rules
- Authorize the gathering and plugin action before accepting an attestation.
- Validate the selected reason against the current waiver-type configuration.
- Preserve who attested and when; do not convert an uploaded waiver to an exemption by direct column updates.
- Use tenant-routed document storage and never accept a document ID from another tenant context.
- Expose exemption status and reason in text, not solely through color or an icon.
See Waivers plugin for the complete module boundary.