SAFE
Public is fine to keep — hardening applied. Zero CRITICAL findings, no
currently-exposed secrets. History clean, signing key uncompromised, license valid FOSS, no
trackers / GMS / blobs. Both HIGH items are now closed: the wrapper SHA is pinned, and the
transitive CVE scan ran (39 CVEs, all build/test tooling, zero shipped). Fixes
committed to audit/pre-release-hardening, not pushed.
Findings & what was done
Fixedsupply-chain · B1 · HIGH
Gradle wrapper had no distribution checksum
Distribution was fetched over HTTPS but not hash-verified. Fixed: pinned distributionSha256Sum (verified against gradle.org); committed wrapper.jar also verified == upstream 8.14.4.
gradle/wrapper/gradle-wrapper.properties ✓ committed
Resolvedsupply-chain · B2 · HIGH
Transitive CVE tree — now scanned & clean of shipping CVEs
Scanned via the project's Nix toolchain + osv-scanner (324 artifacts). 39 CVEs, all in build/test tooling (AGP Unified Test Platform: netty/grpc/protobuf/commons-io; ktlint: logback). Zero reach the app's release classpath. A ktlint/detekt bump clears none (verified) — accepted as non-shipping; osv-scanner added to CI (warn-only).
0 vulnerable artifacts in releaseRuntimeClasspath ✓
Fixedandroid-security · M1 · MED
allowBackup denylist was fragile
Fixed: converted both backup configs to a fail-safe allowlist — nothing is backed up unless explicitly included (currently empty). Resources verified to compile.
app/src/main/res/xml/*backup*.xml ✓ committed
Fixedrelease-hygiene · M2 · MED
No versionCode increment strategy
Fixed: versionCode/versionName now derived from the git tag (monotonic for F-Droid). Both tag and dev-fallback paths verified to build.
app/build.gradle.kts ✓ committed
Fixedsupply-chain · M3 · MED
Two unused test dependencies
Fixed: removed androidx.test:core and espresso-core (kept the used runner's version ref). Config resolves clean.
gradle/libs.versions.toml ✓ committed
Opentooling · M4 · LOW
trufflehog verified-secrets pass not run
Low priority — gitleaks over full history was already clean. Run when convenient.
install trufflehog → git file://. --results=verified,unknown