Skip to content

Run the gate on macOS in CI too - #16

Merged
jainal09 merged 7 commits into
mainfrom
ci/macos
Aug 8, 2026
Merged

Run the gate on macOS in CI too#16
jainal09 merged 7 commits into
mainfrom
ci/macos

Conversation

@jainal09

@jainal09 jainal09 commented Aug 6, 2026

Copy link
Copy Markdown
Owner

Why

The WSL port merged with every macOS branch marked "unchanged by construction". That is an argument, not a test result — the plan that produced it said so in as many words. The Linux job proves the port; nothing proves the thing it was ported around.

This is the test result.

What

A macos job on macos-latest (arm64). Sibling of linux, same conventions: pinned actions/checkout SHA, persist-credentials: false, and nvim pinned to the same v0.11.0 tarball checked against the same release shasum.txt the Linux job's checksum came from — so "which nvim did the gate run against" keeps one answer, and a macOS-only failure is the code rather than the editor.

brew install fzf and nothing else. Every omission is argued in the file; the load-bearing one is coreutils — installing it would put gtimeout, not timeout, on PATH, so the shim would not find it anyway, and taking the perl leg is the entire point.

Not one Intel leg: those runner labels are on GitHub's deprecation path, so it would be a check that needs re-pinning rather than one that keeps working.

This job reaches code the Linux job structurally cannot

only ever runs on macOS
tests/bin/timeout its perl alarm fallback. On Linux the shim finds a real timeout(1) and execs it — so the branch that file was written for has never executed in CI
every #!/bin/bash suite bash 3.2.57
drill.sh, suite_timer.sh BSD pgrep/ps, and BSD sed/awk for the secs() check that exists to drop bc

tests/run.sh — probe the pasteboard, don't assume it

The preflight skipped Darwin outright, on "macOS always has pbcopy, so this is silent there". True about presence, and says nothing about capability: the pasteboard lives in a per-session pbs, so over ssh or on a CI runner pbcopy is right there on PATH with nothing to talk to. The six suite_config.sh cases that assert register + would then fail looking like six unexplained mapping regressions.

That is precisely the mistake the xclip branch already stopped making ("a display name is not a display"). Now it is made once, in one shape, on both platforms: write with pbcopy, read back with pbpaste, believe the exit code.

The probe needs timeout, which macOS has not got — so run.sh now hoists tests/bin onto PATH the way run_test.sh and every suite already do for themselves. Side effect: it makes docs/testing.md's existing claim that run.sh does this true.

Drive-by: the case count was wrong

556 in six places; it is 558. suite_options.sh went 84 → 86 when the port added the wsl_quit_fallback_* assertions and no count moved with it. Measured from a run, not counted by hand — the docs table now sums to 558 as well.

Verified locally

  • ./tests/run.shALL SUITES PASSED, 558, 0 failures, 14/14 suites

  • workflow YAML parses; bash -n on all 8 inline run: blocks

  • the Darwin arm proven able to fail — the real preflight cut out of run.sh (not a copy pasted into a test) run under a stubbed uname/pbcopy/pbpaste, four ways:

    stub result
    pasteboard answers silent ✅
    pbcopy fails warns, with the macOS-specific text ✅
    pbcopy ok, pbpaste dead warns ✅
    pbcopy hangs 300s warns after 5s, not 300 ✅
  • the perl timeout leg exercised on a PATH with no real timeout: stdin passes through the pipe, and a hang is still bounded

What is not verified: macOS itself. There is no Mac here — that is the whole reason this job exists. The first macos run is partly discovery. Three things are most likely to come back red and are called out so they get recognised rather than re-diagnosed:

  1. the pasteboard (6 cases) — the new preflight will name it
  2. BSD pgrep -f vs the timer's ~2KB argv (36 cases) — _drill_timer_pids rests on "pgrep matches the whole command line, while ps truncates", measured on Linux; BSD pgrep reads KERN_PROCARGS2 bounded by kern.argmax
  3. pty driver timing — fixed sleeps, on a slower shared runner. Per the port's own rule: raise the constants, do not add retries

Merging only at linux 558 and macos 558.


Summary by cubic

Adds a macos-latest CI job to run the full gate on macOS and hardens the pasteboard probe to be non-destructive, value-checked, and save-gated. Fixes a bash 3.2 parsing bug in the timer suite; suite count is 558.

  • New Features

    • Added a macos job on macos-latest (arm64) alongside linux.
    • Pinned actions/checkout and the nvim v0.11.0 tarball (checksum-verified); persist-credentials: false.
    • Installed only fzf via Homebrew; skipped coreutils to exercise the perl timeout path.
    • Validated demo.sh secs() under BSD sed/awk and bash 3.2.
  • Bug Fixes

    • tests/run.sh probes pbcopy/pbpaste on -pboard find, gates the write on a successful save, restores it, and checks round-trip by value to avoid clobbering the clipboard and prevent data loss on slow pasteboards.
    • Hoisted tests/bin onto PATH so timeout is available during preflight; clearer “no working clipboard” warnings (including macOS session guidance).
    • Fixed suite_timer.sh on bash 3.2 by balancing the case-pattern ( inside $(...), unblocking all 36 timer cases on macOS.
    • Updated docs: total cases 558; suite_options.sh is 86; corrected WSL clipboard flake math and guidance to read results as rates and consistency, not load or single-run verdicts.

Written for commit 415c92b. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features

    • Added macOS coverage to automated testing, including clipboard validation and platform-specific tooling checks.
    • Improved test setup with bundled tool discovery and clearer clipboard-provider diagnostics.
  • Bug Fixes

    • Fixed timer test compatibility with older Bash versions.
  • Documentation

    • Updated testing documentation and project references to reflect 558 total tests, including 86 option-suite cases.
    • Documented Ubuntu and macOS CI coverage, clipboard requirements, and troubleshooting guidance.

Greptile Summary

Adds a macOS CI gate alongside Linux, exercising platform-specific shell, utility, clipboard, and timeout behavior against the pinned Neovim release.

  • Adds a checksum-verified Neovim installation and full test run on macos-latest.
  • Probes the macOS pasteboard with bounded, non-destructive round-trip checks.
  • Makes the timer suite parse under macOS Bash 3.2.
  • Updates the documented test count from 556 to 558.

Confidence Score: 5/5

The PR appears safe to merge because no blocking failure remains.

No blocking failure remains.

Important Files Changed

Filename Overview
.github/workflows/tests.yml Adds the macOS CI job, pinned Neovim installation, dependency setup, full gate, and BSD utility compatibility check.
tests/run.sh Adds the bundled timeout shim to PATH and introduces a bounded macOS pasteboard capability probe with restoration.
tests/suite_timer.sh Balances the case-pattern parenthesis so the command substitution parses under Bash 3.2.
docs/testing.md Updates suite counts and documents dual-platform CI and revised WSL clipboard-flake interpretation.

Reviews (8): Last reviewed commit: "Correct the flake arithmetic: isolation ..." | Re-trigger Greptile

The WSL port left every macOS branch "unchanged by construction" -- an
argument, not a test result, and the plan that produced it said so. This
is the test result.

A macos-latest (arm64) job, sibling of the linux one, same conventions:
pinned checkout SHA, persist-credentials off, and nvim pinned to the same
v0.11.0 tarball checked against the same release shasum.txt, so a job that
goes red is the code and not the editor. brew installs fzf and nothing
else; each omission is spelled out in the file, but the load-bearing one
is coreutils -- installing it would put gtimeout, not timeout, on PATH,
and taking the perl leg is the entire point.

It is not the linux job with a different logo. It is the only place bash
is 3.2, pgrep/ps/sed/awk are the BSD ones, and tests/bin/timeout actually
runs its perl alarm fallback: on Linux the shim always finds a real
timeout(1) and hands over, so the branch that file was WRITTEN for had
never executed in CI.

tests/run.sh: probe the pasteboard on macOS instead of assuming it.

The preflight skipped Darwin entirely, on "macOS always has pbcopy". True
about presence, and nothing about capability -- the pasteboard lives in a
per-session pbs, so over ssh or on a CI runner pbcopy is right there on
PATH with nothing to talk to, and the six suite_config.sh cases that
assert register '+' would fail looking like six mapping regressions. That
is the same mistake the xclip branch already stopped making, so it is now
made once, in one shape, on both platforms: write with pbcopy, read with
pbpaste, believe the exit code.

That probe needs `timeout`, which macOS does not have, so run.sh now
hoists tests/bin onto PATH the way every suite already does for itself --
which also makes docs/testing.md's claim that it does so true.

Also: the case count was 556 in six places and is 558. suite_options.sh
went 84 -> 86 when the port added the wsl_quit_fallback assertions and
nothing else moved with it. Measured, not counted by hand.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 6, 2026 17:34

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The test harness now validates macOS clipboard access. CI adds a macOS arm64 job with pinned Neovim and platform-specific checks. Documentation records the 558-case suite, clipboard findings, and expanded platform coverage.

Changes

Cross-platform testing

Layer / File(s) Summary
Clipboard preflight handling
tests/run.sh
The harness probes macOS pasteboard access, restores the original content, and reports platform-specific failures.
macOS CI execution
.github/workflows/tests.yml
A macOS arm64 job verifies Neovim, installs fzf, checks Python, runs the test suite, and validates demo.sh.
Shell compatibility validation
tests/suite_timer.sh
The timer test uses a Bash 3.2-compatible case pattern without changing matching behavior.
Test coverage documentation
README.md, TODO.md, docs/testing.md, docs/wsl.md
Documentation records test counts, platform coverage, clipboard findings, diagnostics, and the updated WSL checkpoint.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CI as macOS CI
  participant Neovim
  participant Homebrew
  participant tests_run as tests/run.sh
  participant demo as demo.sh
  CI->>Neovim: download and verify pinned arm64 release
  CI->>Homebrew: install fzf
  CI->>tests_run: run test suite
  tests_run->>tests_run: probe macOS clipboard
  CI->>demo: validate syntax and secs() output
Loading

Possibly related PRs

  • jainal09/drill#6: Updates overlapping WSL checkpoint documentation and clipboard portability work.
  • jainal09/drill#10: Modifies related clipboard handling and test harness portability.
  • jainal09/drill#11: Adds related CI and testing documentation changes.

Suggested reviewers: codescene-access

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: adding macOS CI coverage for the test gate.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/macos

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.

codescene-access[bot]

This comment was marked as outdated.

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
tests/run.sh (1)

58-60: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Require a round-trip match before accepting CLIP.

Line 58 writes a marker, but Line 59 discards the pbpaste output. Exit codes alone do not establish that the marker can be read back. Compare the returned bytes with x before assigning CLIP.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/run.sh` around lines 58 - 60, Update the clipboard detection condition
around pbcopy and pbpaste to capture and compare pbpaste’s output with the
marker x before assigning CLIP="pbcopy"; retain the existing timeout and failure
handling so CLIP is only accepted when the write/read round trip matches
exactly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tests/run.sh`:
- Around line 58-60: Update the pbcopy/pbpaste capability probe in tests/run.sh
to preserve the user’s existing pasteboard contents: capture the previous
payload before writing the probe value, then restore it through cleanup
regardless of whether pbpaste succeeds or fails. Keep the CLIP assignment
behavior unchanged when the probe passes.

---

Nitpick comments:
In `@tests/run.sh`:
- Around line 58-60: Update the clipboard detection condition around pbcopy and
pbpaste to capture and compare pbpaste’s output with the marker x before
assigning CLIP="pbcopy"; retain the existing timeout and failure handling so
CLIP is only accepted when the write/read round trip matches exactly.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c0c19403-4aa4-4043-899f-d269df9607dd

📥 Commits

Reviewing files that changed from the base of the PR and between 53607c3 and f7dd12a.

📒 Files selected for processing (6)
  • .github/workflows/tests.yml
  • README.md
  • TODO.md
  • docs/testing.md
  • docs/wsl.md
  • tests/run.sh

Comment thread tests/run.sh Outdated
CodeRabbit, on the new Darwin branch: the probe writes "x" to the system
pasteboard and never puts back what was there. Fair -- and its own
suggested fix, capture-and-restore, would be worse than the bug, because
pbpaste yields text, so the round-trip silently flattens an image, RTF or
a file promise to nothing.

Its other suggestion is the right one. macOS serves four named pasteboards
from the same pbs, so `-pboard find` proves reachability exactly as well
and leaves the general one alone. The register cases still destroy your
clipboard later in the run -- but only if you actually run them, and
`./tests/run.sh timer` should not cost you a copied password.

No equivalent below: wl-copy offers only clipboard and primary, and
primary is the user's too, so the Linux branch still writes, as its own
comment already owned.

Verified with the real preflight cut out of run.sh and a pbcopy stub that
exits non-zero unless asked for the find pasteboard: silent as written, and
one WARNING when the same code is aimed at the general pasteboard -- so the
check is not vacuous.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
codescene-access[bot]

This comment was marked as outdated.

@cubic-dev-ai cubic-dev-ai 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.

All reported issues were addressed across 1 file (changes from recent commits).

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread tests/run.sh Outdated
cubic, P3: -pboard find is non-destructive to the clipboard but not
side-effect free -- it leaves a stray "x" as the system find string, which
Preview and some search fields honour.

Correct. The objection that stopped me restoring the GENERAL board does not
apply here: the find board holds a search string, which is text by
definition, so a pbpaste round trip cannot flatten an image or RTF the way
it would there. So save it and put it back. The probe now costs nothing at
all.

Not the read-only probe cubic offered as the alternative: that drops the
write half, and writing is what the register cases actually depend on.

While in here, compare by VALUE rather than by exit code. Write "x", read
"x" back -- that is the property the register cases need, and two processes
exiting 0 is not it. Verified against a file-backed fake find board: a stub
whose write succeeds and whose read returns something else now produces a
warning, where the old exit-code test called it a working pasteboard.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
codescene-access[bot]

This comment was marked as outdated.

@cubic-dev-ai cubic-dev-ai 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.

All reported issues were addressed across 1 file (changes from recent commits).

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread tests/run.sh Outdated
…aught

The macOS job ran and 522 of 558 cases passed. The 36 that did not were the
whole timer suite, which died before its first case:

  suite_timer.sh: line 52: syntax error near unexpected token `;;'
  case "$(ps -p "$p" -o comm= 2>/dev/null)" in python*|*/python*) ...

Nothing to do with pgrep, ps, or the timer. /bin/bash on macOS is 3.2, and
3.2 finds the end of a $( ) by scanning for a balancing paren instead of
parsing. This heredoc lives inside $( ), and a case pattern contributes a
lone ')' -- so the scan ended on the pattern, the remainder of the line was
read as a command, and `;;` was a syntax error.

The fix is the optional open paren POSIX allows on a case pattern, which
balances the count. Bash 4+, zsh, and the meaning of the pattern are all
unaffected. The comment above it says so, because it looks exactly like
something worth tidying away.

Reproduced and verified on real bash 3.2.57 (docker bash:3.2): the old
spelling gives that error at that line, the new one parses. Every other
shell script in the repo was swept the same way -- 20 files, all clean, so
this was the only one.

This is the entire argument for the macOS job in one commit. The bug was
invisible to the Linux gate, to bash -n on this box, and to four review
bots, and it disabled 36 cases.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jainal09

jainal09 commented Aug 6, 2026

Copy link
Copy Markdown
Owner Author

The macOS job earned its keep on its first run

Run 31125892967 is the first one Actions let through. 522 of 558 passed. The 36 that did not were the entire timer suite, and it died before its first case:

suite_timer.sh: line 52: syntax error near unexpected token `;;'
  case "$(ps -p "$p" -o comm= 2>/dev/null)" in python*|*/python*) echo "$p" ;; esac

Nothing to do with pgrep, ps, or the timer — the three things I predicted in the PR description. It is bash 3.2.

/bin/bash on macOS is 3.2.57, and 3.2 finds the end of a $( ) by scanning for a balancing paren rather than by parsing. That heredoc lives inside $( ), and a case pattern contributes a lone ). So the scan ended on the pattern, the rest of the line was read as a command, and ;; was a syntax error.

The fix is the optional open paren POSIX allows on a case pattern — in (python*|*/python*) — which balances the count. bash 4+, zsh, and the meaning of the pattern are all unaffected. There is a comment above it saying so, because it looks exactly like something a future reader would tidy away.

Verified on real bash 3.2, not by reasoning about it

docker run bash:3.2, 3.2.57:

--- BEFORE the fix ---
  suite_timer.sh: line 64: syntax error near unexpected token `;;'     <- same error
--- AFTER the fix ---
  parses

Then swept every shell script in the repo the same way — drill.sh, install.sh, demo.sh, all 14 suites, run.sh, run_test.sh, tests/bin/timeout: 20 files, all clean. This was the only one.

What the run also settled, in our favour

Three risks were called out in the description. Two are now answered:

risk result
pasteboard dead on the runner works. No clipboard warning, and all six register-+ cases passed — so the new preflight correctly stayed silent
pty driver timing on a slower box holds. mouse 58, quit 21, runwin 12, netrw 10, preload 26 — all green, no constants touched
BSD pgrep -f vs the timer's ~2KB argv still unknown — the suite never got far enough to ask. The next run is the first real test of it

Linux gate after the fix: 557/558, the one failure being cut_ctrl_x_in_select — the WSL-only flake documented in docs/testing.md, which passed 5/5 when re-run alone as that doc instructs. Timer suite 36/36.

This bug was invisible to the Linux gate, to bash -n on a bash 5 box, and to four review bots, and it silently disabled 36 cases. That is the whole argument for this PR, delivered by the PR itself.

codescene-access[bot]

This comment was marked as outdated.

@jainal09 jainal09 closed this Aug 6, 2026
@jainal09 jainal09 reopened this Aug 6, 2026
codescene-access[bot]

This comment was marked as outdated.

jgosaliya and others added 2 commits August 6, 2026 18:56
… term

cubic, P3: the restore ran unconditionally, and FIND_WAS reports nothing
about whether the save worked. If pbpaste hit the 5s timeout on a merely
SLOW pbs, FIND_WAS collapsed to empty and the restore then wrote that empty
value over a find term that was there all along -- the exact data loss the
save/restore was added to prevent.

Right, and reproducible. With a stub whose first read hangs:

  OLD code, slow pbs -> board is now ''
  NEW code, slow pbs -> board is now 'my search term'

The fix removes a variable rather than adding one: put the save in the if,
and never write to a board you have not proved you can put back. Reading
first is free because a failed read is already the answer -- if pbs will not
answer a paste it is not a working provider, CLIP stays empty, the warning
fires, and nothing was written.

Four cases, each starting from a board holding "my search term":

  healthy pbs                    warn=0  board=my search term
  pbs unreachable (read broken)  warn=1  board=my search term
  pbs write broken               warn=1  board=my search term
  SLOW pbs -- cubic's case       warn=1  board=my search term

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…t was

docs/testing.md claimed these cases "pass when run alone (10/10, 3/3, 3/3)"
and told you that a solo failure means a real bug. Both halves are wrong,
and the second one is the harmful half -- it sends you hunting a regression
that is not there.

Bigger sample: ctrlc_visual_charwise_exclusive, alone in a loop, failed
2 times in 30. Same signature as always, buffer correct and '+' empty.
Isolation lowers the rate by roughly 5x. It does not reach zero.

So the advice is now "run it five times and read it as a rate": five passes
is the flake, five failures is a bug, one-in-five is the flake again. The
10/10 sample that produced the old claim was simply too small to meet a
2-in-30 event.

Nothing about the flake itself changed and nothing is papered over. It is
still WSL-only, still not the provider, still predates the port, and CI has
still never hit it -- both jobs, both platforms.

Found because the gate flaked on this PR twice on different cases, and the
documented "re-run it once" check disagreed with itself.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
codescene-access[bot]

This comment was marked as outdated.

@cubic-dev-ai cubic-dev-ai 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.

All reported issues were addressed across 2 files (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread docs/testing.md Outdated
…lower rate

cubic, on the paragraph I added one commit ago. It is right and the error was
mine: I compared a PER-CASE rate (2/30) against a PER-RUN rate (1 in 3) as
though they shared a denominator, and called the difference a load effect.

They do not share a denominator. A full run bets the same 6.7% six times:

  1 - (1 - 2/30)^6 = 34%    vs the observed ~1 in 3

Those agree, so there is nothing left for "load" to account for -- and the
"factor of five" I wrote was just the six-cases multiplier wearing a disguise.
The page now says so, and drops the load explanation entirely rather than
demoting it, since the data never supported it in either version.

The same arithmetic also explains the 10/10 sample this page used to rest on:
at 6.7%, ten clean runs happen 50% of the time regardless, and three clean
runs 81% of the time. That was a coin flip being read as a proof.

Reworked the verdict guidance to match. Consistency is the signal: five
failures out of five is a bug (1.3e-06 by chance), one or two out of five is
the flake, and five passes is the WEAKEST reading of the three -- it happens
71% of the time with the flake present, so it is consistent with the flake
rather than evidence against it. The old text implied it was conclusive.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
codescene-access[bot]

This comment was marked as outdated.

@jainal09 jainal09 closed this Aug 6, 2026
@jainal09 jainal09 reopened this Aug 6, 2026

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

No application code in the PR — skipped Code Health checks.

See analysis details in CodeScene

Quality Gate Profile: Clean Code Collective
Install CodeScene MCP: safeguard and uplift AI-generated code. Catch issues early with our IDE extension and CLI tool.

@jainal09
jainal09 merged commit 34943ba into main Aug 8, 2026
10 checks passed
@jainal09
jainal09 deleted the ci/macos branch August 8, 2026 00:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants