GenghisDarb/tatmapper-appmain at 8f49190a6e9ae29c8c49301a7736e0f838dfd369d51035caf391473faf997bd8f37256bc28fa845afbabebb — release shrinker, deterministic app-shell test, lockfilead5c83a — mobile-only workflow and validation enforcementGitHub Actions run 29807165757 reproduced both release blockers:
:app:minifyReleaseWithR8 failed because Flutter Play deferred-component
classes referenced unavailable com.google.android.play.core.* classes.
The app does not configure deferred components. The classes were retained by
blanket -keep class io.flutter.** and io.flutter.plugins.** rules.config_ads_integration_test.dart timed out after 30 seconds while invoking
the complete asynchronous production main() path under a widget-test
binding.The repository also contained .github/workflows/web-preview.yml and
scripts/deploy_web.sh even though AGENTS.md and RELEASE.md define the
project as Android/iOS-only.
ee80f08bbf)AI-261.23567.138.2611.15646644Medium_Phone_API_36.0, Pixel_7acodex mcp list was denied by Windows and
the localhost bridge health endpoints did not respondThe Windows Dart 3.12.2 AOT snapshot rejected itself in both the Flutter engine artifact and the official Dart SDK archive. Flutter analysis/tests therefore ran with the same pinned SDK in Ubuntu WSL. This is a local host-tool issue, not a repository failure.
| Command | Result |
|---|---|
flutter pub get |
PASS; lockfile reconciled for pinned SDK |
| focused config/app-shell test | PASS; 8 passed, 0 failed |
flutter analyze --fatal-warnings |
PASS; no issues (161.2 s) |
flutter test |
PASS; 140 passed, 6 skipped, 0 failed |
yamllint .github/workflows |
PASS |
git diff --check |
PASS |
The six skipped cases are pre-existing explicit manual probes/golden or native integration cases. They are not counted as executed evidence.
29830589100)29830589100)29830589100)29830589067.
The 771-line job upgraded dependencies during CI, installed NDK 27 despite
the project requiring NDK 28.2, performed a debug build before its explicit
local.properties setup, and emitted more than 1.6 MB of Gradle trace before
the runner stopped. It has been replaced by a pinned release-APK build gate;
verification of the replacement is pending the next hosted run.The Medium_Phone_API_36.0 AVD booted as
sdk_gphone64_x86_64 on API 36. Bundletool 1.18.3 validated the hosted AAB.
A local test keystore was used only to derive installable APKs from the unsigned
AAB; it is outside the repository and is not a production credential. A clean
install succeeded, com.tatmapper.app/.MainActivity reached the resumed state,
and the app process remained alive without a TatMapper fatal exception or ANR.
Observed device limitations remain product work rather than stabilization success criteria: first render took roughly 24 seconds while billing and ads initialized, the home screen has unusably low dark-theme contrast, and the emulator’s Pixel Launcher produced an unrelated system ANR overlay. The planar beta branch must remove monetization startup and replace this screen before its screenshots can be used publicly.
Bundletool 1.18.3 validated the unsigned hosted artifact from run
29830589100. Manifest and archive inspection reported:
com.tatmapper.app1.3.0 (versionCode 2)armeabi-v7a, arm64-v8a, and emulator x86_64libbody_patch.so present in every packaged ABIThe merged manifest also proves the stabilization binary still contains ad, billing, Sentry, audio, and legacy-storage contributions from its plugin graph. That is not treated as acceptable free-beta privacy evidence. The stacked planar branch must remove the monetization SDKs and unjustified merged permissions, then repeat this artifact inspection before any store upload.