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
- Congelar contrato de auth com backend fake.
- Implementar state machine e storage abstraído.
- Provar Linux/macOS/Windows com keychain fixtures.
- Integrar gateway somente após token/entitlement estáveis.
- Remover caminho produtivo BYOK por feature flag migrável.
Passo a passo
- Definir schemas/versionamento para device authorize/token, refresh, revoke e entitlement.
- Modelar estados: logged_out, pending, authorized, refreshing, expired, revoked, offline_grace quando permitido.
- Implementar polling bounded com backoff, cancel e expiry.
- Guardar refresh token no Keychain/Secret Service/Credential Manager.
- Manter access token apenas em memória e redigir todos os logs.
- Implementar refresh rotativo e invalidar token anterior.
- Aplicar clock skew e expiração fail-closed.
- Verificar entitlement antes de inferência/efeito que o exija.
- Implementar logout local + revogação remota idempotente.
- Tratar terminal sem browser com URL/código copiável.
- Garantir parity TUI/headless/ACP.
- Criar migração explícita do beta baseado em env; nunca fallback silencioso.
- Remover upstream keys da config/documentação/binário produtivo.
- Integrar telemetry apenas com metadados permitidos.
- 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.
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_KEYno 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
Passo a passo
Testes obrigatórios
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