Skip to content

test(gateway): harden watch regression diagnostics#95473

Merged
steipete merged 1 commit into
openclaw:mainfrom
kklouzal:extract/gateway-watch-regression-hardening
Jul 9, 2026
Merged

test(gateway): harden watch regression diagnostics#95473
steipete merged 1 commit into
openclaw:mainfrom
kklouzal:extract/gateway-watch-regression-hardening

Conversation

@kklouzal

@kklouzal kklouzal commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR hardens the check-gateway-watch-regression release/runtime guard so failures are easier to diagnose and short-lived gateway-watch exits are reported accurately.

The change is intentionally narrow. It only touches the gateway watch regression script and its focused tests.

What Problem This Solves

The watch regression guard currently has a few sharp edges that make release/runtime failures harder to reason about:

  • The timed watch command can run under /bin/sh, but CI/bootstrap environments may inject shell hooks that assume bash semantics. That can add noisy stderr output or delay gateway readiness before the idle window.
  • If the child process exits before readiness, the script can collapse that into a generic “did not report ready” failure instead of reporting that the watch process actually exited.
  • When the watch guard fails, stdout/stderr artifacts are written, but the actionable tail is not surfaced inline with the failure.
  • The duplicate dist-runtime warning was gated too broadly; unrelated failures could print the split-runtime warning even when no dist-runtime graph regression was detected.

What changed

  • Prefer bash for the timed watch shell when available, while retaining /bin/sh fallback.
  • Quote the Node executable path explicitly and put its directory at the front of PATH for the isolated watch process.
  • Track child process exit during PID-file wait, readiness wait, settle, idle window, and stop phases.
  • Report gateway:watch exited before ready (...) when the child exits before readiness.
  • Include bounded stdout/stderr tails on watch failures.
  • Only print the duplicate dist-runtime warning when a dist-runtime failure is actually present.
  • Add focused unit coverage for:
    • bash selection/fallback
    • generated timed watch command/env
    • early exit before readiness
    • duplicate dist-runtime warning gating
    • stderr/stdout artifact metadata in the watch result

Evidence

Rebase/squash proof — 2026-06-23 UTC

Latest pushed commit after same-base rebase and squash: 4ea42a587047d35cb4f54814488f0ded22524eb7.

All six coordinated PR branches in this batch were rebased onto the same pinned upstream base commit:

dc9c11be917ebdc711b956250aa80a8e5b47bea6

Post-rebase local verification included conflict-marker/diff hygiene plus focused branch-specific gates. Final proof marker for this PR:

POST_REBASE_20260623_GATEWAY_WATCH_GATES_OK

Local validation run from /home/kklouzal/.openclaw/workspace/repos/openclaw:

node scripts/run-vitest.mjs test/scripts/check-gateway-watch-regression.test.ts

Result:

1 passed test file
15 passed tests

Additional checks:

node --check scripts/check-gateway-watch-regression.mjs
git diff --check
git diff --cached --check

Result: all passed.

Real Behavior Proof

Redacted terminal output from a real gateway-watch guard invocation on this PR head:

$ git rev-parse HEAD
dfbc96e4178989869ebfc06da80d7519fd199f7e
$ node scripts/check-gateway-watch-regression.mjs --skip-build
{
  "windowMs": 10000,
  "watchTriggeredBuild": false,
  "watchBuildReason": null,
  "cpuMs": 1000,
  "totalCpuMs": null,
  "readyBeforeWindow": true,
  "exitedBeforeReady": false,
  "cpuWarnMs": 1000,
  "cpuFailMs": 8000,
  "distRuntimeFileGrowth": 0,
  "distRuntimeFileGrowthMax": 200,
  "distRuntimeByteGrowth": 0,
  "distRuntimeByteGrowthMax": 2097152,
  "distRuntimeAddedPaths": 0,
  "addedPaths": 0,
  "removedPaths": 0,
  "watchExit": {
    "code": 143,
    "signal": null
  },
  "spawnError": null,
  "stdoutPath": "<repo>/.local/gateway-watch-regression/watch/watch.stdout.log",
  "stderrPath": "<repo>/.local/gateway-watch-regression/watch/watch.stderr.log",
  "timingFileMissing": true,
  "timing": {
    "userSeconds": null,
    "sysSeconds": null,
    "elapsedSeconds": null
  }
}
WARN: bounded gateway:watch timing artifact is missing; using process-tree idle CPU sample

