If the tntId isn't persisting then it's certainly a broader implementation issue, not an issue with profile scripts per se. I can also see that the marketingCloudVisitorId is different in the screenshot. Is the checkout page on a different sub-domain/domain vs the other pages?
Yes, domains are the same; it was getting a new ECID on every page.
I think I found the issue, using a cname in the WebSDK in Launch is is causing it to get a new ECID each page. When I reverted back to the default edge.adobedc.net domain, the ECID stopped changing page-to-page and the Profile script returned the value correctly.
To validate, created a brand new Launch property with nothing but the WebSDK and a single Rule to output the Response Tokens to the console. All other settings being the same, entering our cname generates a new ECID every page, the default domain doesn't.
Note: the one thing that is different is my website is a AEM instance running on localhost. So the "bug" may be limited to localhost pages, pages without a SSL certificate (the cname is under SSL) or CORS related to the browser running against localhost.
Net, this works correctly under AT.JS (the cname part) - with WebSDK, Activities based on Profile Data failed due to the WebSDK incorrectly generating a new ECID every page in certain instances (localhost pages appearing to be one of them).