Stale render detection currently works by re-reading the PackageRevision CRD after render and comparing annotation values. This is unreliable because:
The read may come from a stale informer cache
The content can change between the read and the subsequent write
Conflict detection should happen at the storage layer instead. When writing rendered output, the cache should compare the content version against the version the render was based on and reject the write if it changed. This eliminates the race window entirely.
#514 (comment)
Stale render detection currently works by re-reading the PackageRevision CRD after render and comparing annotation values. This is unreliable because:
The read may come from a stale informer cache
The content can change between the read and the subsequent write
Conflict detection should happen at the storage layer instead. When writing rendered output, the cache should compare the content version against the version the render was based on and reject the write if it changed. This eliminates the race window entirely.
#514 (comment)