Skip to content

fix(ci): run browser checks for real-Gateway inputs - #139256

Merged
steipete merged 1 commit into
mainfrom
codex/stable91-chromium-routing-20260905
Sep 5, 2026
Merged

steipete merged 1 commit into
mainfrom
codex/stable91-chromium-routing-20260905

Conversation

@steipete

@steipete steipete commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

What Problem This Solves

Fixes an issue where changes to prebuilt Control UI test setup or newly added QA real-Gateway suites skip Chromium CI, even though the dedicated real-Gateway job owns those inputs.

Why This Change Was Made

The existing classifier now matches the shared real-Gateway suite family and suffixed UI harness configurations. This removes feature-name enumeration instead of adding another allowlist. Workflow jobs, runner capacity, unrelated path exclusions, and runtime behavior are unchanged.

User Impact

Developers changing these browser-test inputs receive their intended Chromium validation before merge. There is no end-user configuration or API change.

Production/tooling LOC: 2 added / 2 removed, net 0. Tests: 4 added.

Evidence

On the unchanged production classifier, each of these paths returned runUiTests: false:

  • test/vitest/vitest.ui-e2e-prebuilt.config.ts
  • test/vitest/vitest.ui-e2e-prebuilt.global-setup.ts
  • extensions/qa-lab/src/session-host-command-state.real-gateway.e2e.test.ts
  • extensions/qa-lab/src/control-ui-automation-management.real-gateway.e2e.test.ts

The existing table gained those four cases: 4 failed / 58 passed before, then 62 passed after. A separate direct invocation of the production classifier also changed all four results from false to true. Existing positive and negative controls remain intact.

Local proof used Node 24.20.0 and the installed repository tooling:

node scripts/run-vitest.mjs src/scripts/ci-changed-scope.control-ui.test.ts
node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/scripts/ci-changed-scope.control-ui.test.ts
node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.scripts.json scripts/ci-changed-scope.mjs
node_modules/.bin/oxfmt --check scripts/ci-changed-scope.mjs src/scripts/ci-changed-scope.control-ui.test.ts
node --check scripts/ci-changed-scope.mjs
git diff --check

All listed checks passed. A fresh independent Codex review completed both source/context packets with no actionable P0–P2 findings; it was static review, not another test execution. Normal commit hooks passed. Exact committed head: 1d298342e7904ff2bbb60bec9986e5a14f5bc6eb.

The full local changed gate has not run: local bootstrap of the repository-pinned pnpm version is blocked by the seven-day package maturity policy. No cooldown or dependency override was changed. Hosted CI run 33982487938 is now green on the exact head: 7 passed / 26 skipped, including the selected routing checks and required merge gate. The earlier draft run was skipped and is not counted as proof. The classifier proof establishes selection, not a browser-runtime run.

Match the shared QA suite and suffixed UI harness families so changes to
prebuilt browser setup and new real-Gateway tests select their Chromium gate.
Preserve unrelated routing exclusions without a growing feature-name list.
@clawsweeper

clawsweeper Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@openclaw-barnacle openclaw-barnacle Bot added scripts Repository scripts size: XS maintainer Maintainer-authored PR labels Sep 5, 2026
@steipete steipete self-assigned this Sep 5, 2026
@steipete
steipete marked this pull request as ready for review September 5, 2026 17:56
@clawsweeper clawsweeper Bot added P2 Normal backlog priority with limited blast radius. 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 Sep 5, 2026
@clawsweeper

clawsweeper Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed September 5, 2026, 2:14 PM ET / 18:14 UTC.

ClawSweeper review

What this changes

Expands CI path matching so prebuilt browser-test setup and QA real-Gateway suites select the existing Chromium checks, with four regression cases.

Merge readiness

✅ Ready for maintainer review

The PR remains useful: current main still misses these browser-test inputs. The owner-level repair is focused, and no blocking correctness or security findings were identified.

Priority: P2
Reviewed head: 1d298342e7904ff2bbb60bec9986e5a14f5bc6eb

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused owner-level repair with relevant regression cases and reported before/after classifier validation.
Proof confidence 🌊 off-meta tidepool Not applicable: The maintainer-authored CI repair is exempt from the external-contributor proof gate; its reported direct classifier invocation exercises the changed selection behavior, while browser execution is explicitly outside that evidence.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Not applicable Not applicable: The maintainer-authored CI repair is exempt from the external-contributor proof gate; its reported direct classifier invocation exercises the changed selection behavior, while browser execution is explicitly outside that evidence.
Evidence reviewed 9 items Verified patch ownership: The pinned merge-base-to-head comparison contains only the classifier pattern/comment replacement and four added test-table entries; unrelated endpoint drift is excluded.
Classifier owner and output: Read the complete classifier: detectChangedScope consumes shared path facts, applies the Chromium matcher at line 292, and writes run_ui_tests at line 742. The patch broadens selection without changing other routing decisions. No changed behavior depends on a Codex runtime or protocol contract.
Existing workflow ownership: The real-Gateway job is gated by run_ui_tests, uses the prebuilt configuration, and explicitly invokes both newly covered QA suites. Its permissions, runner selection, build preparation and execution commands are unchanged.
Findings None None.
Security None None.

How this fits together

OpenClaw’s CI classifier converts changed repository paths into job-selection flags. The workflow consumes its browser-test flag to select Chromium validation, including suites running against a real Gateway.

flowchart LR
  A[Changed repository paths] --> B[Shared path classification]
  B --> C{Browser test input?}
  C -->|Yes| D[Browser checks selected]
  D --> E[Chromium suites]
  D --> F[Real Gateway suites]
  C -->|No| G[Other applicable checks]
Loading

Before merge

None.

Agent review details

Security

None.

PR surface

Tests +4, Other 0. Total +4 across 2 files.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 1 4 0 +4
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 1 2 2 0
Total 2 6 2 +4

Review metrics

Metric Value Why it matters
Production versus test growth Production/tooling net 0; tests +4 The repair replaces the existing matcher and extends its regression table without growing production code.

Technical review

Best possible solution:

Keep browser-input selection in the existing classifier, matching the shared harness families while preserving unrelated exclusions.

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

Yes, from source: each of the four reported paths misses main’s matcher despite belonging to the existing real-Gateway job; the PR also reports failing-before and passing-after classifier checks.

Is this the best way to solve the issue?

Yes. Broadening the existing family matcher repairs the selection owner directly; adding workflow exceptions or more feature-name entries would duplicate or perpetuate the drifting policy.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against bd381bffb29d.

Labels

Label justifications:

  • P2: Repairs a bounded CI selection gap that can omit intended browser validation.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🌊 off-meta tidepool and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: The maintainer-authored CI repair is exempt from the external-contributor proof gate; its reported direct classifier invocation exercises the changed selection behavior, while browser execution is explicitly outside that evidence.

Evidence

What I checked:

  • Verified patch ownership: The pinned merge-base-to-head comparison contains only the classifier pattern/comment replacement and four added test-table entries; unrelated endpoint drift is excluded. (scripts/ci-changed-scope.mjs:125, 1d298342e790)
  • Classifier owner and output: Read the complete classifier: detectChangedScope consumes shared path facts, applies the Chromium matcher at line 292, and writes run_ui_tests at line 742. The patch broadens selection without changing other routing decisions. No changed behavior depends on a Codex runtime or protocol contract. (scripts/ci-changed-scope.mjs:292, 1d298342e790)
  • Existing workflow ownership: The real-Gateway job is gated by run_ui_tests, uses the prebuilt configuration, and explicitly invokes both newly covered QA suites. Its permissions, runner selection, build preparation and execution commands are unchanged. (.github/workflows/ci.yml:2698, 1d298342e790)
  • Harness and sibling coverage: The canonical UI E2E inventory includes all four QA real-Gateway suites; the prebuilt configuration consumes that inventory and installs its own global setup. Existing UI and plugin-browser paths already select Chromium checks. (test/vitest/vitest.ui-e2e.config.ts:12, 1d298342e790)
  • Regression coverage: The complete test file extends the existing production-classifier table with four missed inputs, retaining positive browser controls and negative unrelated-config, tooling and QA controls; it adds no test-only production seam. (src/scripts/ci-changed-scope.control-ui.test.ts:79, 1d298342e790)
  • Still necessary on fetched main: Fetched main retains the explicit two-suite matcher and excludes suffixed UI harness names, so the four reported omissions remain in the reviewed main source. (scripts/ci-changed-scope.mjs:125, bd381bffb29d)

Likely related people:

  • steipete: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)
  • Josh Lehman: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
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.

Workflow

  • 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.

History

Review history (1 earlier review cycle)
  • reviewed 2026-09-05T18:01:53.055Z sha 1d29834 :: needs maintainer review before merge. :: none

@steipete
steipete merged commit 8c0520f into main Sep 5, 2026
161 checks passed
@steipete
steipete deleted the codex/stable91-chromium-routing-20260905 branch September 5, 2026 18:16
@steipete

steipete commented Sep 5, 2026

Copy link
Copy Markdown
Contributor Author

Merged via squash.

vincentkoc added a commit that referenced this pull request Sep 5, 2026
* commit '911d7d5b0c107f7274f2415ca9655dcc6105f0e8': (867 commits)
  fix(skills): deliver pending Workshop approval controls (#139248)
  fix(gateway): deliver loopback ask_user prompts to the originating channel (#138831)
  docs: keep root agent instructions focused on repository policy (#139258)
  fix(matrix): exclude archived state roots from scans and selection (#112329)
  perf(agents): prepare exact tool names once per catalog batch (#139267)
  fix: preserve Swarm progress and simplify owner plumbing (#139269)
  fix(tailscale): release claims after gateway process-group exit (#139261)
  refactor(cli): simplify lazy command registration (#139108)
  test(ui): retain synthetic widget failure evidence (#139229)
  fix(buzz): keep implicit replies at thread root (#138879)
  test(diagnostics): await graceful Gateway shutdown before cleanup (#139247)
  fix(ci): unblock releases with different tooling package managers (#139259)
  feat(ui): add social preview links for private sessions (#139250)
  fix(codex): retain failed conversations for guarded continuation (#139246)
  chore(ui): refresh control ui locales (#139200)
  fix(ci): run browser checks for real-gateway inputs (#139256)
  fix(llama-cpp): reconcile managed router state before requests (#136363)
  chore(i18n): refresh native locales (#139237)
  refactor(worker): unify inference payload handling (#139245)
  refactor(terminal): replay wrapped prefixes in one pass (#139240)
  ...
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Sep 6, 2026
Match the shared QA suite and suffixed UI harness families so changes to
prebuilt browser setup and new real-Gateway tests select their Chromium gate.
Preserve unrelated routing exclusions without a growing feature-name list.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

maintainer Maintainer-authored PR P2 Normal backlog priority with limited blast radius. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. scripts Repository scripts size: XS 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.

1 participant