Skip to content

CI: run the Firefox/Safari/phone tests alongside Chromium, and skip them on main when a draft run already passed the same tree - #3524

Merged
gitar-bot[bot] merged 5 commits into
mainfrom
claude/project-thread-fvnf7d
Oct 13, 2026
Merged

gitar-bot[bot] merged 5 commits into
mainfrom
claude/project-thread-fvnf7d

Conversation

@BigSimmo

@BigSimmo BigSimmo commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

User description

Requested by Josh · project thread

Summary

Before: the Firefox, Safari and phone browser tests (release-browser-matrix) waited for all three Chromium Production UI shards to finish before starting, although they only need the shared Playwright build. If any Chromium shard failed, the whole cross-browser matrix was skipped. And after every merge, main re-ran the whole matrix, even when the draft's full-suite run had just passed the identical tree.

After: the matrix starts as soon as the shared build is ready, in parallel with Production UI. Desktop Safari (WebKit) and Firefox split four ways instead of three. On a push to main, the matrix is skipped only when a green full-suite workflow_dispatch run on the merged PR head recorded testing the byte-identical tree within 24 hours, with every matrix leg green. Every test still runs somewhere, one worker, zero retries, same timeouts.

Measured (job timings read from GitHub):

  • Main run 38352161182: build ready at minute 4.1, matrix idle until 15.2, run ended 34.1. Slowest legs were WebKit 17.2 min and Firefox 13.4 min of tests.
  • Dispatch runs 38369056741 and 38370421833: one red Chromium shard each, matrix skipped entirely.
  • Expected: full runs about 20 to 23 min instead of 34 to 45; a main push whose draft already passed the full suite should skip the matrix and finish in roughly 15 min.

How:

  • Drop ui-critical from the matrix's needs/if. The Chromium leg's mockups-only path keys on ui_changed, because production Chromium is then proven by Production UI in the same run or by the merged PR's identical tree.
  • WebKit and Firefox leg counts 3 → 4.
  • scripts/ci-main-tree-proof.mjs gains a matrix group, proved only by a dispatch run under the same checks as the existing proof (same repo, same head, its own tested-tree record with event=workflow_dispatch equal to tree(HEAD), fresh, every leg green). The job's if adds tree_proven_matrix != 'true' inside its main-push clause only, so schedule, release branches and dispatch runs are unchanged.

Areas touched: Delivery and assurance

Verification

  • node scripts/ci-main-tree-proof.mjs --self-test: ci-main-tree-proof self-test passed. (new cases: red leg, missing legs, other tree, wrong event record, red or stale dispatch run, tree mismatch, dispatch events never skip their own matrix)
  • Every test file that reads ci.yml or the proof script: 690 passed, 2 failures in tests/test-runner-safety.test.ts (heavyweight lock) that fail identically on unmodified main in this container.
  • ESLint and Prettier on the changed files: clean.

Risk and rollout

  • Risk: more jobs run at once; on a red Chromium run the matrix spends runner minutes instead of being skipped. The matrix proof is fail-closed: any doubt runs the matrix on main as before.
  • Rollback: revert the PR.
  • Provider or production effects: None.

Notes

Not done: refresh the release shard timing tables (they under-predict WebKit by about 25%). That needs the release-ui-timings artifacts, which this container cannot download.

🤖 Generated with Claude Code

https://claude.ai/code/session_014qMDuRLipTaGrY6EyC89hm


CodeAnt-AI Description

Run cross-browser tests sooner and skip verified repeats on main

What Changed

  • Firefox and Safari tests now start alongside Chromium instead of waiting for its test shards, so cross-browser failures are reported in the same run even when a Chromium shard fails.
  • Firefox and desktop Safari tests split across four runners, shortening their test legs while keeping all tests.
  • Main skips the release browser matrix only when a recent successful full-suite run tested the identical tree; scheduled and manually dispatched runs still execute the matrix.

Impact

✅ Earlier Firefox and Safari test results
✅ Cross-browser failures reported with Chromium failures
✅ Shorter main-branch CI after a verified full-suite run

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

…ktop Safari and Firefox four ways

The release browser matrix waited for all three Production UI Chromium shards
before starting, though it only reads the shared Playwright build. Main run
38352161182 had the build ready at minute 4.1 and the matrix idle until 15.2,
ending at 34.1. On dispatch runs a single red Chromium shard skipped the whole
matrix, so cross-browser failures surfaced only one full round later.

The matrix now starts with Production UI. When UI changed it keeps its
mockups-only Chromium path, since Production UI in the same run (or the merged
PR's identical tree) proves production Chromium and still fails the run if red.
Desktop WebKit (17.2/13.0/14.2 min) and Firefox (13.4/9.0/8.7) become the
slowest legs once parallel, so both split four ways. No test is skipped.

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

coderabbitai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

Next included review available in 7 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 8 included reviews currently available. Your 8 included PR review attempts over the past 7 days set your current allowance at 8 reviews per hour.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Team
  • Run ID: 59b03a83-a20d-4b02-9dff-0ea7d660934d
📥 Commits

Reviewing files that changed from the base of the PR and between 65860e7 and 16bb3a0.

📒 Files selected for processing (6)
  • .github/workflows/ci.yml
  • docs/ci-operations.md
  • scripts/ci-main-tree-proof.mjs
  • tests/ci-browser-matrix-coverage.test.ts
  • tests/ci-main-tree-proof.test.ts
  • tests/playwright-release-shards.test.ts
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@supabase

supabase Bot commented Oct 13, 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 ↗︎.

@codeant-ai

codeant-ai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

🏁 CodeAnt Quality Gate Results

Commit: 16bb3a08
Scan Time: 2026-10-13 10:58:18 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

@codspeed

codspeed Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Merging this PR will degrade performance by 59.58%

⚠️ 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.

❌ 1 regressed benchmark
✅ 7 untouched benchmarks

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Benchmark BASE HEAD Efficiency
❌ ⚠️ medication-entities: medicationEntityMatchesInText 4.7 ms 11.6 ms -59.58%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing claude/project-thread-fvnf7d (16bb3a0) with main (65860e7)

Open in CodSpeed

gitar-bot[bot]
gitar-bot Bot previously approved these changes Oct 13, 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 13, 2026 09:30

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

@codeant-ai

codeant-ai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Incremental review completed 7af1daa Oct 13, 2026 · 10:32 10:32
✅ Reviewed your PR b9d51ba Oct 13, 2026 · 09:30 09:34

@codeant-ai

codeant-ai Bot commented Oct 13, 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

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 13, 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-13T09:33:36.200700Z 68c8d19 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.

@claude

claude Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Claude encountered an error after 2s —— View job


I'll analyze this and get back to you.

@codeant-ai codeant-ai Bot added the size:M This PR changes 30-99 lines, ignoring generated files label Oct 13, 2026
@gitar-bot
gitar-bot Bot enabled auto-merge (squash) October 13, 2026 09:30
@qodo-code-review

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Run cross-browser CI alongside Production UI

⚙️ Configuration changes 🧪 Tests 🕐 20-40 Minutes

Grey Divider

AI Description

• Start the cross-browser matrix after the shared build, without waiting for Chromium results.
• Split desktop Firefox and WebKit into four duration-balanced shards to shorten the slowest legs.
• Update workflow contracts to verify parallel scheduling, project coverage, and shard balance.
Diagram

graph TD
  C["Change scope"] --> B["Playwright build"] --> M["Browser matrix"] --> S["Duration shards"]
  B --> U["Production UI"]
  T["Static checks"] --> M
  T --> U
Loading
High-Level Assessment

Directly removing the unnecessary Production UI dependency is the best fit: the matrix consumes the shared build, while Production UI retains its own failure verdict. Keeping the dependency would preserve the delay and skip behavior; repeating production Chromium in the matrix would add redundant work.

Files changed (4) +47 / -28

Tests (3) +17 / -13
ci-browser-matrix-coverage.test.tsAssert the expanded browser matrix +5/-5

Assert the expanded browser matrix

• Updates the expected matrix size to 23 legs and verifies four partitions each for desktop Firefox and WebKit. Clarifies that Production UI proves production Chromium independently.

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

ci-main-tree-proof.test.tsVerify independent matrix scheduling and UI scope +9/-5

Verify independent matrix scheduling and UI scope

• Asserts that the matrix neither depends on nor waits for Production UI. Checks that UI-changed scope selects its mockups-only Chromium path while Production UI remains gated on UI changes.

tests/ci-main-tree-proof.test.ts

playwright-release-shards.test.tsCheck four-way desktop shard balance +3/-3

Check four-way desktop shard balance

• Updates the committed shard-count expectations and measured maximum-duration bounds for Firefox and desktop WebKit.

tests/playwright-release-shards.test.ts

Other (1) +30 / -15
ci.ymlRun the browser matrix in parallel with Production UI +30/-15

Run the browser matrix in parallel with Production UI

• Removes Production UI from the matrix's dependencies and conditions so its failures no longer prevent cross-browser results. Uses the UI-changed scope to select the mockups-only Chromium path, and increases desktop Firefox and WebKit from three shards to four each.

.github/workflows/ci.yml

@qodo-code-review

Copy link
Copy Markdown
Contributor

Qodo Fixer

No findings are available for this PR yet. Findings appear here once Qodo has reviewed the PR.

@qodo-code-review

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

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (1) 📘 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

1. Skipped matrix's proving run is unlinked or mislabeled 🟡 Low 🐞 Bug ◔ Observability ⭐ New
Description
evaluate returns runUrl: prOutcome.runUrl || matrixOutcome.runUrl, and writeOutputs prints
that one URL under "Proving PR run". If both proofs hold, the step summary never links the dispatch
run that justified skipping the release matrix. If only the matrix proof holds, the dispatch run
shows up labelled as the PR run, so whoever audits a skipped Firefox/WebKit matrix on main has to
dig the evidence out of the API by hand.
Code

scripts/ci-main-tree-proof.mjs[R274-278]

+  return {
+    proof,
+    reason: `PR #${pull.number}: ${prOutcome.reason}; release matrix: ${matrixOutcome.reason}`,
+    runUrl: prOutcome.runUrl || matrixOutcome.runUrl || "",
+  };
Relevance

●● Moderate

Traceability concern is plausible, but historical evidence supports observability improvements
without directly establishing this URL contract.

PR-#2733
PR-#2290

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
Only one URL comes out of evaluate, and the summary labels it as the PR run. The pr-required notice
also lists coverage, production-ui and lighthouse only, so nothing in the run says the matrix was
skipped on a proof.

scripts/ci-main-tree-proof.mjs[463-490]
.github/workflows/ci.yml[1901-1909]

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

## Issue description
When main skips release-browser-matrix on a dispatch-run proof, the step summary either leaves out the dispatch run URL (it uses the PR run URL instead) or shows it under the label "Proving PR run".

## Fix Focus Areas
- scripts/ci-main-tree-proof.mjs[274-278]
- scripts/ci-main-tree-proof.mjs[463-490]
- .github/workflows/ci.yml[1901-1909]

## Recommended Fix
Return `runUrl` (PR run) and `matrixRunUrl` (dispatch run) as separate values from `evaluate`. Write a `matrix_proof_run_url` output and add a separate "Proving dispatch run" line to the step summary. Optionally add `release-browser-matrix` to the pr-required "Proven on the identical tree" notice when `tree_proven_matrix` is true.

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

Dismiss ↗ | View ↗


Grey Divider


Resolved findings

1. Missing browser legs go untested ✗ Dismissed
Description
classifyMatrixProof treats any nonempty set of successful matrix jobs as proof that the entire
release matrix passed. If a dispatch run reports only some green legs, tree_proven_matrix becomes
true and the main push skips the remaining browser shards.
Code

scripts/ci-main-tree-proof.mjs[R123-124]

+    const legs = list.filter((job) => pattern.test(String(job?.name ?? "")));
+    return legs.length > 0 && legs.every((job) => job?.status === "completed" && job?.conclusion === "success");
Relevance

●●● Strong

Partial matrix results can falsely prove all legs; accepted history favors fail-closed coverage
assertions.

PR-#2843
PR-#2173

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The review and testing-review skills require inspection of realistic failure paths and coverage
assertions. The classifier requires only one matching successful job, while the workflow defines 23
legs; the new positive self-test passes with just two matrix legs.

scripts/ci-main-tree-proof.mjs[114-126]
.github/workflows/ci.yml[2010-2043]
scripts/ci-main-tree-proof.mjs[683-712]
.github/workflows/ci.yml[1922-1930]
Skill: review
Skill: testing-review

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

## Issue description
A partial green dispatch matrix is accepted as proof of the complete browser matrix, allowing main to skip untested shards.

## Fix Focus Areas
- scripts/ci-main-tree-proof.mjs[114-126]
- scripts/ci-main-tree-proof.mjs[683-712]
- tests/ci-main-tree-proof.test.ts[25-26]

## Recommended Fix
Match the dispatch job list against every expected project and shard from the workflow configuration, requiring each leg exactly once with a successful conclusion. Replace the two-leg positive fixture with a complete matrix and add a partial-but-green negative case.

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


2. Dispatch lookup errors rerun proven jobs ✗ Dismissed
Description
evaluate() awaits the new workflow_dispatch lookup without isolating its errors from the PR
proof it has already obtained. If that lookup receives a non-successful API response or times out,
the top-level handler replaces the entire result with NONE, so coverage, Production UI and
Lighthouse rerun even when the PR run proved them on the identical tree.
Code

scripts/ci-main-tree-proof.mjs[261]

+  const matrixOutcome = await provenRun({
Relevance

●●● Strong

Recent history accepts isolating API failures instead of allowing unavailable CI state to trigger
misleading reruns.

PR-#2180
PR-#2733

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The API helper throws on non-OK responses and has a 20-second timeout. The added dispatch lookup
runs before evaluate() constructs the combined proof; its exception reaches the top-level handler,
which substitutes NONE for every proof group.

scripts/ci-main-tree-proof.mjs[196-211]
scripts/ci-main-tree-proof.mjs[260-278]
scripts/ci-main-tree-proof.mjs[775-789]

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

## Issue description
An error while fetching optional dispatch matrix proof discards valid PR proof for coverage, Production UI and Lighthouse.

## Fix Focus Areas
- scripts/ci-main-tree-proof.mjs[260-278]

## Recommended Fix
Catch failures from the dispatch-only lookup, set matrix proof to false, and retain the already-established PR proof. Add a test where the PR lookup succeeds but the dispatch lookup throws.

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


3. Main UI failures reach owners later ✗ Dismissed
Description
Removing ui-critical from release-browser-matrix.needs lets the matrix continue after Production
UI fails, while main-failure-routing still waits for the entire matrix before updating its pinned
issue. On a UI-changing main push with a red Chromium shard, notification can wait for the slowest
cross-browser leg or its 45-minute timeout; previously that failure skipped the matrix.
Code

.github/workflows/ci.yml[1940]

+    needs: [changes, static-pr, build, ui-playwright-build]
Relevance

●● Moderate

Valid observability regression, but fixing requires architectural routing changes beyond this
parallelization-focused PR.

PR-#3394

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The new dependency list excludes Production UI; the matrix has a 45-minute timeout. The required
aggregate treats an unproven Production UI failure as a failure, but the sole main-status routing
job depends on both that aggregate and the browser matrix, so it cannot notify until both finish.

.github/workflows/ci.yml[1929-1940]
.github/workflows/ci.yml[1954-1956]
.github/workflows/ci.yml[1776-1795]
.github/workflows/ci.yml[2209-2230]

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

## Issue description
A Production UI failure on main no longer skips the browser matrix, but the only main-failure alert waits for that matrix to finish.

## Fix Focus Areas
- .github/workflows/ci.yml[1932-1940]
- .github/workflows/ci.yml[2209-2218]

## Recommended Fix
Keep the matrix parallel, but add an early main-push notification when `pr-required` fails, without waiting for the matrix. Retain the terminal routing job to update the same pinned issue with the complete cross-browser verdict and reconcile green runs.

ⓘ 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
✅ Cross-repo context — repo relationships
✅ REVIEW.md
Review mode: Auto: 🧠 Deep: Multiple independent behavioral changes span CI, authorization visibility, and RAG evidence logic.

Grey Divider

Tip of the day
💡 Did you know, you can turn these tips off under Display > Comment parts

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Previous reviews

Review updated until commit 16bb3a0

Results up to commit 68c8d19 ⚖️ 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. Main UI failures reach owners later ✗ Dismissed
Description
Removing ui-critical from release-browser-matrix.needs lets the matrix continue after Production
UI fails, while main-failure-routing still waits for the entire matrix before updating its pinned
issue. On a UI-changing main push with a red Chromium shard, notification can wait for the slowest
cross-browser leg or its 45-minute timeout; previously that failure skipped the matrix.
Code

.github/workflows/ci.yml[1940]

+    needs: [changes, static-pr, build, ui-playwright-build]
Relevance

●● Moderate

Valid observability regression, but fixing requires architectural routing changes beyond this
parallelization-focused PR.

PR-#3394

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The new dependency list excludes Production UI; the matrix has a 45-minute timeout. The required
aggregate treats an unproven Production UI failure as a failure, but the sole main-status routing
job depends on both that aggregate and the browser matrix, so it cannot notify until both finish.

.github/workflows/ci.yml[1929-1940]
.github/workflows/ci.yml[1954-1956]
.github/workflows/ci.yml[1776-1795]
.github/workflows/ci.yml[2209-2230]

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

## Issue description
A Production UI failure on main no longer skips the browser matrix, but the only main-failure alert waits for that matrix to finish.

## Fix Focus Areas
- .github/workflows/ci.yml[1932-1940]
- .github/workflows/ci.yml[2209-2218]

## Recommended Fix
Keep the matrix parallel, but add an early main-push notification when `pr-required` fails, without waiting for the matrix. Retain the terminal routing job to update the same pinned issue with the complete cross-browser verdict and reconcile green runs.

ⓘ 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
@codeant-ai

codeant-ai Bot commented Oct 13, 2026

Copy link
Copy Markdown

CodeAnt Nitpicks

1 code suggestion

1. On a main push with tree_proven_ui=true, ui-critical is skipped; Chromium’s verdict comes from the earlier PR run, not this same run.

Comment mismatch · tests/ci-browser-matrix-coverage.test.ts:135-136

@codeant-ai

codeant-ai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

CodeAnt PR Risk: Medium Risk

  • The PR needs attention before merging because main can skip the release matrix based on a dispatch proof that does not verify every expected leg.
  • classifyMatrixProof accepts any nonempty set of successful matrix jobs, and its tests prove the matrix with only two sample legs.

Assessed commit: 7af1daabc322

…ready passed the identical tree

The Firefox/WebKit/iPhone matrix never runs on pull_request events, so main
always re-ran it after every merge (about 20 to 30 minutes holding Railway's
Wait for CI), even when the draft's full-suite dispatch run had just passed
the byte-identical tree. The main tree proof now also looks for the newest
green workflow_dispatch run of ci.yml on the merged PR head, recorded by its
own Change scope as testing this exact tree within 24 hours, with every
release-browser-matrix leg green. Only then does main skip the matrix. The
schedule, release branches and dispatch runs never take this path.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014qMDuRLipTaGrY6EyC89hm
@BigSimmo BigSimmo changed the title CI: run the Firefox/Safari/phone tests alongside Chromium instead of after it CI: run the Firefox/Safari/phone tests alongside Chromium, and skip them on main when a draft run already passed the same tree Oct 13, 2026
@codeant-ai codeant-ai Bot added size:L This PR changes 100-499 lines, ignoring generated files and removed size:M This PR changes 30-99 lines, ignoring generated files labels Oct 13, 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 scripts/ci-main-tree-proof.mjs Resolved
Comment thread scripts/ci-main-tree-proof.mjs Resolved
@qodo-code-review

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit 7af1daa

Copy link
Copy Markdown
Owner Author

On the "partial green matrix proves the whole matrix" finding (Qodo #1, CodeAnt risk note): not fixing, because no realistic path reaches it.

  • The proving dispatch run must have the same tree as main (tested-tree record checked against mainTree), so its ci.yml and its matrix include list are identical to main's. It cannot have a different set of legs.
  • The run itself must have conclusion success, so no leg can be failed or cancelled.
  • A skipped or missing leg cannot produce green proof. All matching jobs must be completed/success. A job-level skip reports a single unsuffixed release-browser-matrix job, which the ^release-browser-matrix \(.+\)$ pattern does not match, so the proof is false.
  • A truncated job listing fails closed (total_count > jobs.length).

The two-leg self-test fixture exercises the classifier, not the workflow's leg count. Hard-coding 23 legs would add a second copy of the matrix to keep in sync, for no case the tree match doesn't already cover.


Generated by Claude Code

@qodo-code-review

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

Copy link
Copy Markdown
Contributor

No code changes since the last review — review skipped

Qodo Logo

@gitar-bot

gitar-bot Bot commented Oct 13, 2026

Copy link
Copy Markdown
Contributor
Code Review ✅ Approved

🟡 Medium risk · Changes CI gating to skip the release browser matrix after dispatch-run tree proof; a proof-classification error could leave regressions undetected on main.

Restructures CI so the Firefox, Safari and phone browser matrix starts once the shared Playwright build is ready, running in parallel with Production UI, and splits desktop WebKit and Firefox four ways. On main pushes, the matrix is skipped only when a green full-suite dispatch run on the same tree passed within 24 hours. No issues found.

Verification

Rules No rules evaluated

Functional validation Not enabled

Set up

Auto-approval Approved

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

Copy link
Copy Markdown
Owner Author

CodSpeed "Performance Regression" on 16bb3a0 is not this PR's. This PR changes only CI config, CI scripts and their tests, and none of the benchmarked code (bench/clinical-core.bench.ts targets). The same benchmarks reported +29% on the previous head. CodSpeed itself flags these benchmarks as dominated by uninstrumented system calls, so the swing is measurement noise from main moving under the branch. It is not a required check, and I have no means to re-run it from here.


Generated by Claude Code

@gitar-bot
gitar-bot Bot merged commit 6738364 into main Oct 13, 2026
38 of 39 checks passed
@gitar-bot
gitar-bot Bot deleted the claude/project-thread-fvnf7d branch October 13, 2026 11:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🔴 Large blast radius size:L This PR changes 100-499 lines, ignoring generated files 🕐 20-40 Minutes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants