Skip to content

Onda 5 (B6) — ErrorBody vira fonte única em btv-server (fim da duplicação)#72

Merged
danzeroum merged 1 commit into
mainfrom
claude/doc-repository-analysis-wcg7jb
Jul 14, 2026
Merged

Onda 5 (B6) — ErrorBody vira fonte única em btv-server (fim da duplicação)#72
danzeroum merged 1 commit into
mainfrom
claude/doc-repository-analysis-wcg7jb

Conversation

@danzeroum

Copy link
Copy Markdown
Owner

Onda 5, item B6 — de-duplicar ErrorBody

O contrato de erro {error, code} estava duplicado byte-a-byte entre btv-server (handlers::ErrorBody) e btv-cli::web_agent::ErrorBody (§9.2).

Achado ao investigar: a §9.2 sugeria extrair um crate btv-web-edge, mas isso é desnecessário — a lógica do guard de Origin (origin_allowed/trusted_origin_hosts) já era compartilhada (o web_agent reusa btv_server::), e btv-cli já depende de btv-server. Só o DTO de erro seguia duplicado. A cura mínima e correta é tornar btv_server::ErrorBody público e o web_agent reexportá-lo.

  • btv-server: ErrorBody/::new viram pub; pub use handlers::ErrorBody no lib.rs.
  • btv-cli/web_agent: o struct local vira pub use btv_server::ErrorBody. Os 4 módulos que fazem use crate::web_agent::ErrorBody (btv_agent, squad_agent, memory_console, prompt_render) seguem inalterados — o reexport preserva o caminho. Campos privados, construção só por ::new (nenhum acesso direto, verificado).
  • docs/documentacao: 09-analise-critica marca o item RESOLVIDO; dados/14,15.

Verificação local

  • Goldens HTTP (btv-server, 36) + btv-cli (93+6+7) verdes → o JSON do ErrorBody é byte-idêntico após o compartilhamento
  • cargo clippy -p btv-server -p btv-cli -- -D warnings limpo; cargo fmt --all --check OK

🤖 Generated with Claude Code


Generated by Claude Code

O contrato de erro `{error, code}` estava duplicado byte-a-byte entre
`btv-server` (`handlers::ErrorBody`) e `btv-cli::web_agent::ErrorBody`. A
lógica do guard de Origin (`origin_allowed`/`trusted_origin_hosts`) já era
compartilhada (o web_agent reusa `btv_server::`); só o DTO de erro seguia
duplicado.

Como `btv-cli` já depende de `btv-server`, não precisa de crate novo
(`btv-web-edge`): basta tornar `btv_server::ErrorBody` público e o `web_agent`
reexportá-lo. Os 4 módulos que fazem `use crate::web_agent::ErrorBody`
(btv_agent, squad_agent, memory_console, prompt_render) seguem inalterados —
o reexport preserva o caminho. Campos privados, construção só por `::new`
(nenhum acesso direto no código, verificado).

- btv-server: `ErrorBody`/`new` viram `pub`; `pub use handlers::ErrorBody` no lib.
- btv-cli/web_agent: struct local vira `pub use btv_server::ErrorBody`.
- docs/documentacao: 09-analise-critica marca o item RESOLVIDO; dados/14,15.

Verificação local: goldens HTTP (btv-server 36) + btv-cli (93+6+7) verdes —
o JSON do ErrorBody é byte-idêntico; clippy -D warnings limpo; fmt OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DkWvx5G1XqRZwybmCErshc
@danzeroum danzeroum merged commit 3f52f69 into main Jul 14, 2026
13 checks passed
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