fix(cras-install): dar ~5 minutos al sello de version al actualizar

Los 88s de antes (45 x 2s) se quedaban cortos con un caso real: en los agentes
hasta 1.1.4 el sello se escribia DETRAS del re-despliegue de las deps embebidas,
que al cambiar de version se re-copian enteras, y eso va despues de desempacar un
onefile de ~254 MB con el antivirus escaneando. Se reportaba como fallida una
actualizacion que iba bien.

Desde 1.1.5 el agente escribe el sello lo primero y este margen sobra, pero tiene
que cubrir los artefactos YA publicados, que no se pueden arreglar hacia atras.

Agotar el margen es un FALLO en una actualizacion, asi que quedarse corto
convierte un despliegue bueno en un error — el mas caro de los dos.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-31 15:11:49 -06:00
parent 74b8d2fbd2
commit 7e734625a1

View File

@@ -1871,10 +1871,16 @@ export async function verifyWindowsDeployment(
// desempacar un onefile de ~270 MB con Defender escaneando cada archivo se pasa de largo del
// margen. Se sondea hasta que coincida, o hasta agotar los intentos.
let deployed = '';
// Margen generoso: desempacar un onefile de ~270 MB con Defender escaneando cada archivo se
// pasa de largo de los 30s que había antes, y agotar el margen ahora es un FALLO en una
// actualización, así que quedarse corto convertiría un despliegue bueno en un error.
const stampAttempts = isUpdate || inPlaceUpdate ? 45 : 3;
// ~5 minutos al actualizar. Los 88s de antes (45 × 2s) se quedaban cortos con un caso real: en
// los agentes hasta 1.1.4 el sello se escribía DETRÁS del re-despliegue de las deps embebidas,
// que al cambiar de versión se re-copian enteras, y eso va después de desempacar un onefile de
// ~254 MB con el antivirus escaneando. Se reportaba como fallida una actualización que iba
// bien. Desde 1.1.5 el agente escribe el sello lo primero y esto sobra, pero el margen tiene
// que cubrir los artefactos YA publicados, que no se pueden arreglar hacia atrás.
//
// Agotarlo es un FALLO en una actualización, así que quedarse corto convierte un despliegue
// bueno en un error — el error más caro de los dos.
const stampAttempts = isUpdate || inPlaceUpdate ? 150 : 3;
for (let attempt = 0; attempt < stampAttempts; attempt += 1) {
if (attempt > 0) await new Promise((resolve) => setTimeout(resolve, 2000));
const stamp = await execRemote(