Skip to content

ci: fail browser install when system libraries are missing (WebKit could not launch) - #3487

Merged
gitar-bot[bot] merged 7 commits into
mainfrom
claude/fix-webkit-ci-deps-w72vlz
Oct 12, 2026
Merged

gitar-bot[bot] merged 7 commits into
mainfrom
claude/fix-webkit-ci-deps-w72vlz

Conversation

@BigSimmo

@BigSimmo BigSimmo commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

User description

Requested by Josh · project thread

Summary

Before: on main, many WebKit legs of the advisory release browser matrix failed every test at browserType.launch because libevent-2.1.so.7 was missing (runs 38224928367 and 38228339791, e.g. release-browser-matrix (webkit, tablet, 4, 4): 196 failed, all at launch). The "Install Playwright browsers" step still reported success.

After: WebKit installs its system libraries and launches on every leg. In dispatch run 38236585559 (head 7e2d712) every WebKit leg's install step passed, including the launch probe, and the log shows libevent-2.1-7t64 being installed.

Cause, confirmed from the logs:

  • The runner resolves apt sources through /etc/apt/apt-mirrors.txt, which points at the azure mirror that stalls. The existing mirror rewrite missed that file, so install-deps ran past the 180 s attempt timeout.
  • timeout killed the attempt shell but not the root apt-get, which kept the apt lock, so retries failed too.
  • On a browser-cache hit the install function had no set -e, so the failed install-deps was masked by the successful cached browser install and the step exited 0 with libraries missing.

How:

  • The mirror rewrite also covers /etc/apt/apt-mirrors.txt.
  • set -e in the release matrix install function and in the same pattern in setup-ui-e2e and setup-lighthouse-chromium.
  • A launch probe of the installed engine runs inside each attempt.
  • Between retries, orphaned apt-get is stopped and sudo dpkg --configure -a finishes any interrupted install.
  • Contract test added in tests/ci-browser-matrix-coverage.test.ts. No test was skipped or disabled; the CI speed-up from Cut CI wait: split the tablet and Safari release legs, rebalance PR browser groups, stop a frozen unit batch sooner #3451 is untouched.
  • A ledger request (docs/outstanding-issues-inbox/) records the genuine test failures below for follow-up.

Areas touched: Delivery and assurance

Verification

  • Checks run: npx vitest run tests/ci-browser-matrix-coverage.test.ts tests/ci-cache-safety.test.ts → Tests 90 passed (90); prettier clean; check:outstanding-issues passed.
  • Hosted proof: browser-matrix dispatch run 38236585559 on this branch. All WebKit, Firefox and Chromium-mockups legs installed and launched.

Genuine test failures now visible (not fixed here)

Now that WebKit launches, 26 tests fail on their own merits (about 1,400 pass). They were hidden before because every test died at launch. Many tablet failures are 1.0 min timeouts and may share a cause.

  • tablet 2/4 (16): ui-accessibility 176, 377, 597; ui-overlap 239, 437, 549; ui-teaching 83; ui-tools 587, 672, 1084, 2183, 2295, 2490, 2674, 2946; ui-universal-search 360.
  • tablet 4/4 (4): ui-my-day-calendar 116; ui-roster-team 100, 174; ui-stress 346.
  • tablet 3/4: ui-cme-phone 351.
  • mobile-webkit 2/5: ui-accessibility 295.
  • mobile-webkit 5/5 and mobile-pwa-standalone 4/5: ui-on-call-boards 558.
  • mobile-pwa-standalone 5/5: ui-phone-scroll-assessments 19; ui-phone-scroll-page-owned 454.
  • tablet 1/4 was still running at the time of writing.

Risk and rollout

  • Risk: low, CI-only. The matrix stays advisory; its WebKit legs will now report the failures above instead of launch errors.
  • Rollback: revert this PR.
  • Provider or production effects: None.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DCghuougzFFXRF3dQQEcYr


CodeAnt-AI Description

Make browser setup detect missing dependencies and recover from stalled installs

What Changed

  • Browser setup now checks that the selected browser launches; missing system libraries fail during setup instead of causing every test to fail at launch.
  • Setup retries now use the working package mirror and clear stuck package installs before retrying.

Impact

✅ Fewer WebKit tests fail at browser launch
✅ Missing browser dependencies are caught during setup
✅ Fewer retries blocked by a stuck package install

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

On a browser-cache hit the release matrix ran install-deps and then the
browser download in a shell without set -e, so a failed install-deps was
masked by the successful download. The step reported success with apt
libraries missing, and every WebKit test died at launch with
libevent-2.1.so.7 not found (main runs 38224928367 and 38228339791).

- set -e in the release matrix and both Chromium setup actions
- launch-probe the installed engine inside each install attempt so a
  missing library fails and retries in the install step
- finish an interrupted dpkg before retrying after a timeout

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DCghuougzFFXRF3dQQEcYr
@BigSimmo BigSimmo self-assigned this Oct 12, 2026
@supabase

supabase Bot commented Oct 12, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project sjrfecxgysukkwxsowpy because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@coderabbitai

coderabbitai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 828bb921-de43-4ac9-90e2-2922315051c6

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codeant-ai

codeant-ai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

🏁 CodeAnt Quality Gate Results

Commit: 1cc695ca
Scan Time: 2026-10-12 11:41:06 UTC

✅ Overall Status: PASSED

Quality Gate Details

Quality Gate Status Details
Secrets ✅ PASSED 0 secrets found
Duplicate Code ✅ PASSED 0.0% duplicated
SAST ✅ PASSED No security issues
Bugs ✅ PASSED Rating S: No bugs
IAC ✅ PASSED Rating S: No issues

View Full Results

gitar-bot[bot]
gitar-bot Bot previously approved these changes Oct 12, 2026

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitar has auto-approved this PR (configure)

@codspeed

codspeed Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Merging this PR will not alter performance

⚠️ 3 benchmarks spent significant time in system calls

System calls cannot be consistently instrumented, so they are not included in the measure, which understates the real cost. Please switch to the Walltime instrument to accurately measure system calls.

Measurement and system calls

ℹ️ 1 benchmark has no flame graph

The flamegraph could not be generated because too much time was spent in runtime internals, making the visualization not useful for performance analysis.

✅ 8 untouched benchmarks


Comparing claude/fix-webkit-ci-deps-w72vlz (1cc695c) with main (e3d9c6d)

Open in CodSpeed

…e apt lock on retry

The dispatched browser matrix (run 38234519037) now failed at install, as
intended, and showed the real cause: the runner's apt sources resolve
through /etc/apt/apt-mirrors.txt, which the existing sed did not rewrite,
so apt-get update waited on azure.archive.ubuntu.com until the 180 s
attempt timeout. timeout killed the attempt's shell but not the root
apt-get, which kept the apt lock and failed both retries.

- rewrite apt-mirrors.txt alongside the sources files (all three installers)
- pkill the orphaned apt-get before each retry

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DCghuougzFFXRF3dQQEcYr
gitar-bot[bot]
gitar-bot Bot previously approved these changes Oct 12, 2026

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitar has auto-approved this PR (configure)

Comment thread .github/actions/setup-ui-e2e/action.yml Resolved
…setup actions

Matches the release matrix recovery so a timed-out attempt that leaves
dpkg half-configured does not fail every retry in the required UI and
Lighthouse gates.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DCghuougzFFXRF3dQQEcYr
gitar-bot[bot]
gitar-bot Bot previously approved these changes Oct 12, 2026

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitar has auto-approved this PR (configure)

…aunch fix

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DCghuougzFFXRF3dQQEcYr
gitar-bot[bot]
gitar-bot Bot previously approved these changes Oct 12, 2026

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitar has auto-approved this PR (configure)

@BigSimmo
BigSimmo marked this pull request as ready for review October 12, 2026 11:14
@codeant-ai

codeant-ai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Reviewed your PR c7c557e Oct 12, 2026 · 11:14 11:19

@codeant-ai

codeant-ai Bot commented Oct 12, 2026

Copy link
Copy Markdown

Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BigSimmo has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@claude

claude Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Claude encountered an error after 2s —— View job


I'll analyze this and get back to you.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-12T11:17:31.953160Z c7c557e Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@codeant-ai codeant-ai Bot added the size:M This PR changes 30-99 lines, ignoring generated files label Oct 12, 2026
@qodo-code-review qodo-code-review Bot added 🕐 20-40 Minutes and removed size:M This PR changes 30-99 lines, ignoring generated files labels Oct 12, 2026
@qodo-code-review

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Fail Playwright browser installation when system libraries are missing

🐞 Bug fix ⚙️ Configuration changes 🧪 Tests 🕐 20-40 Minutes

Grey Divider

AI Description

• Fail release-matrix installation when dependencies fail or the installed browser cannot launch.
• Rewrite the runner’s active APT mirror list and recover interrupted installs between retries.
• Guard the behavior with a contract test and record newly visible WebKit test failures.
Diagram

graph TD
  A["APT mirrors"] --> B{"Cache hit?"} --> C["System libraries"] --> D["Browser install"] --> E{"Launch succeeds?"} --> F["Browser matrix"]
  C -- "Failed attempt" --> G["APT recovery"] --> B
  E -- "Failed launch" --> G
Loading
High-Level Assessment

Keep the existing runner and Playwright cache strategy while making installation fail closed. A prebuilt browser image could avoid runner-local APT installation, but would require a broader change to the matrix and its caching; it is not warranted for this targeted fix.

Files changed (5) +71 / -3

Bug fix (3) +41 / -3
action.ymlHarden Lighthouse Chromium dependency installation +11/-1

Harden Lighthouse Chromium dependency installation

• Rewrites the active APT mirror list as well as source files. Makes dependency failures fail the install attempt and clears orphaned apt-get and interrupted dpkg state before retries; it does not add a launch probe.

.github/actions/setup-lighthouse-chromium/action.yml

action.ymlHarden UI e2e Chromium dependency installation +11/-1

Harden UI e2e Chromium dependency installation

• Includes apt-mirrors.txt in the mirror rewrite and prevents a successful browser download from masking failed system dependencies. Retry cleanup stops orphaned apt-get and runs dpkg configuration; this action does not add a launch probe.

.github/actions/setup-ui-e2e/action.yml

ci.ymlFail release-matrix installs before browser tests encounter missing libraries +19/-1

Fail release-matrix installs before browser tests encounter missing libraries

• Rewrites apt-mirrors.txt, fails attempts when dependency installation fails, and launch-probes the selected engine after installation. Between failed attempts, it stops orphaned apt-get and repairs interrupted dpkg configuration.

.github/workflows/ci.yml

Tests (1) +16 / -0
ci-browser-matrix-coverage.test.tsGuard release-matrix installation and retry behavior +16/-0

Guard release-matrix installation and retry behavior

• Adds a workflow contract test for fail-fast installation, the post-install launch probe, mirror-list rewriting, and APT recovery. It protects against a return to installation steps that pass while system libraries remain missing.

tests/ci-browser-matrix-coverage.test.ts

Documentation (1) +14 / -0
693e8f34-1b14-4e61-a87c-430fff130dad.jsonRecord WebKit test failures exposed by successful launches +14/-0

Record WebKit test failures exposed by successful launches

• Adds a P2 follow-up request for the genuine tablet and mobile WebKit failures observed after installation was repaired. Calls for grouping and fixing their causes without skipping tests.

docs/outstanding-issues-inbox/693e8f34-1b14-4e61-a87c-430fff130dad.json

@qodo-code-review

qodo-code-review Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Action required

No findings for this group


Remediation recommended

No findings for this group


Informational

No findings for this group

Grey Divider


Resolved findings

1. Package recovery can stall the CI job ✓ Resolved
Description
The new sudo dpkg --configure -a runs outside the 180-second timeout that bounds each
browser-install attempt. If recovery itself stalls, the loop cannot retry or fail until the
enclosing job timeout expires; the same unbounded call is present in both Chromium setup actions.
Code

.github/workflows/ci.yml[2080]

+              sudo dpkg --configure -a || true
Relevance

●●● Strong

Recent reviews accepted timeout-boundary findings where unbounded CI work could prevent retries or
failure routing.

PR-#3401
PR-#3394

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The 180-second timeout wraps only the attempt shell; recovery executes synchronously afterward,
with no step-level bound. The release job's enclosing timeout is 45 minutes, so a stalled recovery
can consume the remainder of that job rather than reaching another attempt.

.github/workflows/ci.yml[2069-2084]
.github/workflows/ci.yml[1950-1951]
.github/actions/setup-lighthouse-chromium/action.yml[70-81]
.github/actions/setup-ui-e2e/action.yml[57-69]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The newly added package recovery runs without a timeout, so a stalled recovery prevents the bounded install loop from advancing.

## Fix Focus Areas
- .github/workflows/ci.yml[2077-2082]
- .github/actions/setup-ui-e2e/action.yml[62-67]
- .github/actions/setup-lighthouse-chromium/action.yml[75-80]

## Recommended Fix
Give package recovery its own timeout in all three locations. If it times out or fails, terminate remaining recovery processes and fail the step rather than starting another install against uncertain package state.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Interrupted installs can block retries ✓ Resolved
Description
The retry cleanup kills only processes named apt-get, then runs dpkg --configure -a after a
fixed two-second wait and ignores its failure. If an interrupted install leaves a dpkg child
holding the lock, recovery can fail on that lock and the next browser-install attempt can encounter
it too.
Code

.github/workflows/ci.yml[R2078-2080]

+              sudo pkill -x apt-get || true
+              sleep 2
+              sudo dpkg --configure -a || true
Relevance

●●● Strong

Recent CI reliability reviews accept workflow recovery and retry-cleanup failures affecting
subsequent attempts.

PR-#3401
PR-#3394

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The timed Playwright dependency install runs in a child shell, while the new cleanup targets only
apt-get by executable name. Recovery follows two seconds later, discards its exit status, and then
proceeds to the next attempt; both composite actions repeat the sequence.

.github/workflows/ci.yml[2060-2071]
.github/workflows/ci.yml[2074-2083]
.github/actions/setup-ui-e2e/action.yml[57-68]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Killing `apt-get` alone may leave its package-install children running and holding locks when recovery and the next attempt start.

## Fix Focus Areas
- .github/workflows/ci.yml[2074-2081]
- .github/actions/setup-ui-e2e/action.yml[60-66]
- .github/actions/setup-lighthouse-chromium/action.yml[73-79]

## Recommended Fix
Track each attempt's process group and terminate and reap its remaining processes on timeout. Wait until package locks are released before running recovery or retrying; do not silently proceed when recovery fails.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context sources
✅ Compliance rules (platform): 9 rules
✅ Web pages:
  +7 more
✅ Cross-repo context — repo relationships
✅ REVIEW.md
Review mode: Auto: 🧠 Deep: Broad UI, CI, and test changes create multiple independent defect opportunities.

Grey Divider

Tip of the day
💡 Did you know, you can commit Qodo's fix in one click with committable suggestions (GitHub & GitLab)

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Previous reviews

Review updated until commit 1cc695c

Results up to commit c7c557e ⚖️ Balanced


🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)


Action required

No findings for this group


Remediation recommended

No findings for this group


Informational

No findings for this group


Resolved findings

1. Package recovery can stall the CI job ✓ Resolved
Description
The new sudo dpkg --configure -a runs outside the 180-second timeout that bounds each
browser-install attempt. If recovery itself stalls, the loop cannot retry or fail until the
enclosing job timeout expires; the same unbounded call is present in both Chromium setup actions.
Code

.github/workflows/ci.yml[2080]

+              sudo dpkg --configure -a || true
Relevance

●●● Strong

Recent reviews accepted timeout-boundary findings where unbounded CI work could prevent retries or
failure routing.

PR-#3401
PR-#3394

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The 180-second timeout wraps only the attempt shell; recovery executes synchronously afterward,
with no step-level bound. The release job's enclosing timeout is 45 minutes, so a stalled recovery
can consume the remainder of that job rather than reaching another attempt.

.github/workflows/ci.yml[2069-2084]
.github/workflows/ci.yml[1950-1951]
.github/actions/setup-lighthouse-chromium/action.yml[70-81]
.github/actions/setup-ui-e2e/action.yml[57-69]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The newly added package recovery runs without a timeout, so a stalled recovery prevents the bounded install loop from advancing.

## Fix Focus Areas
- .github/workflows/ci.yml[2077-2082]
- .github/actions/setup-ui-e2e/action.yml[62-67]
- .github/actions/setup-lighthouse-chromium/action.yml[75-80]

## Recommended Fix
Give package recovery its own timeout in all three locations. If it times out or fails, terminate remaining recovery processes and fail the step rather than starting another install against uncertain package state.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Interrupted installs can block retries ✓ Resolved
Description
The retry cleanup kills only processes named apt-get, then runs dpkg --configure -a after a
fixed two-second wait and ignores its failure. If an interrupted install leaves a dpkg child
holding the lock, recovery can fail on that lock and the next browser-install attempt can encounter
it too.
Code

.github/workflows/ci.yml[R2078-2080]

+              sudo pkill -x apt-get || true
+              sleep 2
+              sudo dpkg --configure -a || true
Relevance

●●● Strong

Recent CI reliability reviews accept workflow recovery and retry-cleanup failures affecting
subsequent attempts.

PR-#3401
PR-#3394

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The timed Playwright dependency install runs in a child shell, while the new cleanup targets only
apt-get by executable name. Recovery follows two seconds later, discards its exit status, and then
proceeds to the next attempt; both composite actions repeat the sequence.

.github/workflows/ci.yml[2060-2071]
.github/workflows/ci.yml[2074-2083]
.github/actions/setup-ui-e2e/action.yml[57-68]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Killing `apt-get` alone may leave its package-install children running and holding locks when recovery and the next attempt start.

## Fix Focus Areas
- .github/workflows/ci.yml[2074-2081]
- .github/actions/setup-ui-e2e/action.yml[60-66]
- .github/actions/setup-lighthouse-chromium/action.yml[73-79]

## Recommended Fix
Track each attempt's process group and terminate and reap its remaining processes on timeout. Wait until package locks are released before running recovery or retrying; do not silently proceed when recovery fails.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment thread .github/workflows/ci.yml Resolved
Comment thread .github/workflows/ci.yml Resolved
@qodo-code-review

Copy link
Copy Markdown
Contributor

Qodo Fixer

✅ Merged (0) · ☑ Fixed (0)

Process

  • No fixes were applied (no_fixes_applied)

Comment thread .github/workflows/ci.yml Resolved
@codeant-ai

codeant-ai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

CodeAnt PR Risk: Medium Risk

  • The PR needs attention before merging because a recorded browser-matrix run still had 26 failing WebKit tests after browser startup succeeded.
  • Rerun the matrix on the current main branch and group the accessibility, tools, and other suite failures by cause before treating the browser tests as healthy.

Assessed commit: 54f252492b41

…ned dpkg

Review follow-up: the recovery ran outside the 180 s attempt timeout, so a
stalled dpkg --configure -a could hold the loop to the job limit, and only
apt-get was stopped, so a dpkg child could keep the lock. Stop dpkg too and
give recovery its own 120 s bound. The contract test now also pins the
launch probe after the cache-hit/cold-cache branch closes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DCghuougzFFXRF3dQQEcYr

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitar has auto-approved this PR (configure)

@qodo-code-review

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit 54f2524

Copy link
Copy Markdown
Owner Author

CodSpeed Performance Analysis reports a -63.2% regression on 54f2524. It is not from this PR. The diff changes only CI workflow and action YAML, one contract test and a ledger inbox JSON file, and none of them are code the benchmarks (bench/clinical-core.bench.ts) execute. CodSpeed itself warns that the comparison crossed different runtime environments, and the previous commit on this branch reported "will not alter performance". No fix is needed here. I can't re-run or acknowledge the result from this session, so it's left for the CodSpeed dashboard.


Generated by Claude Code

@qodo-code-review

qodo-code-review Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

No code changes since the last review — review skipped

Qodo Logo

@gitar-bot

gitar-bot Bot commented Oct 12, 2026

Copy link
Copy Markdown
Contributor
Code Review ✅ Approved 1 closed / 1 findings

🟡 Medium risk · CI browser setup now kills apt-get/dpkg and reconfigures packages on retry, which could leave dependency state inconsistent and block subsequent installs.

Fixes WebKit browser setup in CI by adding a launch probe, set -e on cached-browser installs, and mirror rewriting for /etc/apt/apt-mirrors.txt. Stalled apt-get processes are stopped and interrupted dpkg installs finished between retries. The shared-actions gap where apt-get was killed without running dpkg --configure -a has been addressed. No open issues found.

Auto-approved: No blocking issues found.
Please see Auto-approve Docs for details on setting custom approval criteria.

✅ 1 closed
✅ Edge Case: Shared actions kill apt-get but skip the dpkg --configure -a recovery

📄 .github/actions/setup-ui-e2e/action.yml:60-61 📄 .github/actions/setup-lighthouse-chromium/action.yml:73-74
In setup-ui-e2e and setup-lighthouse-chromium, this commit now kills the leftover root apt-get with pkill between retries. Unlike ci.yml, these actions don't follow up with sudo dpkg --configure -a. If an attempt times out while apt is unpacking or configuring packages, killing apt-get (and its dpkg child) can leave dpkg half-finished. Every later install-deps/--with-deps then fails with "dpkg was interrupted, you must manually run 'sudo dpkg --configure -a'". That burns all three retries in required UI/Lighthouse gates. The fix is the same recovery ci.yml uses: a short sleep, then sudo dpkg --configure -a || true.

Review coverage

🤖 Auto-approval Approved

📋 Rules No rules evaluated

🧪 Functional validation Not enabled · Set up

Options

Auto-apply is off → Gitar will not commit updates to this branch.
Display: compact → Counting what did not apply, without listing it.

Comment with these commands to change the behavior for this request:

Auto-apply Compact
gitar auto-apply:on         
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants