Skip to content

chore(sync): pull template infra from openMF/kmp-project-template#158 - #2682

Merged
therajanmaurya merged 1 commit into
openMF:store5Migrationfrom
therajanmaurya:sync/template-bootstrap-2026-05-21
May 21, 2026
Merged

chore(sync): pull template infra from openMF/kmp-project-template#158#2682
therajanmaurya merged 1 commit into
openMF:store5Migrationfrom
therajanmaurya:sync/template-bootstrap-2026-05-21

Conversation

@therajanmaurya

Copy link
Copy Markdown
Member

Summary

First infra sync from openMF/kmp-project-template (post #158) onto field-officer's store5Migration integration branch. Pulls in core-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, store5Migration has all infrastructure prerequisites for Phase B (core/store seam wiring) and beyond.

How this PR was produced

The canonical mechanism is the Sync CMP Directories workflow on upstream (run #26212146442). The workflow executed successfully through every sync step but failed at PR creation because the PAT_TOKEN secret is not configured on openMF/mifos-x-field-officer-app (error: Input 'token' not supplied). This PR reproduces the exact behavior of the workflow's sync steps locally via rsync (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_TOKEN secret (a fine-grained PAT with contents: write + pull-requests: write on this repo) so future scheduled syncs and workflow_dispatch triggers can complete PR creation automatically.

Payload (371 files, +20,296 / -1,183)

Category Files Notes
core-base/ 265 ScreenState, SubmitState, StoreData, OfflineSubmitSyncer, DraftSubmitHandler, FetchPolicy, RoomSubmitOutbox + ui defaults + datastore + security + analytics
build-logic/ 35 Gradle convention plugins, version catalog
cmp-android/ 13 Android module structure (consumer-branded src/main/res, google-services.json, ic_launcher-playstore.png, dependencies/ preserved)
cmp-ios/ 12 iOS module structure (iosApp/Assets.xcassets preserved)
cmp-web/ 6 Web module (jsMain/wasmJsMain resources preserved)
cmp-shared/ 6 Shared business logic
cmp-desktop/ 2 Desktop (icons + build.gradle.kts preserved)
scripts/ 11 Setup, deployment, verification scripts
.github/ 9 New workflows: multi-platform-publish, test-coverage, monthly-version-tag, site-deploy, tag-weekly-release. workflows/sync-dirs.yaml preserved (keeps field-officer's store5Migration ref/base).
.run/ 3 IDE run configurations
fastlane/ 2 Deployment lane updates
fastlane-config/ 2 New configs (project_config.rb / extract_config.rb preserved)
config/ 1 Detekt config
Root 4 Gemfile, Gemfile.lock, ci-prepush.bat, ci-prepush.sh

Exclusions verified (consumer customizations untouched)

  • cmp-android/src/main/res — branded drawables, strings, mipmaps
  • cmp-android/dependencies — dependency-guard baseline
  • cmp-android/google-services.json — Firebase config
  • cmp-android/src/main/ic_launcher-playstore.png — launcher icon
  • cmp-ios/iosApp/Assets.xcassets — iOS asset catalog
  • 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 store5Migration ref/base customization
  • build-logic/convention/src/main/kotlin/local — consumer flavor extension point
  • root secrets.env

Test plan

  • CI green (lint, gradle convention plugin builds, dependency-guard baseline still valid)
  • ./gradlew clean :cmp-android:assembleDebug --dry-run resolves all dependencies on a fresh checkout of this branch
  • cd cmp-ios && pod install succeeds and Podfile.lock updates cleanly
  • Branded resources intact: cmp-android/src/main/res, google-services.json, Assets.xcassets, branded build flavors

Related

  • Template SOT: openMF/kmp-project-template#158 (merged 2026-05-21)
  • Bootstrap PR (workflow retarget): openMF/mifos-x-field-officer-app#2681 (merged 2026-05-21)
  • Failed workflow run that produced this diff: run #26212146442

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
@therajanmaurya
therajanmaurya requested a review from a team May 21, 2026 07:38
@coderabbitai

coderabbitai Bot commented May 21, 2026

Copy link
Copy Markdown

Important

Review skipped

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

🗂️ Base branches to auto review (1)
  • development

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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 2d585724-95bf-4004-9072-67aabc4f6260

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

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.

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
27.8% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@therajanmaurya
therajanmaurya merged commit 18c4728 into openMF:store5Migration May 21, 2026
2 of 4 checks passed
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