Every job in the release workflow consumes exactly one commit. Tag-build
paths keep full history + tags (merge-base ancestry gate, canary MSIX
tag arithmetic); channel/commit/disposable paths fetch depth 1 with no
tags: admission exits before any history read, versions derive from the
request/env, and the two disposable-only jobs (allocate, receiver
publish) never read history at all — unconditional depth 1.