La PR #24 aplasto el commit 9a4124d de esta rama en a895044, con otro hash, asi
que git vio dos historias para el mismo contenido y marco conflicto en
cras-install.ts, cras-verify.ts y cras-install.test.ts.
Comprobado antes de resolver: la version de development de los tres archivos es
IDENTICA byte a byte a la de 9a4124d, o sea que la PR se mezclo sin cambios de
revision. Los dos commits posteriores de esta rama (3572aa9 y 9b05361) son
refinamientos encima de ese mismo contenido, asi que resolver a favor de esta
rama no pierde nada.
Verificado despues del merge: 346 pruebas, typecheck limpio, y siguen presentes
alignWindowsTask, restartWindowsAgent, readWindowsCrashLog y la comparacion de
rutas compartida entre el instalador y Verificar.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
El run de Windows terminaba en verde sobre un servidor que seguia con la version
anterior. La verificacion no podia detectarlo:
- El sello config\.version ausente se toleraba SIEMPRE. Los agentes anteriores a
1.1.1 no lo escribian, asi que al actualizar uno de esos `deployed` llegaba
vacio y no se comprobaba ninguna version — justo la combinacion que importa.
Ahora, en una ACTUALIZACION, un sello ausente es un fallo: el binario nuevo lo
escribe en ensure_runtime_layout(), asi que su ausencia significa que lo que
corre no es el que se instalo. La tolerancia se queda solo en instalacion nueva.
- `Get-Process -Name` responde "hay un proceso con ese nombre", no "corre el
binario que instale". Se compara la RUTA del ejecutable; si no es legible no se
concluye que sea ajeno, porque un proceso de SYSTEM no la expone sin elevacion.
- Se interroga la tarea programada a fondo: su accion dice DONDE arranca el
agente de verdad y se asienta en la bitacora (el dato que habria explicado esto
en diez segundos), y cuando el agente no reporta su ruta —nada anterior a 1.1.1
lo hace— se usa la de la tarea en vez del default.
Y dos correcciones de lo anterior:
- needsElevation exigia admin en cuanto la tarea EXISTIA, bloqueando de entrada
toda actualizacion sobre un servidor ya instalado. Ahora depende de que la
tarea corra como SYSTEM, que es lo que de verdad obliga a elevar; y el token
filtrado por UAC deja de rechazarse por adelantado: se intenta y se reporta lo
que responda el servidor.
- -UpdateInPlace se pasaba siempre, pero solo existe desde 1.1.3 y install.ps1
usa [CmdletBinding()], asi que con un artefacto anterior fallaba con
NamedParameterNotFound sin ejecutar una linea. Se le pregunta a PowerShell por
el param() del propio artefacto en vez de mantener una tabla de versiones.
Verificar comparte las dos sondas nuevas para que no pueda contradecir al
instalador, y gana un chequeo de "el arranque apunta a la instalacion".
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Reviewed-on: #24
Co-authored-by: hreyes <hreyes@aduanasoft.com.mx>
Co-committed-by: hreyes <hreyes@aduanasoft.com.mx>