Phase 1: Foundation & Tooling for v1.0 launch
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-validatorwired with experimental Klib mode; 11.klib.apibaselines captured (Native + commonMain coverage). JVM coverage has a known gap on AGP 9.0'sKotlinMultiplatformAndroidLibraryTarget;audit-apiskill fills that gap for androidMain-only additions. Seedocs/06-DECISIONS.mdADR-009 anddocs/superpowers/plans/notes/2026-04-21-phase1-investigations.mdfor details. -
.github/workflows/ci.ymlcreated — scope: lint-only on ubuntu-latest (ktlintCheck + detekt).apiCheckandallTestsrequire iOS Native compilation, which is out of PR-gate scope; they continue to run viapublish.ymlon push to main. -
.github/workflows/docs.ymlcreated — Dokka v2 multi-module aggregation deployed to GitHub Pages athttps://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 throughKmpComposeConventionPluginto all 11 published modules. - Stale
yalla-sdk = "0.0.1-alpha08"entry removed fromgradle/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.mdandbom/MODULE.mdscaffolds added. - Detekt
@Suppressaudit: 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.mddocumenting the five ktlint_official rule relaxations on Compose-heavy code.
Test plan
-
./gradlew ktlintCheckpasses locally -
./gradlew detektpasses locally (effective NO-SOURCE on KMP source layout; flagged for Phase 2+) -
./gradlew apiCheckpasses locally withDEVELOPER_DIR+ CocoaPods -
New ci.ymllint job green on the push -
Dokka generation produces an index.htmllocally (./gradlew dokkaGenerate)
Known Phase-1 CI-gate gaps
These are documented, not fixed, in Phase 1:
-
PR gate does not run
apiCheckorallTests— both require iOS Native compilation (Klib dumps, iOS simulator, Firebase pods). Full API + test matrix runs onmainviapublish.ymland 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/kotlinrather thansrc/main/java). Wiring detekt source sets is Phase 2+ work.
Manual follow-ups for Islom after merge
- Enable GitHub Pages in repo Settings → Pages with source "GitHub Actions" so the
docs.ymlworkflow can deploy. - Confirm
security@yalla.uzis provisioned (SECURITY.md references it). - 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.