Skip to content

feat(squad): kill-switch de squad (Prioridade-Zero) — Fase 3 - #46

Merged
danzeroum merged 1 commit into
mainfrom
claude/buildtovalue-fase-3-killswitch
Jul 7, 2026
Merged

feat(squad): kill-switch de squad (Prioridade-Zero) — Fase 3#46
danzeroum merged 1 commit into
mainfrom
claude/buildtovalue-fase-3-killswitch

Conversation

@danzeroum

Copy link
Copy Markdown
Owner

Resumo

Governança: para um squad em execução imediatamente ("stop a runaway squad"). Padrão Prioridade-Zero do buildtovalue-governance adaptado ao SquadHub. Primeira fatia da Fase 3 (handoff em docs/handoff/desenvolvimento/HANDOFF-BUILDTOVALUE.md).

O que muda

  • POST /api/squad/:id/emergency-stop: aborta a task tokio que drena o stream do orquestrador (para de verdade, não só marca flag), destrava gate HITL pendente negando (fail-closed, mesmo espírito do ADR 0017), publica um evento de erro visível no stream e encerra o SSE. Idempotente; 404 se a tarefa não existe.
  • Checagem is_stopped no loop do stream como saída limpa quando a parada acontece entre eventos; o wrapper não republica erro se já parado (sem duplicata).
  • Web: botão "interromper" na tela Squad quando há execução ativa + emergencyStopSquad no cliente.

Escopo / decisão

Esta PR entrega o kill-switch (self-contained, Rust + web, sem tocar no ledger nem no motor de permissões). O restante da Fase 3 — HMAC por entrada no ledger, gates 4-estados + piso-crítico + impacto regulatório, separação produzir≠revisar≠aprovar, versionamento/expiração de template, Prompt Integrity — é maior e mexe no núcleo sensível (ledger/permissões). Registrei em pendencias.md e recomendo revisão das fases já entregues antes de avançar nesse núcleo.

Verificação

  • cargo test -p forge-cli emergencyemergency_stop_marca_para_publica_erro_e_encerra, emergency_stop_em_tarefa_inexistente_devolve_err, emergency_stop_destrava_gate_hitl_pendente_negando.
  • cargo clippy -p forge-cli (0 warnings) · cargo fmt --all --check · web tsc/oxlint/vitest (20) verdes.

🤖 Generated with Claude Code


Generated by Claude Code

Governança: para um squad em execução imediatamente ("stop a runaway squad"),
padrão Prioridade-Zero do buildtovalue-governance adaptado ao SquadHub.

- POST /api/squad/:id/emergency-stop: aborta a task que drena o stream do
  orquestrador (não só marca flag), destrava gate HITL pendente negando
  (fail-closed, mesmo espírito do ADR 0017), publica evento de erro visível no
  stream e encerra o SSE. Idempotente; 404 se a tarefa não existe.
- Checagem is_stopped no loop do stream como saída limpa quando a parada
  acontece entre eventos; wrapper não republica erro se já parado (sem
  duplicata).
- Web: botão "interromper" na tela Squad quando há execução ativa +
  emergencyStopSquad no cliente.

Testes: emergency_stop_marca_para_publica_erro_e_encerra,
emergency_stop_em_tarefa_inexistente_devolve_err,
emergency_stop_destrava_gate_hitl_pendente_negando. Clippy/fmt/tsc/lint/vitest
verdes. Restante da Fase 3 (ledger HMAC, gates 4-estados, separação de poderes)
registrado em pendencias.md para revisão antes de avançar no núcleo sensível.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ep37vHQeEet5LynX35nY2G
@danzeroum
danzeroum merged commit 1697c40 into main Jul 7, 2026
9 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