Skip to content

fix(ci): scope PR merge diff checks to first parent#90287

Merged
clawsweeper[bot] merged 8 commits into
mainfrom
fix/opengrep-pr-diff-scope
Jun 4, 2026
Merged

fix(ci): scope PR merge diff checks to first parent#90287
clawsweeper[bot] merged 8 commits into
mainfrom
fix/opengrep-pr-diff-scope

Conversation

@hxy91819

@hxy91819 hxy91819 commented Jun 4, 2026

Copy link
Copy Markdown
Member

Summary

  • Fix PR diff-scope checks that mixed stale pull_request.base.sha values with GitHub synthetic merge commits.
  • Add explicit PR merge-head first-parent mode for CI changed-scope, changed-lanes, and OpenGrep PR diff scans.
  • Add synthetic merge regression coverage for stale-base false positives.

Verification

  • node scripts/run-vitest.mjs src/scripts/ci-changed-scope.test.ts test/scripts/changed-lanes.test.ts test/scripts/run-opengrep.test.ts
  • node scripts/run-vitest.mjs src/scripts/ci-changed-scope.test.ts test/scripts/changed-lanes.test.ts test/scripts/run-opengrep.test.ts test/scripts/ci-workflow-guards.test.ts
  • node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/scripts/ci-changed-scope.test.ts test/scripts/ci-workflow-guards.test.ts test/scripts/changed-lanes.test.ts test/scripts/run-opengrep.test.ts scripts/ci-changed-scope.mjs scripts/changed-lanes.mjs
  • pnpm lint --threads=8
  • git diff --check
  • bash -n scripts/run-opengrep.sh
  • .agents/skills/autoreview/scripts/autoreview --mode local -> clean, no accepted/actionable findings before initial push and after CI-fix follow-up

Real behavior proof

Behavior addressed: PR diff-scoped CI checks could include files from base-branch movement when a stale PR payload base SHA was compared against GitHub's synthetic PR merge commit.

Real environment tested: Local repo plus live GitHub refs for #89456 (refs/pull/89456/merge and refs/pull/89456/head).

Exact steps or command run after this patch: Fetched #89456 PR refs, compared git diff --name-only <payload-base> refs/pull/89456/merge with listChangedPaths(<payload-base>, <merge-ref>, cwd, true), and compared the fixed result to <payload-base>...refs/pull/89456/head.

Evidence after fix: Old diff returned 399 paths including src/infra/host-env-security.test.ts; fixed first-parent mode returned 10 paths and exactly matched the real PR head diff.

Observed result after fix: OpenGrep PR diff scope is limited to the actual PR files instead of scanning unrelated main-branch files.

What was not tested: A full end-to-end rerun of #89456 with this patch applied to that PR branch; this PR's own CI is expected to cover the workflow wiring.

@openclaw-barnacle openclaw-barnacle Bot added security Security documentation scripts Repository scripts size: M maintainer Maintainer-authored PR labels Jun 4, 2026
@clawsweeper

clawsweeper Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Codex review: passed. Reviewed June 4, 2026, 1:23 PM ET / 17:23 UTC.

Summary
This PR adds opt-in first-parent merge-head diff-base handling for CI changed-scope, changed-lanes, and OpenGrep PR scans, plus synthetic merge coverage and small lint/type cleanups.

PR surface: Source +6, Tests +204, Config +1, Other +179. Total +390 across 15 files.

Reproducibility: yes. The synthetic merge tests and PR body live-ref proof show the stale payload-base path can include main-only files, and first-parent mode narrows it to PR-owned paths.

Review metrics: 1 noteworthy metric.

  • Diff-scope controls: 1 CLI flag, 1 env flag, 2 fetch-depth increases. These are the maintainer-visible automation controls that change how PR files are selected for CI routing and OpenGrep scans.

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:

  • [P2] Let required exact-head checks finish and confirm CI/security owner acceptance of the first-parent scan-scope contract.

Risk before merge

  • [P1] The PR deliberately narrows PR CI/OpenGrep path selection to GitHub synthetic merge-head first-parent semantics; if that parent shape or fetch depth is wrong, automation could under-scope scans.

Maintainer options:

  1. Accept the first-parent contract after checks (recommended)
    Proceed once required exact-head checks finish and CI/security owners are comfortable that GitHub PR merge commits expose the base as first parent.
  2. Add a fail-closed parent guard
    Before merge, add a guard that detects an unexpected parent shape and falls back to the broader diff or emits an explicit diagnostic.
  3. Pause if scans should remain broad
    If security owners prefer stale-base broad scans over attribution-scoped scans, pause this PR and choose a different PR-diff attribution mechanism.

Next step before merge

  • [P2] Automerge/manual review should handle the security-sensitive scan-scope decision; there is no narrow code repair from this pass.

Security
Cleared: The security-sensitive automation diff was reviewed; it changes OpenGrep path selection but does not add third-party action refs, broaden permissions, change dependency sources, or expose secrets.

Review details

Best possible solution:

Land the opt-in first-parent diff-base path after exact-head required checks pass and CI/security owners accept GitHub merge-head parent ordering; otherwise add a fail-closed guard or keep the broader scan.

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

