Skip to content

Phase 1: Foundation & Tooling for v1.0 launch

Import User requested to merge feature/v1-phase1-foundation into main

Summary

Phase 1 of the v1.0 public-launch initiative. Lays the tooling, CI, and OSS-hygiene foundation so later phases can work safely.

No SDK source code logic is modified in this phase — only config, CI, docs, generated baselines, and pre-existing ktlint-style auto-fixes.

What lands

  • binary-compatibility-validator wired with experimental Klib mode; 11 .klib.api baselines captured (Native + commonMain coverage). JVM coverage has a known gap on AGP 9.0's KotlinMultiplatformAndroidLibraryTarget; audit-api skill fills that gap for androidMain-only additions. See docs/06-DECISIONS.md ADR-009 and docs/superpowers/plans/notes/2026-04-21-phase1-investigations.md for details.
  • .github/workflows/ci.yml created — scope: lint-only on ubuntu-latest (ktlintCheck + detekt). apiCheck and allTests require iOS Native compilation, which is out of PR-gate scope; they continue to run via publish.yml on push to main.
  • .github/workflows/docs.yml created — Dokka v2 multi-module aggregation deployed to GitHub Pages at https://royaltaxi.github.io/yalla-sdk/. Manual step required after merge: enable Pages in repo Settings with source set to "GitHub Actions."
  • POM metadata (name, description, url, licenses, scm, developers) added to KmpLibraryConventionPlugin. Inherits through KmpComposeConventionPlugin to all 11 published modules.
  • Stale yalla-sdk = "0.0.1-alpha08" entry removed from gradle/libs.versions.toml.
  • OSS-hygiene files at repo root: LICENSE (Apache 2.0), CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, CHANGELOG.md, SUPPORT.md, CODEOWNERS, .github/ISSUE_TEMPLATE/*.yml, .github/PULL_REQUEST_TEMPLATE.md, README.md (public-facing rewrite).
  • resources/MODULE.md and bom/MODULE.md scaffolds added.
  • Detekt @Suppress audit: every suppression now has inline justification. Noted that detekt is effectively NO-SOURCE against the KMP source layout today — fix deferred to Phase 2+.
  • Three alpha-start investigations documented in docs/superpowers/plans/notes/2026-04-21-phase1-investigations.md: YallaClient DI scope-ownership feasibility, binary-compatibility-validator KMP Native coverage (experimental Klib mode picked), iOS snapshot tool (bespoke XCTest + pointfreeco/swift-snapshot-testing).
  • ADR-009 added in docs/06-DECISIONS.md documenting the five ktlint_official rule relaxations on Compose-heavy code.

Test plan

  • ./gradlew ktlintCheck passes locally
  • ./gradlew detekt passes locally (effective NO-SOURCE on KMP source layout; flagged for Phase 2+)
  • ./gradlew apiCheck passes locally with DEVELOPER_DIR + CocoaPods
  • New ci.yml lint job green on the push
  • Dokka generation produces an index.html locally (./gradlew dokkaGenerate)

Known Phase-1 CI-gate gaps

These are documented, not fixed, in Phase 1:

  • PR gate does not run apiCheck or allTests — both require iOS Native compilation (Klib dumps, iOS simulator, Firebase pods). Full API + test matrix runs on main via publish.yml and locally on developer Macs. Audit-api skill is the manual gate for iOS API stability on PRs.
  • Detekt is effectively NO-SOURCE against the KMP source layout (src/<target>Main/kotlin rather than src/main/java). Wiring detekt source sets is Phase 2+ work.

Manual follow-ups for Islom after merge

  1. Enable GitHub Pages in repo Settings → Pages with source "GitHub Actions" so the docs.yml workflow can deploy.
  2. Confirm security@yalla.uz is provisioned (SECURITY.md references it).
  3. Review Phase 1 investigation outputs (docs/superpowers/plans/notes/2026-04-21-phase1-investigations.md) — they shape Phase 2+ scope.

Follow-up phases

Per docs/superpowers/specs/2026-04-21-yalla-sdk-v1-launch-design.md. Phase 2 (core + data) starts after this PR merges.

🤖 Generated with Claude Code

Merge request reports

Loading