A post-install hook Job runs once and exits, so it cannot come back hours later to mark an asynchronous backfill complete. Either it blocks until the backfill finishes — which defeats the point of the backfill being asynchronous — or the status is never updated and the receipt is permanently wrong.
The task that runs the migration is the thing that knows when it is done, is already running in-cluster, and already has to exist. It should write its own status into the receipt. The receipt writer then only has to record installed version and bundle digest at install time, and nothing has to watch anything.
Getting completion reported honestly is the part of this design that is not solved for us anywhere and deserves the most care. A receipt must never claim readiness merely because Helm finished.
A post-install hook Job runs once and exits, so it cannot come back hours later to mark an asynchronous backfill complete. Either it blocks until the backfill finishes — which defeats the point of the backfill being asynchronous — or the status is never updated and the receipt is permanently wrong.
The task that runs the migration is the thing that knows when it is done, is already running in-cluster, and already has to exist. It should write its own status into the receipt. The receipt writer then only has to record installed version and bundle digest at install time, and nothing has to watch anything.
Getting completion reported honestly is the part of this design that is not solved for us anywhere and deserves the most care. A receipt must never claim readiness merely because Helm finished.