openclaw - ✅(Solved) Fix [Bug]: gateway-watch-regression check-additional fails across unrelated PRs with dirty_watched_tree invalidation [1 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#65888Fetched 2026-04-14 05:39:44
View on GitHub
Comments
0
Participants
1
Timeline
1
Reactions
0
Author
Participants
Timeline (top)
cross-referenced ×1

check-additional is failing across multiple unrelated PRs because gateway-watch-regression invalidates early with dirty_watched_tree, even when the PR diff does not touch gateway watch logic and local reproduction on the PR head passes.

Root Cause

Summary

check-additional is failing across multiple unrelated PRs because gateway-watch-regression invalidates early with dirty_watched_tree, even when the PR diff does not touch gateway watch logic and local reproduction on the PR head passes.

Fix Action

Fix / Workaround

Suspected area

The invalidation appears to come from the preflight resolveBuildRequirement(...) / watched-tree cleanliness gate inside scripts/check-gateway-watch-regression.mjs / scripts/run-node.mjs, rather than from the feature patches themselves.

PR fix notes

PR #65771: fix(cron): surface timeout cause before raw errors

Description (problem / solution / changelog)

Summary

  • surface classified cron failure causes before raw error text in alerts and CLI output
  • backfill errorReason for older cron run log entries by deriving it from stored error text
  • add regression coverage for timeout cause display in alerts and cron runs output

Testing

  • pnpm check passed in the original workspace before recreating this clean branch
  • change was recreated cleanly on top of the gpt5 confirmation-pause branch for PR submission

Changed files

  • apps/macos/Sources/OpenClawProtocol/GatewayModels.swift (modified, +4/-0)
  • apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift (modified, +4/-0)
  • src/cli/cron-cli/shared.cause-display.test.ts (added, +33/-0)
  • src/cli/cron-cli/shared.ts (modified, +28/-1)
  • src/cron/cron-protocol-conformance.test.ts (modified, +3/-0)
  • src/cron/run-log.error-reason.test.ts (added, +20/-0)
  • src/cron/run-log.ts (modified, +18/-3)
  • src/cron/service.test-harness.ts (modified, +2/-0)
  • src/cron/service/timer.regression.test.ts (modified, +35/-0)
  • src/cron/service/timer.ts (modified, +5/-0)
  • src/gateway/protocol/schema/cron.ts (modified, +15/-0)
  • test/helpers/cron/service-regression-fixtures.ts (modified, +2/-0)

Code Example

{
    "invalidated": true,
    "invalidationReason": "dirty_watched_tree"
  }

---

node scripts/check-gateway-watch-regression.mjs --output-dir /tmp/gateway-watch-regression-local
RAW_BUFFERClick to expand / collapse

Summary

check-additional is failing across multiple unrelated PRs because gateway-watch-regression invalidates early with dirty_watched_tree, even when the PR diff does not touch gateway watch logic and local reproduction on the PR head passes.

Evidence

Observed on these unrelated PRs:

  • #65771 fix(cron): surface timeout cause before raw errors
  • #65691 Slack action-runtime changes
  • #65777
  • #65781
  • #65793

Common pattern:

  • check-additional fails
  • check, checks-node-core-runtime, checks-node-agentic pass
  • artifact gateway-watch-regression only contains:
    {
      "invalidated": true,
      "invalidationReason": "dirty_watched_tree"
    }

Example failing run on #65771:

  • CI run: 24333912468
  • artifact: gateway-watch-regression
  • summary shows dirty_watched_tree invalidation before the bounded watch window check could produce a meaningful result.

Local reproduction

On the #65771 head (6f2d035b69), running the same harness locally passes:

node scripts/check-gateway-watch-regression.mjs --output-dir /tmp/gateway-watch-regression-local

Observed local summary:

  • watchTriggeredBuild: false
  • watchBuildReason: null
  • addedPaths: 0
  • removedPaths: 0

Why this looks like a shared CI/gate issue

At least one of the affected PRs (#65691) only changes Slack action-runtime files, which makes it unlikely that all of these PRs independently introduced the same gateway watch dirty-tree regression.

Suspected area

The invalidation appears to come from the preflight resolveBuildRequirement(...) / watched-tree cleanliness gate inside scripts/check-gateway-watch-regression.mjs / scripts/run-node.mjs, rather than from the feature patches themselves.

Impact

This makes unrelated PRs look unstable and adds noise to CI triage by failing a shared gate before the actual regression harness can evaluate runtime behavior.

Request

Please investigate why CI is reporting dirty_watched_tree for these PR heads when the same heads appear clean and the local harness passes.

extent analysis

TL;DR

Investigate the resolveBuildRequirement function in scripts/check-gateway-watch-regression.mjs and scripts/run-node.mjs to determine why the watched-tree cleanliness gate is invalidating with dirty_watched_tree in CI, despite passing locally.

Guidance

  • Review the resolveBuildRequirement function to ensure it correctly handles the watched-tree cleanliness check and doesn't introduce false positives.
  • Compare the local and CI environments to identify any differences that might cause the discrepancy, such as file system permissions or dependencies.
  • Run the check-gateway-watch-regression.mjs script with increased logging or debugging to gather more information about the invalidation reason.
  • Verify that the gateway-watch-regression artifact is correctly generated and uploaded in the CI pipeline.

Example

No code snippet is provided as the issue doesn't contain enough information to create a specific example.

Notes

The issue seems to be related to the CI environment, and the local reproduction passes, which suggests that the problem might be related to the environment or dependencies. Further investigation is needed to determine the root cause.

Recommendation

Apply a workaround by modifying the resolveBuildRequirement function to provide more detailed logging or debugging information to help identify the cause of the invalidation. This will allow for a more targeted investigation and potential fix.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING