Capacidad M1 (CHARTER-02): "Puedo entrar" — login real con cuenta Microsoft desde la app de preferencias; tokens al keyring; la UI muestra la cuenta conectada. Rastrea el trabajo de FU-017 (rutas de auth divergentes) y la decisión AIDEC-2026-07-04-001 (GOA en GNOME, PKCE loopback universal).
Alcance (decisiones del operador 2026-07-04)
Ambas rutas funcionales en M1:
Ruta GOA (primaria, D2)
Ruta browser/PKCE (fallback universal, loopback-en-daemon)
FU-017 (consolidación)
Gate de capacidad (operador, cuenta real)
- Instalar → añadir cuenta GOA → Sign In → cuenta visible en UI
- Token solo en keyring (
secret-tool search service lnxdrive)
dbus-monitor --session | grep -cE "Bearer|eyJ" = 0
- Gate R1: el token GOA opera contra Graph — resuelto por diseño (el proveedor pide
Files.ReadWrite.All); confirmación empírica aquí
Riesgo R1
Si los tokens GOA no traen scopes utilizables → fallback a PKCE loopback (ya funcional en M1) y se reabre D2.
Capacidad M1 (CHARTER-02): "Puedo entrar" — login real con cuenta Microsoft desde la app de preferencias; tokens al keyring; la UI muestra la cuenta conectada. Rastrea el trabajo de FU-017 (rutas de auth divergentes) y la decisión AIDEC-2026-07-04-001 (GOA en GNOME, PKCE loopback universal).
Alcance (decisiones del operador 2026-07-04)
Ambas rutas funcionales en M1:
Ruta GOA (primaria, D2)
enable_goa+ instalar el proveedor GOA host-side (goa-provider/, hoyenable_goa=false)lnxdrive_microsoftauth_state_changeden la ruta GOA (hoy no lo hace)Ruta browser/PKCE (fallback universal, loopback-en-daemon)
StartAuthgenera la URL PKCE real y arranca el callback server loopback en el daemoncodedirectamente del loopback (no cruza D-Bus — mejora RISK-002), intercambia por tokens, guarda en keyring, emite signalcomplete_auth(code, state)(pasaba el code por D-Bus)FU-017 (consolidación)
redirect_uri(127.0.0.1:8400/callbackvslocalhost:8400)AuthenticateUseCase::login(llama aauthenticate()=bail!stub)app_id(default vs config)Gate de capacidad (operador, cuenta real)
secret-tool search service lnxdrive)dbus-monitor --session | grep -cE "Bearer|eyJ"= 0Files.ReadWrite.All); confirmación empírica aquíRiesgo R1
Si los tokens GOA no traen scopes utilizables → fallback a PKCE loopback (ya funcional en M1) y se reabre D2.