Notes:

  • This was run from the PR head commit shown above: dfbc96e4178989869ebfc06da80d7519fd199f7e.
  • Private local paths are redacted as <repo>.
  • The successful guard run reported readyBeforeWindow: true, exitedBeforeReady: false, no dist-runtime growth, and bounded stdout/stderr artifact paths.
  • This run did not naturally exercise the early-exit failure path; no failure-path output is claimed here.

Synthetic Failure-Path Proof

Redacted terminal output from a synthetic failure-path invocation on the same PR head. This intentionally lowers the CPU failure threshold to 0 so the guard exits non-zero and prints the new bounded failure diagnostics without needing to break the gateway:

$ git rev-parse HEAD
dfbc96e4178989869ebfc06da80d7519fd199f7e
$ node scripts/check-gateway-watch-regression.mjs --skip-build --cpu-fail-ms 0 --cpu-warn-ms 0
{
  "windowMs": 10000,
  "watchTriggeredBuild": false,
  "watchBuildReason": null,
  "cpuMs": 1000,
  "totalCpuMs": null,
  "readyBeforeWindow": true,
  "exitedBeforeReady": false,
  "cpuWarnMs": 0,
  "cpuFailMs": 0,
  "distRuntimeFileGrowth": 0,
  "distRuntimeFileGrowthMax": 200,
  "distRuntimeByteGrowth": 0,
  "distRuntimeByteGrowthMax": 2097152,
  "distRuntimeAddedPaths": 0,
  "addedPaths": 0,
  "removedPaths": 0,
  "watchExit": {
    "code": 143,
    "signal": null
  },
  "spawnError": null,
  "stdoutPath": "<repo>/.local/gateway-watch-regression/watch/watch.stdout.log",
  "stderrPath": "<repo>/.local/gateway-watch-regression/watch/watch.stderr.log",
  "timingFileMissing": true,
  "timing": {
    "userSeconds": null,
    "sysSeconds": null,
    "elapsedSeconds": null
  }
}
WARN: bounded gateway:watch timing artifact is missing; using process-tree idle CPU sample
FAIL: LOUD ALARM: gateway:watch used 1000ms CPU in 10000ms window, above loud-alarm threshold 0ms
WARN: gateway:watch stderr artifact is empty (<repo>/.local/gateway-watch-regression/watch/watch.stderr.log)
--- gateway:watch stdout tail (<repo>/.local/gateway-watch-regression/watch/watch.stdout.log, last 12000 chars) ---
2026-06-21T04:12:04.753+00:00 [gateway] loading configuration…
2026-06-21T04:12:04.845+00:00 [gateway] force: no listeners on port 40195
2026-06-21T04:12:04.853+00:00 [gateway] resolving authentication…
2026-06-21T04:12:04.874+00:00 [gateway] starting...
2026-06-21T04:12:05.459+00:00 [gateway] starting HTTP server...
2026-06-21T04:12:05.478+00:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-06-21T04:12:05.561+00:00 [gateway] agent model: openai/gpt-5.5 (thinking=medium, fast=off)
2026-06-21T04:12:05.562+00:00 [gateway] http server listening (0 plugins, 0.7s)
2026-06-21T04:12:05.564+00:00 [gateway] log file: /tmp/openclaw/openclaw-2026-06-21.log
2026-06-21T04:12:05.566+00:00 [gateway] ready
2026-06-21T04:12:16.094+00:00 [gateway] signal SIGTERM received
2026-06-21T04:12:16.097+00:00 [gateway] received SIGTERM; shutting down
2026-06-21T04:12:16.203+00:00 [shutdown] started: gateway stopping
2026-06-21T04:12:16.248+00:00 [gmail-watcher] gmail watcher stopped
2026-06-21T04:12:16.256+00:00 [shutdown] completed cleanly in 53ms
--- end gateway:watch stdout tail ---

Notes:

  • This was run from the same PR head commit as the real behavior proof: dfbc96e4178989869ebfc06da80d7519fd199f7e.
  • Private local paths are redacted as <repo>.
  • The failure was intentionally triggered by --cpu-fail-ms 0; the transcript demonstrates the failure reporting path, including the bounded stdout artifact tail and empty-stderr warning.

Synthetic Early-Exit Proof

Redacted synthetic transcript exercising the new gateway:watch exited before ready finding path directly. This uses the PR script's exported collectGatewayWatchFindings helper with a synthetic pre-ready child exit result, so the failure text is produced by the same finding collector used by the full regression command:

$ git rev-parse HEAD
dfbc96e4178989869ebfc06da80d7519fd199f7e
$ node /tmp/openclaw-pr-proof/pr-95473-early-exit-proof.mjs
FAIL: gateway:watch exited before ready (code 1, signal null)
FAIL: failed to collect CPU timing from the bounded gateway:watch run; timing artifact is missing
FAIL: failed to parse CPU timing from the bounded gateway:watch run

Notes:

  • This was run from PR head commit dfbc96e4178989869ebfc06da80d7519fd199f7e.
  • The synthetic input models readyBeforeWindow: false, exitedBeforeReady: true, and exit: { code: 1, signal: null }.
  • This complements the existing log-tail synthetic proof by covering the separate early-exit-before-ready diagnostic branch.

Current-Head Post-Ready-Exit Proof

Redacted proof from current PR head 19ff518eb0ee305bf21812ed19423290dd41ea9d, covering the latest post-ready-exit repair. The focused test file now includes the ready-then-exit cases for both the settle window and the idle window, plus the collector-level failure text assertion.

$ git rev-parse HEAD
19ff518eb0ee305bf21812ed19423290dd41ea9d
$ node scripts/run-vitest.mjs test/scripts/check-gateway-watch-regression.test.ts
[test] starting test/vitest/vitest.tooling.config.ts

 RUN  v4.1.8 <repo>

 ✓  tooling  test/scripts/check-gateway-watch-regression.test.ts (18 tests) 85ms

 Test Files  1 passed (1)
      Tests  18 passed (18)
[test] passed 1 Vitest shard in 6.84s
$ node --check scripts/check-gateway-watch-regression.mjs
$ git diff --check HEAD^..HEAD

Synthetic collector transcript from the same current head showing the new post-ready unplanned-exit failure text directly:

$ git rev-parse HEAD
19ff518eb0ee305bf21812ed19423290dd41ea9d
$ node /tmp/openclaw-pr-proof/pr-95473-current-head-finding-proof.mjs
FAIL: gateway:watch exited before the idle CPU window completed (code 0, signal null)

Notes:

  • The synthetic collector input models a watch process that reached readiness (readyBeforeWindow: true) and then exited before the expected stop phase (exitedBeforeStop: true, exit: { code: 0, signal: null }).
  • Private local paths are redacted as <repo>.
  • Full local redacted transcripts were saved during validation as /tmp/openclaw-pr-proof/pr-95473-current-head-post-ready-exit.redacted.log and /tmp/openclaw-pr-proof/pr-95473-current-head-finding-proof.redacted.log.

Current-Head Full Guard Proof

Redacted terminal output from current PR head 19ff518eb0ee305bf21812ed19423290dd41ea9d showing a full guard invocation, not just focused tests or a synthetic collector path:

