Repository navigation
Add a sample flag-stripping runbook - #319
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
Record the sample checks that prove a disabled local flag was stripped from Android, Desktop, and iOS without changing library runtime.
The release absence stays on the same tasks. The control is that same disabled class present when the accessor is not folded, called from the feature-checkout bridge rather than from the shells.
The checkout sample reaches one class only through the generated new_checkout accessor. Android and Desktop release builds drop that class; named control tasks keep it when the accessor is not folded. iOS Release, built with DISABLE_NEW_CHECKOUT from the checkout xcconfig, drops the existing banner string that Debug still contains. The reader commands are in docs/flag-stripping-runbook.md.
mapping.txt still records the inlined reachNewCheckoutDisabledBranch method. The runbook and AC-4 now require the class FQN, which the release mapping already omits.
27c66e7 to
31665d5
Compare
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
Closes #213
Summary
A reader can follow docs/flag-stripping-runbook.md and see a disabled local
new_checkoutflag stripped from the Android, Desktop, and iOS sample apps. This is a sample verification path, not a library behavior change.NewCheckoutBanner. Release is built withDISABLE_NEW_CHECKOUTfrom:sample:feature-checkout:generateXcconfig. The ReleaseFeaturedexecutable lacksNew checkout is enabled; the Debug executable still contains it. Debug no longer splits that code into a debug dylib, so the Mach-O namedFeaturedis the file the runbook inspects.NewCheckoutDisabledBranch, reached only through the generated accessor, and checks:sample:android-app:assembleReleasemapping.:sample:android-app:r8UnfoldedMarkerkeeps that class when the featured rules are not applied. KMP consumer rules are published from:sample:feature-checkoutso the generated-assumevaluesand-checkdiscardfiles reach the app R8.proguard-featured.prointo the existing Compose release ProGuard task and checks:sample:desktop:packageReleaseUberJarForCurrentOS.:sample:desktop:proguardUnfoldedMarkerkeeps the class when that rules file is not applied.observe()UI is unchanged. Library tests are not this check.Type of change
The sample wiring is what makes the documentation checkable. Published library API does not change.
Checklist
./gradlew spotlessCheckpassesThe checks are the reader commands in the runbook, not a new library test and not a device run. No screenshots.
Notes for reviewers
dev.androidbroadcast.featured.sample.checkout.NewCheckoutDisabledBranch. A search for the simple name also matches the bridge methodreachNewCheckoutDisabledBranchin the line mapping after the class is gone.:sample:android-app:r8UnfoldedMarkerpassesproguard-android-optimize.txtand turns optimization off. Class-file R8 otherwise replacesonCreatewiththrow null, so the entry-point keep would not retain the call.assumevaluesstill removes the class when those rules are applied without optimization; the control does not apply them.stringslacksNew checkout is enabled, Debugstringscontains it,mapping.txtlacks the class FQN, the Android unfolded jar contains the class, the Desktop-release.jarlacks it, and the Desktop unfolded jar contains it.