Skip to content

CI follow-ups: keep PR proof when the dispatch lookup fails, link the matrix proving run, steady two browser clicks - #3532

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

gitar-bot[bot] merged 15 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: when GitHub failed to answer the new workflow_dispatch lookup from #3524, main threw away the PR run's proof as well, so coverage, Production UI and Lighthouse ran again. The summary showed one URL labelled "Proving PR run", even when that URL was the dispatch run. The release matrix on main also kept failing in two places:

  • Firefox ui-my-day-calendar.spec.ts:80 failed on main runs 38381605921, 38385983110 and 38389360465. It dropped the chosen-day click once and the Today click once.
  • iPad WebKit ui-route-coverage.spec.ts:467 dropped the DSM Compare remove click once, on run 38389360465.

After: a failed dispatch lookup withholds only the matrix proof. The dispatch run that proves the matrix gets its own matrix_proof_run_url output and its own summary line. PR required lists "Firefox/WebKit release matrix" among the jobs proven on the identical tree. It uses a plain label because the routing contract forbids naming the matrix job inside pr-required. The two browser tests repeat a click that left no trace, and they still assert the full outcome:

  • the chosen day is pressed and its shift is shown;
  • October is shown after Today is clicked;
  • the URL holds exactly the remaining id.

How:

  • provenRun(...) for workflow_dispatch is wrapped in .catch, which returns jobs: null.
  • evaluate() returns runUrl (the PR run) and matrixRunUrl (the dispatch run) separately.
  • The specs wrap click plus outcome in expect(...).toPass(). The calendar helper caps the retry at 20 s, so two calls fit the 60 s test timeout. It clicks again only while the control is still visible, so a Today click that landed but rendered slowly is not repeated. Repeating a click is otherwise harmless because each action is idempotent.

The root cause of the dropped clicks is not confirmed. The traces are in run artifacts this container cannot download, and Firefox and WebKit are not installed locally.

Areas touched: Delivery and assurance

Verification

  • node scripts/ci-main-tree-proof.mjs --self-test: ci-main-tree-proof self-test passed. New cases cover a throwing dispatch lookup, which keeps the PR proof and leaves matrix false, and the dispatch URL being reported separately.
  • npx vitest run tests/ci-main-tree-proof.test.ts tests/ci-browser-matrix-coverage.test.ts: 31 passed.
  • npx vitest run tests/ci-cache-safety.test.ts: 81 passed.
  • npx vitest run tests/ci-main-failure-routing.test.ts: passed, as part of a 174-test run of the CI contract files.
  • npm run typecheck: passed.
  • npx eslint scripts/ci-main-tree-proof.mjs tests/ui-my-day-calendar.spec.ts tests/ui-route-coverage.spec.ts tests/ci-cache-safety.test.ts: no output (clean).
  • npx prettier --check on the changed files: "All matched files use Prettier code style!"
  • Latest commit 91f5d7d (calendar visibility guard): npx prettier --check tests/ui-my-day-calendar.spec.ts printed "All matched files use Prettier code style!"; npx eslint tests/ui-my-day-calendar.spec.ts printed nothing (clean); npx tsc --noEmit -p . printed nothing (passed).
  • Hosted CI on 836101a: PR required and every selected job green, including Unit coverage, Production UI (1-3) and Production UI critical. Hosted CI on the latest head is the merge gate.
  • Firefox/WebKit legs: not run locally, because those browsers are not installed in this container. Main's post-merge matrix is their check.

Risk and rollout

  • Risk: low. The test changes can only repeat a click whose outcome is then asserted. The proof change only stops an API error from discarding valid proof.
  • Rollback: revert the PR.
  • Provider or production effects: none.

🤖 Generated with Claude Code

https://claude.ai/code/session_014qMDuRLipTaGrY6EyC89hm

Generated by Claude Code


CodeAnt-AI Description

Retry browser clicks when tests show no response

What Changed

  • Calendar tests retry day selection or Today when the expected selection or month change does not appear.
  • Comparison tests retry removal when the URL does not update, while still checking it contains exactly the remaining diagnosis.

Impact

✅ Fewer flaky Firefox calendar test failures
✅ Fewer flaky iPad comparison test failures
✅ Click retries still verify the expected result

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

… matrix proving run, steady two browser clicks

A failed workflow_dispatch lookup no longer throws away the PR run's proof: only
the release matrix proof is withheld, so main still skips coverage, Production
UI and Lighthouse it already proved. The dispatch run that proves the matrix gets
its own matrix_proof_run_url output and summary line, and PR required lists the
matrix among jobs proven on the identical tree.

Firefox dropped a My Day calendar click on three main runs in a row (the chosen
day once, Today once), and iPad WebKit dropped the DSM Compare remove click once.
Both now repeat a click that left no trace while still asserting the full outcome.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014qMDuRLipTaGrY6EyC89hm
@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 ↗︎.

@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 8bff3d3 Oct 13, 2026 · 22:34 22:34
✅ Incremental review completed 79a5080 Oct 13, 2026 · 16:55 16:55
✅ Incremental review completed dec8626 Oct 13, 2026 · 15:36 15:36
✅ Incremental review completed 1e8ed6c Oct 13, 2026 · 14:35 14:36
✅ Incremental review completed b5a267a Oct 13, 2026 · 13:33 13: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

@coderabbitai

coderabbitai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Team
  • Run ID: 14b3af6e-a59d-4bb4-b760-24fa00f88b19
📥 Commits

Reviewing files that changed from the base of the PR and between a3b9021 and d0fce42.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Team
  • Run ID: 81f07631-09cb-4fa6-89b2-6e13c9ccd378
📥 Commits

Reviewing files that changed from the base of the PR and between 91f5d7d and dec8626.

📒 Files selected for processing (1)
  • scripts/ci-main-tree-proof.mjs
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

Included review availability: This review used your included allowance. 0 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 6 reviews per hour.

Summary by CodeRabbit

  • Chores
    • CI checks now recognize Firefox and WebKit release-matrix proof when evaluating identical-tree results. If the release-matrix lookup fails, other available proofs remain usable.
  • Tests
    • Calendar and diagnosis-comparison checks now retry interactions and verify the expected result, reducing failures from transient delays.

Walkthrough

The CI proof script reports release-matrix proof separately from PR proofs and preserves PR proofs when dispatch lookup fails. The aggregate job reports the matrix when proven. Two UI tests now retry interactions and their outcome checks.

Changes

CI proof reporting

Layer / File(s) Summary
Proof lookup and reporting
scripts/ci-main-tree-proof.mjs
The script keeps the PR proof URL separate from the dispatch proof URL. A failed dispatch lookup no longer prevents PR proofs from being returned. Output and step summaries include the dispatch URL when the matrix is proven.
Aggregate matrix reporting
.github/workflows/ci.yml, tests/ci-cache-safety.test.ts
The aggregate job receives the matrix proof flag and includes the Firefox/WebKit release matrix in its notice when the flag is true. The aggregate test covers this case.

UI test retries

Layer / File(s) Summary
Retry calendar and diagnosis interactions
tests/ui-my-day-calendar.spec.ts, tests/ui-route-coverage.spec.ts
The calendar test retries date selection and return-to-today checks. The route-coverage test retries diagnosis removal and checks for the expected URL.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~15 minutes

Merge Risk: ⚪ Minimal · up to dec86

PR proof remains available when matrix lookup fails, and the browser tests retry safely while checking the expected results. No actionable merge-blocking risk remains.

Caution

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

  • Ignore

Failed Failed checks (1 error, 1 warning)

Check name Status Explanation Resolution
Verification Claims Error The generated objectives summary still contains non-specific verification claims: “ESLint on the listed changed files was clean” and “Prettier reported all matched files use the expected style.” Neith… Update the generated objectives summary and any other generated notes to state the exact check and result, for example: “Ran `npx eslint scripts/ci-main-tree-proof.mjs tests/ui-my-day-calendar.spec.ts tests/ui-route-coverage.spec.ts tests/c…
Docstring Coverage Warning Docstring coverage is 37.50% which is insufficient. The required threshold is 70.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 8 functions across 4 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks (9 passed)
Check name Status Explanation
Title check Passed The title clearly summarizes the main changes: preserving PR proof, linking the matrix run, and stabilizing browser clicks.
Description check Passed The description includes the required Summary, Verification, and Risk and rollout sections with detailed change context and verification results. The optional Notes section is omitted, but the descrip…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Generated And Sensitive Files Passed The pull request changes only an existing workflow, source script, and test files. No sensitive or generated artifact paths were added. The only added URL is the test fixture `https://example.test/run…
Risky Git Or Deployment Actions Passed The pull request does not introduce instructions or actions for force-push, hard reset, destructive clean, branch deletion, rebasing shared branches, production data mutation, or deployment without co…
Supabase Project And Schema Safety Passed The pull request changes only CI proof handling and browser tests. The changed-file diff contains no Supabase project references, schema migrations, data migrations, RLS changes, policy changes, or pr…
Runtime And Package Manager Integrity Passed The pull request does not change package-manager or runtime configuration. The changed-file inventory contains no package.json, package-lock.json, .npmrc, .nvmrc, or .node-version changes. The only wo…
Api Route Failure Handling Passed No failure condition is introduced. The GitHub API integration uses a 20-second timeout and throws on non-OK responses. The executable catches proof errors and writes all-false outputs, which forces t…
Full details: Verification Claims

Explanation

The generated objectives summary still contains non-specific verification claims: “ESLint on the listed changed files was clean” and “Prettier reported all matched files use the expected style.” Neither states the exact command or an explicit command/result form. The authored PR description does provide exact commands, but this check also covers generated summaries. The repository confirms distinct lint and format:check scripts, so the summary cannot be treated as naming those checks implicitly.

Resolution

Update the generated objectives summary and any other generated notes to state the exact check and result, for example: “Ran npx eslint scripts/ci-main-tree-proof.mjs tests/ui-my-day-calendar.spec.ts tests/ui-route-coverage.spec.ts tests/ci-cache-safety.test.ts: passed” and “Ran npx prettier --check &lt;changed files&gt;: passed.” If a check was not run, state “Not run: <reason>.”

✨ Finishing Touches
✨ Simplify code
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@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-13T12:10:20.177749Z 342815c PR opened
ℹ️ 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
@codeant-ai

codeant-ai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

🏁 CodeAnt Quality Gate Results

Commit: d0fce420
Scan Time: 2026-10-13 23:10:29 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 No IAC issues

View Full Results

@qodo-code-review

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Preserve PR tree proof on dispatch errors and stabilize browser clicks

🐞 Bug fix 🧪 Tests ✨ Enhancement 🕐 20-40 Minutes

Grey Divider

AI Description

• Preserve PR job proof when the separate release-matrix dispatch lookup fails.
• Link PR and matrix proving runs separately, and report proven matrix jobs.
• Retry unregistered calendar and DSM Compare clicks while asserting their outcomes.
Diagram

graph TD
  A["Main push"] --> B["Proof evaluator"] --> C["PR run lookup"] --> E["Proof outputs"] --> G["Heavy CI jobs"]
  B --> D["Dispatch lookup"] --> E
  E --> F["Run summary"]
  E --> H["Browser matrix"]
Loading
High-Level Assessment

Keep the targeted dispatch-only error handling: it preserves independently verified PR proof while failing closed for the matrix. A catch around the entire evaluation would discard valid proof, and broader retry infrastructure is not warranted for these specific idempotent browser actions.

Files changed (4) +52 / -11

Enhancement (1) +2 / -0
ci.ymlReport release-matrix proof in PR required +2/-0

Report release-matrix proof in PR required

• Passes the matrix proof output into the PR-required job and includes release-browser-matrix in its identical-tree proof notice when applicable.

.github/workflows/ci.yml

Bug fix (1) +25 / -5
ci-main-tree-proof.mjsKeep PR proof independent of dispatch lookup +25/-5

Keep PR proof independent of dispatch lookup

• Treats a failed dispatch lookup as missing matrix proof without discarding valid PR proof. Separates PR and matrix proving-run URLs in outputs and the summary, with self-tests for both behaviors.

scripts/ci-main-tree-proof.mjs

Tests (2) +25 / -6
ui-my-day-calendar.spec.tsRetry calendar clicks that leave no visible result +18/-4

Retry calendar clicks that leave no visible result

• Retries the chosen-day and Today clicks with Playwright polling when their expected state does not appear. The test still verifies the selected day, its shift, and the return to October.

tests/ui-my-day-calendar.spec.ts

ui-route-coverage.spec.tsRetry an unregistered DSM Compare removal +7/-2

