Dell QC has been pretty terrible the past decade, and they're inferior in basically every way (Intel-only, mediocre cooling solutions, meh battery size, expensive, long-standing (like multi-year, basically entire product life cycle) unresolved bugs/incompatibilities even for their dev edition versions, soldered RAM, awful support, etc).
One other thing is that if you are a Linux user, I really don't see much point in rolling the dice/fighting obscure compatibility bugs (most of them being BIOS/ACPI bugs that are hard to impossible for mere mortal end-users to fix) when there are similar (or better) alternatives that are known to work OOTB, or better yet, explicitly support Linux.
Anywhere, here's the rub. I bought my 64GB memory kit for $250. It cost an extra $125 at retail to add an extra 32GB of memory, which almost all laptop manufacturers have decided not to even allow as an option for segmentation/planned obsolescence purposes. Which is fine, that's their prerogative, but since there are enough decent options that allow more memory, it also means that I, or anyone else who needs more RAM just won't be giving them any money instead.
If it makes you feel any better about your purchase, I don't get great battery life either. I didn't make any attempt to optimize it, and I get about 3-4 hours of dev time out of it (yes, not very scientific, I know).
Your review was great though, I might get a framework as my next laptop assuming they are still good in a few years time.
I don't know about your workload, but in you case you ever wanted to poke around, one thing that might be worth looking into is to see whether the MUX switch (only accessible in Windows) is on its dGPU-only mode. On iGPU mode, the battery life tests for idle and wifi web browsing seem pretty good in Windows: https://www.notebookcheck.net/Asus-ROG-Zephyrus-G14-GA402R-G...
On Windows, 3rd parties have been working on a utility called AATU to improve performance and longevity: https://amdaputuningutility.com/
And on Linux, I used https://github.com/FlyGoat/RyzenAdj all the time for my preferred use cases (eg, setting the temp limit below when fans turn on to get a completely silent laptop on battery, lowering max power limits if I wanted to hit a certain amount of battery life, etc). (TLP has run-on-ac and run-on-bat commands so you can easily set your defaults based on whether you're plugged in or not (udev can see power events too).