A signature applies to a whole major: minor publishes keep it and the export unions signatures across every minor of the major. The request guard was scoped to a single minor, so re-requesting on a newer minor (or twice on the same version) inserted duplicate rows and a signatory appeared several times on the exported signature page. Deduplicate by loading any existing signature across the major before inserting, cancel still-pending requests from prior majors when a new major is published, and restrict the export to active signatories (comparing contract end dates against the current date). A migration collapses the duplicate rows already in the table, preferring a signed row over a pending one and then the most recent. Signed-off-by: Bryan Frimin <bryan@probo.com>
51 KiB
51 KiB