A template edited in the site editor becomes a wp_template post, and from that moment the file on disk is ignored for that template.
SELECT post_name, post_status FROM wp_posts
WHERE post_type IN ('wp_template', 'wp_template_part');
-- | single | publish | ← customised, overrides the file
-- | header | publish |
-- so a theme update changing templates/single.html has no
-- effect on this site, silently, forever.
This is the single largest operational difference between a block theme and a classic one: deploying a template change does not change the site if anybody has opened that template in the editor. Auditing for customised templates before a theme deploy is a query, and it belongs in the deploy checklist rather than in somebody’s memory.