Repository navigation
ci: trigger the SharedCore macOS lane on currency-math changes - #1515
Merged
Merged
Conversation
`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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
shared-core-tests.ymlruns:libs:currency-math:discrete-curve:iosSimulatorArm64Test, but no pattern in itspaths:filter matchedlibs/currency-math/. A PR touching only the discrete bonding curve never started the workflow, so the curve's Kotlin/Native half and itscurve.json/curve_fractional.jsonparity fixtures went unrun for exactly the changes that could break them. The JVM half was never affected:flipcashTestDebugin the UbuntuCIlane covers:libs:currency-math:discrete-curveand 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) overgit ls-filesfor every module named in a Gradle task in the workflow::kmp:shared-corekmp/shared-corekmp/shared-core/**:libs:codes:kikcodelibs/codes/kikcodelibs/codes/kikcode/**:libs:currency-math:discrete-curvelibs/currency-math/discrete-curvelibs/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
assembleSharedCoreReleaseXCFrameworkstep adds no further reach::kmp:shared-coreexports exactly those eight modules, and their only cross-module dependencies (ed25519-nativefromed25519;utils,hmac,sha256,sha512,base58frommnemonic) all sit underlibs/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 arelibs/crypto/solana,libs/modelsand app modules. This is the one genuinely spurious match.libs/currency-math/**outsidediscrete-curve/— the parent Android module, added by this change. It depends ondiscrete-curverather than the reverse, so changes to it can't alter the curve's test result. Narrowing tolibs/currency-math/discrete-curve/**would be tighter; I kept the directory-level pattern to match howlibs/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.propertiesorgradle/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.ymlis the only workflow in the repo with apaths:filter (grep -rn 'paths:' .github/workflows/), so no other workflow can have this mismatch:ci.yml— the Ubuntu lane.on: pull_requestwith no filter, so it runs on every PR. Its module list also isn't hand-written:flipcashTestDebugin the rootbuild.gradle.ktsis built from the project listssettings.gradle.ktsderives fromunitTestPaths, so a new module joins it by being included in the build.publish-shared-core.yml— runs:kmp:shared-core:kmmBridgePublish,workflow_dispatchonly.maestro.yml—workflow_dispatchandschedule.bump-patch.yml,prep-dev.yml,build-fcash2-upload-android.yml,labeler.yml— no fixed module list against a path filter..github/labeler.ymlis the other glob list in the repo. It has noarea:entry coveringlibs/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.