OPS62-followup — CI: flake do municipalitiesWithoutUpdateTool.unit.spec.ts sob carga — ordenação Alpha/Beta trocada (2 ocorrências 2026-08-18) #81
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Classe de flake ambiental (máquina compartilhada; ver S6) mas com 2 ocorrências no mesmo dia (gate local 19:22 e run 779 do main 23:53): 'orders never-updated first (by name), then oldest to newest (by name as tie-break)' recebeu [Beta, Alpha] no lugar de [Alpha, Beta]. O código é puro e determinístico (localeCompare 'pt-BR' + tie-break por timestamp ISO em getMunicipalitiesWithoutUpdate.ts) e 20 runs isolados passam; a ordem recebida é a ordem original do fixture (sort não atuou), o que sugere algo no ambiente do vitest sob concorrência (workers/forks), não na lógica. Gatilho para investigar: 3ª ocorrência. Se persistir, reproduzir com a suíte full em máquina sob carga e checar locale/ICU do container. Nada a ver com o OPS62 (que não toca src/); o flake existia antes e só foi observado 2x no mesmo dia.
Claimed by agent run at 2026-08-19T15:28:35.038Z. Lock otimista: outro claim deve falhar e re-rodar
pnpm agent:claim.PR #89 (base main, Ready): causa raiz reproduzida — o fixture do teste chamava
Date.now()por chamada; duasdaysAgo(40)separadas podiam cruzar a fronteira de ms sob carga (0.08% idle, 100% com pausa de 1 ms injetada; fixture ancorado: 0 em 2000 runs), deixandoAlphaestritamente mais novo e vencendo o tie-break por nome emsortStale. Fix test-only: âncorafixtureNowMsno load do módulo + hoist do timestamp empatado (igualdade estrutural). Verificação: spec 30/30, unit 2405, int 791, gates verdes. Merge via safety net quando o CI rodar.Merged em main via PR #89 —
done+in-prod. Deploy de produção segue o verificadorci.yml(gated).