chore(sync): pull template infra from openMF/kmp-project-template#158 - #2682
Conversation
Manual sync via local rsync (mirroring the workflow's behavior — the GitHub
Action workflow run #26212146442 succeeded through every sync step but
failed at PR creation due to missing PAT_TOKEN secret on the org repo).
Payload pulled in this sync (excluding consumer-branded resources per the
EXCLUSIONS contract):
core-base/ 265 files — ScreenState, SubmitState, StoreData,
OfflineSubmitSyncer, DraftSubmitHandler,
FetchPolicy, RoomSubmitOutbox, ui defaults,
datastore, security, analytics
build-logic/ 35 files — gradle convention plugins, version catalog
cmp-android/ 13 files — Android module structure (src/main/res,
google-services.json, ic_launcher-playstore.png,
dependencies/ preserved)
cmp-ios/ 12 files — iOS module structure (iosApp/Assets.xcassets preserved)
cmp-web/ 6 files — Web module structure (jsMain/wasmJsMain resources preserved)
cmp-shared/ 6 files — shared business logic
cmp-desktop/ 2 files — desktop module (icons + build.gradle.kts preserved)
scripts/ 11 files — setup, deployment, verification scripts
.github/ 9 files — new workflows (multi-platform publish, test
coverage, monthly version tag, site deploy,
weekly release tag); sync-dirs.yaml preserved
.run/ 3 files — IDE run configs
fastlane/ 2 files — deployment lanes
fastlane-config/ 2 files — config (project_config.rb, extract_config.rb preserved)
config/ 1 file
root/ 4 files — Gemfile, Gemfile.lock, ci-prepush.{bat,sh}
Total: 371 files, +20,296 / -1,183 lines.
Exclusions honored (consumer customizations untouched):
- cmp-android: src/main/res, dependencies, google-services.json,
src/main/ic_launcher-playstore.png
- cmp-ios: iosApp/Assets.xcassets
- cmp-web: src/jsMain/resources, src/wasmJsMain/resources
- cmp-desktop: icons, build.gradle.kts
- fastlane-config: project_config.rb, extract_config.rb
- .github: workflows/sync-dirs.yaml (preserves field-officer's
store5Migration ref/base customization)
- build-logic: convention/src/main/kotlin/local (consumer flavor
extension point)
- root: secrets.env
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review (1)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
|


Summary
First infra sync from
openMF/kmp-project-template(post#158) onto field-officer'sstore5Migrationintegration branch. Pulls incore-base/store,core-base/ui,build-logic/convention, platform module structures, new release/coverage workflows, and the rest of the template infrastructure — preserving every consumer-branded resource per the EXCLUSIONS contract.This is the Phase A Tier C output of the Store5-template-adoption epic. With this merged,
store5Migrationhas all infrastructure prerequisites for Phase B (core/store seam wiring) and beyond.How this PR was produced
The canonical mechanism is the
Sync CMP Directoriesworkflow on upstream (run #26212146442). The workflow executed successfully through every sync step but failed at PR creation because thePAT_TOKENsecret is not configured onopenMF/mifos-x-field-officer-app(error:Input 'token' not supplied). This PR reproduces the exact behavior of the workflow's sync steps locally viarsync(no--delete, with the same EXCLUSIONS), so the diff is identical to what the workflow would have produced.Follow-up: a maintainer needs to add the
PAT_TOKENsecret (a fine-grained PAT withcontents: write+pull-requests: writeon this repo) so future scheduled syncs andworkflow_dispatchtriggers can complete PR creation automatically.Payload (371 files, +20,296 / -1,183)
core-base/build-logic/cmp-android/src/main/res,google-services.json,ic_launcher-playstore.png,dependencies/preserved)cmp-ios/iosApp/Assets.xcassetspreserved)cmp-web/cmp-shared/cmp-desktop/scripts/.github/workflows/sync-dirs.yamlpreserved (keeps field-officer'sstore5Migrationref/base)..run/fastlane/fastlane-config/project_config.rb/extract_config.rbpreserved)config/Gemfile,Gemfile.lock,ci-prepush.bat,ci-prepush.shExclusions verified (consumer customizations untouched)
cmp-android/src/main/res— branded drawables, strings, mipmapscmp-android/dependencies— dependency-guard baselinecmp-android/google-services.json— Firebase configcmp-android/src/main/ic_launcher-playstore.png— launcher iconcmp-ios/iosApp/Assets.xcassets— iOS asset catalogcmp-web/src/jsMain/resources+src/wasmJsMain/resourcescmp-desktop/icons+build.gradle.ktsfastlane-config/project_config.rb+extract_config.rb.github/workflows/sync-dirs.yaml— preservesstore5Migrationref/base customizationbuild-logic/convention/src/main/kotlin/local— consumer flavor extension pointsecrets.envTest plan
./gradlew clean :cmp-android:assembleDebug --dry-runresolves all dependencies on a fresh checkout of this branchcd cmp-ios && pod installsucceeds and Podfile.lock updates cleanlycmp-android/src/main/res,google-services.json,Assets.xcassets, branded build flavorsRelated
openMF/kmp-project-template#158(merged 2026-05-21)openMF/mifos-x-field-officer-app#2681(merged 2026-05-21)