good job in debugging the code - especially as I haven’t used snappy very often so far so I’m glad that you managed to include the Beta0 product. In the SNAP GUI, Beta0 is only added as a virtual band (when checked in the calibration step), so maybe that is part of the reasons why it didn’t work in the first run.
On the georeferencing. To be honest, I have never used “Update Georeferencing” and wasn’t even aware that this operator exists (obviously quite a long time ).
All I can say is that the standard way of geocoding a SAR image on land areas is the Range Doppler Terrain Correction. It combines several steps: It uses a DEM to correct for geometric distortions caused by topographic variations (I suggest to use the SRTM 1Sec AutoDownload), it adds a selected coordinate reference system of your choice and resamples the raster to the square pixels at the smallest pixel size possible.
The EllipsoidCorrection is only used if the area you are working on is completely flat (I would never assume this), or no DEM data is avaiilable, for example over ocean areas. So you can basically replace steps 5 and 6 of your initial posts by RD Terrain Correction - this is why I considered it impractical.
But again, I cannot really tell what the Update Geo Referencing operator is actually good for - it is also very rarely discussed in here. Maybe it is a relic from earlier versions or especially suitable for specific sensors. Maybe @jun_lu can clarify here.
Let us know if you come closer to your goal of if you are experiencing any new issues. Sometimes it is even worth to compare the Sigma0 (after calibration) with the Gamma0 (after terrain flattening) because in some cases it introduced new patterns because of bad DEM quality (here, for example).