Skip to content

updates from AtLeast#11

Merged
leogdion merged 11 commits into
v1.0.0-alpha.3from
atleast-beta.6
Jun 5, 2026
Merged

updates from AtLeast#11
leogdion merged 11 commits into
v1.0.0-alpha.3from
atleast-beta.6

Conversation

@leogdion
Copy link
Copy Markdown
Member

@leogdion leogdion commented Jun 5, 2026

No description provided.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 5, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 22d9a51e-ba9c-4622-afa0-694ff96a49c1

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
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch atleast-beta.6

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 and usage tips.

@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 5, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 74.46%. Comparing base (ccd571c) to head (5a6fdc8).

Additional details and impacted files
@@               Coverage Diff               @@
##           v1.0.0-alpha.3      #11   +/-   ##
===============================================
  Coverage           74.46%   74.46%           
===============================================
  Files                  47       47           
  Lines                1907     1907           
===============================================
  Hits                 1420     1420           
  Misses                487      487           
Flag Coverage Δ
spm 74.93% <ø> (ø)
swift-6.1 70.58% <ø> (ø)
swift-6.2 70.58% <ø> (ø)
swift-6.3 70.58% <ø> (ø)
ubuntu 70.58% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@claude
Copy link
Copy Markdown

claude Bot commented Jun 5, 2026

PR Review: updates from AtLeast

Overall, this PR makes solid CI infrastructure improvements. A few issues worth discussing before merge.


Bugs / Inconsistencies

REMOTE_BRANCH mismatch between CodeQL and main CI

In Scripts/ensure-remote-deps.sh, REMOTE_BRANCH is set to "bitness-v0.0.8", but the main SundialKitStream.yml workflow uses SUNDIALKIT_BRANCH: atleast-beta.6. This means the CodeQL job will resolve SundialKit from a different branch than every other CI job. If these branches differ in API surface, the CodeQL analysis may not reflect what actually builds.

# ensure-remote-deps.sh
-REMOTE_BRANCH="48-demo-applications-part-3"
+REMOTE_BRANCH="bitness-v0.0.8"    # ← but main CI uses atleast-beta.6

Either ensure-remote-deps.sh should use atleast-beta.6, or the CodeQL workflow should switch to the setup-sundialkit action (matching all other jobs) and retire ensure-remote-deps.sh for this repo.


Code Quality

path: "../SundialKit" breaks standalone development

// Package.swift
.package(name: "SundialKit", path: "../SundialKit")

A contributor who clones only this repo gets a build failure immediately. The comment says "CI rewrites this to a remote URL" but says nothing about local development. This should either:

  • Be documented prominently (CLAUDE.md/README/CONTRIBUTING), or
  • Use a conditional approach (e.g., an env var guard) so swift build works out of the box without a sibling checkout

swiftlint:disable:next line_length in Package.swift

This is a consequence of the CI rewriting Package.swift to a 40-char SHA URL. The workaround is pragmatic but it's unusual to carry a lint suppression comment in a package manifest for a purely CI-generated line. Worth noting as technical debt if a cleaner mechanism is available.


Structural / Merge Concerns

atleast-beta.6 hardcoded throughout

After merging to main, these references remain embedded across the workflow:

  • SUNDIALKIT_BRANCH: atleast-beta.6
  • uses: brightdigit/SundialKit/.github/actions/setup-sundialkit@atleast-beta.6
  • Full-matrix condition includes refs/heads/atleast-beta.6

If this is intended as temporary scaffolding for ongoing co-development work, it should be tracked for cleanup. If it's permanent (main always builds against this SundialKit branch), that coupling should be documented.


Positive Changes

  • Removing Package.resolved: Correct for a library. Executables should pin; libraries should not.
  • Android API 36 drop: Well-explained with a tracking reference (skiptools/swift-android-action). The comment is a good inline explanation.
  • CodeQL v3 → v4: Necessary upgrade.
  • Xcode 26.4 → 26.5 / macos-15 → macos-26: Appropriate toolchain refresh.
  • SwiftLint 0.61.0 → 0.62.2, periphery 3.2.0 → 3.7.4: Good dependency hygiene; switching to aqua:realm/SwiftLint for SwiftLint is cleaner for cross-platform tool management.
  • Consistent setup-sundialkit action across all build jobs: Good pattern that mirrors how other packages in this family handle co-development dependencies.

leogdion and others added 10 commits June 5, 2026 18:58
…ibility

The ensure-remote-deps.sh script expects the dependency format to include the name parameter. This change ensures the CI pipeline can properly convert the local path to the remote URL.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add skip-package-resolved: true to both Ubuntu and macOS build jobs to allow dynamic dependency resolution instead of using Package.resolved pins. This prevents version compatibility issues during CI builds.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Subrepos pulled at atleast-beta.6 (post-merge tips 8e5f0cd / 9c3d62e —
main merged in upstream so the modernized CI baseline is now there).

Local AtLeast-side wiring:
- AtLeastKit/Package.swift switched to .package(path:) for both libs
- atleast.yml: broaden release matrix to [6.2, 6.3], add nightly container
  expression (forward-compatible for 6.4 nightly), bump simulator
  osVersion 26.4 → 26.5

In-subrepo refresh (partial — mise pins only):
- SundialKit + SundialKitStream .mise.toml → MistKit v1.0.0-beta.3 pins
  (aqua SwiftLint 0.62.2, periphery 3.7.4)

Resume notes in .claude/docs/SUNDIALKIT_CI_REFRESH_RESUME.md cover:
- Remaining Phase B edits (workflow + codeql.yml Xcode 26.5 bumps,
  checkout v4→v6, macos-15→macos-26 — different codeql-action handling
  for the two libs)
- Verification steps
- git subrepo push back to atleast-beta.6
- Hand-off to SUNDIALKIT_TRANSFERUSERINFO.md Phase 1-3

ci skip

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

Phase B remainder of the vendor + CI refresh:
- SundialKit.yml / SundialKitStream.yml: Xcode 26.4 -> 26.5, simulator
  osVersion 26.4 -> 26.5 (back-compat Xcode 16.4 / macOS-15 rows left intact)
- sundial-demo.yml: same Xcode/osVersion bumps for the TestFlight demo jobs
- codeql.yml (both): checkout v4 -> v6, macos-15 -> macos-26, Xcode 16.4 -> 26.5
- SundialKit codeql.yml: drop merged v2.0.0 PR branch, bump codeql-action v3 -> v4
  (SundialKitStream already on v4)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Enable CI on the long-lived beta branches that were previously untriggered:
- AtLeast atleast.yml: add iphone-app-beta.6 to push branches; treat it like
  main in the configure job (FULL + CROSS_PLATFORM) so Windows/Android/all
  Apple platforms build.
- SundialKit / SundialKitStream: add atleast-beta.6 to push + pull_request
  branches and to the full-matrix condition.

PRs already triggered AtLeast CI; the gap was push to these feature branches.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ne CI

The standalone brightdigit/SundialKitStream CI checks out only itself, so the
local `path: "../SundialKit"` dependency cannot be found and every build job
fails. Adopt the brightdigit setup-<kit> pattern (mirrors MistKit): add a
setup-sundialkit composite action that, in CI only, rewrites Package.swift to a
remote url dep pinned to the branch's current commit and drops Package.resolved.

Wire it into all five build jobs after checkout, passing skip-package-resolved
to swift-build. The source Package.swift keeps the path dependency so monorepo
local development is unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Swift 6.x Android SDK sysroot ships CRT startup objects only up to
API 35; targeting api 36 fails at link with "cannot open
crtbegin_dynamic.o / crtend_android.o". 33/34/35 link fine.

Cap matrices at 35 until the SDK bundles an NDK r28+ sysroot:
- atleast.yml: [33,34,35,36] -> [33,34,35]
- SundialKit: [33,34,35,36] -> [33,34,35]
- SundialKitStream: [33,36] -> [33,35]

Tracking: skiptools/swift-android-action#27

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The setup-sundialkit CI action rewrites the local path dependency to a
remote URL pinned by a 40-char revision, producing a 120-char line that
exceeds the 108-char limit. Disable line_length on that line.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@claude
Copy link
Copy Markdown

claude Bot commented Jun 5, 2026

Code Review: updates from AtLeast (PR 11)

Overview

This PR updates the CI infrastructure to adopt a new composite action for managing the SundialKit dependency, switching Package.swift from a versioned remote dependency to a local path dependency, and removing the old ensure-remote-deps.sh script. Tool versions also bumped: Xcode 26.5, SwiftLint 0.62.2, periphery 3.7.4, CodeQL v4.

What Works Well

  • Cleaner dependency approach: Replacing ensure-remote-deps.sh with a reusable composite action is a clear improvement in maintainability.
  • Android API 36 removal is well-documented: The inline comment explaining why API 36 was dropped (missing NDK r28+ sysroot CRT objects) with a reference to the upstream issue is exactly the right pattern.
  • Consistent skip-package-resolved: Applied uniformly across all build jobs, consistent with the local-path dependency model.
  • Good tool version maintenance: Xcode 26.5, CodeQL v4, and periphery 3.7.4 are sensible upgrades.

Issues and Suggestions

  1. Misleading comment in Package.swift (Medium)

The comment says CI rewrites this to a remote URL pinned by 40-char revision, but the CI changes show a local checkout approach via setup-sundialkit (checking out SundialKit at ../SundialKit). If the composite action still performs a URL rewrite internally, make that explicit. If CI now only uses the local checkout, the swiftlint:disable:next line_length directive is suppressing a warning for a line that does not violate the limit. Suggestion: Clarify the comment to match actual CI behavior.

  1. Local path dependency breaks standalone swift build (Medium)

With Package.swift pointing to path: ../SundialKit, anyone cloning only this repository gets a build error (local dependency not found). The old approach with a remote URL and semver range worked out of the box. This is a DX regression for contributors not also working on SundialKit. Suggestion: Document the sibling-directory requirement in README.md or CLAUDE.md.

  1. Deleted Package.resolved (Low)

Transitive dependency versions are no longer source-controlled. Acceptable with a local path dependency, but worth restoring once a released SundialKit version is targeted.

  1. Branch-specific CI references (Low)

atleast-beta.6 is hardcoded in workflow trigger branches, the SUNDIALKIT_BRANCH env var, and the composite action ref. These must be updated before merging into the release line.

  1. Double blank line in codeql.yml (Cosmetic)

Two consecutive blank lines appear after the Setup SundialKit step before the Initialize CodeQL comment.

  1. periphery 3.2.0 to 3.7.4 version jump (Low)

A 5-minor-version jump within v3. Newer periphery may flag previously-undetected dead code causing CI lint failures. Suggest running LINT_MODE=STRICT ./Scripts/lint.sh locally before merging.

  1. SwiftLint source change (Low)

Switching from swiftlint 0.61.0 to aqua:realm/SwiftLint 0.62.2 changes both the version and the installation backend. Verify the aqua provider works in all CI environments (macOS, Ubuntu, Windows).

Summary

Area Status
CI workflow structure Good improvement; minor cleanup needed before merge
Package.swift comment accuracy Needs clarification
Developer experience (local build) Regression - needs documentation or mitigation
Tool version bumps Appropriate; verify periphery jump locally
Deleted scripts/files Correct cleanup

Overall this is a solid infrastructure modernisation. The primary concern is the local-path dependency making standalone development harder, and the inaccurate comment in Package.swift. Both are straightforward to address before merging.

Point both the build dependency (SUNDIALKIT_BRANCH) and the
setup-sundialkit action pin at SundialKit's v2.0.0-alpha.3 ref.
The SundialKitStream-branch triggers are left unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@leogdion leogdion merged commit 22992ff into v1.0.0-alpha.3 Jun 5, 2026
37 of 44 checks passed
leogdion added a commit that referenced this pull request Jun 6, 2026
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.

1 participant