fix: cerrar el punto ciego de rechazos 400 en el guardrail de la rampa - #17
Merged
Merged
Conversation
HALLAZGO REAL (auditoría de rigor arquitectónico, 2026-08-17): el guardrail de observe_and_guard solo miraba success == false — ciego a una regresión de negocio real, la más probable en un despliegue de código: un bug que empiece a devolver 400 en masa para solicitudes que antes eran válidas. ValidatePayment maneja esos casos sin lanzar excepción, así que Application Insights los marca success=true sin importar el código HTTP (ver PLAN.md §3.5, 230+ solicitudes reales que nunca dispararon el guardrail). Fix: compara la tasa de 400 de la instancia en rampa contra la del otro rol en la misma ventana de 5 minutos (ambas reciben la misma mezcla real de tráfico) — una diferencia mayor a 10 puntos porcentuales, con un piso mínimo de 3 solicitudes rechazadas para no disparar sobre muestras chicas, dispara el mismo rollback que ya existía para success == false. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumen
observe_and_guardsolo filtrabasuccess == false— ciego a una regresión de negocio real (un bug de despliegue que rechace con400solicitudes antes válidas).ValidatePaymentmaneja esos casos sin lanzar excepción, así que Application Insights los marcasuccess=truesin importar el código HTTP. Verificado con 230+ solicitudes reales que nunca dispararon el guardrail pese a ser errores reales.400de la instancia en rampa contra la del otro rol en la misma ventana de 5 min (misma mezcla real de tráfico) — diferencia >10 puntos porcentuales con piso mínimo de 3 solicitudes rechazadas dispara el mismo rollback ya existente.rollback-canary,novapay-iac-terraform) mantiene la misma limitación (solo 5xx) — su propósito es cubrir el caso en que el job de CD no está disponible, escenario distinto.Test plan
bash -nsobre el script — sintaxis válida.ERROR_RATE_PCT=100del load-generator ahora sí sería detectado, dado que produce una diferencia de tasa de rechazo entre roles).🤖 Generated with Claude Code