For every run record device/model, OS/API, ABI, app version, commit SHA, installation source, screenshots, sanitized log reference, result, and tester.
| Target | Status | Required focus |
|---|---|---|
| Android API 24/25 phone | NOT TESTED | minimum SDK, picker, camera, PDF share |
| Android API 30–32 phone | NOT TESTED | permissions and lifecycle |
| Android API 36 phone/emulator | DEVICE VERIFIED | exact CI QA APK installed and exercised on Samsung SM-F966U / Android 16 |
| Android large phone/tablet | NOT TESTED | unfolded/tablet and large-text states remain open |
| Physical Android camera device | DEVICE VERIFIED | rear-camera preview, capture, lifecycle, calibration, trace persistence, and deletion exercised |
| Current iPhone | BLOCKED | capture, import, lifecycle, VoiceOver |
| Current iPad | BLOCKED | responsive layout, multitasking, sharing |
A fresh TatMapper_QA_API_36 AVD was created from the installed Google Play
API 36 x86-64 image with the Pixel 7a hardware profile. ADB and the package
manager became reachable, but sys.boot_completed never became 1, the
launcher never gained focus, and the emulator did not establish a responsive
System UI. It was stopped cleanly and no application flow result was recorded.
This remains a FAILED environment attempt, not a TatMapper clean-launch or
QA pass. A separate existing API 36 emulator now reports boot completion and
responsive services, but the exact minified PR #110 APK cannot be built while
hosted CI is account-billing blocked and the local pinned Dart runtime crashes.
Its installed 2.0.0+3 package was last updated before PR A and is not used as
branch evidence. No PR #110 application or logcat result is recorded from that
emulator.
Application commit 8956a6a produced an R8/resource-shrunk release APK and AAB
locally with Java 17 and Gradle 8.13. Bundletool 1.18.3 validated the AAB. The
merged release manifest reports package com.tatmapper.app, min SDK 24, target
SDK 36, camera permission, and no internet, storage, billing, advertising-ID, or
audio permission. ARMv7, ARM64, and x86-64 Flutter/native libraries are present.
The final device pass instead used the exact CI-QA-signed APK from commit
3ad1fc1 (68,360,976 bytes; SHA-256
318A9E89846AC149A2995AD1BA53F87E8452CDC29430D23DC8114C93F113BADF).
It was freshly installed on the authorized Samsung SM-F966U running Android 16
/ API 36. Cold launch, real rear-camera capture, coin-reference confirmation,
two trace strokes, save/close, force-stop/restart, restored trace geometry,
theme persistence, and project deletion were DEVICE VERIFIED. The bundled
sample and export review also rendered on the device. Filtered logcat contained
no Flutter error, fatal exception, ANR, fatal signal, or camera-access
exception.
The permission-denied recovery UI, two-finger gesture arbitration, physical quarter measurement, design import in the new project, PDF share/print, TalkBack, large text, unfolded layout, and all physical print measurements remain NOT TESTED. The QA signature is non-production and the APK is not a store artifact.
The follow-up coin-first artist-polish pass used the exact CI-QA APK from
evidence head 4570e40 (70,835,162 bytes; SHA-256
4E5BEB1F55F76E8C1EA28AAFEE01270C42875A93AD3E0D12F7846C5E760CA487).
On the same authorized Samsung, the enlarged crest over the translucent
tattoo-workstation hero, quarter-first chooser, focused quarter alignment,
size confirmation, design opacity controls, mirrored export warning, PDF
generation, and Android share sheet were DEVICE VERIFIED. Filtered logcat
contained no Flutter error, fatal exception, ANR, fatal signal, camera-access
exception, file-system exception, or missing-plugin exception.
An owner/device photo was used only for the local test flow. It was not committed or uploaded; app-owned QA media was cleared and temporary captures were removed. The current-head APK was then reinstalled cleanly, leaving no saved project. Physical scale accuracy, printer output, the final 100 mm ruler, TalkBack, large text, and unfolded layout remain NOT TESTED.
Follow PHYSICAL_PRINT_VALIDATION.md; attach paper-master and final-stencil
measurements. Physical validation is an owner/hardware blocker, not inferred
from PDF unit tests.