Version numbers can express "do not skip a major". They cannot express "wait for a backfill that landed earlier in this same major line".
Put the requirement on the chart that actually has the dependency:
annotations:
nvcf.io/requires-migrations: backfill-new-function-columns
The preflight unions the annotations across the bundle's pinned charts and checks them against the receipt. Set by whoever writes the code that assumes the backfill ran, aggregated by the bundle rather than declared on it. This is the same shape as a storage engine refusing to start against a data format it cannot read — the component that cannot cope declares its own precondition.
Version numbers can express "do not skip a major". They cannot express "wait for a backfill that landed earlier in this same major line".
Put the requirement on the chart that actually has the dependency:
The preflight unions the annotations across the bundle's pinned charts and checks them against the receipt. Set by whoever writes the code that assumes the backfill ran, aggregated by the bundle rather than declared on it. This is the same shape as a storage engine refusing to start against a data format it cannot read — the component that cannot cope declares its own precondition.