Skip to content

Recusa de política mata a Run sem retomada #14

Description

@davidbenal

lib/workflow_runner.py:197-201 marca status="failed", finished=True em qualquer exceção, e resume() exige pending_step (:156-158), que só é gravado no step human_pick (:188-189).

Consequência: qualquer recusa de política no meio de uma Run encerra a run sem retomada, e a pessoa precisa reexecutar do início.

O dano é limitado, mas real

O state é preservado (:198-200, lib/tracker.py:457-459) e _execute pula step com output presente (:181-182), então não há perda de dado, há perda de acesso: os artefatos continuam lá, mas não existe caminho de comando para continuar de onde parou.

O buraco é pré-existente: hoje uma recusa de safety do provider já mata a run do mesmo jeito.

Fica pior com o broker

Quando o mk-ai-broker entrar, o teto de gasto por pessoa passa a devolver 402 no meio de uma run multi-step. Um step 3 recusado por orçamento descarta os steps 1 e 2 já pagos, do ponto de vista de continuidade.

Correção proposta

Status blocked distinto de failed, preservando pending_step, e --resume aceitando run bloqueada. Assim a pessoa pede liberação de teto e continua, em vez de refazer.

Escopo

Não é pré-requisito do broker, é dívida do studiolocal. Registrado aqui para não morrer numa branch, conforme ADR-024.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions