Copy-trading verification run (2026-07-10)
Verificación completa del trabajo copy-trading restante — todo abajo realmente ejecutado, no solo autorizado.
En vivo (cuentas demo de cTrader reales) — 8/8 aprobado
1:1 · 1:many · inverso · cross-cID · cierre parcial · límite pendiente + cancelar · stop final · actualización de token.
Escenarios en vivo agregados RunPendingAsync / RunTrailingAsync (+ LoadSpotPriceAsync, OpenPositionSnapshot.StopLoss/TrailingStopLoss).
Integración (Postgres real, Testcontainers) — aprobado
CopyNodeAffinityTests— supervisor de reclamo atómico real: primer nodo reclama todos los perfiles en ejecución, segundo reclama 0 (sin copia doble); pausa libera + reclamación.TokenRotationSignatureTests— firma cambia solo en rotación real de token.
En clúster (kind + Helm) — aprobado
Instalé kind/kubectl/helm, ejecuté scripts/k8s-e2e.sh contra clúster real de kind:
- Trabajo determinista: 101 aprobado en clúster.
- Trabajo en vivo: 8 aprobado en clúster (init-container
seed-secretscopia Secret → emptyDir escribible, cuentas demo reales). - Trabajo
Complete 1/1, script salida 0.
Errores encontrados mientras se verificaba (fijo + re-verificado)
- Eventos pendientes: cTrader adjunta marcador de posición de posición que no se abre a límite/stop reposado
ORDER_ACCEPTED/CANCELLED.SourceExecutionsAsyncahora clasifica colocación/cancelación como evento de orden antes de rama de posición, pero deja límite/stop llenar (ej. cierre activado por stop-loss) caer a ruta de cierre. - Tokens de actualización de un solo uso: cTrader rota el token de actualización cada actualización. Caché de solo lectura que no puede persistir se auto-invalida. El trabajo K8s en vivo por lo tanto copia Secret en emptyDir escribible; Job por defecto a suite determinista.
SaveTokensahora mejor esfuerzo. Símbolos en vivo forzados a FX (BTCUSD trailing enmiendas corredor rechazado). - Nombres de imagen de script fijos para coincidir con
registry/repositoryde Helm dividido +pullPolicy=Never.
Programa de mirroring avanzado + token-lifecycle + escalado (2026-07-10) — tiers deterministas aprobados
El programa de seguimiento agrega filtrado de tipo de orden, copia de vencimiento de orden pendiente, mirroring de rango de mercado / deslizamiento de límite de parada, toggles de copia SL/TP, intercambio de token en lugar graceful (token válido único por cID), simulador fiel a cTrader, arrendamiento de nodo auto-sanable, archivo unificado de credenciales dev.
- Unit — 210 aprobado (
dotnet test tests/UnitTests). Cobertura de copia nueva: filtro de tipo de orden (abierto + pendiente), espejo de deslizamiento de rango de mercado + precio base, copia de vencimiento on/off, deslizamiento de límite de parada, enmienda pendiente, inicio-con-apertura-maestra, desconexión→maestra-comerciada→reconexión resincronización (apertura faltante + cierre huérfano), intercambio de token en lugar (sin reinicio), invalidación cross-cID, invariantes de dominio, propiedad de arrendamiento, bump de versión de token. - Integración (Postgres real, Testcontainers) — aprobado:
CopyNodeAffinityTests(reclamo atómico, sin copia doble, liberación de pausa, reclamación de arrendamiento expirado por otro nodo),TokenRotationSignatureTests(firma cambia en bump de versión de token),OpenApiAuthorizationPersistenceTests(TokenVersion persiste + incrementos en actualización). - E2E (
tests/E2ETests): viaje de ida y vuelta de opción de destino ahora asevera filtro de tipo de orden, vencimiento de copia, deslizamiento de copia junto con ciclo de vida completo. - Build: limpio bajo
TreatWarningsAsErrors; Riderget_file_problemslimpio en archivos cambiados.
Escenarios en vivo (cuentas demo de cTrader reales) para parada pendiente, rango de mercado, vencimiento, inicio-con-apertura, rotación de token a mitad de ejecución autorizada contra el mismo motor; ejecutar con secrets/dev-credentials.local.json unificado per dev-credentials.md.
Seguimiento conocido
La ejecución en vivo en clúster roté token de un solo uso; regenerar caché local con CMIND_ONBOARD=1 dotnet test tests/E2ETests --filter FullyQualifiedName~OnboardingTests (cTrader limitó su página OAuth justo después de la ejecución — reintentar cuando se despeje).