Hymical Forms v0.2.1 is a correctness release that strengthens webhook delivery ownership under lease expiry and worker recovery.
What changed
- Added explicit claim tokens for webhook delivery ownership
- Prevented stale workers from overwriting deliveries that have been reclaimed by another worker
- Preserved accurate attempt history even when a stale worker's HTTP request completes late
- Prevented lifetime attempt numbers from being reused during concurrent completion
- Added focused PostgreSQL integration tests covering stale-owner races and competing completion results
- Added migration
0006for delivery claim tokens - Expanded documentation around lease ownership, late attempts, and deployment safety
Delivery semantics
Webhook delivery remains at least once.
A webhook may still be delivered more than once if a request succeeds but Forms cannot durably record that success before the lease is reclaimed. Receivers should continue to deduplicate using the submission identity when necessary.
The change in v0.2.1 is narrower: once a worker's claim has been superseded, that worker can no longer overwrite the authoritative delivery state owned by the newer claim.
Upgrade note
Stop all existing Forms workers before upgrading.
Apply the database migrations, then start the v0.2.1 workers.
Do not run pre-v0.2.1 workers and v0.2.1 workers concurrently during this migration. Older workers do not understand delivery claim tokens and can bypass the ownership fencing introduced in this release.
Verification
The release is covered by the full test suite plus real PostgreSQL integration tests for delivery claiming, lease expiry, stale-worker completion, attempt numbering, and recovery behavior.
What's Changed
- delivery claim fencing by @quangshuynh in #9
Full Changelog: v0.2.0...v0.2.1