Skip to content

[Bug]: QA gateway restart rejects canonical structured abort outcomes #103676

Description

@steipete

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

The live runtime-parity scenario rejects the gateway's canonical structured restart/abort terminal outcomes because it only recognizes legacy error-message substrings.

Steps to reproduce

  1. At 7b03a2ae201ab9c27dc3bc39569e97c9f9582360, run gateway-restart-inflight-run in the live-frontier OpenClaw/Codex runtime-pair lane.
  2. Let the scenario start an agent run and apply its restart-required gateway config change.
  3. Observe agent.wait return status: error with stopReason: restart or stopReason: aborted.
  4. Observe the scenario fail its interruption-status assertion even when the gateway recovers and the delivery-deduplication markers remain correct.

Expected behavior

The scenario accepts only the canonical structured restart-owned outcomes, while continuing to fail arbitrary errors and duplicate or missing recovery delivery.

Actual behavior

The assertion accepts ok, timeout, or three legacy error strings, but not the structured restart and aborted stop reasons emitted by current runtime normalization.

OpenClaw version

7b03a2ae201ab9c27dc3bc39569e97c9f9582360

Operating system

Ubuntu on Blacksmith Testbox

Install method

Repository checkout with pnpm

Model

openai/gpt-5.5 and openai/gpt-5.4

Provider / routing chain

QA live-frontier runtime pair: OpenClaw and Codex app-server

Additional provider/model setup details

Fast mode, concurrency 1, standard plus live-only runtime parity tiers.

Logs

OpenClaw terminal result: status=error, stopReason=restart
Codex terminal result: status=error, stopReason=aborted, error=agent run aborted

Screenshots, recordings, and evidence

Source contracts: src/gateway/server-close.ts, src/agents/agent-run-terminal-outcome.ts, and src/agents/run-wait.ts intentionally preserve these structured stop reasons. The recovery and deduplication marker assertions still run after the status check.

Impact and severity

Affected: release runtime-parity validation.

Severity: release-blocking false negative.

Frequency: deterministic when the interrupted run returns the current structured outcome.

Consequence: the release gate reports a runtime failure even though restart recovery and delivery deduplication satisfy their product contracts.

Additional information

The bounded fix should accept only status: error paired with exact stopReason: restart or stopReason: aborted, retaining legacy upgrade-path strings and all recovery-marker assertions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    maintainerMaintainer-authored PR

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions