fix: treat the operator JSON result as authoritative across exit codes
This commit is contained in:
@@ -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 == "" {
|
||||||
|
|||||||
Reference in New Issue
Block a user