$ git rev-parse HEAD
19ff518eb0ee305bf21812ed19423290dd41ea9d
$ node scripts/check-gateway-watch-regression.mjs --skip-build
{
  "windowMs": 10000,
  "watchTriggeredBuild": false,
  "watchBuildReason": null,
  "cpuMs": 0,
  "totalCpuMs": null,
  "readyBeforeWindow": true,
  "exitedBeforeReady": false,
  "exitedBeforeStop": false,
  "cpuWarnMs": 1000,
  "cpuFailMs": 8000,
  "distRuntimeFileGrowth": 0,
  "distRuntimeFileGrowthMax": 200,
  "distRuntimeByteGrowth": 0,
  "distRuntimeByteGrowthMax": 2097152,
  "distRuntimeAddedPaths": 0,
  "addedPaths": 0,
  "removedPaths": 0,
  "watchExit": {
    "code": 143,
    "signal": null
  },
  "spawnError": null,
  "stdoutPath": "<repo>/.local/gateway-watch-regression/watch/watch.stdout.log",
  "stderrPath": "<repo>/.local/gateway-watch-regression/watch/watch.stderr.log",
  "timingFileMissing": true,
  "timing": {
    "userSeconds": null,
    "sysSeconds": null,
    "elapsedSeconds": null
  }
}
WARN: bounded gateway:watch timing artifact is missing; using process-tree idle CPU sample

Notes:

  • This is the full node scripts/check-gateway-watch-regression.mjs --skip-build guard run from current head 19ff518eb0ee305bf21812ed19423290dd41ea9d.
  • Private local paths are redacted as <repo>.
  • The expected post-window stop is visible as watchExit.code: 143, while the current-head lifecycle repair reports exitedBeforeReady: false and exitedBeforeStop: false.
  • Full local redacted transcript saved during validation as /tmp/openclaw-pr-proof/pr-95473-current-head-full-guard.redacted.log.

Current-Head Full Guard Proof Refresh — 2026-06-23

Redacted terminal output from current PR head b34c5fc8e29b19dbaa43e248e7bfc1467f054abf showing the full guard invocation ClawSweeper requested:

$ git rev-parse HEAD
b34c5fc8e29b19dbaa43e248e7bfc1467f054abf
$ node scripts/check-gateway-watch-regression.mjs --skip-build
{
  "windowMs": 10000,
  "watchTriggeredBuild": false,
  "watchBuildReason": null,
  "cpuMs": 1000,
  "totalCpuMs": null,
  "readyBeforeWindow": true,
  "exitedBeforeReady": false,
  "exitedBeforeStop": false,
  "cpuWarnMs": 1000,
  "cpuFailMs": 8000,
  "distRuntimeFileGrowth": 0,
  "distRuntimeFileGrowthMax": 200,
  "distRuntimeByteGrowth": 0,
  "distRuntimeByteGrowthMax": 2097152,
  "distRuntimeAddedPaths": 0,
  "addedPaths": 0,
  "removedPaths": 0,
  "watchExit": {
    "code": 143,
    "signal": null
  },
  "spawnError": null,
  "stdoutPath": "<repo>/.local/gateway-watch-regression/watch/watch.stdout.log",
  "stderrPath": "<repo>/.local/gateway-watch-regression/watch/watch.stderr.log",
  "timingFileMissing": true,
  "timing": {
    "userSeconds": null,
    "sysSeconds": null,
    "elapsedSeconds": null
  }
}
WARN: bounded gateway:watch timing artifact is missing; using process-tree idle CPU sample

Notes:

  • This run was collected after building this PR worktree with node scripts/build-all.mjs gatewayWatch, because the worktree initially had no dist or dist-runtime artifacts.
  • Private local paths are redacted as <repo>.
  • The guard reached readiness on the current head, did not exit before readiness or before the idle window completed, did not trigger a watch rebuild, and reported no dist-runtime growth.
  • Full local transcripts were saved during validation as /tmp/openclaw-pr-proof/pr-95473-b34c5fc-full-guard.raw.log and /tmp/openclaw-pr-proof/pr-95473-b34c5fc-full-guard.redacted.log.

Risk

Low to moderate. This changes release/runtime diagnostic behavior, not production gateway behavior. The highest-impact runtime-adjacent change is using bash for the timed watch command when available; fallback behavior remains /bin/sh if bash is unavailable.

The failure output becomes more verbose only when the watch guard fails, and stdout/stderr tails are bounded.

PR/Commit Surface Breakdown

Source: 1 files, +124 / -13
Tests: 1 files, +287 / -0
Total: 2 files, +411 / -13

Rebase / Proof Refresh (2026-06-23)

  • Base: 654544b6b7c49d78afbacacd4861bcc830172780
  • Head after refresh: b34c5fc8e29b19dbaa43e248e7bfc1467f054abf
  • Conflict resolution: None. Rebase applied cleanly.
  • Validation: OPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache-pr95473 node scripts/run-vitest.mjs test/scripts/check-gateway-watch-regression.test.ts -> passed, 1 file / 18 tests.
  • Push: force-with-lease to kklouzal/openclaw:extract/gateway-watch-regression-hardening completed.

@openclaw-barnacle openclaw-barnacle Bot added scripts Repository scripts size: M triage: needs-pr-context Candidate: external PR body lacks required problem context or evidence. labels Jun 21, 2026
@clawsweeper

clawsweeper Bot commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 23, 2026, 9:04 PM ET / 01:04 UTC.

Summary
The PR updates scripts/check-gateway-watch-regression.mjs and its focused tests to improve shell selection, child-exit diagnostics, failure log tails, and duplicate dist-runtime warning gating.

PR surface: Tests +287, Other +111. Total +398 across 2 files.

Reproducibility: yes. Source inspection shows current main only races spawn errors through the watch phases, while a normal child exit can still collapse into generic readiness/timing failures; the PR adds focused synthetic coverage for pre-ready and post-ready exits.

Review metrics: 2 noteworthy metrics.

  • Current-head full guard proof: 1 terminal run shown. The earlier proof blocker was a missing full guard invocation on the current head, and the PR body now includes that transcript.
  • CI-invoked guard script: 1 changed. The changed script is called from CI/release diagnostics, so lifecycle and shell behavior matter before merge even with focused tests.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • none.

Risk before merge

  • [P1] This changes the CI-invoked gateway-watch guard, including shell selection and child lifecycle handling; a regression would affect release/CI false-pass or false-fail diagnostics even though production gateway runtime is not directly changed.

Maintainer options:

  1. Proceed with current proof (recommended)
    Use the current-head full guard transcript plus successful relevant checks as sufficient proof, then merge through the normal maintainer flow.
  2. Request reviewer-owned rerun
    If maintainers want extra confidence for the automation guard, rerun the gateway-watch guard in a reviewer-controlled Testbox or CI lane before merge.

Next step before merge

  • No automated repair is needed; the remaining action is maintainer review or merge of a correct CI guard change with sufficient current-head proof.

Security
Cleared: No concrete security or supply-chain concern was found; the diff changes one local diagnostic script and tests without dependencies, lockfiles, workflow permissions, downloads, or secret handling.

Review details

Best possible solution:

Merge the script-owned diagnostic hardening through normal maintainer review with the current-head terminal proof and relevant CI checks visible.

Do we have a high-confidence way to reproduce the issue?

Yes. Source inspection shows current main only races spawn errors through the watch phases, while a normal child exit can still collapse into generic readiness/timing failures; the PR adds focused synthetic coverage for pre-ready and post-ready exits.

Is this the best way to solve the issue?

Yes. The guard script is the right owner boundary for this diagnostic behavior; moving it into watch-node or gateway runtime would push CI policy into a broader runtime surface.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against d9298a74be69.

Label changes

Label justifications:

  • P3: This is low-risk scripts/test diagnostic hardening with limited direct user-facing blast radius.
  • merge-risk: 🚨 automation: The diff changes the CI gateway-watch regression guard and could affect false-pass or false-fail automation behavior if wrong.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The PR body includes redacted current-head terminal output for a full node scripts/check-gateway-watch-regression.mjs --skip-build run plus synthetic failure-path output and focused tests.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes redacted current-head terminal output for a full node scripts/check-gateway-watch-regression.mjs --skip-build run plus synthetic failure-path output and focused tests.
