fix: treat the operator JSON result as authoritative across exit codes

This commit is contained in:
2026-08-11 19:50:12 +02:00
parent 2ff05684a4
commit 498a93d915
@@ -293,15 +293,16 @@ func Execute(ctx context.Context, installation config.Installation, runner Runne
return Result{}, err return Result{}, err
} }
result, err := runDocker(ctx, runner, StageComposeRun, args, bytes.NewReader(stdin)) result, err := runDocker(ctx, runner, StageComposeRun, args, bytes.NewReader(stdin))
// The operator deliberately exits 3 for expected operator checkpoints/blocks // The operator emits one authoritative JSON result on stdout and encodes its status in the
// (manual_review_required, evidence_materialization_required, lock/revision conflict). // exit code (0 success, 3 operator checkpoint/block, 1 operational failure). A nonzero
// That exit is a valid machine result: the JSON payload on stdout is still authoritative. // exit is therefore still a valid machine result whenever stdout parses; only a missing or
if err != nil && !isExpectedOperatorExit(result, err) { // malformed payload becomes an error.
return Result{}, err response, parseErr := parseResponse(result.Stdout)
} if parseErr != nil {
response, err := parseResponse(result.Stdout) if err != nil {
if err != nil { return Result{}, err
return Result{}, err }
return Result{}, parseErr
} }
if suggest, ok := request.(SuggestFksRequest); ok && suggest.Output != "" { if suggest, ok := request.(SuggestFksRequest); ok && suggest.Output != "" {
if response.SuggestedFksYAML == "" { if response.SuggestedFksYAML == "" {