Yes. The synthetic merge tests and PR body live-ref proof show the stale payload-base path can include main-only files, and first-parent mode narrows it to PR-owned paths.

Is this the best way to solve the issue?

Yes, with maintainer acceptance. The PR keeps first-parent behavior opt-in at CI/OpenGrep call sites instead of changing all diff helpers globally, which is the narrowest maintainable fix I found for this automation bug.

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 8d65e78a071e.

Label changes

Label justifications:

  • P2: This is a normal-priority CI/security-scan accuracy fix with limited user blast radius but real maintainer automation impact.
  • merge-risk: 🚨 automation: The diff changes changed-scope, changed-lanes, and OpenGrep PR path selection, so an incorrect merge-head assumption could misroute or under-scope automation.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 🚀 automerge armed: This PR is in ClawSweeper's automerge lane. Sufficient (live_output): The PR body provides concrete after-fix live-ref proof: first-parent mode returned the PR file set instead of the old stale-base 399-path diff.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body provides concrete after-fix live-ref proof: first-parent mode returned the PR file set instead of the old stale-base 399-path diff.
Evidence reviewed

PR surface:

Source +6, Tests +204, Config +1, Other +179. Total +390 across 15 files.

View PR surface stats
Area Files Added Removed Net
Source 2 11 5 +6
Tests 6 212 8 +204
Docs 0 0 0 0
Config 2 5 4 +1
Generated 0 0 0 0
Other 5 191 12 +179
Total 15 419 29 +390

What I checked:

  • Repository policy: Root AGENTS.md plus scoped scripts, src/plugins, and test guides were read; the automation/security-sensitive review guidance affected the merge-risk assessment. (AGENTS.md:1, 8d65e78a071e)
  • Current main behavior: Current main's changed-scope helper diffs the explicit payload base directly against HEAD, which is the behavior this PR changes for PR merge commits. (scripts/ci-changed-scope.mjs:237, 8d65e78a071e)
  • PR implementation: The PR head adds resolveMergeHeadDiffBase(), which switches to the merge commit first parent only when the opt-in flag is set and the head has multiple parents. (scripts/lib/merge-head-diff-base.mjs:6, 40235e8c3dc0)
  • OpenGrep wiring: The shell path delegates first-parent resolution to the shared Node helper, addressing the reviewer concern about JS/shell drift. (scripts/run-opengrep.sh:112, 40235e8c3dc0)
  • Regression coverage: The PR head includes a synthetic merge test showing stale-base diff output includes main-only files, while first-parent mode returns only the PR file. (src/scripts/ci-changed-scope.test.ts:696, 40235e8c3dc0)
  • GitHub merge-parent contract: The live synthetic merge commit for this PR lists the base commit first and PR head second, matching the contract the new opt-in mode relies on. (8346f9fa0244)

Likely related people:

  • steipete: Recent path history shows repeated work on CI routing and script surfaces touched by this PR. (role: recent area contributor; confidence: high; commits: e24a9c5457d0, b1117d98622f; files: scripts/ci-changed-scope.mjs, scripts/changed-lanes.mjs, .github/workflows/ci.yml)
  • vincentkoc: Recent history shows work on changed-lanes and OpenGrep workflow stabilization adjacent to this diff-scope behavior. (role: recent adjacent contributor; confidence: high; commits: 7b8ec95108e7, 005eeca06f3c; files: scripts/changed-lanes.mjs, scripts/run-opengrep.sh, .github/workflows/opengrep-precise.yml)
  • jesse-merhi: The OpenGrep CI workflow history traces the security scan pipeline introduction to this contributor, making them relevant for scan-scope decisions. (role: introduced adjacent security automation; confidence: medium; commits: 6de9d71bfbbf; files: .github/workflows/opengrep-precise.yml, scripts/run-opengrep.sh, security/opengrep/precise.yml)
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.

@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. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 automation 🚨 May affect CI, automerge, proof capture, label sync, or maintainer automation. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. and removed 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: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. labels Jun 4, 2026
@hxy91819 hxy91819 force-pushed the fix/opengrep-pr-diff-scope branch from 1f08bb2 to 22a9204 Compare June 4, 2026 11:03
@byungskers

Copy link
Copy Markdown

I like the narrow opt-in shape here. One maintainability nit: resolveMergeHeadDiffBase() now exists in JS for the Node helpers, while run-opengrep.sh re-implements the same first-parent resolution in shell. The current logic matches, but this feels like one of those places that could drift later. If you keep iterating on this path, I'd consider having the shell script delegate to the shared helper (or at least add a comment that the two implementations need to stay in lockstep).

@hxy91819

hxy91819 commented Jun 4, 2026

Copy link
Copy Markdown
Member Author

@clawsweeper automerge

@clawsweeper

clawsweeper Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

🦞✅
ClawSweeper merged this PR after the passing review.

Source: clawsweeper[bot]
Feedback: structured ClawSweeper verdict: pass (sha=40235e8c3dc048d5f5676d5f65c02187b73533e8)
Merge status: merged by ClawSweeper automerge
Merged at: 2026-06-04T17:24:04Z
Merge commit: 8b29ff5f1691