Retry an unregistered DSM Compare removal

• Retries the remove click while its button remains visible, then requires the URL to contain exactly the remaining diagnosis ID. Existing compact-layout assertions remain in place.

tests/ui-route-coverage.spec.ts

@codspeed

codspeed Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Merging this PR will degrade performance by 58.84%

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

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

⚡ 1 improved benchmark
❌ 1 regressed benchmark
✅ 6 untouched benchmarks

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Benchmark BASE HEAD Efficiency
❌ ⚠️ medication-entities: medicationEntityMatchesInText 4.3 ms 29.4 ms -85.32%
⚡ ⚠️ catalog-search: rankCatalogRecords 400 records 179.9 ms 156 ms +15.37%

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 (d0fce42) with main (4e63d57)

Open in CodSpeed

@gitar-bot
gitar-bot Bot enabled auto-merge (squash) October 13, 2026 12:08
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)

@qodo-code-review

qodo-code-review Bot commented Oct 13, 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. A slow Today click fails the test anyway ✓ Resolved
Description
clickUntil clicks control again on every toPass attempt. The Today button is removed once
October is shown (the test then asserts toHaveCount(0)), so if the first click lands but the
October heading takes longer than its 5 s check, every later attempt waits 5 s on a missing button,
throws before it checks the outcome again, and the test fails at the 20 s cap even though the
calendar is already in the right state. Before this change, the plain expectMonth call simply kept
waiting for the heading.
Code

tests/ui-my-day-calendar.spec.ts[78]

+  }).toPass({ timeout: 20_000, intervals: [1_000, 2_000, 4_000] });
Relevance

●●● Strong

Recent accepted precedent requires guarding retry actions against controls changing state or
disappearing.

PR-#3502

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The helper clicks again with no check that the control still exists. The Today control is expected
to disappear after a successful click. The DSM spec in the same PR guards its retry with
isVisible(), but the calendar helper has no such guard.

tests/ui-my-day-calendar.spec.ts[74-79]
tests/ui-my-day-calendar.spec.ts[123-127]
tests/ui-route-coverage.spec.ts[506-509]

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

## Issue description
`clickUntil` clicks the control again on every retry. The Today control disappears after a successful click, so a first click that worked but rendered slowly turns into repeated 5 s click timeouts, and the test fails.

## Fix Focus Areas
- tests/ui-my-day-calendar.spec.ts[74-79]

## Recommended Fix
Inside the `toPass` callback, click only when the control is still visible, the same way the DSM spec does: `if (await control.isVisible()) await control.click({ timeout: 5_000 });` then `await outcome();`. Keep the 20 s cap.

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


2. Matrix proof test ignores failure ✓ Resolved
Description
The new aggregate test checks only runAggregate(...).output after enabling TREE_PROVEN_MATRIX,
without asserting that the aggregate exits successfully. A regression that prints the proof notice
but later returns nonzero would therefore remain green in this test while the required-check
workflow still fails.
Code

tests/ci-cache-safety.test.ts[R787-795]

+    expect(
+      runAggregate({
+        ...heavyMainPush,
+        TREE_PROVEN_COVERAGE: "true",
+        TREE_PROVEN_UI: "true",
+        TREE_PROVEN_LIGHTHOUSE: "true",
+        TREE_PROVEN_MATRIX: "true",
+      }).output,
+    ).toContain("lighthouse-budget Firefox/WebKit release matrix");
Relevance

●●● Strong

Recent precedents accept strengthening tests against vacuous output-only assertions; assert the
aggregate command exits successfully.

PR-#3487
PR-#2417

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The changed test invokes the aggregate with matrix proof enabled but asserts only its output. The
testing-review skill requires regression tests to provide meaningful behavioral verification, and
this assertion does not verify the command's success status.

tests/ci-cache-safety.test.ts[787-795]
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
The matrix-proof regression test only checks that the notice contains the matrix label, so it can pass even if the aggregate script exits unsuccessfully after printing that notice.

### Fix Focus Areas
- tests/ci-cache-safety.test.ts[787-795]

### Recommended Fix
Store the `runAggregate(...)` result in a variable, assert `status` is `0`, and then assert the output contains `lighthouse-budget Firefox/WebKit release matrix`. Keep the existing proof inputs so the test verifies both successful aggregation and correct notice text.

ⓘ 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 mode: Auto: ⚖️ Balanced
✅ Fix-loop round: fix loop

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 d0fce42

Results up to commit d31629c 🚀 Fast


🐞 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. Matrix proof test ignores failure ✓ Resolved
Description
The new aggregate test checks only runAggregate(...).output after enabling TREE_PROVEN_MATRIX,
without asserting that the aggregate exits successfully. A regression that prints the proof notice
but later returns nonzero would therefore remain green in this test while the required-check
workflow still fails.
Code

tests/ci-cache-safety.test.ts[R787-795]

+    expect(
+      runAggregate({
+        ...heavyMainPush,
+        TREE_PROVEN_COVERAGE: "true",
+        TREE_PROVEN_UI: "true",
+        TREE_PROVEN_LIGHTHOUSE: "true",
+        TREE_PROVEN_MATRIX: "true",
+      }).output,
+    ).toContain("lighthouse-budget Firefox/WebKit release matrix");
Relevance

●●● Strong

Recent precedents accept strengthening tests against vacuous output-only assertions; assert the
aggregate command exits successfully.

PR-#3487
PR-#2417

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The changed test invokes the aggregate with matrix proof enabled but asserts only its output. The
testing-review skill requires regression tests to provide meaningful behavioral verification, and
this assertion does not verify the command's success status.

tests/ci-cache-safety.test.ts[787-795]
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
The matrix-proof regression test only checks that the notice contains the matrix label, so it can pass even if the aggregate script exits unsuccessfully after printing that notice.

### Fix Focus Areas
- tests/ci-cache-safety.test.ts[787-795]

### Recommended Fix
Store the `runAggregate(...)` result in a variable, assert `status` is `0`, and then assert the output contains `lighthouse-budget Firefox/WebKit release matrix`. Keep the existing proof inputs so the test verifies both successful aggregation and correct notice text.

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


Results up to commit 1e8ed6c 🧠 Deep


🐞 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. A slow Today click fails the test anyway ✓ Resolved
Description
clickUntil clicks control again on every toPass attempt. The Today button is removed once
October is shown (the test then asserts toHaveCount(0)), so if the first click lands but the
October heading takes longer than its 5 s check, every later attempt waits 5 s on a missing button,
throws before it checks the outcome again, and the test fails at the 20 s cap even though the
calendar is already in the right state. Before this change, the plain expectMonth call simply kept
waiting for the heading.
Code

tests/ui-my-day-calendar.spec.ts[78]

+  }).toPass({ timeout: 20_000, intervals: [1_000, 2_000, 4_000] });
Relevance

●●● Strong

Recent accepted precedent requires guarding retry actions against controls changing state or
disappearing.

PR-#3502

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The helper clicks again with no check that the control still exists. The Today control is expected
to disappear after a successful click. The DSM spec in the same PR guards its retry with
isVisible(), but the calendar helper has no such guard.

tests/ui-my-day-calendar.spec.ts[74-79]
tests/ui-my-day-calendar.spec.ts[123-127]
tests/ui-route-coverage.spec.ts[506-509]

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

## Issue description
`clickUntil` clicks the control again on every retry. The Today control disappears after a successful click, so a first click that worked but rendered slowly turns into repeated 5 s click timeouts, and the test fails.

## Fix Focus Areas
- tests/ui-my-day-calendar.spec.ts[74-79]

## Recommended Fix
Inside the `toPass` callback, click only when the control is still visible, the same way the DSM spec does: `if (await control.isVisible()) await control.click({ timeout: 5_000 });` then `await outcome();`. Keep the 20 s cap.

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


Grey Divider

Qodo Logo

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

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 342815cc0b

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread tests/ui-my-day-calendar.spec.ts Resolved
@codeant-ai

codeant-ai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

CodeAnt PR Risk: Low Risk

  • The PR appears safe to merge; the changes are limited to UI test reliability.
  • The tests still assert the selected day, destination month, and exact remaining comparison ID after retrying clicks.

Assessed commit: 8bff3d3b8570

Copy link
Copy Markdown
Owner Author

On CodeAnt's note that a slow URL update could make the route test remove the remaining diagnosis: the retry can't do that. The locator is the button named "Remove Major depressive disorder". It only clicks while that button is visible, and that button can only clear the major depressive disorder slot. A repeat click is therefore a no-op for bipolar II. The test still asserts the URL ends with exactly ids=bipolar-ii-disorder, so any over-removal would fail it. No change made.


Generated by Claude Code

The aggregate test harness runs under set -u, so it needs the new
TREE_PROVEN_MATRIX binding, and the routing contract forbids naming the
matrix job inside pr-required, so the notice uses a plain label.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014qMDuRLipTaGrY6EyC89hm
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)

Comment thread tests/ci-cache-safety.test.ts Resolved
@qodo-code-review

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit d31629c

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014qMDuRLipTaGrY6EyC89hm
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)

@qodo-code-review

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit 836101a

Comment thread tests/ui-my-day-calendar.spec.ts Resolved
@qodo-code-review

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit 1e8ed6c

Copy link
Copy Markdown
Owner Author

Qodo finding "A slow Today click fails the test anyway" is fixed in 91f5d7d. clickUntil now clicks only while the control is still visible, which matches the DSM spec. If the Today click lands but October renders slowly, later attempts just re-check the outcome. The chosen-day button always stays on screen, so that call is unchanged in practice. Checked with prettier, eslint and typecheck; the browser legs run in CI.


Generated by Claude Code

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

Pre-merge checks failed. Please resolve the failing checks before merging.

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)

@qodo-code-review

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit 91f5d7d

coderabbitai[bot]
coderabbitai Bot previously requested changes Oct 13, 2026

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

Pre-merge checks failed. Please resolve the failing checks before merging.

coderabbitai[bot]
coderabbitai Bot previously requested changes Oct 13, 2026

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

Pre-merge checks failed. Please resolve the failing checks before merging.

@cubic-dev-ai

cubic-dev-ai Bot commented Oct 13, 2026

Copy link
Copy Markdown
Contributor

Plan monthly usage limit reached ↗
Resets Oct 16

Get more usage

@cubic-dev-ai

cubic-dev-ai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Auto-fix: 2 flaky checks, 1 check needs your input. View session →

  • PR required: Flaky. PR required only failed because production-ui failed; the other required jobs succeeded or were skipped. That failure was the load-dependent ui-tools bottom-dock test described under Production UI (3), which this PR did not cause, so there is nothing separate to fix here.
  • Production UI (3): Flaky. The only failure is tests/ui-tools.spec.ts:3381 (phone bottom-dock scroll end, 78px short), a spec and app code this PR doesn't touch. On the head it passed 12/12 serially and 31/32 under 6 parallel workers; the one failure showed the same 78px error, so it is a load-dependent timing race that predates the PR. I changed no code.
  • PR mergeability: Needs your input. Main's CI: always run the cross-browser release matrix on main again #3531 (c67fd99) removed the dispatch-run matrix proof (tree_proven_matrix in ci.yml, the matrix lookup in ci-main-tree-proof.mjs, and their tests). This PR's first two items edit that same code, so they conflict and are now obsolete. Fixing it needs a merge of main and a revert of the ci.yml hunks, which I can't push, so should the PR be cut down to just the two test-steadying changes (my-day calendar and DSM compare clicks)?

# Conflicts:
#	scripts/ci-main-tree-proof.mjs

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

@codeant-ai codeant-ai Bot added size:S This PR changes 10-29 lines, ignoring generated files and removed size:M This PR changes 30-99 lines, ignoring generated files labels Oct 13, 2026
@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 · Bounded retries in calendar and comparison UI tests could hide intermittent click failures and increase CI test duration.

Keeps PR proof when the workflow_dispatch lookup fails, so only the matrix proof is withheld, and reports the dispatch run URL separately as matrix_proof_run_url. Also repeats the two flaky browser clicks in the calendar and route-coverage specs while still asserting the full outcome. No issues found.

Verification

Rules No rules evaluated

Functional validation Not enabled

Set up

Auto-approval Approved

For more verification details, comment gitar display:verbose.

Options

Auto-apply is off → Gitar will not commit updates to this branch.
Display: compact → Showing compact verification results.

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

@gitar-bot
gitar-bot Bot merged commit 5469845 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 23:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🔴 Large blast radius size:S This PR changes 10-29 lines, ignoring generated files 🕐 20-40 Minutes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants