Skip to content

ci: trigger the SharedCore macOS lane on currency-math changes - #1515

Merged
bmc08gt merged 1 commit into
code/cashfrom
ci/shared-core-tests-currency-math-path
Sep 21, 2026
Merged

bmc08gt merged 1 commit into
code/cashfrom
ci/shared-core-tests-currency-math-path

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Sep 21, 2026

Copy link
Copy Markdown
Collaborator

shared-core-tests.yml runs :libs:currency-math:discrete-curve:iosSimulatorArm64Test, but no pattern in its paths: filter matched libs/currency-math/. A PR touching only the discrete bonding curve never started the workflow, so the curve's Kotlin/Native half and its curve.json / curve_fractional.json parity fixtures went unrun for exactly the changes that could break them. The JVM half was never affected: flipcashTestDebug in the Ubuntu CI lane covers :libs:currency-math:discrete-curve and that workflow has no path filter at all.

The fix is one line: - 'libs/currency-math/**'.

Audit of the rest of the filter

I replayed the filter (GitHub glob semantics, ** crossing separators) over git ls-files for every module named in a Gradle task in the workflow:

Module in a task Directory Covered by
:kmp:shared-core kmp/shared-core kmp/shared-core/**
:libs:codes:kikcode libs/codes/kikcode libs/codes/kikcode/**
:libs:currency-math:discrete-curve libs/currency-math/discrete-curve libs/currency-math/** (new)
:libs:encryption:{base58,ed25519,hmac,mnemonic,sha256,sha512} libs/encryption/* libs/encryption/**

No file under any of those nine directories is now unmatched. The assembleSharedCoreReleaseXCFramework step adds no further reach: :kmp:shared-core exports exactly those eight modules, and their only cross-module dependencies (ed25519-native from ed25519; utils, hmac, sha256, sha512, base58 from mnemonic) all sit under libs/encryption/.

In the other direction, three paths match the filter without belonging to any task here. All three over-trigger rather than under-trigger, so I've left them:

  • libs/encryption/keys/** — a plain Android module with no KMP target. Nothing reachable from this workflow depends on it; its consumers are libs/crypto/solana, libs/models and app modules. This is the one genuinely spurious match.
  • libs/currency-math/** outside discrete-curve/ — the parent Android module, added by this change. It depends on discrete-curve rather than the reverse, so changes to it can't alter the curve's test result. Narrowing to libs/currency-math/discrete-curve/** would be tighter; I kept the directory-level pattern to match how libs/encryption/** is written.
  • libs/encryption/{ed25519-native,utils}/** — not named in a task, but real dependencies of modules that are, so they belong.

Not changed, but worth recording: the filter doesn't cover build-logic/**, settings.gradle.kts, gradle.properties or gradle/wrapper/**, each of which can change what these modules compile to. That's a wider question about how much the macOS lane should cost, not the same defect.

Other workflows

shared-core-tests.yml is the only workflow in the repo with a paths: filter (grep -rn 'paths:' .github/workflows/), so no other workflow can have this mismatch:

  • ci.yml — the Ubuntu lane. on: pull_request with no filter, so it runs on every PR. Its module list also isn't hand-written: flipcashTestDebug in the root build.gradle.kts is built from the project lists settings.gradle.kts derives from unitTestPaths, so a new module joins it by being included in the build.
  • publish-shared-core.yml — runs :kmp:shared-core:kmmBridgePublish, workflow_dispatch only.
  • maestro.yml — workflow_dispatch and schedule.
  • bump-patch.yml, prep-dev.yml, build-fcash2-upload-android.yml, labeler.yml — no fixed module list against a path filter.

.github/labeler.yml is the other glob list in the repo. It has no area: entry covering libs/currency-math/**, so curve PRs go unlabelled, but that's a labelling gap, not a test one — happy to fix it here if you'd rather it rode along.

`shared-core-tests.yml` runs `:libs:currency-math:discrete-curve:iosSimulatorArm64Test`,
but no pattern in its `paths:` filter matched `libs/currency-math/`. A PR touching only
the discrete bonding curve did not start the workflow, so the curve's Kotlin/Native half
and its `curve.json` / `curve_fractional.json` parity fixtures went unrun for exactly the
changes that could break them. The JVM half still ran, via `flipcashTestDebug` in the
Ubuntu `CI` lane, which has no path filter.

Add `libs/currency-math/**`. Replaying the filter over the tracked file list now matches
every module named in a Gradle task in the workflow; before the change, all 12 files
under `discrete-curve/` missed.
@bmc08gt
bmc08gt requested a review from jeffyanta as a code owner September 21, 2026 18:14
@bmc08gt bmc08gt self-assigned this Sep 21, 2026
@bmc08gt
bmc08gt merged commit 9bd4f50 into code/cash Sep 21, 2026
4 checks passed
@bmc08gt
bmc08gt deleted the ci/shared-core-tests-currency-math-path branch September 23, 2026 16:45
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