Contexto obligatorio: PLAN_STELLAR.md (decisión D6) y ISSUES_STELLAR.md.
Ola 1 — bloqueada por #4 y #5.
Define los contratos C2 y C3 — [XLM-10], [XLM-11], [XLM-13] y [XLM-19] dependen de ellos.
Problema
AuthFlowDialog devuelve xrpl_seed o xaman_client sueltos, y main_payment.py:45 exige uno de los dos. Con dos redes hace falta una credencial por red, y pedir ambas al iniciar sesión obligaría a conectar dos billeteras aunque solo se vaya a usar una.
Por qué importa
Es lo que hace tolerable la interfaz dual. Sin conexión perezosa, la fricción del login mata la propuesta.
Alcance
Nuevo core/wallet_session.py con WalletSession: contenedor de firmantes indexado por red.
Contrato C2
signer_for(network) devuelve el firmante de esa red y, si no existe, dispara el flujo de conexión y lo memoriza. Devuelve None si el operador cancela.
Contrato C3
Fijar en este issue la firma de constructor de PaymentFlowWidget y PaymentDashboard, porque [XLM-10] y [XLM-11] construyen contra ella en paralelo. Publicarla en un comentario de este issue antes de que ellos empiecen.
payment_app/ui_payment/auth_flow.py — el paso 3 conecta una billetera (la red elegida) y construye el WalletSession.
payment_app/main_payment.py — pasar el WalletSession al dashboard en lugar de xrpl_seed / xaman_client.
Al cerrar sesión se limpian todos los firmantes, igual que hoy se limpia el seed.
Fuera de alcance
- El selector de red en el flujo de pago — es
[XLM-10].
- LOBSTR — es
[XLM-19]. Aquí solo se deja el hueco.
Criterios de aceptación
Pruebas
Unitarias de WalletSession con firmantes falsos: memorización, cancelación, limpieza.
Dependencias
Problema
AuthFlowDialogdevuelvexrpl_seedoxaman_clientsueltos, ymain_payment.py:45exige uno de los dos. Con dos redes hace falta una credencial por red, y pedir ambas al iniciar sesión obligaría a conectar dos billeteras aunque solo se vaya a usar una.Por qué importa
Es lo que hace tolerable la interfaz dual. Sin conexión perezosa, la fricción del login mata la propuesta.
Alcance
Nuevo
core/wallet_session.pyconWalletSession: contenedor de firmantes indexado por red.Contrato C2
signer_for(network)devuelve el firmante de esa red y, si no existe, dispara el flujo de conexión y lo memoriza. DevuelveNonesi el operador cancela.Contrato C3
Fijar en este issue la firma de constructor de
PaymentFlowWidgetyPaymentDashboard, porque[XLM-10]y[XLM-11]construyen contra ella en paralelo. Publicarla en un comentario de este issue antes de que ellos empiecen.payment_app/ui_payment/auth_flow.py— el paso 3 conecta una billetera (la red elegida) y construye elWalletSession.payment_app/main_payment.py— pasar elWalletSessional dashboard en lugar dexrpl_seed/xaman_client.Al cerrar sesión se limpian todos los firmantes, igual que hoy se limpia el seed.
Fuera de alcance
[XLM-10].[XLM-19]. Aquí solo se deja el hueco.Criterios de aceptación
Pruebas
Unitarias de
WalletSessioncon firmantes falsos: memorización, cancelación, limpieza.Dependencias
Network), [XLM-06] Modelo de datos multicadena #5 (address_for).[XLM-10],[XLM-11],[XLM-13],[XLM-19].