Skip to content

Record compatibility decisions and revalidate Android APIs - #73

Merged
75py merged 2 commits into
release/3.0.0from
fix/3.0.0/compatibility-device-validation
Nov 1, 2026
Merged

75py merged 2 commits into
release/3.0.0from
fix/3.0.0/compatibility-device-validation

Conversation

@75py

@75py 75py commented Nov 1, 2026

Copy link
Copy Markdown
Owner

Record the owner's C1–C4 decisions and close the Android API 23/26/35 validation gap after #71 changed drag and lifecycle behavior.

  • Keep OverlaySpec as a data class. Its KDoc and migration guide require defaulted properties to be appended in 3.x, preserve source compatibility for Kotlin constructor/copy calls and Java Builder usage, and explicitly exclude constructor/copy binary compatibility for already compiled intermediate libraries across minor versions. Java callers must use Builder.
  • Keep internal visibility and repository records unchanged. Document the existing RestrictTo scopes without changing annotations.
  • Defer API compatibility tooling until before 3.1 development, using the 3.0.0 tag as the baseline. The planned task compares binary-compatibility-validator with Kotlin Gradle plugin ABI validation and checks compatibility with AGP 9 built-in Kotlin.
  • Record the decisions, review discussion, device fingerprints, commands, durations and artifact hashes in the plan and coordination record.

Validation

All requested Gradle tasks passed (148 tasks, 22 seconds):

./gradlew :core:assembleDebug :sample:assembleDebug :core:testDebugUnitTest :lint:test :sample:testDebugUnitTest :core:lintDebug :sample:lintDebug :core:assembleRelease :core:publishToMavenLocal -Dmaven.repo.local=/private/tmp/ovm-c1234-maven-20261101

161 unit tests passed (core 145, lint 12, sample 4), with zero failures/errors/skips. Lint had zero errors, 6 core warnings and 55 sample warnings.

Codex ran the full :sample:connectedDebugAndroidTest suite on dedicated arm64 AVDs, with the #71 product implementation unchanged:

API Passed / executed Failures / errors / skips Gradle elapsed time
23 26 / 26 0 / 0 / 0 220.09 s
26 26 / 26 0 / 0 / 0 202.95 s
35 31 / 31 0 / 0 / 0 244.88 s

On API 23/26, two freeform tests (minSdk 28) and three cross-UID tests (minSdk 31) are excluded by SDK filters; they are not counted as passes or runtime skips. API 35 includes all five. No device test failed, and no product/test fix or failure rerun was performed. API 35's freeform setting was restored and all dedicated AVDs were stopped. Physical devices and API 31/36 were not rerun in this follow-up.

The only source-file change is KDoc; comment-stripped OverlaySpec content is identical to c1eafeb. Public API signatures, enums, README unreleased wording, CHANGELOG dates, tests and build settings are unchanged. git diff --check passed.

Integration

Base is release/3.0.0. Merge only after Claude coordinator approval for the current head and successful CI. After integration, record the release head and its CI result on #66. Main merge, tagging and publication remain outside this task.

@75py

75py commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

APPROVE — Claude coordinator — PR #73 head 8f68ae7443878c252289fc88e87fb632f71e6143.

Reviewed the full diff from c1eafeb, including the changes since the early review of 409b7ab.

  • Four files change: V3_0_0_PLAN.md, the review record, the migration guide and OverlaySpec.kt. The OverlaySpec.kt change is KDoc only, with no other added or removed code lines. Nothing changes under sample, lint, build configuration, CI, README.md or CHANGELOG.md.
  • The KDoc and migration guide state C1 accurately: appended defaulted properties, source compatibility for Kotlin constructor/copy calls and the Java Builder, Java kept away from the primary constructor, and no binary guarantee for constructor/copy calls from compiled intermediate libraries.
  • C2 now separates the owner's stated policy from the scopes that actually exist. C3 adds no plugin, baseline or build change. C4 moves nothing.
  • The counts are consistent with the five SDK-filtered tests: 26 + 5 = 31.
  • The record keeps earlier checkpoints, separates this run from API 36 and from physical devices, and attributes all runs to Codex.
  • git diff --check passes, and the head descends from c1eafeb.

The Gradle and device results, fingerprints and artifact hashes come from Codex's report; Claude did not run them.

No blocking findings. Approval applies to the exact head above and base release/3.0.0. Merge remains conditional on successful CI for this head.

@75py
75py merged commit 536e4db into release/3.0.0 Nov 1, 2026
1 check passed
@75py 75py mentioned this pull request Nov 1, 2026
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