Skip to content

Fase 7 Onda 15: Fecho — --web-agent padrão, resíduos da Sessão, bug real - #39

Merged
danzeroum merged 2 commits into
mainfrom
claude/fase-7-onda-15
Jul 7, 2026
Merged

Fase 7 Onda 15: Fecho — --web-agent padrão, resíduos da Sessão, bug real#39
danzeroum merged 2 commits into
mainfrom
claude/fase-7-onda-15

Conversation

@danzeroum

Copy link
Copy Markdown
Owner

Resumo

Onda 15 (fecho) do plano-mestre da Fase 7 — última onda. --web-agent vira padrão, uma varredura independente encontrou 2 resíduos mock que nenhuma onda anterior cobriu na tela Sessão, e escrever a primeira cobertura de browser dessa tela revelou um bug real de produção.

  • --web-agent--no-web-agent (opt-out, não mais opt-in). O agente web (sessão/permissão/squad ao vivo) vem habilitado por padrão — o navegador é a forma primária de uso desta fase. ADR 0020 ganhou uma seção de atualização (a decisão original de topologia/spawn_blocking/teto de sessões continua valendo; só o bullet do opt-in mudou).
  • Bug real achado escrevendo a 1ª cobertura de browser da tela Sessão (sessao-real-backend.spec.ts, mensagem → SSE → permissão → aprovar → ledger): fetchJson chamava .json() direto num corpo vazio de 202 Accepted, e o SyntaxError resultante (não ApiError) fazia sendMessage reportar falha mesmo quando o servidor respondia com sucesso — toda mensagem enviada pela tela Sessão real mostraria "falha ao enviar mensagem", apesar do turno completar normalmente por trás. Nenhum teste anterior (Rust ou Playwright) batia esse caminho. Fix em web/src/api/client.ts: lê response.text() primeiro, só faz JSON.parse se não vazio — generaliza "sucesso sem corpo" (204 e 202) em vez de especial-casar só 204.
  • Varredura de 2 resíduos mock na tela Sessão (achado de uma auditoria independente contra o repositório real): toggleToolPolicy/TOOL_POLICIES removidos — redundantes com a matriz real que a Onda 2 já entrega na tela Skills; a sidebar agora lê fetchMatrix real, read-only. SESSION_HEADER hardcoded: provider passa a vir de fetchProviders real (Onda 12); cacheOn foi removido, não fabricado — não há hoje um sinal honesto pro frontend saber se a sessão está em modo roteirizado ou real.
  • Documentação de fecho: README/CLAUDE.md ganham "Fase 7 concluída"; docs/DECISOES.md ganha a entrada consolidada das 15 ondas; docs/LEVANTAMENTO-UI-DESIGNER.md reconcilia Grupo A 7/7 e Grupo B fechados, citando os descopes explícitos (max_autonomy_level ADR 0021, forgetting.py ADR 0022). Critério mecânico grep simulateLatency web/src/api fecha vazio (só simulateLatency/maybeFail, agora código morto, removidos de client.ts).

Decisões completas em pendencias.md (seção "Onda 15").

Test plan

  • cargo fmt --all --check
  • cargo clippy --workspace -- -D warnings
  • cargo test --workspace (sem regressão pela renomeação da flag)
  • cd python && uv run pytest (153 testes, sem mudança nesta onda)
  • tsc --noEmit / npm run lint / npm run build / npm run test (vitest)
  • playwright test --config=playwright.integration.config.ts (19/19, incluindo o novo sessao-real-backend.spec.ts que achou o bug do fetchJson; squad-real-backend.spec.ts deu timeout uma vez rodando a suíte inteira sob contenção de recurso do ambiente, reconfirmado verde isolado — não é regressão desta onda)

🤖 Gerado com Claude Code


Generated by Claude Code

claude added 2 commits July 7, 2026 01:57
…eal achado

--web-agent vira --no-web-agent (opt-out): agente web habilitado por
padrão, navegador é a forma primária de uso desta fase. ADR 0020 ganha
seção de atualização (não reescrita).

Varredura encontrou 2 resíduos mock que nenhuma onda anterior cobriu na
tela Sessão: toggleToolPolicy/TOOL_POLICIES (removido — redundante com a
matriz real da tela Skills, Sessão passa a ler fetchMatrix real) e
SESSION_HEADER hardcoded (provider vem de fetchProviders real; cacheOn
removido, não fabricado — não há sinal honesto pra derivar isso hoje).

Escrever a 1a cobertura de browser da tela Sessão (mensagem -> SSE ->
permissão -> aprovar -> ledger) achou um bug real de produção:
fetchJson chamava .json() num corpo VAZIO de 202 Accepted, e o
SyntaxError resultante fazia toda mensagem enviada mostrar "falha ao
enviar mensagem" mesmo quando o servidor respondia com sucesso. Fix em
client.ts generaliza o "corpo vazio" (204 e 202) em vez de
especial-casar só 204.

Documentação de fecho: README/CLAUDE.md ganham a seção "Fase 7
concluída"; docs/DECISOES.md ganha a entrada consolidada das 15 ondas;
docs/LEVANTAMENTO-UI-DESIGNER.md reconcilia Grupo A 7/7 e Grupo B
fechados, citando os descopes (ADR 0021/0022). Critério mecânico `grep
simulateLatency web/src/api` fecha vazio.

Decisões completas em pendencias.md (seção "Onda 15").
Achado por uma varredura mais ampla do texto "--web-agent" pelo repo,
depois da Onda 15 renomear a flag pra --no-web-agent. Comentário apenas
(zero mudança de comportamento do teste).
@danzeroum
danzeroum merged commit dfe7de8 into main Jul 7, 2026
9 checks passed
danzeroum pushed a commit that referenced this pull request Jul 7, 2026
… plano

O main absorveu este plano (Fase 7, PRs #23#39) e marcou o documento
como superseded; o branch passa a refletir exatamente o estado do main.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ssk6F2txpfNpSLNLH6eV3o
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants