Os dois pontos procedem, obrigado pela leitura cuidadosa.
Regra 1: aqui o deploy FTP e o servidor ignora a query, ento o cenrio que voc descreveu podia acontecer. E no service worker pior: o install faz addAll das URLs com o ?v= novo, e se o JS velho ainda estiver no disco ele entra no cache com a URL nova. Mudei o script de deploy para subir nesta ordem: assets, depois o HTML, e o sw.js por ltimo. Hash no nome seria mais robusto, como voc disse (o 404 protege sozinho), mas pede reescrever as referncias no build. Por enquanto a ordem cobre o caso comum.
Regra 4: verdade. As pginas que a regra 2 guarda moram no mesmo cache versionado, ento cada deploy apaga todas e offline sobra s a pgina principal. No abre quebrado, mas perde as outras. Ler as URLs de navegao do cache antigo no install e baixar de novo uma boa sada; vou testar.
E o ponto do Workbox responde a minha pergunta: comparar reviso por arquivo justamente o que falta quando um ?v= global obriga a baixar tudo por causa de uma linha.