Skip to content

[P1][Auth] Entregar device login, sessão renovável e entitlement real sem BYOK #322

Description

@wesleysimplicio

Parent: #315
Follow-up novo de #3, que está fechada apesar de a arquitetura/README ainda registrarem o fluxo como planejado.

Problema

O beta ainda orienta OPENROUTER_API_KEY no ambiente. Isso conflita com o produto de assinatura Simplicio, no qual o cliente conhece apenas identidade, entitlement e gateway Simplicio. Fechar #3 não tornou o fluxo comprovado nas superfícies nem nos três sistemas.

Objetivo

Entregar autenticação Simplicio completa com device authorization, armazenamento seguro, refresh rotativo, revogação e enforcement de entitlement equivalente em TUI, headless e ACP.

Caminho mais rápido

  1. Congelar contrato de auth com backend fake.
  2. Implementar state machine e storage abstraído.
  3. Provar Linux/macOS/Windows com keychain fixtures.
  4. Integrar gateway somente após token/entitlement estáveis.
  5. Remover caminho produtivo BYOK por feature flag migrável.

Passo a passo

  1. Definir schemas/versionamento para device authorize/token, refresh, revoke e entitlement.
  2. Modelar estados: logged_out, pending, authorized, refreshing, expired, revoked, offline_grace quando permitido.
  3. Implementar polling bounded com backoff, cancel e expiry.
  4. Guardar refresh token no Keychain/Secret Service/Credential Manager.
  5. Manter access token apenas em memória e redigir todos os logs.
  6. Implementar refresh rotativo e invalidar token anterior.
  7. Aplicar clock skew e expiração fail-closed.
  8. Verificar entitlement antes de inferência/efeito que o exija.
  9. Implementar logout local + revogação remota idempotente.
  10. Tratar terminal sem browser com URL/código copiável.
  11. Garantir parity TUI/headless/ACP.
  12. Criar migração explícita do beta baseado em env; nunca fallback silencioso.
  13. Remover upstream keys da config/documentação/binário produtivo.
  14. Integrar telemetry apenas com metadados permitidos.
  15. Documentar recuperação de conta/rede/revogação.

Testes obrigatórios

  • sucesso, denial, expiry e cancel do device flow;
  • polling 429/5xx/timeout;
  • refresh concorrente e replay;
  • token revogado;
  • clock skew;
  • keychain indisponível/permissão negada;
  • reinício do app;
  • logout offline/online;
  • entitlement expirado/downgrade de plano;
  • migração de OPENROUTER_API_KEY;
  • redaction de logs/crash reports;
  • três SOs e três superfícies.

Evidência para fechar

Contrato, backend fake, testes por SO, network capture redigido, storage permissions, migration/rollback e receipts de login→uso→refresh→logout.

Execução

  • Implementar o objetivo descrito.
  • Fazer a implantação aplicável.
  • Executar e registrar os testes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions