feat: Runner Contract -- trata 429, 422 e deduplicação do runner #81

Merged
jhony75 merged 2 commits from feature/orchestration-runner-extensions into develop 2026-10-14 15:19:28 -03:00
Owner

O que é

Preparação do Cockpit para falar com o neurogram-runner (extensões aditivas do Runner Contract v1, já estáveis no lado do runner).

Mudanças

  • POST /api/runners/{id}/jobs: 429 do runner (fila cheia) vira 429 com mensagem clara; 422 (pedido inválido) vira 422 com o detail do runner; antes tudo isso virava 502 Não consegui disparar.
  • Se o runner devolver o id de um pedido idêntico já na fila (deduplicated: true), o Cockpit reaproveita o job existente em vez de criar uma segunda linha com o mesmo external_job_id.
  • Sem migration, sem mudança de payload; um runner que só devolve {"id"} não é afetado. Docs (AUTOMATION_CONTRACT.md seção 4) e BACKLOG.md atualizados.

Não coberto (de propósito)

  • Nenhuma execução real foi disparada no runner (a validação ao vivo fica pra quando o dono liberar; só playwright-unit/onboarding-offline são seguras agora).
  • Alcançabilidade VPS → yago:18765 é questão de infra (rede privada), registrada no backlog.

Verificação

  • Backend: 277 passed (3 testes novos: 429, 422, deduplicação).

🤖 Generated with Claude Code

## O que é Preparação do Cockpit para falar com o neurogram-runner (extensões aditivas do Runner Contract v1, já estáveis no lado do runner). ## Mudanças - `POST /api/runners/{id}/jobs`: `429` do runner (fila cheia) vira `429` com mensagem clara; `422` (pedido inválido) vira `422` com o `detail` do runner; antes tudo isso virava `502 Não consegui disparar`. - Se o runner devolver o `id` de um pedido idêntico já na fila (`deduplicated: true`), o Cockpit reaproveita o job existente em vez de criar uma segunda linha com o mesmo `external_job_id`. - Sem migration, sem mudança de payload; um runner que só devolve `{"id"}` não é afetado. Docs (`AUTOMATION_CONTRACT.md` seção 4) e `BACKLOG.md` atualizados. ## Não coberto (de propósito) - Nenhuma execução real foi disparada no runner (a validação ao vivo fica pra quando o dono liberar; só `playwright-unit`/`onboarding-offline` são seguras agora). - Alcançabilidade VPS → `yago:18765` é questão de infra (rede privada), registrada no backlog. ## Verificação - Backend: 277 passed (3 testes novos: 429, 422, deduplicação). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat: Runner Contract -- trata 429, 422 e deduplicacao do runner em POST /runs
All checks were successful
EEG QA CI / Detectar o que mudou (pull_request) Successful in 7s
EEG QA CI / Frontend (pull_request) Has been skipped
EEG QA CI / Backend (pull_request) Successful in 1m53s
EEG QA CI / Build e publicação de imagens (pull_request) Successful in 1m58s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
78a8aa7d28
429 (fila cheia) e 422 (pedido invalido) chegam ao usuario com o motivo em vez
de virar 502 generico; id repetido (deduplicated) reaproveita o job existente.
Sem migration; runner que so devolve {"id"} segue identico.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Merge remote-tracking branch 'origin/develop' into feature/orchestration-runner-extensions
All checks were successful
EEG QA CI / Detectar o que mudou (pull_request) Successful in 5s
EEG QA CI / Frontend (pull_request) Has been skipped
EEG QA CI / Backend (pull_request) Successful in 1m56s
EEG QA CI / Build e publicação de imagens (pull_request) Successful in 1m57s
EEG QA CI / Deploy production (pull_request) Has been skipped
EEG QA CI / Deploy development (pull_request) Has been skipped
dbc4010e24
jhony75 merged commit 3abc7aa5da into develop 2026-10-14 15:19:28 -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!81
No description provided.