From 864b1be1b3205141f0e0e8ddf83f38aff334dc23 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 4 May 2026 23:39:37 +0100 Subject: [PATCH] fix: repair release validation checks --- extensions/diagnostics-otel/src/service.ts | 2 ++ src/logging/diagnostic-phase.ts | 2 +- src/logging/diagnostic.test.ts | 6 ++---- test/scripts/package-acceptance-workflow.test.ts | 12 ++++++++---- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/extensions/diagnostics-otel/src/service.ts b/extensions/diagnostics-otel/src/service.ts index 8c3f607fd66..3ada2aefacc 100644 --- a/extensions/diagnostics-otel/src/service.ts +++ b/extensions/diagnostics-otel/src/service.ts @@ -2222,6 +2222,8 @@ export function createDiagnosticsOtelService(): OpenClawPluginService { case "diagnostic.liveness.warning": recordLivenessWarning(evt); return; + case "diagnostic.phase.completed": + return; case "run.started": recordRunStarted(evt, metadata); return; diff --git a/src/logging/diagnostic-phase.ts b/src/logging/diagnostic-phase.ts index abd8b379a40..d6b8ddbb1bc 100644 --- a/src/logging/diagnostic-phase.ts +++ b/src/logging/diagnostic-phase.ts @@ -39,7 +39,7 @@ export function getCurrentDiagnosticPhase(): string | undefined { } export function getRecentDiagnosticPhases(limit = 8): DiagnosticPhaseSnapshot[] { - return recentPhases.slice(-Math.max(0, limit)).map((phase) => ({ ...phase })); + return recentPhases.slice(-Math.max(0, limit)).map((phase) => Object.assign({}, phase)); } export function recordDiagnosticPhase(snapshot: DiagnosticPhaseSnapshot): void { diff --git a/src/logging/diagnostic.test.ts b/src/logging/diagnostic.test.ts index ac93e0e2212..26eae67d146 100644 --- a/src/logging/diagnostic.test.ts +++ b/src/logging/diagnostic.test.ts @@ -397,7 +397,7 @@ describe("stuck session diagnostics threshold", () => { } expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining("terminalProgressStale=true")); - expect(events.filter((event) => event.type === "session.stalled").at(-1)).toMatchObject({ + expect(events.findLast((event) => event.type === "session.stalled")).toMatchObject({ terminalProgressStale: true, lastProgressReason: "codex_app_server:notification:rawResponseItem/completed", }); @@ -754,9 +754,7 @@ describe("stuck session diagnostics threshold", () => { expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining("phase=startup.plugins.load")); expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining("work=[queued=main(")); - expect( - events.filter((event) => event.type === "diagnostic.liveness.warning").at(-1), - ).toMatchObject({ + expect(events.findLast((event) => event.type === "diagnostic.liveness.warning")).toMatchObject({ phase: "startup.plugins.load", queuedWorkLabels: [expect.stringContaining("main(")], }); diff --git a/test/scripts/package-acceptance-workflow.test.ts b/test/scripts/package-acceptance-workflow.test.ts index 666a3d05339..3e1fd42f7de 100644 --- a/test/scripts/package-acceptance-workflow.test.ts +++ b/test/scripts/package-acceptance-workflow.test.ts @@ -528,8 +528,12 @@ describe("package artifact reuse", () => { expect(workflow).toContain( "docker_lanes: doctor-switch update-channel-switch upgrade-survivor published-upgrade-survivor plugins-offline plugin-update", ); - expect(workflow).toContain("published_upgrade_survivor_baselines: all-since-2026.4.23"); - expect(workflow).toContain("published_upgrade_survivor_scenarios: reported-issues"); + expect(workflow).toContain( + "published_upgrade_survivor_baselines: ${{ needs.resolve_target.outputs.run_release_soak == 'true' && 'all-since-2026.4.23' || '' }}", + ); + expect(workflow).toContain( + "published_upgrade_survivor_scenarios: ${{ needs.resolve_target.outputs.run_release_soak == 'true' && 'reported-issues' || '' }}", + ); expect(workflow).toContain("telegram_mode: mock-openai"); expect(workflow).toContain( "telegram_scenarios: telegram-help-command,telegram-commands-command,telegram-tools-compact-command,telegram-whoami-command,telegram-context-command,telegram-current-session-status-tool,telegram-mention-gating", @@ -551,7 +555,7 @@ describe("package artifact reuse", () => { "contains(fromJSON('[\"all\",\"cross-os\",\"package\"]'), needs.resolve_target.outputs.rerun_group) || (needs.resolve_target.outputs.rerun_group == 'live-e2e' && needs.resolve_target.outputs.live_suite_filter == '')", ); expect(workflow).toContain( - "contains(fromJSON('[\"all\",\"live-e2e\"]'), needs.resolve_target.outputs.rerun_group) && needs.resolve_target.outputs.live_suite_filter == ''", + "(needs.resolve_target.outputs.rerun_group == 'live-e2e' || (needs.resolve_target.outputs.rerun_group == 'all' && needs.resolve_target.outputs.run_release_soak == 'true')) && needs.resolve_target.outputs.live_suite_filter == ''", ); expect(workflow).toContain("- live-e2e"); expect(workflow).toContain("- qa-live"); @@ -673,7 +677,7 @@ describe("package artifact reuse", () => { "Focused `npm-telegram` reruns require `npm_telegram_package_spec`", ); expectTextToIncludeAll(fullReleaseDocs, [ - "full pre-publish candidate", + "pre-publish candidate", "silently skip that", "Telegram package lane", "| `npm-telegram` | Published-package Telegram E2E; requires `npm_telegram_package_spec`. |",