Commit graph

177 commits

Author SHA1 Message Date
Tideclaw Bot
42a23ab074
ci(release): add qualified package smoke (#191654)
* ci(release): add qualified package smoke

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>

* ci(release): add qualified package smoke

Worked on by:
- @RomneyDa

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>
OpenClaw-Publication: 913f7aab-a831-4aa3-879e-1d180b08173e

* fix(release): route qualified package validation

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>

* Publish openclaw/sharp-claw

Worked on by:
- @RomneyDa

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>
OpenClaw-Publication: 1a30bf9a-d42d-47bd-af61-718d5260b8a2

* test(release): satisfy test-line ratchet

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>

* Publish openclaw/sharp-claw

Worked on by:
- @RomneyDa

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>
OpenClaw-Publication: cd639c2e-7eca-491e-9d13-53df324e5f61

* test(release): consolidate resource matrix

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>

* Publish openclaw/sharp-claw

Worked on by:
- @RomneyDa

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>
OpenClaw-Publication: 2984f449-f70b-40d8-b869-55a0804343ab

---------

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>
2026-11-04 06:17:04 -08:00
Hannes Rudolph
c32a5fadbe
chore: attribute automated community reply links (#192631)
* chore: attribute automated community reply links

* fix: preserve authenticated support closure history

* test: record focused publisher contract allocation

Co-authored-by: Hannes Rudolph <49103247+hannesrudolph@users.noreply.github.com>
2026-11-04 01:59:14 -06:00
Dallin Romney
84133d3228
fix(ci): mark pending security reviews (#180183)
* fix(ci): mark pending security reviews

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>

* fix(ci): fail terminal security reviews

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>

* fix(ci): settle standalone guard timeouts

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>

---------

Co-authored-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>
2026-10-31 13:48:02 -07:00
Vincent Koc
727ef18dc2
fix(ci): avoid redundant Labeler size writes and duplicate policy (#189121)
* fix(ci): avoid redundant Labeler size writes and duplicate policy

* test(ci): preserve typed Labeler ordering assertions
2026-10-31 14:42:13 +08:00
Vincent Koc
261e0e2466
improve(ci): skip CI queries for ineligible sweeper PRs (#189132) 2026-10-31 14:37:48 +08:00
Vincent Koc
3939d79b0a
fix: let Barnacle age items carrying only review evidence (#185628) 2026-10-27 15:50:38 +08:00
Shakker
79fc84c2f3
refactor: privatize script declarations (#183105)
Privatizes unused script implementation declarations and removes one dead release-plan marker without changing command, build, release, or CI behavior.
2026-10-25 01:40:55 +00:00
Peter Steinberger
c64f3109b8
fix(ci): settle completed runs behind stale list entries (#156574) 2026-10-24 03:42:18 -07:00
Peter Steinberger
bab7e0a136 fix(ci): keep the GitHub context repo getter in Barnacle auto-response
Preserve the Actions Context prototype when deriving the admitted context.
Object spread dropped its repo getter, crashing PR auto-response during
maintainer membership checks after #177120.

Exercise the existing candidate-label flow with a class-based context so
inherited repo getters stay covered by the regression suite.

Failing runs:
https://github.com/openclaw/openclaw/actions/runs/40059408459
https://github.com/openclaw/openclaw/actions/runs/40061593223
2026-10-23 23:09:14 -07:00
Vincent Koc
d66c5f9ade
fix(ci): refresh stale security review publishers (#182134) 2026-10-24 11:06:57 +08:00
Vincent Koc
526f08b622
fix(ci): protect reactivated work during Barnacle cleanup (#177120)
* fix(ci): protect reactivated work during Barnacle cleanup

* fix(ci): recheck Barnacle admission after comment pagination
2026-10-23 19:27:44 +08:00
Dallin Romney
1f49237c16
feat(release): validate Windows-node releases and main (#119762)
* ci: validate gateway candidates against Windows releases and main

* docs(release): document Windows-node reruns

* test(release): tolerate formatted summary columns

* fix(release): pin reachable Windows workflow revision

* test(release): preserve Windows candidate scheduling

* test(release): include Windows-node retry group

* test(release): preserve Windows validation harness

* docs(release): format Windows validation reference

* fix(release): pin maintained Windows candidate harness

* fix(release): require stable Windows node compatibility
2026-10-22 23:47:04 -07:00
Dallin Romney
2a12851979
fix(release): move validation waivers into trusted tooling (#173437)
* fix(release): waive provider outages without changing frozen candidates

* refactor(release): reuse existing waiver evidence owners

* fix(release): preserve waiver authority through publication and closeout

* test(release): follow authenticated closeout evidence owner

* fix(release): preserve waiver approver across publisher reruns

* fix(release): evaluate checked-in tooling waivers within FRV

* fix(release): accept empty legacy waiver evidence

* fix: preserve release evidence through tooling cutover

* test(release): align fixtures with admitted verifier tooling
2026-10-22 22:54:41 -07:00
Peter Steinberger
69716f2c5b
fix: reconcile completed CI security reviews (#180808)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-10-22 10:30:38 -07:00
Dallin Romney
f2df9d01fb
fix(release): reuse admitted changelog descendants (#178152)
* fix(release): reuse admitted changelog descendants

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>

* fix(release): validate admitted descendant reuse at seal

Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>

---------

Co-authored-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: RomneyDa <6581799+RomneyDa@users.noreply.github.com>
2026-10-20 16:15:16 -07:00
Josh Avant
a567b8ec01
feat: schedule weekly mobile store releases with Discord results (#173725)
* fix(ios): handle App Store versions without a selected build

* feat: schedule weekly mobile store releases with Discord results

* fix: admit scheduled mobile store uploads

* fix: suppress embeds in mobile release notifications

* fix: clarify mobile release notification headlines
2026-10-15 22:45:01 -07:00
Ayaan Zaidi
4d60655c33
fix(ci): continue stale PR scans at the label limit (#172833)
fix(ci): keep the stale PR scan going when a PR is at the 100-label limit

The Stale workflow posted its inactivity warning and then added the `stale` label unconditionally. On a PR that already had 100 labels, GitHub rejected the label with 422 ("Issues cannot have more than 100 labels") and the whole scan aborted, so later PRs were never evaluated and the job went red. That 422 is now recorded as a per-PR outcome: the warning comment receipt is kept (no duplicate warning on the next run), no other labels are removed, and the scan continues. Every other error still fails the job.

Proof: the capacity regression failed before the fix; all 114 lifecycle tests pass after. A real dispatched scan evaluated 188 PRs, recorded two capacity outcomes, kept the existing warnings and advanced its cursor.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-10-14 23:50:41 -07:00
Dallin Romney
5930f05a68
fix(ci): combine ordinary Security Review evaluation (#172524)
* fix(ci): combine ordinary Security Review evaluation

* fix(ci): preserve Security Review mode through enforcement
2026-10-14 14:58:32 -07:00
Dallin Romney
208c6ce4fa
fix(ci): reuse Security Review notice inventories (#172516) 2026-10-14 14:17:07 -07:00
Vincent Koc
609835f703
fix(ci): close stale PRs despite automated review activity (#172022)
* fix(ci): close stale PRs despite automated review activity

* fix(ci): resume stale closures across Barnacle app failover

* fix(ci): align stale lifecycle lint and workflow guards

* fix(ci): preserve stale warning and edit provenance

* fix(ci): retain activity and checkpoints across stale races

* test(ci): align stale checkpoint recovery guard

* fix(ci): preserve stale scan progress on all failures

* fix(ci): recognize REST draft activity events
2026-10-14 23:46:46 +08:00
Peter Steinberger
ee192100b3
fix(ci): degrade Security Review CI job pages on GitHub 5xx (#171583)
GitHub can persistently fail a 100-job page of a CI attempt with a slow
502 while smaller pages of the same range succeed. The shared client's
in-request 5xx retries then exhaust the 30-second read deadline, and
recovery restarts against the same URL until the budget runs out, leaving
the combined openclaw/ci-gate status pending.

List attempt jobs at 100, then 50, then 25 per page. Above the floor, a
5xx skips in-request retries and the same offset range is requested
again at half size. The 25-job floor keeps the normal read retries,
deadline, and recovery restarts; read timeouts still restart the full
evaluation with fresh authority, and enumeration must still reach the
reported total.
2026-10-13 20:21:23 -07:00
Dallin Romney
8b15f4d1d1
fix(ci): reconcile fork checks when associations name stacked children (#168804) 2026-10-13 00:05:23 +00:00
Josh Avant
73360cc6cf
refactor(ci): remove Security Review comment forwarding support (#169510) 2026-10-11 18:44:38 -07:00
Josh Avant
4c7683b94c
fix(ci): handle security approval comments directly (#169490) 2026-10-11 18:13:03 -07:00
Ayaan Zaidi
48b2ccd285
fix(ci): stop Security Review starting a run for every PR comment (#169437)
## What Problem This Solves

Security Review starts an Actions run for every PR comment create, edit and delete in this repository, then skips almost all of them. On 2026-10-11 it started 30,115 runs in 24 hours; in a 100-run sample, 75 were `clawsweeper[bot]` comment events that ended `skipped`. GitHub creates a run per subscribing workflow before job conditions apply, so the job-level filter cannot prevent this.

## User Impact

No change to the approval contract: `/allow-security-sensitive-change` and `/allow-dependencies-change` comments, and the edits or deletions that revoke them, still re-evaluate the guards, and authorization is still read from live comments. Approval-command activity reaches Security Review a few seconds later because it now hops through the shared listener. Projected saving: roughly 29k Actions runs per day.

## Why This Change Was Made

- `ClawSweeper Dispatch` already receives every comment event (it is the shared listener since #169355). It now also subscribes to comment `deleted` and runs a `security-review-command` job only when the comment or its previous body mentions an approval command. That job checks out the existing `parseApprovalCommands` helper (same parser the resolver used), confirms a real command, and runs `gh workflow run security-review.yml -f pull_request=<n>` with `GITHUB_TOKEN`. The existing `dispatch` job ignores `deleted` comments, so ClawSweeper intake is unchanged.
- `Security Review` drops `issue_comment` and gains a `workflow_dispatch` input naming the PR. The resolver accepts that dispatch only when the payload sender is GitHub Actions (`id` 41898282, `github-actions[bot]`, `Bot`); manual dispatches by people keep failing with the existing "requires an automatic pull request or CI event" error before any API call. The input only selects the PR; the review job reads approvals from live comments as before.
- `merge-prior-ci-security.mjs` accepts a Security Review publisher with event `workflow_dispatch` only when the run actor is that same GitHub Actions identity. `issue_comment` publishers remain accepted because statuses published before this change are still valid evidence.
- zizmor flagged an `if:` check on `github.actor` as spoofable, so the identity check lives in the resolver on the immutable sender ID instead.

For SecOps: the forwarding job in `clawsweeper-dispatch.yml` is now part of the revocation path. Please decide whether that file (or the job) should join the SecOps CODEOWNERS closure; this PR does not change CODEOWNERS.

## Evidence

- Focused tests (473 passed across `security-review-workflow`, `security-review-event`, `security-review-script`, `pr-merge-prior-ci*`, `ancillary-workflow-concurrency`, `clawsweeper-dispatch`):
  - the listener step runs as real bash with a stub `gh` against the full approval-command table that previously lived in the resolver tests: creates, previous-body revocations and deletions dispatch exactly `workflow run security-review.yml --repo openclaw/openclaw --ref main -f pull_request=42`; prose, quoted, uppercase, suffixed and mixed comments do not;
  - the listener must keep `created`, `edited`, `deleted` comment subscriptions;
  - the resolver selects the PR for a GitHub Actions dispatch and rejects dispatches from a user, a spoofed login, a wrong ID, and another bot before any API request;
  - the prior-CI verifier accepts an automation-dispatched publisher and rejects a human-dispatched one.
- `node --import tsx scripts/check-workflows.mts` (actionlint, zizmor): passed.
- GitHub sets `actor` and `triggering_actor` to `github-actions[bot]` (`Bot`) for `GITHUB_TOKEN` `workflow_dispatch` runs; observed on openclaw/clawsweeper run 38180548598.
- Live negative proof: a manual `workflow_dispatch` of this branch's `security-review.yml` by a maintainer (https://github.com/openclaw/openclaw/actions/runs/38183944875) failed in the resolver with "Security review requires an automatic pull request or CI event." and published no status.
- Limit: `issue_comment` workflows run from `main`, so the end-to-end comment → dispatch → review path can only be observed after merge. I will post a test approval command and its deletion on a disposable PR after merge, confirm both re-evaluations and the `openclaw/ci-gate` status, and compare hourly Security Review run counts.
2026-10-11 17:21:15 -07:00
Dallin Romney
c57f3559f3
improve: simplify repository tooling, contribution templates, and packaged skill docs (#168708) 2026-10-10 22:17:17 -07:00
Josh Avant
50d7eb1b7f
fix: recover transient security review notice failures (#163357) 2026-10-08 17:11:27 -07:00
Josh Avant
71cc747b57
fix: stop security review cleanly when closed PR disables edits (#163356) 2026-10-08 17:11:24 -07:00
Vincent Koc
11f0d107b5
fix(ci): avoid redundant release validation work and delayed failures (#167356)
* fix(ci): preserve release failure diagnostics and bounded recovery

* fix(ci): bound and pack measured full-release test jobs

* fix(ci): reuse authenticated release publications and fail waits early

* fix(ci): require complete retained publication inputs

* fix(ci): narrow artifact and workflow error contracts
2026-10-08 18:02:42 +00:00
Peter Steinberger
dd1c135435
refactor(scripts): deslop scripts (#166083)
* refactor(scripts): deslop scripts

* fix(scripts): preserve existing timing and restart contracts
2026-10-06 14:51:35 -07:00
Peter Steinberger
fb1784767e
refactor(scripts): deslop scripts (#165571) 2026-10-05 06:49:48 -07:00
Josh Avant
e6f2610a1c
fix(ci): make informational security notices easier to spot (#164056)
* fix(ci): make informational security notices easier to spot

* fix(ci): keep informational notices at body text size

* fix(ci): lead with the security approval outcome
2026-10-03 01:04:31 -05:00
Peter Steinberger
de2f83e271
refactor(scripts): deslop CI and release tooling (#164009)
## What Problem This Solves

CI and release tooling still carries retired selection paths, duplicate evidence projections, and single-use command factories that make its current behavior harder to follow.

## User Impact

No user-visible change. CI keeps the same jobs and gates; release receipts, manifest digests, CLI output, packaging contracts, and generated Gateway protocol bytes stay compatible. No SDK API, config, wire, or persisted-data changes.

## Why This Change Was Made

This batch removes **1,235 net production/tooling lines** (890 added, 2,125 deleted; tests excluded).

- Remove the unused extension fallback and core-impact classifier after their production caller was retired in `6a50179657`. The current planner consumes explicit targets; meaningful coverage now exercises that path. Remove unused current-planner options while retaining arguments needed by September frozen targets.
- Use the existing grouping helper and direct descriptors for CI shards; let the Docker lane constructor own its default command and remove one-use factories. Selection, lane ordering, prerequisites, and commands remain identical.
- Reuse release-policy child topology, evidence projections, and canonical JSON sorting; remove always-empty advisory machinery. Share the existing postpublication diagnostic schema while retaining the observer's `startup_failure` extension and historical receipt validation.
- Cross-OS packaging now uses the canonical package helper directly instead of maintaining a second pack/inventory implementation. That helper predates July 2026 and exists in all 36 available July-or-later release tags. Remove npm-runner forwarding and test-only APIs.
- Simplify docs translation fence/link processing and remove unused route, cursor, and split-depth state. Replace hand-written ZIP CRC with Node's implementation; remove an unreachable Swift fallback, retired cancellation adapter, and redundant timing/tarball branches.
- Keep the actual core consumer of the shared package metadata helper in Knip's graph, rather than suppressing a dead-export warning.

## Evidence

Remote proof uses [Blacksmith Testbox run 37090710184](https://github.com/openclaw/openclaw/actions/runs/37090710184), lease `tbx_01m3zt7sykcrdm1fq4m8zf4bz4`, with dependencies installed. Final source tree `3b3f07ba57325ab7da7335fd125dec0fd43216ac` matches commit `8c147759f7a8047189daf2ac0bacd4ae4f5b88d9`. After full-sync timeouts, targeted transfer plus whole-tree verification completed the proof.

- Focused TypeScript selection: **1,988 tests passed across 30 files**, about 398 seconds including the wrapper. Changed-test single-worker proof: **629 passed**; tooling shard 308.96 seconds. The root retention test passed all four cases. An additional eight-file selection passed **255 tests**, 30.16 seconds including the wrapper.
- `cd scripts/docs-i18n && go test ./...`: passed, package time 0.179 seconds.
- Base/candidate comparisons: **393 release output/error/digest comparisons**, **1,234 Docker comparisons across 727 plans**, **24 extension selection/packing comparisons**, and four Node shard-inventory profiles passed. Generated Swift protocol output is byte-identical.
- `pnpm test <changed files> --maxWorkers=1` retains the expensive real-repository ownership assertions: source-owner file 87.778 seconds; cross-OS release checks 0.971 seconds; workflow control 0.486 seconds; extension preparation 0.272 seconds. No new CI job or added test budget.
- Independent autoreview found no actionable P0/P1 regression. Final `check-changed` passed, including types, lint, package boundaries, ratchets, and all three unused-export scans. Both import-cycle checks reported **0**. Final single-worker replay of npm locks, cross-OS packaging, and release summaries: **306 tests passed**, 30.82 seconds including the wrapper.

Fixes found along the way: no separate product bug was established. Gate findings were corrected in the owning changes; tests were not weakened to conceal failures.
2026-10-03 04:04:39 +00:00
Peter Steinberger
7cbaa6b36f
refactor(scripts): deslop shared tooling flows (#162824)
Consolidate script lifecycle and helper ownership while preserving CLI, generated-output, cleanup, and guard contracts. Reject inherited object keys in model-matrix option admission with the existing unknown-argument diagnostic.

Validation: 90 full sibling suites; original-fails parser regression; byte-identical native outputs; changed checks; SDK surface and API comparison; both zero-cycle checks; independent isolated review.
2026-10-01 21:30:19 +00:00
Peter Steinberger
afcb342244
refactor(scripts): deslop tooling scripts third pass (#161354)
* refactor(scripts): deslop tooling scripts third pass

Consolidate AST traversal, binding and shadow handling, report grouping,
fixture metadata, and developer harness plumbing. Remove the unused PR
comment verdict parser and one-use forwarding layers while preserving CLI,
guard, baseline, and generated-byte contracts.

* test(scripts): parse mocked fetch requests with Request

* test(scripts): include shared AST helper in protocol fixture
2026-09-29 17:00:46 -07:00
Josh Avant
35263bd17a
fix(ci): stop obsolete security reviews after PR lifecycle changes (#160890)
* fix(ci): stop obsolete security reviews after PR lifecycle changes

* fix(ci): preserve security review evidence after merges
2026-09-28 21:34:29 -05:00
Peter Steinberger
824982caa6
fix(ci): preserve security authority in baseline failure admission 2026-09-27 21:45:21 -07:00
Peter Steinberger
9726512367
ci(security-review): reconcile ci-gate statuses when CI completion delivery is lost (#155392)
Some checks are pending
Native App Locale Refresh / Refresh native zh-CN (push) Blocked by required conditions
Native App Locale Refresh / Refresh native zh-TW (push) Blocked by required conditions
Native App Locale Refresh / Commit native locale refresh (push) Blocked by required conditions
Native App Locale Refresh / resolve-base (push) Waiting to run
Native App Locale Refresh / Verify generated PR App permissions (push) Blocked by required conditions
Native App Locale Refresh / Refresh native ar (push) Blocked by required conditions
Native App Locale Refresh / Refresh native de (push) Blocked by required conditions
Native App Locale Refresh / Refresh native es (push) Blocked by required conditions
Native App Locale Refresh / Refresh native fa (push) Blocked by required conditions
Native App Locale Refresh / Refresh native fr (push) Blocked by required conditions
Native App Locale Refresh / Refresh native hi (push) Blocked by required conditions
Native App Locale Refresh / Refresh native id (push) Blocked by required conditions
Node Runtime Conformance / scope (push) Waiting to run
Node Runtime Conformance / TypeScript contracts (push) Blocked by required conditions
Node Runtime Conformance / Rust workspace (push) Blocked by required conditions
Plugin Init Scaffold Validation / Validate provider scaffold (push) Blocked by required conditions
Plugin Init Scaffold Validation / scope (push) Waiting to run
Plugin NPM Release / preview_plugins_npm (push) Waiting to run
Plugin NPM Release / Validate release publish approval (push) Blocked by required conditions
Plugin NPM Release / preview_plugin_pack (push) Blocked by required conditions
Plugin NPM Release / Preflight plugin npm package () (push) Blocked by required conditions
Plugin NPM Release / Seal prepared plugin npm release (push) Blocked by required conditions
Plugin NPM Release / Trusted publisher OIDC exchange (push) Blocked by required conditions
Plugin NPM Release / approve_plugins_npm_release (push) Blocked by required conditions
Plugin NPM Release / Publish plugin npm package () (push) Blocked by required conditions
Plugin NPM Release / verify_plugins_npm (push) Blocked by required conditions
Vitest Cache Warm / dependencies (push) Waiting to run
Vitest Cache Warm / warm (push) Waiting to run
Workflow Sanity / actionlint (push) Waiting to run
Workflow Sanity / generated-doc-baselines (push) Waiting to run
Lost CI-completion deliveries can leave the required ci-gate status pending after CI finishes. Add scheduled reconciliation through the existing trusted Security Review resolver and enforcement job.

Preserve overlapping completion windows, reject incomplete listings before publication, keep provisional statuses eligible, and trust only Actions-owned gate statuses. Bound each pass to the oldest 100 heads and retain the successful window anchor while a backlog remains.

Reruns whose original creation time predates the three-hour listing margin retain the documented existing recovery path through a push or Security Review rerun.

Validation: exact-head CI passed, focused entry-point and workflow regressions passed, and live read-only GitHub transport proof completed. Production scheduled recovery remains post-merge proof.
2026-09-27 14:08:14 -07:00
Peter Steinberger
f8a3418494
refactor(scripts): deslop tooling subdirectories and agent skill helpers (#159218)
Consolidate repeated tooling flows while preserving command contracts. Fix swallowed HTML translation errors and browser-realm error handling in the Google Live smoke. Owner tests and CLI parity passed on Testbox; final broad gate replay follows a fixture lint correction.
2026-09-26 18:13:40 -07:00
Hannes Rudolph
340092231c
docs: remove stale showcase section (#158575) 2026-09-25 21:11:35 -06:00
Josh Avant
bf6de07f15
fix(ci): recover interrupted Security Review response bodies (#157651) 2026-09-24 20:11:01 -05:00
Josh Avant
507b137ff0
fix: clarify lockfile cleanup fallback when write access is unavailable (#157008)
* fix: clarify lockfile cleanup fallback when write access is unavailable

* test: use findLast for dependency review status assertion
2026-09-23 23:44:07 -05:00
Josh Avant
b770a861bd
fix(ci): recover Security Review from read timeouts (#156176) 2026-09-24 03:47:25 +00:00
RoboClaw
45920b3853
fix(ci): stop obsolete security review reads after new pushes (#156798)
Stop obsolete Security Review reads and non-quota recovery waits after a newer PR head supersedes the evaluated revision. Reuse the existing supersession outcome and preserve per-SHA publication serialization, final approval checks, and autoscrub writes/cleanup.

Regression coverage proves early exit before further pagination or recovery waiting; the unchanged-head control completes. In-flight request deadlines, server-directed quota waits, checkout, and runtime setup are unchanged.

Contributor credit: VACInc and vincentkoc.

## Work sessions

- [Original discussion](https://team.openclaw.ai/chat/roboclaw/dashboard/1b82108b-d6ca-44f2-95d5-63a6831c6bb7)
- [Implementation and verification](https://team.openclaw.ai/chat/roboclaw/68b61c50)

---
[View the OpenClaw team session](https://team.openclaw.ai/chat/roboclaw/dashboard/68b61c50-c2d0-461b-ab98-37947c99b1f1)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
2026-09-23 20:24:31 -07:00
Dallin Romney
86f5656a2a
fix(release): require Gateway and Telegram validation (#156811)
* fix(release): ignore waivers for other release trains

* test(auto-reply): await active admission boundary

* fix(release): restore blocking validation without lane waivers

* fix(release): require Gateway install and upgrade checks on every OS

* test(ci): align Testbox timeout with its existing lease

* fix(ci): include readonly reuse in PR wrapper closure

* fix(release): restore blocking Telegram validation

* refactor(release): remove legacy waiver transition handling

* test(release): expect Telegram QA to block release checks
2026-09-23 19:04:50 -07:00
Peter Steinberger
0708f975ab
fix(ci): stop reviving canceled test workflows
Cancellation did not prove an infrastructure error or absence of executed
and failed tests, yet the sweeper automatically replayed whole workflows.
The three-day census found nine such reruns, including five CI workflows.

Remove canceled-run revival. Keep bounded recovery for missing or
startup-failed CI before tests execute, with infrastructure warnings and
the existing live head/PR checks.

The actual sweeper boundary changed from one canceled-run replay to zero
without a PR mutation. Both shared-fixture importers passed 20 standalone
runs and three replays under their CI configs on Testbox.
2026-09-23 18:27:19 -07:00
Josh Avant
ae53b4f777
fix(ci): remove lockfile changes after main advances (#156171) 2026-09-23 13:32:34 -05:00
Josh Avant
e6bd12b4cd
fix(ci): avoid dependency warnings from unrelated main updates (#156040) 2026-09-22 19:52:41 -05:00
Josh Avant
a98b766352
fix(ci): recover Security Review when diff data settles slowly (#155921) 2026-09-22 15:12:41 -05:00
Josh Avant
0c98d387e8
fix(ci): identify changed PR fields in Security Review errors (#155266) 2026-09-21 18:47:03 -05:00