Evidence reviewed

PR surface:

Tests +287, Other +111. Total +398 across 2 files.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 1 287 0 +287
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 1 124 13 +111
Total 2 411 13 +398

What I checked:

Likely related people:

  • vincentkoc: Recent GitHub commit history shows repeated focused maintenance of the gateway-watch regression script, its tests, and CI serialization around the same guard surface. (role: recent area contributor; confidence: high; commits: e895479a2149, 7014bd0ff164, 2282fcd9ecb3; files: scripts/check-gateway-watch-regression.mjs, test/scripts/check-gateway-watch-regression.test.ts, .github/workflows/ci.yml)
  • huntharo: The merged gateway-watch regression guard PR introduced the script, package entry, and CI integration that this PR hardens. (role: original guard author; confidence: high; commits: f036ed27f427; files: scripts/check-gateway-watch-regression.mjs, .github/workflows/ci.yml, package.json)
  • steipete: Path history shows several follow-up commits on gateway-watch skip-build artifacts, startup diagnostics, and build/runtime stamp behavior adjacent to this script. (role: adjacent CI guard contributor; confidence: medium; commits: 688a6ef4fd3d, 24f5198caf06, 75e126ef6ae9; files: scripts/check-gateway-watch-regression.mjs, test/scripts/check-gateway-watch-regression.test.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@openclaw-barnacle openclaw-barnacle Bot removed the triage: needs-pr-context Candidate: external PR body lacks required problem context or evidence. label Jun 21, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. merge-risk: 🚨 automation 🚨 May affect CI, automerge, proof capture, label sync, or maintainer automation. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. proof: sufficient ClawSweeper judged the real behavior proof convincing. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Jun 21, 2026
@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Jun 21, 2026
@kklouzal
kklouzal force-pushed the extract/gateway-watch-regression-hardening branch 2 times, most recently from 4ea42a5 to b34c5fc Compare June 23, 2026 21:34
@kklouzal

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 24, 2026
@steipete steipete self-assigned this Jul 9, 2026
@steipete
steipete force-pushed the extract/gateway-watch-regression-hardening branch from b34c5fc to 95c34b9 Compare July 9, 2026 15:12
@steipete
steipete force-pushed the extract/gateway-watch-regression-hardening branch from 95c34b9 to 18ecdc6 Compare July 9, 2026 15:17
@steipete

steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Maintainer verification complete; ready to land.

  • Prepared head: 18ecdc6766343494836edd3a7b619b4b2ef43123
  • Rebase: patch-identical onto baa009e26fabc3e6eebb930ad0dd5b0252499821 (single-commit patch ID unchanged: 03c93f9dfe70798eb6dfe8251be253a8efc0cf7c)
  • Exact-head CI: https://github.com/openclaw/openclaw/actions/runs/29028931463 — green after rerunning one unrelated SIGKILLed tooling shard; build-artifacts, the 18 focused gateway-watch tests, and the real guard all passed
  • Security/workflow gates: CodeQL, OpenGrep, Workflow Sanity, Dependency Guard, and Security Sensitive Guard all green on the same head
  • Review: manual deep review and Codex autoreview clean; no actionable findings
  • Source safety: no untrusted fork code executed locally; runtime proof came from secretless exact-head hosted CI

Current mainline drift was checked separately before merge; it does not overlap this PR or touch merge-critical infrastructure.

@steipete
steipete merged commit 2e16071 into openclaw:main Jul 9, 2026
135 of 136 checks passed
@steipete

steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Merged via squash.

Simon-XYDT pushed a commit to Simon-XYDT/openclaw that referenced this pull request Jul 9, 2026
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 10, 2026
@kklouzal
kklouzal deleted the extract/gateway-watch-regression-hardening branch July 15, 2026 23:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 automation 🚨 May affect CI, automerge, proof capture, label sync, or maintainer automation. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. scripts Repository scripts size: M status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants