feat: guardrails arquiteturais P0 + Automation Contract v1.1 (test_environment, metrics, TIMEOUT) #73

Merged
jhony75 merged 3 commits from feature/architecture-guardrails-contract-v1-1 into develop 2026-09-17 19:23:01 -03:00
Owner

Implementa 4 itens do backlog levantado na auditoria observacional (docs/audits/AUTOMATION_ORCHESTRATION_AUDIT.md, seção 12):

P0 -- guardrails arquiteturais (eram verdade "por sorte", sem nada travando):

  • test_architecture.py ganhou test_automation_and_orchestration_never_import_specific_executors_or_each_other (AST: nem modules/automation importa modules/orchestration/modules/eeg_reports, nem o inverso).
  • test_architecture.py ganhou test_eeg_profile_stays_confined_to_the_eeg_extension_module (busca por texto: eeg_profile só pode aparecer dentro de modules/eeg_reports/).
  • Ao escrever o segundo teste, achei violações reais (já sinalizadas como PROBLEMA na auditoria): services/reports.py, modules/reporting/router.py, modules/reports/router.py e schemas.py acessavam Report.eeg_profile direto, fora do extension point. Corrigido via eeg_extension.extra_joinedload()/to_schema() -- comportamento idêntico, sem mudança de contrato HTTP.

Automation Contract v1.1 (aditivo -- nenhum payload v1 quebra):

  • test_environment opcional no nível do run.
  • metrics: dict livre (sem vocabulário fechado) por resultado -- pensado pra k6/etc. reportarem números que hoje não tinham onde ir. Coluna TestRunStep.metrics (JSON, nullable), migration 9e05b21add43.
  • failure_classification ganhou a categoria TIMEOUT.

Docs atualizados: docs/AUTOMATION_CONTRACT.md (novos campos + nota de compatibilidade v1.1), docs/BACKLOG.md. docs/openapi.json e frontend/src/types/api.ts regenerados; frontend/src/api.ts/QualityIntelligence.tsx ganharam o rótulo em português pra TIMEOUT.

Verificação: backend 262/262 testes (inclui 6 novos: 2 de arquitetura, 3 de contrato v1.1, mais o smoke test do alembic head atualizado); migration testada upgrade→downgrade→upgrade + alembic check sem drift; frontend tsc --noEmit, lint, 154/154 testes e build -- tudo limpo.

🤖 Generated with Claude Code

Implementa 4 itens do backlog levantado na auditoria observacional (docs/audits/AUTOMATION_ORCHESTRATION_AUDIT.md, seção 12): **P0 -- guardrails arquiteturais** (eram verdade "por sorte", sem nada travando): - `test_architecture.py` ganhou `test_automation_and_orchestration_never_import_specific_executors_or_each_other` (AST: nem `modules/automation` importa `modules/orchestration`/`modules/eeg_reports`, nem o inverso). - `test_architecture.py` ganhou `test_eeg_profile_stays_confined_to_the_eeg_extension_module` (busca por texto: `eeg_profile` só pode aparecer dentro de `modules/eeg_reports/`). - Ao escrever o segundo teste, achei violações reais (já sinalizadas como PROBLEMA na auditoria): `services/reports.py`, `modules/reporting/router.py`, `modules/reports/router.py` e `schemas.py` acessavam `Report.eeg_profile` direto, fora do extension point. Corrigido via `eeg_extension.extra_joinedload()`/`to_schema()` -- comportamento idêntico, sem mudança de contrato HTTP. **Automation Contract v1.1 (aditivo -- nenhum payload v1 quebra)**: - `test_environment` opcional no nível do run. - `metrics: dict` livre (sem vocabulário fechado) por resultado -- pensado pra k6/etc. reportarem números que hoje não tinham onde ir. Coluna `TestRunStep.metrics` (`JSON`, nullable), migration `9e05b21add43`. - `failure_classification` ganhou a categoria `TIMEOUT`. Docs atualizados: `docs/AUTOMATION_CONTRACT.md` (novos campos + nota de compatibilidade v1.1), `docs/BACKLOG.md`. `docs/openapi.json` e `frontend/src/types/api.ts` regenerados; `frontend/src/api.ts`/`QualityIntelligence.tsx` ganharam o rótulo em português pra `TIMEOUT`. **Verificação**: backend 262/262 testes (inclui 6 novos: 2 de arquitetura, 3 de contrato v1.1, mais o smoke test do alembic head atualizado); migration testada upgrade→downgrade→upgrade + `alembic check` sem drift; frontend `tsc --noEmit`, `lint`, 154/154 testes e `build` -- tudo limpo. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat: guardrails arquiteturais P0 + Automation Contract v1.1 (test_environment, metrics, TIMEOUT)
Some checks failed
EEG QA CI / Backend (pull_request) Successful in 1m54s
EEG QA CI / Frontend (pull_request) Successful in 3m12s
EEG QA CI / Build e publicação de imagens (pull_request) Failing after 18s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
EEG QA CI / Detectar o que mudou (pull_request) Successful in 10s
10910f0874
Fecha os dois P0 da auditoria observacional (docs/audits/AUTOMATION_ORCHESTRATION_AUDIT.md,
secao 12): test_architecture.py agora trava automation/orchestration nunca
importarem um do outro nem modules/eeg_reports, e o vazamento real do
relacionamento Report.eeg_profile fora do extension point (services/reports.py,
modules/reporting e modules/reports, schemas.py) foi corrigido via
eeg_extension.extra_joinedload()/to_schema().

Evolucao aditiva do Automation Contract (v1.1, nenhum payload v1 quebra):
test_environment no run, metrics livre (JSON) por resultado, e categoria
TIMEOUT em failure_classification. Migration 9e05b21add43.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
fix: remove link quebrado pro audit doc não commitado em docs/BACKLOG.md
Some checks failed
EEG QA CI / Detectar o que mudou (pull_request) Successful in 6s
EEG QA CI / Backend (pull_request) Successful in 1m47s
EEG QA CI / Frontend (pull_request) Successful in 3m3s
EEG QA CI / Build e publicação de imagens (pull_request) Failing after 1m54s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
ca1236c9c8
O link markdown apontava pra docs/audits/AUTOMATION_ORCHESTRATION_AUDIT.md,
que é intencionalmente não commitado (auditoria observacional, o usuário
decide se/quando publicar) -- quebrava o build do site de docs em modo
--strict (mkdocs aborta em qualquer link morto).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Merge remote-tracking branch 'origin/develop' into feature/architecture-guardrails-contract-v1-1
All checks were successful
EEG QA CI / Detectar o que mudou (pull_request) Successful in 13s
EEG QA CI / Frontend (pull_request) Successful in 3m33s
EEG QA CI / Build e publicação de imagens (pull_request) Successful in 1m16s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
EEG QA CI / Backend (pull_request) Successful in 1m54s
038bcd0bf7
jhony75 merged commit d5c122505e into develop 2026-09-17 19:23:01 -03:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jhony75/eeg-qa!73
No description provided.