ci(fdroid): guard all three reproducible-build invariants #26
Reference in New Issue
Block a user
Delete Branch "chore/harden-repro-guard"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Harden the reproducible-release CI guard
scripts/check_reproducible_release.sh(the always-onReproducible-release invariantCI step) only asserted one of the three invariants F-Droid's review surfaced. If either of the other two regresses, official publishing silently stalls on the last good version (fails safe, so you wouldn't notice). Now it enforces all three:vcsInfo { include = false }version-control-info.textproto→ not reproduciblefoojaytoolchain resolver (any Gradle script)dependenciesInfo { includeInApk = false }Dependency metadatablock (0x504b4453) → binary scanner rejects the extra signing blockThe script accumulates failures (reports every broken invariant in one run) and exits non-zero if any fail.
Tested: positive (current
mainpasses), one negative per invariant, and all-three-broken (reports all three). Noci.yamlchange — it already invokes this script. Non-release change (no version bump), so merging won't cut a release.🤖 Generated with Claude Code
The reproducible-release CI guard only asserted `vcsInfo { include = false }`. F-Droid review surfaced two more invariants that, if they regress, silently stall official publishing (fails safe — stuck on an old version): - no foojay toolchain resolver in any Gradle script (the offline source scanner rejects org.gradle.toolchains.foojay-resolver — it can fetch a JDK over the network), and - `dependenciesInfo { includeInApk = false }` (else AGP embeds a "Dependency metadata" block, id 0x504b4453, in the APK Signing Block, which the binary scanner rejects as an extra signing block). The script now checks all three, accumulates failures (reports every broken invariant in one run, not just the first), and exits non-zero if any fails. Verified positive + one negative per invariant + all-three-broken. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>