What merged:

  • This PR adds opt-in first-parent merge-head diff-base handling for CI changed-scope, changed-lanes, and OpenGrep PR scans, plus synthetic merge coverage and small lint/type cleanups.
  • PR surface: Source +6, Tests +204, Config +1, Other +179. Total +390 across 15 files.
  • Reproducibility: yes. The synthetic merge tests and PR body live-ref proof show the stale payload-base path can include main-only files, and first-parent mode narrows it to PR-owned paths.

Automerge notes:

  • PR branch already contained follow-up commit before automerge: fix(ci): update workflow guard expectations
  • PR branch already contained follow-up commit before automerge: fix(ci): resolve plugin guardrail lint failures
  • PR branch already contained follow-up commit before automerge: fix(ci): preserve plugin run context typing
  • PR branch already contained follow-up commit before automerge: fix(ci): scope PR merge diff checks to first parent

The automerge loop is complete.

Automerge progress:

  • 2026-06-04 16:50:34 UTC review passed 626ad530d8c3 (structured ClawSweeper verdict: pass (sha=626ad530d8c369285cb0d95952364ef907c03...)
  • 2026-06-04 17:12:19 UTC review queued 40235e8c3dc0 (after repair)
  • 2026-06-04 17:15:58 UTC review queued 40235e8c3dc0 (queued)
  • 2026-06-04 17:23:46 UTC review passed 40235e8c3dc0 (structured ClawSweeper verdict: pass (sha=40235e8c3dc048d5f5676d5f65c02187b7353...)
  • 2026-06-04 17:24:07 UTC merged 40235e8c3dc0 (merged by ClawSweeper automerge)

@clawsweeper clawsweeper Bot added the clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge label Jun 4, 2026
@clawsweeper clawsweeper Bot force-pushed the fix/opengrep-pr-diff-scope branch from 08e4011 to 16fcb04 Compare June 4, 2026 12:49
@openclaw-barnacle openclaw-barnacle Bot added the plugin: bonjour Plugin integration: bonjour label Jun 4, 2026
@clawsweeper clawsweeper Bot added status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane. and removed status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Jun 4, 2026
@clawsweeper clawsweeper Bot force-pushed the fix/opengrep-pr-diff-scope branch from 16fcb04 to ec448d5 Compare June 4, 2026 13:26
@clawsweeper clawsweeper Bot force-pushed the fix/opengrep-pr-diff-scope branch from ec448d5 to fe67bb0 Compare June 4, 2026 13:55
@openclaw-barnacle openclaw-barnacle Bot added the agents Agent runtime and tooling label Jun 4, 2026
@clawsweeper clawsweeper Bot force-pushed the fix/opengrep-pr-diff-scope branch from fe67bb0 to 626ad53 Compare June 4, 2026 16:36
@openclaw-barnacle openclaw-barnacle Bot removed agents Agent runtime and tooling plugin: bonjour Plugin integration: bonjour labels Jun 4, 2026
@clawsweeper clawsweeper Bot force-pushed the fix/opengrep-pr-diff-scope branch from 626ad53 to 40235e8 Compare June 4, 2026 17:12
@openclaw-barnacle openclaw-barnacle Bot added the commands Command implementations label Jun 4, 2026
@clawsweeper clawsweeper Bot merged commit 8b29ff5 into main Jun 4, 2026
168 of 170 checks passed
@clawsweeper clawsweeper Bot deleted the fix/opengrep-pr-diff-scope branch June 4, 2026 17:24
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request Jun 4, 2026
Summary:
- This PR adds opt-in first-parent merge-head diff-base handling for CI changed-scope, changed-lanes, and OpenGrep PR scans, plus synthetic merge coverage and small lint/type cleanups.
- PR surface: Source +6, Tests +204, Config +1, Other +179. Total +390 across 15 files.
- Reproducibility: yes. The synthetic merge tests and PR body live-ref proof show the stale payload-base path can include main-only files, and first-parent mode narrows it to PR-owned paths.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(ci): update workflow guard expectations
- PR branch already contained follow-up commit before automerge: fix(ci): resolve plugin guardrail lint failures
- PR branch already contained follow-up commit before automerge: fix(ci): preserve plugin run context typing
- PR branch already contained follow-up commit before automerge: fix(ci): scope PR merge diff checks to first parent

Validation:
- ClawSweeper review passed for head 40235e8.
- Required merge gates passed before the squash merge.

Prepared head SHA: 40235e8
Review: openclaw#90287 (comment)

Co-authored-by: Mason Huang <masonxhuang@tencent.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: hxy91819
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request Jun 4, 2026
Summary:
- This PR adds opt-in first-parent merge-head diff-base handling for CI changed-scope, changed-lanes, and OpenGrep PR scans, plus synthetic merge coverage and small lint/type cleanups.
- PR surface: Source +6, Tests +204, Config +1, Other +179. Total +390 across 15 files.
- Reproducibility: yes. The synthetic merge tests and PR body live-ref proof show the stale payload-base path can include main-only files, and first-parent mode narrows it to PR-owned paths.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(ci): update workflow guard expectations
- PR branch already contained follow-up commit before automerge: fix(ci): resolve plugin guardrail lint failures
- PR branch already contained follow-up commit before automerge: fix(ci): preserve plugin run context typing
- PR branch already contained follow-up commit before automerge: fix(ci): scope PR merge diff checks to first parent

Validation:
- ClawSweeper review passed for head 40235e8.
- Required merge gates passed before the squash merge.

Prepared head SHA: 40235e8
Review: openclaw#90287 (comment)

Co-authored-by: Mason Huang <masonxhuang@tencent.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: hxy91819
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request Jun 4, 2026
Summary:
- This PR adds opt-in first-parent merge-head diff-base handling for CI changed-scope, changed-lanes, and OpenGrep PR scans, plus synthetic merge coverage and small lint/type cleanups.
- PR surface: Source +6, Tests +204, Config +1, Other +179. Total +390 across 15 files.
- Reproducibility: yes. The synthetic merge tests and PR body live-ref proof show the stale payload-base path can include main-only files, and first-parent mode narrows it to PR-owned paths.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(ci): update workflow guard expectations
- PR branch already contained follow-up commit before automerge: fix(ci): resolve plugin guardrail lint failures
- PR branch already contained follow-up commit before automerge: fix(ci): preserve plugin run context typing
- PR branch already contained follow-up commit before automerge: fix(ci): scope PR merge diff checks to first parent

Validation:
- ClawSweeper review passed for head 40235e8.
- Required merge gates passed before the squash merge.

Prepared head SHA: 40235e8
Review: openclaw#90287 (comment)

Co-authored-by: Mason Huang <masonxhuang@tencent.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: hxy91819
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request Jun 4, 2026
Summary:
- This PR adds opt-in first-parent merge-head diff-base handling for CI changed-scope, changed-lanes, and OpenGrep PR scans, plus synthetic merge coverage and small lint/type cleanups.
- PR surface: Source +6, Tests +204, Config +1, Other +179. Total +390 across 15 files.
- Reproducibility: yes. The synthetic merge tests and PR body live-ref proof show the stale payload-base path can include main-only files, and first-parent mode narrows it to PR-owned paths.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(ci): update workflow guard expectations
- PR branch already contained follow-up commit before automerge: fix(ci): resolve plugin guardrail lint failures
- PR branch already contained follow-up commit before automerge: fix(ci): preserve plugin run context typing
- PR branch already contained follow-up commit before automerge: fix(ci): scope PR merge diff checks to first parent

Validation:
- ClawSweeper review passed for head 40235e8.
- Required merge gates passed before the squash merge.

Prepared head SHA: 40235e8
Review: openclaw#90287 (comment)

Co-authored-by: Mason Huang <masonxhuang@tencent.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: hxy91819
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
@hxy91819

hxy91819 commented Jun 5, 2026

Copy link
Copy Markdown
Member Author

Post-merge verification: CI diff-scope fix working correctly

Checked 15 open PRs after the #90287 merge. Confirmed the three affected CI paths are all using first-parent mode — scope is neither inflated nor under-scoped.

Affected CI paths verified

1. ci-changed-scope.mjs (ci.yml → "Detect changed scopes" step)

Verified --merge-head-first-parent is present in the preflight step for every checked PR. Example from #90503:

BASE="96e5812426050d29236c772351426cdb0dd37c4b"
node scripts/ci-changed-scope.mjs --base "$BASE" --head HEAD --merge-head-first-parent

Confirmed in runs: #90507, #90505, #90503, #90500, #90487.

2. opengrep-precise.yml (Scan changed paths (precise))

Verified OPENCLAW_OPENGREP_MERGE_HEAD_FIRST_PARENT=1 is set in the job env. Example from #90503:

OPENCLAW_OPENGREP_BASE_REF: 96e5812...4b...HEAD
OPENCLAW_OPENGREP_MERGE_HEAD_FIRST_PARENT: 1

Confirmed in runs: #90503, #90505, #90500.

3. changed-lanes.mjs (test shard selection)

Consumes the same --merge-head-first-parent flag via resolveMergeHeadDiffBase. Shard counts below confirm scope is proportional.

Scope sanity — not over- or under-scoped

For 2–6 file PRs, 91 out of 92 node test shards pass (1 skip = checks-node-compat-node22, which is conditional and expected). This means the fix does not under-scope — all relevant lanes still run.

PR Files Node shards pass Node shards skip Scan changed paths Opengrep OSS
#90503 2 (sessions/store-load) 91 1 ✅ pass ✅ pass
#90501 2 (daemon/inspect) 91 1 ✅ pass ✅ pass
#90493 2 (skills/workshop) 91 1 ✅ pass ✅ pass
#90489 2 (sessions-access) 91 1 ✅ pass ✅ pass
#90487 4 (agents/transport) 91 1 ✅ pass ✅ pass
#90507 2 (doctor/codex) 91 1 ✅ pass ✅ pass
#90505 4 (agents/maintenance) 91 1 ✅ pass ✅ pass
#90502 2 (daemon/inspect) 91 1 ✅ pass ✅ pass

Critical Quality shards are correctly skipped (boundary code not touched). No PR shows the pre-fix symptom of hundreds of files entering the diff scope. All CI failures in open PRs are unrelated to diff-scope (proof checks, lint/type errors, or test flakiness).

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 5, 2026
Summary:
- This PR adds opt-in first-parent merge-head diff-base handling for CI changed-scope, changed-lanes, and OpenGrep PR scans, plus synthetic merge coverage and small lint/type cleanups.
- PR surface: Source +6, Tests +204, Config +1, Other +179. Total +390 across 15 files.
- Reproducibility: yes. The synthetic merge tests and PR body live-ref proof show the stale payload-base path can include main-only files, and first-parent mode narrows it to PR-owned paths.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(ci): update workflow guard expectations
- PR branch already contained follow-up commit before automerge: fix(ci): resolve plugin guardrail lint failures
- PR branch already contained follow-up commit before automerge: fix(ci): preserve plugin run context typing
- PR branch already contained follow-up commit before automerge: fix(ci): scope PR merge diff checks to first parent

Validation:
- ClawSweeper review passed for head 40235e8.
- Required merge gates passed before the squash merge.

Prepared head SHA: 40235e8
Review: openclaw#90287 (comment)

Co-authored-by: Mason Huang <masonxhuang@tencent.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: hxy91819
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
traoremp pushed a commit to traoremp/openclaw that referenced this pull request Jun 5, 2026
Summary:
- This PR adds opt-in first-parent merge-head diff-base handling for CI changed-scope, changed-lanes, and OpenGrep PR scans, plus synthetic merge coverage and small lint/type cleanups.
- PR surface: Source +6, Tests +204, Config +1, Other +179. Total +390 across 15 files.
- Reproducibility: yes. The synthetic merge tests and PR body live-ref proof show the stale payload-base path can include main-only files, and first-parent mode narrows it to PR-owned paths.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(ci): update workflow guard expectations
- PR branch already contained follow-up commit before automerge: fix(ci): resolve plugin guardrail lint failures
- PR branch already contained follow-up commit before automerge: fix(ci): preserve plugin run context typing
- PR branch already contained follow-up commit before automerge: fix(ci): scope PR merge diff checks to first parent

Validation:
- ClawSweeper review passed for head 40235e8.
- Required merge gates passed before the squash merge.

Prepared head SHA: 40235e8
Review: openclaw#90287 (comment)

Co-authored-by: Mason Huang <masonxhuang@tencent.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: hxy91819
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
849261680 pushed a commit to 849261680/openclaw that referenced this pull request Jun 7, 2026
Summary:
- This PR adds opt-in first-parent merge-head diff-base handling for CI changed-scope, changed-lanes, and OpenGrep PR scans, plus synthetic merge coverage and small lint/type cleanups.
- PR surface: Source +6, Tests +204, Config +1, Other +179. Total +390 across 15 files.
- Reproducibility: yes. The synthetic merge tests and PR body live-ref proof show the stale payload-base path can include main-only files, and first-parent mode narrows it to PR-owned paths.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(ci): update workflow guard expectations
- PR branch already contained follow-up commit before automerge: fix(ci): resolve plugin guardrail lint failures
- PR branch already contained follow-up commit before automerge: fix(ci): preserve plugin run context typing
- PR branch already contained follow-up commit before automerge: fix(ci): scope PR merge diff checks to first parent

Validation:
- ClawSweeper review passed for head 40235e8.
- Required merge gates passed before the squash merge.

Prepared head SHA: 40235e8
Review: openclaw#90287 (comment)

Co-authored-by: Mason Huang <masonxhuang@tencent.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: hxy91819
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
wangmiao0668000666 pushed a commit to wangmiao0668000666/openclaw that referenced this pull request Jun 9, 2026
Summary:
- This PR adds opt-in first-parent merge-head diff-base handling for CI changed-scope, changed-lanes, and OpenGrep PR scans, plus synthetic merge coverage and small lint/type cleanups.
- PR surface: Source +6, Tests +204, Config +1, Other +179. Total +390 across 15 files.
- Reproducibility: yes. The synthetic merge tests and PR body live-ref proof show the stale payload-base path can include main-only files, and first-parent mode narrows it to PR-owned paths.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(ci): update workflow guard expectations
- PR branch already contained follow-up commit before automerge: fix(ci): resolve plugin guardrail lint failures
- PR branch already contained follow-up commit before automerge: fix(ci): preserve plugin run context typing
- PR branch already contained follow-up commit before automerge: fix(ci): scope PR merge diff checks to first parent

Validation:
- ClawSweeper review passed for head 40235e8.
- Required merge gates passed before the squash merge.

Prepared head SHA: 40235e8
Review: openclaw#90287 (comment)

Co-authored-by: Mason Huang <masonxhuang@tencent.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: hxy91819
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request Jun 9, 2026
…26.6.5) (#963)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/openclaw/openclaw](https://openclaw.ai) ([source](https://github.com/openclaw/openclaw)) | patch | `2026.6.1` → `2026.6.5` |

---

### Release Notes

<details>
<summary>openclaw/openclaw (ghcr.io/openclaw/openclaw)</summary>

### [`v2026.6.5`](https://github.com/openclaw/openclaw/blob/HEAD/CHANGELOG.md#202665)

[Compare Source](openclaw/openclaw@v2026.6.1...v2026.6.5)

##### Highlights

- QQBot now strips model reasoning/thinking scaffolding before native delivery, preventing raw `<thinking>` content from leaking into channel replies. ([#&#8203;89913](openclaw/openclaw#89913), [#&#8203;90132](openclaw/openclaw#90132)) Thanks [@&#8203;openperf](https://github.com/openperf).
- MCP tool results now coerce `resource_link`, `resource`, `audio`, malformed image, and future non-text/image blocks at the materialize boundary, preventing Anthropic 400s and poisoned session history after a tool returns richer MCP content. ([#&#8203;90710](openclaw/openclaw#90710), [#&#8203;90728](openclaw/openclaw#90728)) Thanks [@&#8203;RanSHammer](https://github.com/RanSHammer) and [@&#8203;849261680](https://github.com/849261680).
- Anthropic extended-thinking sessions recover after prompt-cache expiry or Gateway restart because stream start events wait for `message_start`, letting pre-generation signature errors trigger the existing recovery retry. ([#&#8203;90667](openclaw/openclaw#90667), [#&#8203;90697](openclaw/openclaw#90697)) Thanks [@&#8203;openperf](https://github.com/openperf).
- Parallel is now a bundled `web_search` provider with `PARALLEL_API_KEY` discovery, guarded endpoint handling, cache-safe session ids, onboarding picker support, and docs. ([#&#8203;85158](openclaw/openclaw#85158)) Thanks [@&#8203;NormallyGaussian](https://github.com/NormallyGaussian).
- Google Vertex ADC users get static catalog rows and runtime model resolution again, while single-provider cooldown recovery and memory adapter status checks are more reliable. ([#&#8203;90506](openclaw/openclaw#90506), [#&#8203;90609](openclaw/openclaw#90609), [#&#8203;90717](openclaw/openclaw#90717), [#&#8203;90816](openclaw/openclaw#90816)) Thanks [@&#8203;849261680](https://github.com/849261680).
- Matrix can preflight voice notes before mention gating, preserve thread reads/replies through Matrix relations pagination, and carry QA coverage for voice and thread flows. ([#&#8203;78016](openclaw/openclaw#78016), [#&#8203;90415](openclaw/openclaw#90415))
- Auth and plugin install state is more durable: auth profiles now live in SQLite, official npm plugin install records keep their trusted pins, and prerelease fallback integrity checks avoid carrying stale integrity forward. ([#&#8203;89102](openclaw/openclaw#89102), [#&#8203;88585](openclaw/openclaw#88585))
- macOS node mode no longer silently self-reconnects away from a healthy direct Gateway session, reducing unexpected companion app session churn. ([#&#8203;90668](openclaw/openclaw#90668), [#&#8203;90815](openclaw/openclaw#90815)) Thanks [@&#8203;vrurg](https://github.com/vrurg).
- Upgrade and service paths are safer: cron legacy JSON stores migrate during doctor preflight, service env placeholders no longer mask state-dir secrets, WhatsApp startup waits are bounded, and disabled WhatsApp accounts tear down on config reload. ([#&#8203;90072](openclaw/openclaw#90072), [#&#8203;90208](openclaw/openclaw#90208), [#&#8203;90277](openclaw/openclaw#90277), [#&#8203;90488](openclaw/openclaw#90488), [#&#8203;90486](openclaw/openclaw#90486), [#&#8203;87951](openclaw/openclaw#87951), [#&#8203;87965](openclaw/openclaw#87965)) Thanks [@&#8203;MonkeyLeeT](https://github.com/MonkeyLeeT), [@&#8203;sallyom](https://github.com/sallyom), [@&#8203;mcaxtr](https://github.com/mcaxtr), and [@&#8203;MukundaKatta](https://github.com/MukundaKatta).

##### Changes

- Search/providers: add the Parallel bundled web-search plugin, live provider tests, registration contracts, onboarding/docs wiring, and guarded `api.parallel.ai/v1/search` support. ([#&#8203;85158](openclaw/openclaw#85158)) Thanks [@&#8203;NormallyGaussian](https://github.com/NormallyGaussian).
- Matrix/channels: add voice-message preflight and thread-aware read/reply behavior, including Matrix QA scenario wiring and docs for voice-message behavior. ([#&#8203;78016](openclaw/openclaw#78016), [#&#8203;90415](openclaw/openclaw#90415))
- Skills/ClawHub: install ClawHub skills backed by GitHub repositories through the resolved install API, download the pinned GitHub commit, keep install-policy checks, and report install telemetry after success. ([#&#8203;90478](openclaw/openclaw#90478)) Thanks [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- Google Chat/channels: add native approval card actions and click handling so Google Chat approvals use platform-native cards instead of generic message flow.
- Mobile: Android provider/model screens now surface expiring, unavailable, unresolved, and attention states more clearly, while iOS settings and Talk tabs keep diagnostics, gateway rows, attachment labels, and unavailable Talk controls reachable.
- Memory: QMD search can use the new rerank toggle, and memory adapter status uses the resolved default model identity when checking plain status. ([#&#8203;61834](openclaw/openclaw#61834))
- Docs/tooling: add Parallel search docs, refresh weather-skill guidance toward `web_fetch`, clarify legacy `openai-codex` auth, document release/test helper scripts, and tighten changed-test routing docs for CI/debugging work. ([#&#8203;90028](openclaw/openclaw#90028), [#&#8203;90250](openclaw/openclaw#90250)) Thanks [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev).
- Release/process: switch release trains to `YYYY.M.PATCH` monthly patch numbering, keep pre-transition tags compatible, and pin the June 2026 floor at `2026.6.5` after the published beta.
- Platform maintenance: refresh Android, Swift/macOS, Docker, CodeQL, Buildx, Docker build/push, and Codex Action dependencies for this release train. ([#&#8203;74980](openclaw/openclaw#74980), [#&#8203;81757](openclaw/openclaw#81757), [#&#8203;86481](openclaw/openclaw#86481), [#&#8203;86483](openclaw/openclaw#86483), [#&#8203;90601](openclaw/openclaw#90601))
- QQBot: add `/bot-group-allways on|off` slash command (with named-account and default-account support) to toggle whether group messages require an `@mention` before the bot replies, and clear the runtime config snapshot after the write so the new account-level `defaultRequireMention` takes effect immediately without restart. ([#&#8203;91423](openclaw/openclaw#91423)) Thanks [@&#8203;cxyhhhhh](https://github.com/cxyhhhhh).

##### Fixes

- Channel content boundaries: QQBot now strips reasoning/thinking tags before sending, preserving final answers while hiding internal model narration from users. ([#&#8203;89913](openclaw/openclaw#89913), [#&#8203;90132](openclaw/openclaw#90132)) Thanks [@&#8203;openperf](https://github.com/openperf).
- Agents/MCP/providers: coerce non-text/image MCP tool-result blocks before they reach provider converters, preserving valid images and turning richer MCP content into text instead of malformed image blocks. ([#&#8203;90710](openclaw/openclaw#90710), [#&#8203;90728](openclaw/openclaw#90728)) Thanks [@&#8203;RanSHammer](https://github.com/RanSHammer) and [@&#8203;849261680](https://github.com/849261680).
- Anthropic/Codex/ACP/agent recovery: defer Anthropic stream start events until `message_start`, strip stale compaction thinking signatures before Anthropic replay, detect unsigned thinking-only stalls, refresh prompt fences after compaction writes, reject empty completion handoffs, preserve parent streaming-off overrides/shared progress commentary, forward heartbeat metadata to context-engine hooks, and cover Codex session/thread migration edge cases. ([#&#8203;90667](openclaw/openclaw#90667), [#&#8203;90697](openclaw/openclaw#90697), [#&#8203;90163](openclaw/openclaw#90163), [#&#8203;90108](openclaw/openclaw#90108), [#&#8203;89874](openclaw/openclaw#89874), [#&#8203;89505](openclaw/openclaw#89505), [#&#8203;90632](openclaw/openclaw#90632), [#&#8203;89302](openclaw/openclaw#89302), [#&#8203;90729](openclaw/openclaw#90729), [#&#8203;90317](openclaw/openclaw#90317), [#&#8203;90319](openclaw/openclaw#90319)) Thanks [@&#8203;openperf](https://github.com/openperf), [@&#8203;100yenadmin](https://github.com/100yenadmin), and [@&#8203;ooiuuii](https://github.com/ooiuuii).
- Provider/model resolution: preserve Google Vertex ADC auth markers in generated catalogs, re-probe a single-provider primary after cooldown, share Codex model visibility, fail closed for unknown model auth, preserve Codex alias availability, keep unresolved profile refs unknown, and avoid resolving auth while listing models. ([#&#8203;90506](openclaw/openclaw#90506), [#&#8203;90609](openclaw/openclaw#90609), [#&#8203;90717](openclaw/openclaw#90717), [#&#8203;90702](openclaw/openclaw#90702)) Thanks [@&#8203;849261680](https://github.com/849261680).
- Gateway/macOS/mobile: avoid duplicate Gateway probe warnings by identity, rate-limit node pairing requests while preserving paired-node reconnects, keep macOS node mode on a healthy direct Gateway session, keep iOS diagnostics and gateway rows reachable, and avoid Linux ARM Gradle resource tasks during Android builds. ([#&#8203;85791](openclaw/openclaw#85791), [#&#8203;90147](openclaw/openclaw#90147), [#&#8203;90668](openclaw/openclaw#90668), [#&#8203;90815](openclaw/openclaw#90815)) Thanks [@&#8203;giodl73-repo](https://github.com/giodl73-repo) and [@&#8203;vrurg](https://github.com/vrurg).
- TUI/chat/Workboard/auto-reply: optimistic user messages stay stable across stale history reloads, runId reassignment, and abort windows instead of disappearing, jumping, or lingering as ghost rows; Workboard stale lifecycle bulk updates no longer overwrite newer status/provenance; message-tool sends now count as delivery. ([#&#8203;86205](openclaw/openclaw#86205), [#&#8203;89600](openclaw/openclaw#89600), [#&#8203;88592](openclaw/openclaw#88592), [#&#8203;90123](openclaw/openclaw#90123)) Thanks [@&#8203;RomneyDa](https://github.com/RomneyDa).
- Cron/update/service env: doctor config preflight now migrates legacy cron JSON stores into SQLite before runtime reads, service env planning skips unresolved placeholders that would mask state-dir `.env` values, and session transcript rewrites keep registry markers/discriminants consistent. ([#&#8203;90072](openclaw/openclaw#90072), [#&#8203;90208](openclaw/openclaw#90208), [#&#8203;90277](openclaw/openclaw#90277), [#&#8203;90488](openclaw/openclaw#90488)) Thanks [@&#8203;MonkeyLeeT](https://github.com/MonkeyLeeT) and [@&#8203;sallyom](https://github.com/sallyom).
- Security/config/tooling: guard MCP HTTP redirects, protect global agent config defaults, and keep release/test/tooling proof failures bounded and explicit. ([#&#8203;89732](openclaw/openclaw#89732), [#&#8203;90145](openclaw/openclaw#90145))
- Channels: WhatsApp restarts when per-account config changes, bounds background startup waits, closes failed sockets, and preserves reconnect behavior; Mattermost slash commands keep their state on `globalThis`; Feishu streaming cards preserve full merged content; voice-call tracks Twilio streams after connect; ClickClack reply tools respect `toolsAllow`. ([#&#8203;87951](openclaw/openclaw#87951), [#&#8203;87965](openclaw/openclaw#87965), [#&#8203;90486](openclaw/openclaw#90486), [#&#8203;68113](openclaw/openclaw#68113), [#&#8203;90534](openclaw/openclaw#90534), [#&#8203;90181](openclaw/openclaw#90181), [#&#8203;90607](openclaw/openclaw#90607), [#&#8203;89500](openclaw/openclaw#89500)) Thanks [@&#8203;MukundaKatta](https://github.com/MukundaKatta), [@&#8203;mcaxtr](https://github.com/mcaxtr), [@&#8203;infoanton](https://github.com/infoanton), [@&#8203;mushuiyu886](https://github.com/mushuiyu886), and [@&#8203;sahibzada-allahyar](https://github.com/sahibzada-allahyar).
- Feishu: retry transient send rate-limit errors (HTTP 429, per-chat code 230020, tenant-level code 11232) with linear backoff, including SDK responses that fulfill with rate-limit bodies instead of throwing, and route streaming-card sends through the retry wrapper. ([#&#8203;89659](openclaw/openclaw#89659)) Thanks [@&#8203;ladygege](https://github.com/ladygege).
- Release/CI/E2E: main CI guard drift, PR merge diff scoping, live Docker credential staging, base-image qualification, installer Docker classification, Playwright dependency install recovery, API-key auth for Codex live Docker lanes, Parallels option terminators, and JSON-mode progress handling are tighter so release proof fails cleaner. ([#&#8203;90532](openclaw/openclaw#90532), [#&#8203;90287](openclaw/openclaw#90287), [#&#8203;90058](openclaw/openclaw#90058)) Thanks [@&#8203;RomneyDa](https://github.com/RomneyDa), [@&#8203;hxy91819](https://github.com/hxy91819), and [@&#8203;mrunalp](https://github.com/mrunalp).
- Release/CI/E2E: Docker E2E and live Docker harness runs now apply default memory, CPU, and process ceilings while preserving explicit per-lane overrides.
- Release/CI/E2E: plugin lifecycle matrix resource sampling now fails phases that exceed RSS, wall-clock, or CPU ceilings instead of only logging the measurements.
- Release/CI/E2E: Codex npm plugin live assertions now cap transcript discovery and diagnostic log reads so failure proof stays bounded.
- Tests/state isolation: QA Lab valid-tool-call metrics now require runtime tool-call evidence when runtime parity data is available instead of counting tool-backed scenario pass status alone.
- Tests/state isolation: QA Lab runtime parity now fails planned-only tool-call rows without matching tool results instead of treating matching mock plans as real tool evidence.
- Tests/state isolation: provider, media, auth, cron, task, session, sandbox, Gateway, and Codex timeout fixtures now scope more home/state/env data per test, reducing cross-test leakage and making release validation failures less noisy. ([#&#8203;90027](openclaw/openclaw#90027), [#&#8203;89974](openclaw/openclaw#89974))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/963
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge commands Command implementations maintainer Maintainer-authored PR merge-risk: 🚨 automation 🚨 May affect CI, automerge, proof capture, label sync, or maintainer automation. P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. scripts Repository scripts security Security documentation size: M status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants