Close the remaining publish aggregate-consistency edges (review round 2, F1 continued): - chan.name == release.channel — the promoted channel must be the one the release declares as its target; promoting a "beta" channel for a release whose channel is "stable" committed an edge contradicting the release's own target. Now rejected with Integrity + rollback. - release.id must be new — a colliding id would shadow the existing release (get_release resolves to the OLD one), so the channel edge would silently point at a different release than the one published. Now rejected with Integrity + rollback. tests/repo_transaction.sx: add a channel-name-mismatch case and a release-id-collision case (both assert Integrity + model unchanged); existing fully-consistent publish still commits. Both new cases fail on the pre-fix repo.sx and pass after.
14 KiB
14 KiB