build(android): make develop toolchain inputs reproducible - #1557
Draft
Jeremy1844 wants to merge 2 commits into
Draft
build(android): make develop toolchain inputs reproducible#1557Jeremy1844 wants to merge 2 commits into
Jeremy1844 wants to merge 2 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Audit root
ADV-2026-0058/RC-0058develop38ccd793a3bbcc2150258deb4104dac6910c68da9733a84cf315d2200490d41391888105ee1c75301d99020f0f76a65ea3bd5246c271976e4a7c71c400ea8ff056462d058608f2363365b4e08421c126This is a draft. It has not been merged, released, signed, deployed, or exercised against production.
Why
The active
developbranch selected mutable hosted-runner labels and inline Java 23 values, omitted an authenticated Gradle distribution checksum, and had no repository-owned dependency-verification corpus.Java 23 had reached end of life, while the existing Gradle 9.4.1, Android Gradle Plugin, Kotlin and Foundry graph was proved compatible with the selected Zulu 25 LTS build without changing the generated JVM target.
The regression contract reports 18 exact violations on the audited base:
.java-version;Regression-first fix
Commit
9733a84cf315d2200490d41391888105ee1c7530adds the reproducibility contract before the fix. It exits nonzero with all 18 expected violations.Commit
1d99020f0f76a65ea3bd5246c271976e4a7c71c4:ubuntu-24.04;macos-15;25.0.4+7through.java-version;.java-version;The final metadata contains 1,562 components, 2,571 artifacts and 2,571 SHA-256 entries. Its file SHA-256 is:
3dc3ab243935e9240fcb29de18f0e855daa0a1db6cac9e3bab0395d07f41afa4The unchanged wrapper JAR SHA-256 is:
55243ef57851f12b070ad14f7f5bb8302daceeebc5bce5ece5fa6edb23e1145cRecorded local evidence
check, 2,677/2,677 tasks executed in 3m28s.testDebugUnitTest -Proborazzi.test.verify=true, 1,029 tasks and 39/39 emitted tests with no failures, errors or skips.app:bundleRelease app-tv:bundleRelease --dry-run; both signing tasks were skipped.The strict run used no dependency-metadata-writing flag, build cache or configuration cache.
Environment separation
Two preflight invocations failed before testing for local environment reasons:
After selecting the preserved audited dependency cache and the installed API 36/build-tools 36 SDK, the complete strict graph passed. Neither preliminary stop was a dependency-verification, compiler, test or repository failure.
Scope and compatibility
Changed paths are limited to the reproducibility policy, five workflows,
.java-version, the Java catalog value, verification metadata and wrapper properties.The Git trees for
app,app-tv,baselineprofile,common,features,libraries,services,releaseanddistributionare byte-identical between the base and fix.Therefore:
Developers and CI must use the exact JDK selected by
.java-version.Open pull-request overlap
The final preflight reviewed every open Android PR, #1548 through #1555. All target
main; none targetsdevelop.There is zero changed-path overlap with #1548, #1549, #1551, #1552 and #1553.
The remaining intersections are branch-divergent and do not block this standalone
developdraft:gradle/libs.versions.toml, in a separate hunk. If its new Room testing dependency is later ported todevelop, regenerate and strictly verify the dependency metadata.pull_request.yml. If ported, its added job must retain the pinned runner,.java-versionanddevelopGradle-action alignment.on_push.yml. Its release-secret-boundary fix remains separate, but its hunk must be replayed after this root because the direct patch context changed.Landing order and dependent roots
developroot first.The ADV-0073 requirement was reproduced directly. A detached composition of the exact ADV-0058 and ADV-0073 trees failed closed in
updateRobolectricJars: strict verification rejected the SDK 23 JAR and POM because they are absent from this metadata corpus. The SDK 24 coordinate is also absent. ADV-0073's current three-file head is therefore not composition-ready; it must add authenticated Gradle metadata for both SDK lines and rerun its empty-home/offline matrix.Main-target ADV-0051, ADV-0054, ADV-0069 and the main ADV-0058 slice remain separate branch-specific delivery units.
Rollback
There is no application-data rollback.
Prefer a forward correction that preserves exact runner, Java, wrapper and dependency identities. If the fix must be reverted, revert the landed equivalent of
1d99020f0f76a65ea3bd5246c271976e4a7c71c4. Retain or replace the regression contract so any alternative toolchain remains pinned and authenticated.Reverting without a replacement restores the confirmed mutable and unauthenticated build path.
Security, privacy and content rights
This root improves build-artifact integrity. No compromise is alleged.
No credential, private source, signing material, private alert, user data or dependency payload is included in the change or public evidence. No rights-controlled content was read, changed, generated or uploaded.
Remaining draft gates
Keep this PR in draft until maintainers:
setup-javaresolves exact Zulu 25.0.4+7 on the hosted architectures;check, the configured unit/Roborazzi lane and the release-bundle dry-run;ADV-0033 owns full-SHA GitHub Action pinning and privileged workflow controls. This PR must not absorb that separate root.
No local evidence authorizes merge, signing, store upload, release or deployment.