Output:
Chunk ID: 8379dc
Wall time: 30.1452 seconds
Process running with session ID 5510
Original token count: 1149
Output:
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off
Starting a Gradle Daemon, 6 busy Daemons could not be reused, use --status for details

> Configure project :app
WARNING: The option setting 'android.testoptions.manageddevices.emulator.gpu=host' is experimental.

> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:generateDebugBuildConfig UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:packageDebugResources UP-TO-DATE
> Task :app:processDebugNavigationResources UP-TO-DATE
> Task :app:parseDebugLocalResources UP-TO-DATE
> Task :app:generateDebugRFile UP-TO-DATE
> Task :app:compileDebugKotlin UP-TO-DATE
> Task :app:javaPreCompileDebug UP-TO-DATE
> Task :app:compileDebugJavaWithJavac UP-TO-DATE
> Task :app:checkDebugAarMetadata UP-TO-DATE
> Task :app:mapDebugSourceSetPaths UP-TO-DATE
> Task :app:compileDebugNavigationResources UP-TO-DATE
> Task :app:mergeDebugResources UP-TO-DATE
> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :app:extractDeepLinksDebug UP-TO-DATE
> Task :app:processDebugMainManifest UP-TO-DATE
> Task :app:processDebugManifest UP-TO-DATE
> Task :app:processDebugManifestForPackage UP-TO-DATE
> Task :app:processDebugResources UP-TO-DATE
> Task :app:bundleDebugClassesToCompileJar UP-TO-DATE
> Task :app:preDebugAndroidTestBuild SKIPPED
> Task :app:processDebugAndroidTestManifest UP-TO-DATE
> Task :app:generateDebugAndroidTestBuildConfig UP-TO-DATE
> Task :app:generateDebugAndroidTestResources UP-TO-DATE
> Task :app:packageDebugAndroidTestResources UP-TO-DATE
> Task :app:processDebugAndroidTestNavigationResources UP-TO-DATE
> Task :app:parseDebugAndroidTestLocalResources UP-TO-DATE
> Task :app:generateDebugAndroidTestRFile UP-TO-DATE
> Task :app:compileDebugAndroidTestKotlin UP-TO-DATE
> Task :app:javaPreCompileDebugAndroidTest UP-TO-DATE
> Task :app:compileDebugAndroidTestJavaWithJavac UP-TO-DATE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :app:mergeDebugAssets UP-TO-DATE
> Task :app:compressDebugAssets UP-TO-DATE
> Task :app:generateDebugGlobalSynthetics UP-TO-DATE
> Task :app:processDebugJavaRes UP-TO-DATE
> Task :app:mergeDebugJavaResource UP-TO-DATE
> Task :app:checkDebugDuplicateClasses UP-TO-DATE
> Task :app:desugarDebugFileDependencies UP-TO-DATE
> Task :app:mergeExtDexDebug UP-TO-DATE
> Task :app:mergeLibDexDebug UP-TO-DATE
> Task :app:dexBuilderDebug UP-TO-DATE
> Task :app:mergeProjectDexDebug UP-TO-DATE
> Task :app:mergeDebugJniLibFolders UP-TO-DATE
> Task :app:mergeDebugNativeLibs UP-TO-DATE
> Task :app:stripDebugDebugSymbols UP-TO-DATE
> Task :app:validateSigningDebug UP-TO-DATE
> Task :app:writeDebugAppMetadata UP-TO-DATE
> Task :app:writeDebugSigningConfigVersions UP-TO-DATE
> Task :app:packageDebug UP-TO-DATE
> Task :app:createDebugApkListingFileRedirect UP-TO-DATE
> Task :app:generateDebugAndroidTestAssets UP-TO-DATE
> Task :app:mergeDebugAndroidTestAssets UP-TO-DATE
> Task :app:compressDebugAndroidTestAssets UP-TO-DATE
> Task :app:generateDebugAndroidTestGlobalSynthetics UP-TO-DATE
> Task :app:processDebugAndroidTestJavaRes UP-TO-DATE
> Task :app:mergeDebugAndroidTestJavaResource UP-TO-DATE
> Task :app:checkDebugAndroidTestDuplicateClasses UP-TO-DATE
> Task :app:desugarDebugAndroidTestFileDependencies UP-TO-DATE
> Task :app:mergeExtDexDebugAndroidTest UP-TO-DATE
> Task :app:mergeLibDexDebugAndroidTest UP-TO-DATE
> Task :app:checkDebugAndroidTestAarMetadata UP-TO-DATE
> Task :app:mapDebugAndroidTestSourceSetPaths UP-TO-DATE
> Task :app:compileDebugAndroidTestNavigationResources UP-TO-DATE
> Task :app:mergeDebugAndroidTestResources UP-TO-DATE
> Task :app:processDebugAndroidTestResources UP-TO-DATE
> Task :app:dexBuilderDebugAndroidTest UP-TO-DATE
> Task :app:mergeProjectDexDebugAndroidTest UP-TO-DATE
> Task :app:mergeDebugAndroidTestJniLibFolders UP-TO-DATE
> Task :app:mergeDebugAndroidTestNativeLibs UP-TO-DATE
> Task :app:stripDebugAndroidTestDebugSymbols UP-TO-DATE
> Task :app:validateSigningDebugAndroidTest UP-TO-DATE
> Task :app:writeDebugAndroidTestSigningConfigVersions UP-TO-DATE
> Task :app:packageDebugAndroidTest UP-TO-DATE
> Task :app:createDebugAndroidTestApkListingFileRedirect UP-TO-DATE

> Task :app:pixel2api33Setup
The device "pixel2api33" does not specify a "testedAbi".
This currently defaults to "x86_64", but will change to "arm64-v8a" in AGP 10.0.

The system image configured for "pixel2api33" does not support NDK translation,
so it will be unable to run tests built for "arm64-v8a".

To keep the current behavior and prevent test failures in AGP 10.0,
explicitly set the ABI: testedAbi = "x86_64"


The app-scoped smoke task is at `:app:pixel2api33Setup`; so far it is avoiding the macrobenchmark test-class mismatch.


Output:
Chunk ID: f5b83c
Wall time: 30.0004 seconds
Process running with session ID 5510
Original token count: 33
Output:

> Task :app:pixel2api33DebugAndroidTest

Starting 14 tests on pixel2api33
pixel2api33 Tests 3/14 completed. (0 skipped) (0 failed)


The app smoke tests are executing on the managed device: 3 of 14 completed, none failed.


Output:
Chunk ID: ceff33
Wall time: 7.2491 seconds
Process exited with code 0
Original token count: 260
Output:
pixel2api33 Tests 8/14 completed. (0 skipped) (0 failed)
Finished 14 tests on pixel2api33

> Task :app:mergeDebugAndroidTestTestResultProtos
Test execution completed. See the report at: file:///home/Messier82/projects/service-book/app/build/reports/androidTests/managedDevice/debug/allDevices/index.html

[Incubating] Problems report is available at: file:///home/Messier82/projects/service-book/build/reports/problems/problems-report.html

Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.5.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 1m 17s
75 actionable tasks: 3 executed, 72 up-to-date
Consider enabling configuration cache to speed up this build: https://docs.gradle.org/9.5.1/userguide/configuration_cache_enabling.html


The app-scoped managed-device smoke suite passed: 14 tests, 0 failures. I’m running the required lint/format/static-analysis check for #136 next.


Output:
Chunk ID: 7c7a3f
Wall time: 2.9621 seconds
Process exited with code 0
Original token count: 1409
Output:
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off

> Configure project :app
WARNING: The option setting 'android.testoptions.manageddevices.emulator.gpu=host' is experimental.

> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:generateDebugBuildConfig UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:packageDebugResources UP-TO-DATE
> Task :macrobenchmark:loadKtlintReporters UP-TO-DATE
> Task :macrobenchmark:runKtlintCheckOverBenchmarkSourceSet NO-SOURCE
> Task :macrobenchmark:ktlintBenchmarkSourceSetCheck SKIPPED
> Task :macrobenchmark:runKtlintCheckOverDebugSourceSet NO-SOURCE
> Task :macrobenchmark:ktlintDebugSourceSetCheck SKIPPED
> Task :macrobenchmark:runKtlintCheckOverKotlinScripts UP-TO-DATE
> Task :macrobenchmark:ktlintKotlinScriptCheck UP-TO-DATE
> Task :macrobenchmark:runKtlintCheckOverMainSourceSet UP-TO-DATE
> Task :macrobenchmark:ktlintMainSourceSetCheck UP-TO-DATE
> Task :macrobenchmark:ktlintCheck UP-TO-DATE
> Task :macrobenchmark:detekt UP-TO-DATE
> Task :app:processDebugNavigationResources UP-TO-DATE
> Task :app:parseDebugLocalResources UP-TO-DATE
> Task :app:generateDebugRFile UP-TO-DATE
> Task :app:compileDebugKotlin UP-TO-DATE
> Task :app:javaPreCompileDebug UP-TO-DATE
> Task :app:compileDebugJavaWithJavac UP-TO-DATE
> Task :app:checkDebugAarMetadata UP-TO-DATE
> Task :app:mapDebugSourceSetPaths UP-TO-DATE
> Task :app:compileDebugNavigationResources UP-TO-DATE
> Task :app:mergeDebugResources UP-TO-DATE
> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :app:extractDeepLinksDebug UP-TO-DATE
> Task :app:processDebugMainManifest UP-TO-DATE
> Task :app:processDebugManifest UP-TO-DATE
> Task :app:processDebugManifestForPackage UP-TO-DATE
> Task :app:processDebugResources UP-TO-DATE
> Task :app:bundleDebugClassesToCompileJar UP-TO-DATE
> Task :app:preDebugAndroidTestBuild SKIPPED
> Task :app:generateDebugAndroidTestLintModel UP-TO-DATE
> Task :app:extractProguardFiles UP-TO-DATE
> Task :app:generateDebugLintReportModel UP-TO-DATE
> Task :app:preDebugUnitTestBuild UP-TO-DATE
> Task :app:generateDebugUnitTestLintModel UP-TO-DATE
> Task :app:lintAnalyzeDebug UP-TO-DATE
> Task :app:lintAnalyzeDebugAndroidTest UP-TO-DATE
> Task :app:lintAnalyzeDebugUnitTest UP-TO-DATE
> Task :app:lintReportDebug UP-TO-DATE
> Task :app:lintDebug
> Task :app:loadKtlintReporters UP-TO-DATE
> Task :app:runKtlintCheckOverAndroidTestBenchmarkSourceSet NO-SOURCE
> Task :app:ktlintAndroidTestBenchmarkSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverAndroidTestDebugSourceSet NO-SOURCE
> Task :app:ktlintAndroidTestDebugSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverAndroidTestReleaseSourceSet NO-SOURCE
> Task :app:ktlintAndroidTestReleaseSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverAndroidTestSourceSet UP-TO-DATE
> Task :app:ktlintAndroidTestSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverAndroidTestStagingSourceSet UP-TO-DATE
> Task :app:ktlintAndroidTestStagingSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverBenchmarkSourceSet UP-TO-DATE
> Task :app:ktlintBenchmarkSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverDebugSourceSet UP-TO-DATE
> Task :app:ktlintDebugSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverKotlinScripts UP-TO-DATE
> Task :app:ktlintKotlinScriptCheck UP-TO-DATE
> Task :app:runKtlintCheckOverMainSourceSet UP-TO-DATE
> Task :app:ktlintMainSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverReleaseSourceSet NO-SOURCE
> Task :app:ktlintReleaseSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverStagingSourceSet NO-SOURCE
> Task :app:ktlintStagingSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestBenchmarkSourceSet NO-SOURCE
> Task :app:ktlintTestBenchmarkSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestDebugSourceSet NO-SOURCE
> Task :app:ktlintTestDebugSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesBenchmarkSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesBenchmarkSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesDebugSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesDebugSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesReleaseSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesReleaseSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesStagingSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesStagingSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestReleaseSourceSet NO-SOURCE
> Task :app:ktlintTestReleaseSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestSourceSet UP-TO-DATE
> Task :app:ktlintTestSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverTestStagingSourceSet NO-SOURCE
> Task :app:ktlintTestStagingSourceSetCheck SKIPPED
> Task :app:ktlintCheck UP-TO-DATE
> Task :app:detekt UP-TO-DATE

[Incubating] Problems report is available at: file:///home/Messier82/projects/service-book/build/reports/problems/problems-report.html

Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.5.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 2s
51 actionable tasks: 1 executed, 50 up-to-date
Consider enabling configuration cache to speed up this build: https://docs.gradle.org/9.5.1/userguide/configuration_cache_enabling.html


#136 has passed `test`, app-scoped GPU smoke, and `lintDebug ktlintCheck detekt`. The only broad `pixel2api33Check` failure was the macrobenchmark `ClassNotFoundException` task-scope issue, so I’m checking local git state and then merging #136.


Output:
Chunk ID: 81b3b3
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 35
Output:
## dependabot/github_actions/actions/setup-python-6...origin/dependabot/github_actions/actions/setup-python-6 [ahead 5]
?? extracted-icons/


Output:
Chunk ID: 5c648c
Wall time: 0.1242 seconds
Process exited with code 0
Original token count: 106
Output:
ae1af14 (HEAD -> dependabot/github_actions/actions/setup-python-6) Merge remote-tracking branch 'origin/master' into dependabot/github_actions/actions/setup-python-6
ae7914d (origin/master, origin/HEAD, master) Update launcher icon and bump version code
fca3e97 test: add diagnostics for R-A07 flake
7d7f4d1 docs: update nightly regression dashboard [skip ci]
3443923 build: update launcher icons and bump versionCode to 4


gh pr merge 136 --squash --delete-branch


Output:
Chunk ID: b46afa
Wall time: 6.0759 seconds
Process exited with code 0
Original token count: 64
Output:
From github.com:yorvana/android
 * branch            master     -> FETCH_HEAD
   ae7914d..3754521  master     -> origin/master
Updating ae7914d..3754521
Fast-forward
 .github/workflows/regression.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


#136 is merged and local `origin/master` fast-forwarded to include it. I’m moving to #137 next and repeating the same sequence from the updated master.


gh pr list --author app/dependabot --state open --json number,title,headRefName,mergeStateStatus


Output:
Chunk ID: 0b4b54
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 12
Output:
## master...origin/master
?? extracted-icons/


Output:
Chunk ID: ace85c
Wall time: 0.9486 seconds
Process exited with code 0
Original token count: 204
Output:
[{"headRefName":"dependabot/gradle/mockk-1.14.11","mergeStateStatus":"UNKNOWN","number":141,"title":"build: bump mockk from 1.14.9 to 1.14.11"},{"headRefName":"dependabot/gradle/kotlin-2.4.0","mergeStateStatus":"UNKNOWN","number":140,"title":"build: bump kotlin from 2.3.21 to 2.4.0"},{"headRefName":"dependabot/gradle/androidx.core-core-ktx-1.19.0","mergeStateStatus":"UNKNOWN","number":139,"title":"build: bump androidx.core:core-ktx from 1.18.0 to 1.19.0"},{"headRefName":"dependabot/gradle/io.sentry-sentry-android-8.43.1","mergeStateStatus":"UNKNOWN","number":138,"title":"build: bump io.sentry:sentry-android from 8.42.0 to 8.43.1"},{"headRefName":"dependabot/github_actions/actions/download-artifact-8","mergeStateStatus":"UNKNOWN","number":137,"title":"build: bump actions/download-artifact from 4 to 8"}]


Five Dependabot PRs remain. I’m checking out #137 (`actions/download-artifact`) and merging current `origin/master`; this one touches the same workflow file as #136, so conflict detection matters.


Output:
Chunk ID: d6c669
Wall time: 2.7838 seconds
Process exited with code 0
Original token count: 99
Output:
From github.com:yorvana/android
 * [new branch]      dependabot/github_actions/actions/download-artifact-8 -> origin/dependabot/github_actions/actions/download-artifact-8
Switched to a new branch 'dependabot/github_actions/actions/download-artifact-8'
branch 'dependabot/github_actions/actions/download-artifact-8' set up to track 'origin/dependabot/github_actions/actions/download-artifact-8'.


Output:
Chunk ID: cb4f12
Wall time: 2.1875 seconds
Process exited with code 0
Original token count: 20
Output:
From github.com:yorvana/android
 * branch            master     -> FETCH_HEAD


Output:
Chunk ID: 4ffb40
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 235
Output:
Auto-merging .github/workflows/regression.yml
Merge made by the 'ort' strategy.
 .github/workflows/regression.yml                   |   2 +-
 app/build.gradle.kts                               |   2 +-
 .../attachments/AttachmentRealOsRegressionTest.kt  |  59 +++++-
 .../main/res/drawable/ic_launcher_background.xml   |  17 +-
 .../main/res/drawable/ic_launcher_foreground.xml   |  21 +-
 .../main/res/drawable/ic_launcher_monochrome.xml   |  21 +-
 .../snapshots/SettingsScreen_conflict_light.png    | Bin 20159 -> 20020 bytes
 .../SettingsScreen_existing_vault_light.png        | Bin 21913 -> 21856 bytes
 docs/investigation-ra07-record-row-flake.md        | 213 +++++++++++++++++++++
 docs/regression-dashboard.md                       |  80 ++++----
 docs/regression-history.json                       |  46 +++++
 11 files changed, 389 insertions(+), 72 deletions(-)
 create mode 100644 docs/investigation-ra07-record-row-flake.md


#137 merged current master locally without conflicts. I’m running the required JVM/Robolectric tests now.


Output:
Chunk ID: d149ad
Wall time: 2.1972 seconds
Process exited with code 0
Original token count: 717
Output:
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off

> Configure project :app
WARNING: The option setting 'android.testoptions.manageddevices.emulator.gpu=host' is experimental.

> Task :app:preBuild UP-TO-DATE
> Task :macrobenchmark:test UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:generateDebugBuildConfig UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:packageDebugResources UP-TO-DATE
> Task :app:processDebugNavigationResources UP-TO-DATE
> Task :app:parseDebugLocalResources UP-TO-DATE
> Task :app:generateDebugRFile UP-TO-DATE
> Task :app:compileDebugKotlin UP-TO-DATE
> Task :app:javaPreCompileDebug UP-TO-DATE
> Task :app:compileDebugJavaWithJavac UP-TO-DATE
> Task :app:checkDebugAarMetadata UP-TO-DATE
> Task :app:mapDebugSourceSetPaths UP-TO-DATE
> Task :app:compileDebugNavigationResources UP-TO-DATE
> Task :app:mergeDebugResources UP-TO-DATE
> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :app:extractDeepLinksDebug UP-TO-DATE
> Task :app:processDebugMainManifest UP-TO-DATE
> Task :app:processDebugManifest UP-TO-DATE
> Task :app:processDebugManifestForPackage UP-TO-DATE
> Task :app:processDebugResources UP-TO-DATE
> Task :app:bundleDebugClassesToRuntimeJar UP-TO-DATE
> Task :app:bundleDebugClassesToCompileJar UP-TO-DATE
> Task :app:preDebugUnitTestBuild UP-TO-DATE
> Task :app:compileDebugUnitTestKotlin UP-TO-DATE
> Task :app:javaPreCompileDebugUnitTest UP-TO-DATE
> Task :app:compileDebugUnitTestJavaWithJavac NO-SOURCE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :app:mergeDebugAssets UP-TO-DATE
> Task :app:packageDebugUnitTestForUnitTest UP-TO-DATE
> Task :app:processDebugUnitTestManifest UP-TO-DATE
> Task :app:generateDebugUnitTestConfig UP-TO-DATE
> Task :app:processDebugJavaRes UP-TO-DATE
> Task :app:processDebugUnitTestJavaRes UP-TO-DATE
> Task :app:restoreOutputDirRoborazzi SKIPPED

> Task :app:testPythonAggregator
....
----------------------------------------------------------------------
Ran 4 tests in 0.004s

OK

> Task :app:testDebugUnitTest UP-TO-DATE
> Task :app:finalizeTestRoborazziDebug SKIPPED
> Task :app:test UP-TO-DATE

[Incubating] Problems report is available at: file:///home/Messier82/projects/service-book/build/reports/problems/problems-report.html

Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.5.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 2s
31 actionable tasks: 1 executed, 30 up-to-date
Consider enabling configuration cache to speed up this build: https://docs.gradle.org/9.5.1/userguide/configuration_cache_enabling.html


`./gradlew test` passed for #137. Since the broad smoke command is currently known to pull in `:macrobenchmark` and fail with a non-app `ClassNotFoundException`, I’m using the app-scoped managed-device smoke task for the remaining PRs.


Output:
Chunk ID: 0029a2
Wall time: 3.7277 seconds
Process exited with code 0
Original token count: 1339
Output:
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off

> Configure project :app
WARNING: The option setting 'android.testoptions.manageddevices.emulator.gpu=host' is experimental.

> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:generateDebugBuildConfig UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:packageDebugResources UP-TO-DATE
> Task :app:processDebugNavigationResources UP-TO-DATE
> Task :app:parseDebugLocalResources UP-TO-DATE
> Task :app:generateDebugRFile UP-TO-DATE
> Task :app:compileDebugKotlin UP-TO-DATE
> Task :app:javaPreCompileDebug UP-TO-DATE
> Task :app:compileDebugJavaWithJavac UP-TO-DATE
> Task :app:checkDebugAarMetadata UP-TO-DATE
> Task :app:mapDebugSourceSetPaths UP-TO-DATE
> Task :app:compileDebugNavigationResources UP-TO-DATE
> Task :app:mergeDebugResources UP-TO-DATE
> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :app:extractDeepLinksDebug UP-TO-DATE
> Task :app:processDebugMainManifest UP-TO-DATE
> Task :app:processDebugManifest UP-TO-DATE
> Task :app:processDebugManifestForPackage UP-TO-DATE
> Task :app:processDebugResources UP-TO-DATE
> Task :app:bundleDebugClassesToCompileJar UP-TO-DATE
> Task :app:preDebugAndroidTestBuild SKIPPED
> Task :app:processDebugAndroidTestManifest UP-TO-DATE
> Task :app:generateDebugAndroidTestBuildConfig UP-TO-DATE
> Task :app:generateDebugAndroidTestResources UP-TO-DATE
> Task :app:packageDebugAndroidTestResources UP-TO-DATE
> Task :app:processDebugAndroidTestNavigationResources UP-TO-DATE
> Task :app:parseDebugAndroidTestLocalResources UP-TO-DATE
> Task :app:generateDebugAndroidTestRFile UP-TO-DATE
> Task :app:compileDebugAndroidTestKotlin UP-TO-DATE
> Task :app:javaPreCompileDebugAndroidTest UP-TO-DATE
> Task :app:compileDebugAndroidTestJavaWithJavac UP-TO-DATE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :app:mergeDebugAssets UP-TO-DATE
> Task :app:compressDebugAssets UP-TO-DATE
> Task :app:generateDebugGlobalSynthetics UP-TO-DATE
> Task :app:processDebugJavaRes UP-TO-DATE
> Task :app:mergeDebugJavaResource UP-TO-DATE
> Task :app:checkDebugDuplicateClasses UP-TO-DATE
> Task :app:desugarDebugFileDependencies UP-TO-DATE
> Task :app:mergeExtDexDebug UP-TO-DATE
> Task :app:mergeLibDexDebug UP-TO-DATE
> Task :app:dexBuilderDebug UP-TO-DATE
> Task :app:mergeProjectDexDebug UP-TO-DATE
> Task :app:mergeDebugJniLibFolders UP-TO-DATE
> Task :app:mergeDebugNativeLibs UP-TO-DATE
> Task :app:stripDebugDebugSymbols UP-TO-DATE
> Task :app:validateSigningDebug UP-TO-DATE
> Task :app:writeDebugAppMetadata UP-TO-DATE
> Task :app:writeDebugSigningConfigVersions UP-TO-DATE
> Task :app:packageDebug UP-TO-DATE
> Task :app:createDebugApkListingFileRedirect UP-TO-DATE
> Task :app:generateDebugAndroidTestAssets UP-TO-DATE
> Task :app:mergeDebugAndroidTestAssets UP-TO-DATE
> Task :app:compressDebugAndroidTestAssets UP-TO-DATE
> Task :app:generateDebugAndroidTestGlobalSynthetics UP-TO-DATE
> Task :app:processDebugAndroidTestJavaRes UP-TO-DATE
> Task :app:mergeDebugAndroidTestJavaResource UP-TO-DATE
> Task :app:checkDebugAndroidTestDuplicateClasses UP-TO-DATE
> Task :app:desugarDebugAndroidTestFileDependencies UP-TO-DATE
> Task :app:mergeExtDexDebugAndroidTest UP-TO-DATE
> Task :app:mergeLibDexDebugAndroidTest UP-TO-DATE
> Task :app:checkDebugAndroidTestAarMetadata UP-TO-DATE
> Task :app:mapDebugAndroidTestSourceSetPaths UP-TO-DATE
> Task :app:compileDebugAndroidTestNavigationResources UP-TO-DATE
> Task :app:mergeDebugAndroidTestResources UP-TO-DATE
> Task :app:processDebugAndroidTestResources UP-TO-DATE
> Task :app:dexBuilderDebugAndroidTest UP-TO-DATE
> Task :app:mergeProjectDexDebugAndroidTest UP-TO-DATE
> Task :app:mergeDebugAndroidTestJniLibFolders UP-TO-DATE
> Task :app:mergeDebugAndroidTestNativeLibs UP-TO-DATE
> Task :app:stripDebugAndroidTestDebugSymbols UP-TO-DATE
> Task :app:validateSigningDebugAndroidTest UP-TO-DATE
> Task :app:writeDebugAndroidTestSigningConfigVersions UP-TO-DATE
> Task :app:packageDebugAndroidTest UP-TO-DATE
> Task :app:createDebugAndroidTestApkListingFileRedirect UP-TO-DATE

> Task :app:pixel2api33Setup
The device "pixel2api33" does not specify a "testedAbi".
This currently defaults to "x86_64", but will change to "arm64-v8a" in AGP 10.0.

The system image configured for "pixel2api33" does not support NDK translation,
so it will be unable to run tests built for "arm64-v8a".

To keep the current behavior and prevent test failures in AGP 10.0,
explicitly set the ABI: testedAbi = "x86_64"

> Task :app:pixel2api33DebugAndroidTest UP-TO-DATE
> Task :app:mergeDebugAndroidTestTestResultProtos UP-TO-DATE

[Incubating] Problems report is available at: file:///home/Messier82/projects/service-book/build/reports/problems/problems-report.html

Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.5.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 3s
75 actionable tasks: 1 executed, 74 up-to-date
Consider enabling configuration cache to speed up this build: https://docs.gradle.org/9.5.1/userguide/configuration_cache_enabling.html


#137’s app smoke task is successful; it was up-to-date because this PR only changes a GitHub Action. I’m running lint/ktlint/detekt now.


Output:
Chunk ID: 47957a
Wall time: 1.7101 seconds
Process exited with code 0
Original token count: 1409
Output:
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off

> Configure project :app
WARNING: The option setting 'android.testoptions.manageddevices.emulator.gpu=host' is experimental.

> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:generateDebugBuildConfig UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:packageDebugResources UP-TO-DATE
> Task :macrobenchmark:loadKtlintReporters UP-TO-DATE
> Task :macrobenchmark:runKtlintCheckOverBenchmarkSourceSet NO-SOURCE
> Task :macrobenchmark:ktlintBenchmarkSourceSetCheck SKIPPED
> Task :macrobenchmark:runKtlintCheckOverDebugSourceSet NO-SOURCE
> Task :macrobenchmark:ktlintDebugSourceSetCheck SKIPPED
> Task :macrobenchmark:runKtlintCheckOverKotlinScripts UP-TO-DATE
> Task :macrobenchmark:ktlintKotlinScriptCheck UP-TO-DATE
> Task :macrobenchmark:runKtlintCheckOverMainSourceSet UP-TO-DATE
> Task :macrobenchmark:ktlintMainSourceSetCheck UP-TO-DATE
> Task :macrobenchmark:ktlintCheck UP-TO-DATE
> Task :macrobenchmark:detekt UP-TO-DATE
> Task :app:processDebugNavigationResources UP-TO-DATE
> Task :app:parseDebugLocalResources UP-TO-DATE
> Task :app:generateDebugRFile UP-TO-DATE
> Task :app:compileDebugKotlin UP-TO-DATE
> Task :app:javaPreCompileDebug UP-TO-DATE
> Task :app:compileDebugJavaWithJavac UP-TO-DATE
> Task :app:checkDebugAarMetadata UP-TO-DATE
> Task :app:mapDebugSourceSetPaths UP-TO-DATE
> Task :app:compileDebugNavigationResources UP-TO-DATE
> Task :app:mergeDebugResources UP-TO-DATE
> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :app:extractDeepLinksDebug UP-TO-DATE
> Task :app:processDebugMainManifest UP-TO-DATE
> Task :app:processDebugManifest UP-TO-DATE
> Task :app:processDebugManifestForPackage UP-TO-DATE
> Task :app:processDebugResources UP-TO-DATE
> Task :app:bundleDebugClassesToCompileJar UP-TO-DATE
> Task :app:preDebugAndroidTestBuild SKIPPED
> Task :app:generateDebugAndroidTestLintModel UP-TO-DATE
> Task :app:extractProguardFiles UP-TO-DATE
> Task :app:generateDebugLintReportModel UP-TO-DATE
> Task :app:preDebugUnitTestBuild UP-TO-DATE
> Task :app:generateDebugUnitTestLintModel UP-TO-DATE
> Task :app:lintAnalyzeDebug UP-TO-DATE
> Task :app:lintAnalyzeDebugAndroidTest UP-TO-DATE
> Task :app:lintAnalyzeDebugUnitTest UP-TO-DATE
> Task :app:lintReportDebug UP-TO-DATE
> Task :app:lintDebug
> Task :app:loadKtlintReporters UP-TO-DATE
> Task :app:runKtlintCheckOverAndroidTestBenchmarkSourceSet NO-SOURCE
> Task :app:ktlintAndroidTestBenchmarkSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverAndroidTestDebugSourceSet NO-SOURCE
> Task :app:ktlintAndroidTestDebugSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverAndroidTestReleaseSourceSet NO-SOURCE
> Task :app:ktlintAndroidTestReleaseSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverAndroidTestSourceSet UP-TO-DATE
> Task :app:ktlintAndroidTestSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverAndroidTestStagingSourceSet UP-TO-DATE
> Task :app:ktlintAndroidTestStagingSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverBenchmarkSourceSet UP-TO-DATE
> Task :app:ktlintBenchmarkSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverDebugSourceSet UP-TO-DATE
> Task :app:ktlintDebugSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverKotlinScripts UP-TO-DATE
> Task :app:ktlintKotlinScriptCheck UP-TO-DATE
> Task :app:runKtlintCheckOverMainSourceSet UP-TO-DATE
> Task :app:ktlintMainSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverReleaseSourceSet NO-SOURCE
> Task :app:ktlintReleaseSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverStagingSourceSet NO-SOURCE
> Task :app:ktlintStagingSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestBenchmarkSourceSet NO-SOURCE
> Task :app:ktlintTestBenchmarkSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestDebugSourceSet NO-SOURCE
> Task :app:ktlintTestDebugSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesBenchmarkSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesBenchmarkSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesDebugSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesDebugSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesReleaseSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesReleaseSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesStagingSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesStagingSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestReleaseSourceSet NO-SOURCE
> Task :app:ktlintTestReleaseSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestSourceSet UP-TO-DATE
> Task :app:ktlintTestSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverTestStagingSourceSet NO-SOURCE
> Task :app:ktlintTestStagingSourceSetCheck SKIPPED
> Task :app:ktlintCheck UP-TO-DATE
> Task :app:detekt UP-TO-DATE

[Incubating] Problems report is available at: file:///home/Messier82/projects/service-book/build/reports/problems/problems-report.html

Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.5.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 1s
51 actionable tasks: 1 executed, 50 up-to-date
Consider enabling configuration cache to speed up this build: https://docs.gradle.org/9.5.1/userguide/configuration_cache_enabling.html


#137 passed validation without fixes. I’m merging it now.


gh pr merge 137 --squash --delete-branch


Output:
Chunk ID: 5f8324
Wall time: 6.5183 seconds
Process exited with code 0
Original token count: 64
Output:
From github.com:yorvana/android
 * branch            master     -> FETCH_HEAD
   3754521..042870a  master     -> origin/master
Updating 3754521..042870a
Fast-forward
 .github/workflows/regression.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


#137 is merged. I’m moving to the first Gradle dependency PR, #138 (`io.sentry:sentry-android`).


gh pr view 138 --json number,title,files,commits,headRefName,baseRefName,mergeStateStatus,url


Output:
Chunk ID: 55b7bf
Wall time: 0.7315 seconds
Process exited with code 0
Original token count: 323
Output:
{"baseRefName":"master","commits":[{"authoredDate":"2026-06-04T00:32:34Z","authors":[{"email":"49699333+dependabot[bot]@users.noreply.github.com","id":"MDM6Qm90NDk2OTkzMzM=","login":"dependabot[bot]","name":"dependabot[bot]"}],"committedDate":"2026-06-04T00:32:34Z","messageBody":"Bumps [io.sentry:sentry-android](https://github.com/getsentry/sentry-java) from 8.42.0 to 8.43.1.\n- [Release notes](https://github.com/getsentry/sentry-java/releases)\n- [Changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/getsentry/sentry-java/compare/8.42.0...8.43.1)\n\n---\nupdated-dependencies:\n- dependency-name: io.sentry:sentry-android\n  dependency-version: 8.43.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>","messageHeadline":"build: bump io.sentry:sentry-android from 8.42.0 to 8.43.1","oid":"f4dd2186ac49cfaf4fe8394ab18579137ad54766"}],"files":[{"path":"gradle/libs.versions.toml","additions":1,"deletions":1}],"headRefName":"dependabot/gradle/io.sentry-sentry-android-8.43.1","mergeStateStatus":"UNKNOWN","number":138,"title":"build: bump io.sentry:sentry-android from 8.42.0 to 8.43.1","url":"https://github.com/yorvana/android/pull/138"}


Output:
Chunk ID: df6097
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 12
Output:
## master...origin/master
?? extracted-icons/


#138 only changes `gradle/libs.versions.toml`. I’m checking it out and integrating current master before validation.


Output:
Chunk ID: 32be02
Wall time: 3.3927 seconds
Process exited with code 0
Original token count: 94
Output:
From github.com:yorvana/android
 * [new branch]      dependabot/gradle/io.sentry-sentry-android-8.43.1 -> origin/dependabot/gradle/io.sentry-sentry-android-8.43.1
Switched to a new branch 'dependabot/gradle/io.sentry-sentry-android-8.43.1'
branch 'dependabot/gradle/io.sentry-sentry-android-8.43.1' set up to track 'origin/dependabot/gradle/io.sentry-sentry-android-8.43.1'.


Output:
Chunk ID: 3c7160
Wall time: 2.4155 seconds
Process exited with code 0
Original token count: 20
Output:
From github.com:yorvana/android
 * branch            master     -> FETCH_HEAD


Output:
Chunk ID: 1ed1cb
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 223
Output:
Merge made by the 'ort' strategy.
 .github/workflows/regression.yml                   |   4 +-
 app/build.gradle.kts                               |   2 +-
 .../attachments/AttachmentRealOsRegressionTest.kt  |  59 +++++-
 .../main/res/drawable/ic_launcher_background.xml   |  17 +-
 .../main/res/drawable/ic_launcher_foreground.xml   |  21 +-
 .../main/res/drawable/ic_launcher_monochrome.xml   |  21 +-
 .../snapshots/SettingsScreen_conflict_light.png    | Bin 20159 -> 20020 bytes
 .../SettingsScreen_existing_vault_light.png        | Bin 21913 -> 21856 bytes
 docs/investigation-ra07-record-row-flake.md        | 213 +++++++++++++++++++++
 docs/regression-dashboard.md                       |  80 ++++----
 docs/regression-history.json                       |  46 +++++
 11 files changed, 390 insertions(+), 73 deletions(-)
 create mode 100644 docs/investigation-ra07-record-row-flake.md


#138 merged master locally without conflicts. I’m running `./gradlew test`; this is the first dependency update, so compilation/test cache may invalidate more than the workflow-only PRs.


Output:
Chunk ID: 5d0b90
Wall time: 30.0012 seconds
Process running with session ID 44293
Original token count: 628
Output:
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off

> Configure project :app
WARNING: The option setting 'android.testoptions.manageddevices.emulator.gpu=host' is experimental.

> Task :app:preBuild UP-TO-DATE
> Task :macrobenchmark:test UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:generateDebugBuildConfig UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:packageDebugResources UP-TO-DATE
> Task :app:processDebugNavigationResources UP-TO-DATE
> Task :app:parseDebugLocalResources UP-TO-DATE
> Task :app:generateDebugRFile UP-TO-DATE
> Task :app:javaPreCompileDebug UP-TO-DATE
> Task :app:checkDebugAarMetadata UP-TO-DATE
> Task :app:mapDebugSourceSetPaths UP-TO-DATE
> Task :app:compileDebugNavigationResources UP-TO-DATE
> Task :app:mergeDebugResources UP-TO-DATE
> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :app:extractDeepLinksDebug UP-TO-DATE
> Task :app:processDebugMainManifest UP-TO-DATE
> Task :app:processDebugManifest UP-TO-DATE
> Task :app:processDebugManifestForPackage UP-TO-DATE
> Task :app:preDebugUnitTestBuild UP-TO-DATE
> Task :app:javaPreCompileDebugUnitTest UP-TO-DATE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :app:mergeDebugAssets UP-TO-DATE
> Task :app:processDebugUnitTestManifest UP-TO-DATE
> Task :app:restoreOutputDirRoborazzi SKIPPED

> Task :app:testPythonAggregator
....
----------------------------------------------------------------------
Ran 4 tests in 0.005s

OK

> Task :app:processDebugResources
> Task :app:packageDebugUnitTestForUnitTest UP-TO-DATE
> Task :app:generateDebugUnitTestConfig UP-TO-DATE
> Task :app:compileDebugKotlin
> Task :app:compileDebugJavaWithJavac UP-TO-DATE
> Task :app:bundleDebugClassesToRuntimeJar UP-TO-DATE
> Task :app:bundleDebugClassesToCompileJar UP-TO-DATE
> Task :app:processDebugJavaRes UP-TO-DATE
> Task :app:compileDebugUnitTestKotlin
> Task :app:compileDebugUnitTestJavaWithJavac NO-SOURCE
> Task :app:processDebugUnitTestJavaRes UP-TO-DATE

> Task :app:testDebugUnitTest
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off

OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended


#138 has recompiled against the new Sentry version and is in `:app:testDebugUnitTest`; no failures yet.


Output:
Chunk ID: 0cda63
Wall time: 30.0152 seconds
Process running with session ID 44293
Original token count: 98
Output:
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended


The JVM tests are still running for #138 with only standard JVM warnings in output.


Output:
Chunk ID: 880f7c
Wall time: 30.0004 seconds
Process running with session ID 44293
Original token count: 0
Output:


No new Gradle output in the last interval; the test task is still active.


Output:
Chunk ID: 4a4f8b
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 201
Output:

> Task :app:finalizeTestRoborazziDebug SKIPPED
> Task :app:test

[Incubating] Problems report is available at: file:///home/Messier82/projects/service-book/build/reports/problems/problems-report.html

Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.5.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 1m 42s
31 actionable tasks: 5 executed, 26 up-to-date
Consider enabling configuration cache to speed up this build: https://docs.gradle.org/9.5.1/userguide/configuration_cache_enabling.html


`./gradlew test` passed for #138. I’m running the app-scoped GPU managed-device smoke suite next.


Output:
Chunk ID: 0dfc74
Wall time: 30.0017 seconds
Process running with session ID 30354
Original token count: 1114
Output:
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off

> Configure project :app
WARNING: The option setting 'android.testoptions.manageddevices.emulator.gpu=host' is experimental.

> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:generateDebugBuildConfig UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:packageDebugResources UP-TO-DATE
> Task :app:processDebugNavigationResources UP-TO-DATE
> Task :app:parseDebugLocalResources UP-TO-DATE
> Task :app:generateDebugRFile UP-TO-DATE
> Task :app:compileDebugKotlin UP-TO-DATE
> Task :app:javaPreCompileDebug UP-TO-DATE
> Task :app:compileDebugJavaWithJavac UP-TO-DATE
> Task :app:checkDebugAarMetadata UP-TO-DATE
> Task :app:mapDebugSourceSetPaths UP-TO-DATE
> Task :app:compileDebugNavigationResources UP-TO-DATE
> Task :app:mergeDebugResources UP-TO-DATE
> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :app:extractDeepLinksDebug UP-TO-DATE
> Task :app:processDebugMainManifest UP-TO-DATE
> Task :app:processDebugManifest UP-TO-DATE
> Task :app:processDebugManifestForPackage UP-TO-DATE
> Task :app:processDebugResources UP-TO-DATE
> Task :app:bundleDebugClassesToCompileJar UP-TO-DATE
> Task :app:preDebugAndroidTestBuild SKIPPED
> Task :app:processDebugAndroidTestManifest UP-TO-DATE
> Task :app:generateDebugAndroidTestBuildConfig UP-TO-DATE
> Task :app:generateDebugAndroidTestResources UP-TO-DATE
> Task :app:packageDebugAndroidTestResources UP-TO-DATE
> Task :app:processDebugAndroidTestNavigationResources UP-TO-DATE
> Task :app:parseDebugAndroidTestLocalResources UP-TO-DATE
> Task :app:generateDebugAndroidTestRFile UP-TO-DATE
> Task :app:javaPreCompileDebugAndroidTest UP-TO-DATE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :app:mergeDebugAssets UP-TO-DATE
> Task :app:compressDebugAssets UP-TO-DATE
> Task :app:generateDebugGlobalSynthetics UP-TO-DATE
> Task :app:processDebugJavaRes UP-TO-DATE
> Task :app:desugarDebugFileDependencies UP-TO-DATE
> Task :app:dexBuilderDebug UP-TO-DATE
> Task :app:mergeDebugJniLibFolders UP-TO-DATE
> Task :app:checkDebugDuplicateClasses
> Task :app:mergeDebugNativeLibs UP-TO-DATE
> Task :app:compileDebugAndroidTestKotlin
> Task :app:mergeDebugJavaResource
> Task :app:compileDebugAndroidTestJavaWithJavac UP-TO-DATE
> Task :app:mergeLibDexDebug UP-TO-DATE
> Task :app:mergeProjectDexDebug UP-TO-DATE
> Task :app:stripDebugDebugSymbols UP-TO-DATE
> Task :app:validateSigningDebug UP-TO-DATE
> Task :app:writeDebugAppMetadata UP-TO-DATE
> Task :app:writeDebugSigningConfigVersions UP-TO-DATE
> Task :app:generateDebugAndroidTestAssets UP-TO-DATE
> Task :app:mergeDebugAndroidTestAssets UP-TO-DATE
> Task :app:compressDebugAndroidTestAssets UP-TO-DATE
> Task :app:generateDebugAndroidTestGlobalSynthetics UP-TO-DATE
> Task :app:processDebugAndroidTestJavaRes UP-TO-DATE
> Task :app:mergeDebugAndroidTestJavaResource UP-TO-DATE
> Task :app:checkDebugAndroidTestDuplicateClasses UP-TO-DATE
> Task :app:desugarDebugAndroidTestFileDependencies UP-TO-DATE
> Task :app:mergeExtDexDebugAndroidTest UP-TO-DATE
> Task :app:mergeLibDexDebugAndroidTest UP-TO-DATE
> Task :app:checkDebugAndroidTestAarMetadata UP-TO-DATE
> Task :app:mapDebugAndroidTestSourceSetPaths UP-TO-DATE
> Task :app:compileDebugAndroidTestNavigationResources UP-TO-DATE
> Task :app:mergeDebugAndroidTestResources UP-TO-DATE
> Task :app:processDebugAndroidTestResources UP-TO-DATE
> Task :app:dexBuilderDebugAndroidTest UP-TO-DATE
> Task :app:mergeProjectDexDebugAndroidTest UP-TO-DATE
> Task :app:mergeDebugAndroidTestJniLibFolders UP-TO-DATE
> Task :app:mergeDebugAndroidTestNativeLibs UP-TO-DATE
> Task :app:stripDebugAndroidTestDebugSymbols UP-TO-DATE
> Task :app:validateSigningDebugAndroidTest UP-TO-DATE
> Task :app:writeDebugAndroidTestSigningConfigVersions UP-TO-DATE
> Task :app:packageDebugAndroidTest UP-TO-DATE
> Task :app:createDebugAndroidTestApkListingFileRedirect UP-TO-DATE

> Task :app:pixel2api33Setup
The device "pixel2api33" does not specify a "testedAbi".
This currently defaults to "x86_64", but will change to "arm64-v8a" in AGP 10.0.

The system image configured for "pixel2api33" does not support NDK translation,
so it will be unable to run tests built for "arm64-v8a".

To keep the current behavior and prevent test failures in AGP 10.0,
explicitly set the ABI: testedAbi = "x86_64"

> Task :app:mergeExtDexDebug
> Task :app:packageDebug
> Task :app:createDebugApkListingFileRedirect UP-TO-DATE


The #138 smoke run has rebuilt app artifacts against Sentry 8.43.1 and is at managed-device setup.


Output:
Chunk ID: 1d3559
Wall time: 30.0011 seconds
Process running with session ID 30354
Original token count: 33
Output:
Starting 14 tests on pixel2api33
> Task :app:pixel2api33DebugAndroidTest

pixel2api33 Tests 3/14 completed. (0 skipped) (0 failed)


#138 managed-device tests are running: 3 of 14 completed, none failed.


Output:
Chunk ID: 6ccd0e
Wall time: 9.4063 seconds
Process exited with code 0
Original token count: 260
Output:
pixel2api33 Tests 8/14 completed. (0 skipped) (0 failed)
Finished 14 tests on pixel2api33

> Task :app:mergeDebugAndroidTestTestResultProtos
Test execution completed. See the report at: file:///home/Messier82/projects/service-book/app/build/reports/androidTests/managedDevice/debug/allDevices/index.html

[Incubating] Problems report is available at: file:///home/Messier82/projects/service-book/build/reports/problems/problems-report.html

Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.5.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 1m 26s
75 actionable tasks: 8 executed, 67 up-to-date
Consider enabling configuration cache to speed up this build: https://docs.gradle.org/9.5.1/userguide/configuration_cache_enabling.html


#138’s app smoke suite passed all 14 tests. I’m running `lintDebug ktlintCheck detekt`.


Output:
Chunk ID: 9c5ba3
Wall time: 30.0017 seconds
Process running with session ID 80211
Original token count: 1168
Output:
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off

> Configure project :app
WARNING: The option setting 'android.testoptions.manageddevices.emulator.gpu=host' is experimental.

> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:generateDebugBuildConfig UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:packageDebugResources UP-TO-DATE
> Task :macrobenchmark:loadKtlintReporters UP-TO-DATE
> Task :macrobenchmark:runKtlintCheckOverBenchmarkSourceSet NO-SOURCE
> Task :macrobenchmark:ktlintBenchmarkSourceSetCheck SKIPPED
> Task :macrobenchmark:runKtlintCheckOverDebugSourceSet NO-SOURCE
> Task :macrobenchmark:ktlintDebugSourceSetCheck SKIPPED
> Task :macrobenchmark:runKtlintCheckOverKotlinScripts UP-TO-DATE
> Task :macrobenchmark:ktlintKotlinScriptCheck UP-TO-DATE
> Task :macrobenchmark:runKtlintCheckOverMainSourceSet UP-TO-DATE
> Task :macrobenchmark:ktlintMainSourceSetCheck UP-TO-DATE
> Task :macrobenchmark:ktlintCheck UP-TO-DATE
> Task :macrobenchmark:detekt UP-TO-DATE
> Task :app:processDebugNavigationResources UP-TO-DATE
> Task :app:parseDebugLocalResources UP-TO-DATE
> Task :app:generateDebugRFile UP-TO-DATE
> Task :app:compileDebugKotlin UP-TO-DATE
> Task :app:javaPreCompileDebug UP-TO-DATE
> Task :app:compileDebugJavaWithJavac UP-TO-DATE
> Task :app:checkDebugAarMetadata UP-TO-DATE
> Task :app:mapDebugSourceSetPaths UP-TO-DATE
> Task :app:compileDebugNavigationResources UP-TO-DATE
> Task :app:mergeDebugResources UP-TO-DATE
> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :app:extractDeepLinksDebug UP-TO-DATE
> Task :app:processDebugMainManifest UP-TO-DATE
> Task :app:processDebugManifest UP-TO-DATE
> Task :app:processDebugManifestForPackage UP-TO-DATE
> Task :app:processDebugResources UP-TO-DATE
> Task :app:bundleDebugClassesToCompileJar UP-TO-DATE
> Task :app:preDebugAndroidTestBuild SKIPPED
> Task :app:generateDebugAndroidTestLintModel
> Task :app:extractProguardFiles UP-TO-DATE
> Task :app:generateDebugLintReportModel
> Task :app:preDebugUnitTestBuild UP-TO-DATE
> Task :app:generateDebugUnitTestLintModel
> Task :app:loadKtlintReporters UP-TO-DATE
> Task :app:runKtlintCheckOverAndroidTestBenchmarkSourceSet NO-SOURCE
> Task :app:ktlintAndroidTestBenchmarkSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverAndroidTestDebugSourceSet NO-SOURCE
> Task :app:ktlintAndroidTestDebugSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverAndroidTestReleaseSourceSet NO-SOURCE
> Task :app:ktlintAndroidTestReleaseSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverAndroidTestSourceSet UP-TO-DATE
> Task :app:ktlintAndroidTestSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverAndroidTestStagingSourceSet UP-TO-DATE
> Task :app:ktlintAndroidTestStagingSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverBenchmarkSourceSet UP-TO-DATE
> Task :app:ktlintBenchmarkSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverDebugSourceSet UP-TO-DATE
> Task :app:ktlintDebugSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverKotlinScripts UP-TO-DATE
> Task :app:ktlintKotlinScriptCheck UP-TO-DATE
> Task :app:runKtlintCheckOverMainSourceSet UP-TO-DATE
> Task :app:ktlintMainSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverReleaseSourceSet NO-SOURCE
> Task :app:ktlintReleaseSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverStagingSourceSet NO-SOURCE
> Task :app:ktlintStagingSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestBenchmarkSourceSet NO-SOURCE
> Task :app:ktlintTestBenchmarkSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestDebugSourceSet NO-SOURCE
> Task :app:ktlintTestDebugSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesBenchmarkSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesBenchmarkSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesDebugSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesDebugSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesReleaseSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesReleaseSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestFixturesStagingSourceSet NO-SOURCE
> Task :app:ktlintTestFixturesStagingSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestReleaseSourceSet NO-SOURCE
> Task :app:ktlintTestReleaseSourceSetCheck SKIPPED
> Task :app:runKtlintCheckOverTestSourceSet UP-TO-DATE
> Task :app:ktlintTestSourceSetCheck UP-TO-DATE
> Task :app:runKtlintCheckOverTestStagingSourceSet NO-SOURCE
> Task :app:ktlintTestStagingSourceSetCheck SKIPPED
> Task :app:ktlintCheck UP-TO-DATE
> Task :app:detekt UP-TO-DATE


The lint/static-analysis command is still running for #138; ktlint and detekt are already clean, Android lint is finishing its regenerated model.


Output:
Chunk ID: 0c480d
Wall time: 30.0009 seconds
Process running with session ID 80211
Original token count: 27
Output:
> Task :app:lintAnalyzeDebug
> Task :app:lintAnalyzeDebugAndroidTest
> Task :app:lintAnalyzeDebugUnitTest


Android lint analysis is in progress for #138; no violations emitted so far.


Output:
Chunk ID: bcdaca
Wall time: 19.5429 seconds
Process exited with code 0
Original token count: 290
Output:

> Task :app:lintReportDebug
Wrote HTML report to file:///home/Messier82/projects/service-book/app/build/reports/lint-results-debug.html
Lint found 19 warnings, 1 hint (and 19 warnings filtered by baseline lint-baseline.xml)

56 errors/warnings were listed in the baseline file (/home/Messier82/projects/service-book/app/lint-baseline.xml) but not found in the project; perhaps they have been fixed?

> Task :app:lintDebug

[Incubating] Problems report is available at: file:///home/Messier82/projects/service-book/build/reports/problems/problems-report.html

Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.5.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 1m 30s
51 actionable tasks: 8 executed, 43 up-to-date
Consider enabling configuration cache to speed up this build: https://docs.gradle.org/9.5.1/userguide/configuration_cache_enabling.html


#138 passed all validation with no fixes. I’m merging it.


gh pr merge 138 --squash --delete-branch


Output:
Chunk ID: d0265e
Wall time: 7.2389 seconds
Process exited with code 0
Original token count: 62
Output:
From github.com:yorvana/android
 * branch            master     -> FETCH_HEAD
   042870a..ecfc540  master     -> origin/master
Updating 042870a..ecfc540
Fast-forward
 gradle/libs.versions.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


#138 is merged. Next is #139, the `androidx.core:core-ktx` update.


gh pr view 139 --json number,title,files,commits,headRefName,mergeStateStatus,url


Output:
Chunk ID: 953629
Wall time: 0.8634 seconds
Process exited with code 0
Original token count: 247
Output:
{"commits":[{"authoredDate":"2026-06-04T00:32:46Z","authors":[{"email":"49699333+dependabot[bot]@users.noreply.github.com","id":"MDM6Qm90NDk2OTkzMzM=","login":"dependabot[bot]","name":"dependabot[bot]"}],"committedDate":"2026-06-04T00:32:46Z","messageBody":"Bumps androidx.core:core-ktx from 1.18.0 to 1.19.0.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.core:core-ktx\n  dependency-version: 1.19.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>","messageHeadline":"build: bump androidx.core:core-ktx from 1.18.0 to 1.19.0","oid":"184fd20dbb344ccda404a0c4945b1f2c5f36ae2a"}],"files":[{"path":"gradle/libs.versions.toml","additions":1,"deletions":1}],"headRefName":"dependabot/gradle/androidx.core-core-ktx-1.19.0","mergeStateStatus":"UNKNOWN","number":139,"title":"build: bump androidx.core:core-ktx from 1.18.0 to 1.19.0","url":"https://github.com/yorvana/android/pull/139"}


Output:
Chunk ID: 724eeb
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 12
Output:
## master...origin/master
?? extracted-icons/


#139 also only changes `gradle/libs.versions.toml`. I’m checking it out and merging current master.


Output:
Chunk ID: 495a1b
Wall time: 3.5087 seconds
Process exited with code 0
Original token count: 92
Output:
From github.com:yorvana/android
 * [new branch]      dependabot/gradle/androidx.core-core-ktx-1.19.0 -> origin/dependabot/gradle/androidx.core-core-ktx-1.19.0
Switched to a new branch 'dependabot/gradle/androidx.core-core-ktx-1.19.0'
branch 'dependabot/gradle/androidx.core-core-ktx-1.19.0' set up to track 'origin/dependabot/gradle/androidx.core-core-ktx-1.19.0'.


Output:
Chunk ID: 39517a
Wall time: 2.6378 seconds
Process exited with code 0
Original token count: 20
Output:
From github.com:yorvana/android
 * branch            master     -> FETCH_HEAD


Output:
Chunk ID: e7b9bc
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 248
Output:
Auto-merging gradle/libs.versions.toml
Merge made by the 'ort' strategy.
 .github/workflows/regression.yml                   |   4 +-
 app/build.gradle.kts                               |   2 +-
 .../attachments/AttachmentRealOsRegressionTest.kt  |  59 +++++-
 .../main/res/drawable/ic_launcher_background.xml   |  17 +-
 .../main/res/drawable/ic_launcher_foreground.xml   |  21 +-
 .../main/res/drawable/ic_launcher_monochrome.xml   |  21 +-
 .../snapshots/SettingsScreen_conflict_light.png    | Bin 20159 -> 20020 bytes
 .../SettingsScreen_existing_vault_light.png        | Bin 21913 -> 21856 bytes
 docs/investigation-ra07-record-row-flake.md        | 213 +++++++++++++++++++++
 docs/regression-dashboard.md                       |  80 ++++----
 docs/regression-history.json                       |  46 +++++
 gradle/libs.versions.toml                          |   2 +-
 12 files changed, 391 insertions(+), 74 deletions(-)
 create mode 100644 docs/investigation-ra07-record-row-flake.md


#139 merged current master cleanly, including the already-merged Sentry update. I’m running the JVM suite.


Output:
Chunk ID: 9811de
Wall time: 14.1150 seconds
Process exited with code 1
Original token count: 843
Output:
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off

> Configure project :app
WARNING: The option setting 'android.testoptions.manageddevices.emulator.gpu=host' is experimental.

> Task :app:preBuild UP-TO-DATE
> Task :macrobenchmark:test UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:generateDebugBuildConfig UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:packageDebugResources UP-TO-DATE
> Task :app:processDebugNavigationResources UP-TO-DATE
> Task :app:parseDebugLocalResources UP-TO-DATE
> Task :app:generateDebugRFile UP-TO-DATE
> Task :app:javaPreCompileDebug UP-TO-DATE
> Task :app:mapDebugSourceSetPaths UP-TO-DATE
> Task :app:compileDebugNavigationResources UP-TO-DATE
> Task :app:checkDebugAarMetadata FAILED
> Task :app:mergeDebugResources UP-TO-DATE
> Task :app:compileDebugKotlin

[Incubating] Problems report is available at: file:///home/Messier82/projects/service-book/build/reports/problems/problems-report.html

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:checkDebugAarMetadata' (registered by plugin 'com.android.internal.application').
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
   > 2 issues were found when checking AAR metadata:

       1.  Dependency 'androidx.core:core:1.19.0' requires libraries and applications that
           depend on it to compile against version 37 or later of the
           Android APIs.

           :app is currently compiled against android-36.

           Recommended action: Update this project to use a newer compileSdk
           of 37.

           Note that updating a library or application's compileSdk (which
           allows newer APIs to be used) can be done separately from updating
           targetSdk (which opts the app in to new runtime behavior) and
           minSdk (which determines which devices the app can be installed
           on).

       2.  Dependency 'androidx.core:core-ktx:1.19.0' requires libraries and applications that
           depend on it to compile against version 37 or later of the
           Android APIs.

           :app is currently compiled against android-36.

           Recommended action: Update this project to use a newer compileSdk
           of 37.

           Note that updating a library or application's compileSdk (which
           allows newer APIs to be used) can be done separately from updating
           targetSdk (which opts the app in to new runtime behavior) and
           minSdk (which determines which devices the app can be installed
           on).

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights from a Build Scan (powered by Develocity).
>
Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.5.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
12 actionable tasks: 2 executed, 10 up-to-date
Get more help at https://help.gradle.org.

BUILD FAILED in 14s


#139 fails before tests: `androidx.core:core-ktx:1.19.0` requires `compileSdk` 37, while the app is on 36. This is a manual compatibility change, so per the workflow this PR can’t be merged as-is; I’m checking where `compileSdk` is defined and whether API 37 is available locally before deciding the smallest fix.


rg -n "compileSdk|targetSdk|minSdk|androidGradle|agp|coreKtx|core-ktx" build.gradle.kts app/build.gradle.kts gradle/libs.versions.toml


Output:
Chunk ID: c8a7ae
Wall time: 0.1378 seconds
Process exited with code 0
Original token count: 135
Output:
gradle/libs.versions.toml:8:agp = "9.2.1"
gradle/libs.versions.toml:20:core-ktx = "1.19.0"
gradle/libs.versions.toml:34:androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "core-ktx" }
gradle/libs.versions.toml:66:android-application = { id = "com.android.application", version.ref = "agp" }
gradle/libs.versions.toml:67:android-test = { id = "com.android.test", version.ref = "agp" }
app/build.gradle.kts:67:    compileSdk = 36
app/build.gradle.kts:71:        minSdk = 26
app/build.gradle.kts:72:        targetSdk = 36


Output:
Chunk ID: d2814e
Wall time: 0.1103 seconds
Process exited with code 0
Original token count: 6
Output:
android-35
android-36


Output:
Chunk ID: 04a0f3
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 35
Output:
## dependabot/gradle/androidx.core-core-ktx-1.19.0...origin/dependabot/gradle/androidx.core-core-ktx-1.19.0 [ahead 8]
?? extracted-icons/


Local SDK only has platforms 35 and 36 installed. I’m checking CI setup too, because bumping `compileSdk` to 37 would also require the workflows to install/build against API 37.


rg -n "api-level|android-36|android-37|compileSdk|sdkmanager|setup-android|android-actions|avdmanager|pixel2api33|target" .github app/build.gradle.kts build.gradle.kts gradle/libs.versions.toml


sed -n '1,180p' .github/workflows/ci.yml


sed -n '1,180p' .github/workflows/smoke.yml


sed -n '1,180p' .github/workflows/regression.yml


Output:
Chunk ID: a4a9c0
Wall time: 0.1434 seconds
Process exited with code 0
Original token count: 273
Output:
app/build.gradle.kts:61:val regressionDeviceTaskName = "pixel2api33DebugAndroidTest"
app/build.gradle.kts:62:val macrobenchmarkTaskPath = ":macrobenchmark:pixel2api33BenchmarkAndroidTest"
app/build.gradle.kts:67:    compileSdk = 36
app/build.gradle.kts:72:        targetSdk = 36
app/build.gradle.kts:159:        targetCompatibility = JavaVersion.VERSION_17
app/build.gradle.kts:176:                create<com.android.build.api.dsl.ManagedVirtualDevice>("pixel2api33") {
app/build.gradle.kts:253:                (deviceName == "pixel2api33" && isSmokeCoverageRun) ||
app/build.gradle.kts:261:                isTaskForDevice(name, "pixel2api33") -> "pixel2api33"
app/build.gradle.kts:309:                    isTaskForDevice(taskName, "pixel2api33") -> {
app/build.gradle.kts:406:    val smokeTask = "pixel2api33DebugAndroidTest"
app/build.gradle.kts:409:    from(layout.buildDirectory.dir("outputs/managed_device_code_coverage/debug/pixel2api33")) {
.github/workflows/smoke.yml:59:        run: ./gradlew pixel2api33Check -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect


Output:
Chunk ID: 01f7ee
Wall time: 0.2494 seconds
Process exited with code 0
Original token count: 1022
Output:
name: CI
permissions:
  contents: read
  checks: write

env:
  FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

on:
  workflow_dispatch:
  workflow_call:

concurrency:
  group: ci-${{ github.ref }}
  cancel-in-progress: true

jobs:
  lint-test:
    name: Lint, Static Analysis & Tests
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v6
        with:
          lfs: true

      - name: Set up JDK 17
        uses: actions/setup-java@v5
        with:
          java-version: '17'
          distribution: 'temurin'

      - name: Set up Gradle
        uses: gradle/actions/setup-gradle@v6
        with:
          cache-read-only: ${{ github.ref != 'refs/heads/master' }}
          cache-cleanup: on-success

      - name: Grant execute permission for gradlew
        run: chmod +x gradlew

      - name: Run Lint, Static Analysis & JVM Tests with Coverage
        run: ./gradlew lintDebug ktlintCheck detekt verifyWithCoverage -Proborazzi.test.verify=true -Pcoverage

      - name: Upload HTML Coverage Report
        uses: actions/upload-artifact@v7
        with:
          name: jacoco-html-report
          path: app/build/reports/jacoco/verifyWithCoverage/html/
          retention-days: 7

      - name: Upload Roborazzi Results
        if: failure()
        uses: actions/upload-artifact@v7
        with:
          name: roborazzi-results
          path: app/build/test-results/roborazzi
          retention-days: 7

  build:
    name: Build & Verify Release
    runs-on: ubuntu-latest
    needs: [ lint-test ]
    steps:
      - name: Checkout code
        uses: actions/checkout@v6

      - name: Set up JDK 17
        uses: actions/setup-java@v5
        with:
          java-version: '17'
          distribution: 'temurin'

      - name: Set up Gradle
        uses: gradle/actions/setup-gradle@v6
        with:
          cache-read-only: ${{ github.ref != 'refs/heads/master' }}
          cache-cleanup: on-success

      - name: Grant execute permission for gradlew
        run: chmod +x gradlew

      - name: Build Debug APK
        run: ./gradlew assembleDebug

      - name: Build Release APK & Minify with R8
        run: ./gradlew assembleRelease

      - name: Verify R8 Stripping (DebugBillingOverride)
        run: |
          MAPPING_FILE="app/build/outputs/mapping/release/mapping.txt"
          if [ ! -f "$MAPPING_FILE" ]; then
            echo "Error: R8 mapping file not found at $MAPPING_FILE"
            exit 1
          fi
          # Match only top-level class entries (e.g. "com.yorvana.data.billing.DebugBillingOverride -> x:"
          # or nested "...DebugBillingOverride$Inner -> ..."), not method-signature references
          # in other classes that R8 retains for stack-trace deobfuscation, and not the
          # DebugBillingOverrideMode enum (which is intentionally retained in release).
          if grep -qE '^com\.yorvana\.data\.billing\.DebugBillingOverride( |\$)' "$MAPPING_FILE"; then
            echo "Error: DebugBillingOverride class found in release mapping file. R8 stripping failed!"
            grep -E '^com\.yorvana\.data\.billing\.DebugBillingOverride( |\$)' "$MAPPING_FILE"
            exit 1
          fi
          echo "Success: DebugBillingOverride class is absent from release build."

      - name: Upload Debug APK
        uses: actions/upload-artifact@v7
        with:
          name: debug-apk
          path: app/build/outputs/apk/debug/*.apk
          if-no-files-found: error
          retention-days: 1

  ci-success:
    name: CI Success
    if: ${{ always() }}
    runs-on: ubuntu-latest
    needs: [ lint-test, build ]
    steps:
      - name: Verify required jobs succeeded
        run: |
          if [ "${{ needs.lint-test.result }}" != "success" ] || \
             [ "${{ needs.build.result }}" != "success" ]; then
            echo "One or more required jobs did not succeed:"
            echo "lint-test=${{ needs.lint-test.result }}"
            echo "build=${{ needs.build.result }}"
            exit 1
          fi

          echo "All checks passed successfully!"


Output:
Chunk ID: 5edf80
Wall time: 0.2568 seconds
Process exited with code 0
Original token count: 619
Output:
# GMD smoke tests on CI.
#
# GitHub-hosted `ubuntu-latest` runners expose `/dev/kvm` for CPU acceleration
# (the "Enable KVM" step installs a world-writable `0666` udev rule, which is
# a common approach when running GMD tests on ephemeral Ubuntu runners to
# ensure the emulator process has necessary permissions).
# However, they have no GPU/Vulkan driver — so the GPU mode is forced to
# `swiftshader_indirect`. Note: swiftshader is documented to crash on Linux
# kernel >= 6.17 (see TESTING_SETUP.md). GitHub-hosted runners are currently
# on kernel ~6.8, but if that changes this workflow will need a different
# harness.
#
# To keep Free-tier Actions minutes in budget, this workflow does not auto-trigger.
# It runs only when the `smoke` label is added to a PR (via smoke-label.yml) or
# when manually invoked from the Actions tab (workflow_dispatch).
name: Smoke
permissions:
  contents: read

on:
  workflow_dispatch:
  workflow_call:

jobs:
  smoke:
    name: GMD Smoke Tests
    runs-on: ubuntu-latest
    timeout-minutes: 45
    concurrency:
      group: smoke-${{ github.ref }}
      cancel-in-progress: true
    steps:
      - name: Checkout code
        uses: actions/checkout@v6

      - name: Set up JDK 17
        uses: actions/setup-java@v5
        with:
          java-version: '17'
          distribution: 'temurin'

      - name: Set up Gradle
        uses: gradle/actions/setup-gradle@v6
        with:
          cache-read-only: ${{ github.ref != 'refs/heads/master' }}
          cache-cleanup: on-success

      - name: Grant execute permission for gradlew
        run: chmod +x gradlew

      - name: Enable KVM
        run: |
          echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
            | sudo tee /etc/udev/rules.d/99-kvm4all.rules
          sudo udevadm control --reload-rules
          sudo udevadm trigger --name-match=kvm

      - name: Run GMD Smoke Tests
        run: ./gradlew pixel2api33Check -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect

      - name: Upload Managed Device Reports
        if: failure()
        uses: actions/upload-artifact@v7
        with:
          name: gmd-test-reports
          path: |
            app/build/reports/androidTests/managedDevice/
            app/build/outputs/androidTest-results/managedDevice/
            app/build/outputs/managed_device_android_test_additional_output/
          if-no-files-found: warn
          retention-days: 7


Output:
Chunk ID: da7ee8
Wall time: 0.2246 seconds
Process exited with code 0
Original token count: 1736
Output:
# GMD regression tests on CI.
#
# This mirrors the smoke workflow's emulator setup but keeps PR execution
# opt-in through regression-label.yml. Nightly scheduled runs execute the
# Phase 1 full aggregate; label/reusable calls execute the core tier. Manual
# runs default to core but can opt into full via run_full.
name: Regression
permissions:
  contents: read

on:
  workflow_dispatch:
    inputs:
      run_full:
        description: 'Run full regression suite (regressionFullCheck) instead of core only'
        type: boolean
        default: false
  workflow_call:
  schedule:
    - cron: '17 8 * * *'

jobs:
  regression:
    name: GMD Regression Tests
    runs-on: ubuntu-latest
    timeout-minutes: 90
    outputs:
      skip_nightly: ${{ steps.check_commits.outputs.skip }}
    concurrency:
      group: regression-${{ github.ref }}
      cancel-in-progress: true
    steps:
      - name: Checkout code
        uses: actions/checkout@v6
        with:
          lfs: true

      - name: Check for recent commits
        id: check_commits
        if: github.event_name == 'schedule'
        run: |
          commit_time=$(git log -1 --invert-grep --grep='\[skip ci\]' --format=%ct)
          current_time=$(date +%s)
          diff=$((current_time - commit_time))
          # 24 hours (86400) + 5 min buffer
          if [ "$diff" -gt 86700 ]; then
            echo "No commits in the last 24 hours. Skipping nightly run."
            echo "skip=true" >> $GITHUB_OUTPUT
          else
            echo "New commits detected. Running nightly checks."
            echo "skip=false" >> $GITHUB_OUTPUT
          fi

      - name: Set up JDK 17
        if: github.event_name != 'schedule' || steps.check_commits.outputs.skip != 'true'
        uses: actions/setup-java@v5
        with:
          java-version: '17'
          distribution: 'temurin'

      - name: Set up Gradle
        if: github.event_name != 'schedule' || steps.check_commits.outputs.skip != 'true'
        uses: gradle/actions/setup-gradle@v6
        with:
          cache-read-only: ${{ github.ref != 'refs/heads/master' }}
          cache-cleanup: on-success

      - name: Grant execute permission for gradlew
        if: github.event_name != 'schedule' || steps.check_commits.outputs.skip != 'true'
        run: chmod +x gradlew

      - name: Enable KVM
        if: github.event_name != 'schedule' || steps.check_commits.outputs.skip != 'true'
        run: |
          echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
            | sudo tee /etc/udev/rules.d/99-kvm4all.rules
          sudo udevadm control --reload-rules
          sudo udevadm trigger --name-match=kvm

      - name: Run Regression Check
        if: github.event_name != 'schedule' && !(github.event_name == 'workflow_dispatch' && inputs.run_full)
        run: ./gradlew regressionCheck -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect

      - name: Run Nightly Regression Checks
        if: (github.event_name == 'schedule' && steps.check_commits.outputs.skip != 'true') || (github.event_name == 'workflow_dispatch' && inputs.run_full)
        run: ./gradlew regressionFullCheck -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect

      - name: Upload Managed Device Reports
        if: always() && (github.event_name != 'schedule' || steps.check_commits.outputs.skip != 'true')
        uses: actions/upload-artifact@v7
        with:
          name: gmd-regression-test-reports
          path: |
            app/build/reports/androidTests/managedDevice/
            app/build/outputs/androidTest-results/managedDevice/
            app/build/outputs/androidTest-results/regression-core-preserved/
            app/build/outputs/managed_device_android_test_additional_output/
            macrobenchmark/build/reports/androidTests/managedDevice/
            macrobenchmark/build/outputs/androidTest-results/managedDevice/
            macrobenchmark/build/outputs/managed_device_android_test_additional_output/
          if-no-files-found: warn
          retention-days: 7

  aggregate-results:
    name: Aggregate & Publish Regression Stats
    runs-on: ubuntu-latest
    needs: regression
    # Only aggregate/publish to the dashboard for nightly scheduled runs OR
    # manual runs that execute the full suite (since core-only runs do not
    # generate regression-core-preserved/, publishing would result in incomplete stats).
    if: >
      always() &&
      (needs.regression.result == 'success' || needs.regression.result == 'failure') &&
      needs.regression.outputs.skip_nightly != 'true' &&
      (
        github.event_name == 'schedule' ||
        (github.event_name == 'workflow_dispatch' && inputs.run_full)
      )
    permissions:
      contents: write
      pull-requests: write
    steps:
      - name: Checkout code
        uses: actions/checkout@v6
        with:
          ref: ${{ github.ref_name }}
          lfs: true

      - name: Set up Python
        uses: actions/setup-python@v6
        with:
          python-version: '3.x'

      - name: Download Managed Device Reports
        uses: actions/download-artifact@v8
        with:
          name: gmd-regression-test-reports
          path: tmp-reports
      - name: Aggregate and Push Results
        run: |
          git config --global user.name "github-actions[bot]"
          git config --global user.email "github-actions[bot]@users.noreply.github.com"
          mkdir -p .git/info
          echo "app/coverage-baselines/*.ec -filter -diff -merge" >> .git/info/attributes
          git reset --hard HEAD

          git fetch origin ${{ github.sha }}

          for i in {1..3}; do
            echo "Attempt $i to aggregate and push..."
            git pull --rebase origin ${{ github.ref_name }}
            git checkout ${{ github.sha }} -- tools/

            python3 tools/aggregate_regression.py
            git add docs/regression-history.json docs/regression-dashboard.md
            if git diff --quiet && git diff --staged --quiet; then
              echo "No changes to dashboard."
              if [ -f tmp-reports/infra_failed.txt ]; then
                echo "ERROR: Infrastructure failure detected during aggregation!"
                exit 1
              fi
              exit 0
            fi
            git commit -m "docs: update nightly regression dashboard [skip ci]"
            if git push origin ${{ github.ref_name }}; then
              echo "Successfully pushed dashboard update."
              if [ -f tmp-reports/infra_failed.txt ]; then
                echo "ERROR: Infrastructure failure detected during aggregation!"
                exit 1
              fi
              exit 0
            else
              echo "Push failed (concurrent commit). Retrying..."
              git reset --hard HEAD~1
            fi
          done
          echo "Failed to push dashboard update after 3 attempts."
          exit 1


The minimal fix is to raise `compileSdk` from 36 to 37 while leaving `targetSdk` at 36, matching the AAR metadata recommendation and avoiding new target-runtime behavior. I’m making that single build-file edit on the PR branch, then I’ll install/use API 37 locally if needed for verification.


Input:
*** Begin Patch
*** Update File: /home/Messier82/projects/service-book/app/build.gradle.kts
@@
-    compileSdk = 36
+    compileSdk = 37
*** End Patch


Success. Updated the following files:
M /home/Messier82/projects/service-book/app/build.gradle.kts

@@ -66,3 +66,3 @@
     namespace = "com.yorvana"
-    compileSdk = 36
+    compileSdk = 37


Output:
Exit code: 0
Wall time: 0.7 seconds
Output:
Success. Updated the following files:
M /home/Messier82/projects/service-book/app/build.gradle.kts


`compileSdk` is now 37 on #139. I’m rerunning the failing command first; if the platform is missing locally, I’ll install Android API 37 and continue validation.


Output:
Chunk ID: b21bfa
Wall time: 30.0006 seconds
Process running with session ID 84930
Original token count: 99
Output:
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off

> Configure project :app
WARNING: The option setting 'android.testoptions.manageddevices.emulator.gpu=host' is experimental.
Checking the license for package Android SDK Platform 37.0 in /home/Messier82/Android/Sdk/licenses
License for package Android SDK Platform 37.0 accepted.
Preparing "Install Android SDK Platform 37.0 (revision 2)".


Gradle is auto-installing Android SDK Platform 37; the license is accepted and installation has started.


Output:
Chunk ID: d93556
Wall time: 30.0019 seconds
Process running with session ID 84930
Original token count: 425
Output:
"Install Android SDK Platform 37.0 (revision 2)" ready.
Installing Android SDK Platform 37.0 in /home/Messier82/Android/Sdk/platforms/android-37.0
"Install Android SDK Platform 37.0 (revision 2)" complete.
"Install Android SDK Platform 37.0 (revision 2)" finished.
[=========                              ] 25%
> Task :app:preBuild UP-TO-DATE
> Task :macrobenchmark:test UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:generateDebugBuildConfig UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:packageDebugResources UP-TO-DATE
> Task :app:processDebugNavigationResources UP-TO-DATE
> Task :app:javaPreCompileDebug UP-TO-DATE
> Task :app:mapDebugSourceSetPaths UP-TO-DATE
> Task :app:compileDebugNavigationResources UP-TO-DATE
> Task :app:checkDebugAarMetadata
> Task :app:mergeDebugResources UP-TO-DATE
> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :app:extractDeepLinksDebug UP-TO-DATE
> Task :app:parseDebugLocalResources
> Task :app:processDebugMainManifest
> Task :app:processDebugManifest UP-TO-DATE
> Task :app:processDebugManifestForPackage UP-TO-DATE
> Task :app:generateDebugRFile
> Task :app:processDebugResources
> Task :app:preDebugUnitTestBuild UP-TO-DATE
> Task :app:javaPreCompileDebugUnitTest UP-TO-DATE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :app:mergeDebugAssets UP-TO-DATE
> Task :app:packageDebugUnitTestForUnitTest
> Task :app:processDebugUnitTestManifest
> Task :app:restoreOutputDirRoborazzi SKIPPED
> Task :app:generateDebugUnitTestConfig

> Task :app:testPythonAggregator
....
----------------------------------------------------------------------
Ran 4 tests in 0.004s

OK


API 37 installed successfully and the build has passed the previous `checkDebugAarMetadata` failure. The JVM tests are continuing.


Output:
Chunk ID: 6c955a
Wall time: 30.0014 seconds
Process running with session ID 84930
Original token count: 4623
Output:

> Task :app:compileDebugKotlin
w: file:///home/Messier82/projects/service-book/app/src/main/java/com/yorvana/ui/records/RecordDetailScreen.kt:151:60 'fun rememberTooltipPositionProvider(spacingBetweenTooltipAndAnchor: Dp = ...): PopupPositionProvider' is deprecated. Deprecated in favor of rememberTooltipPositionProvider API that takes a preferred positioning. Please use rememberTooltipPositionProvider with TooltipAnchorPosition.Above if this same behavior is desired.
w: file:///home/Messier82/projects/service-book/app/src/main/java/com/yorvana/ui/records/RecordDetailScreen.kt:185:60 'fun rememberTooltipPositionProvider(spacingBetweenTooltipAndAnchor: Dp = ...): PopupPositionProvider' is deprecated. Deprecated in favor of rememberTooltipPositionProvider API that takes a preferred positioning. Please use rememberTooltipPositionProvider with TooltipAnchorPosition.Above if this same behavior is desired.
w: file:///home/Messier82/projects/service-book/app/src/main/java/com/yorvana/ui/records/RecordDetailScreen.kt:414:49 'val Icons.Filled.InsertDriveFile: ImageVector' is deprecated. Use the AutoMirrored version at Icons.AutoMirrored.Filled.InsertDriveFile.
w: file:///home/Messier82/projects/service-book/app/src/main/java/com/yorvana/ui/records/RecordDetailScreen.kt:486:64 'fun rememberTooltipPositionProvider(spacingBetweenTooltipAndAnchor: Dp = ...): PopupPositionProvider' is deprecated. Deprecated in favor of rememberTooltipPositionProvider API that takes a preferred positioning. Please use rememberTooltipPositionProvider with TooltipAnchorPosition.Above if this same behavior is desired.
w: file:///home/Messier82/projects/service-book/app/src/main/java/com/yorvana/ui/records/RecordDetailScreen.kt:493:64 'fun rememberTooltipPositionProvider(spacingBetweenTooltipAndAnchor: Dp = ...): PopupPositionProvider' is deprecated. Deprecated in favor of rememberTooltipPositionProvider API that takes a preferred positioning. Please use rememberTooltipPositionProvider with TooltipAnchorPosition.Above if this same behavior is desired.
w: file:///home/Messier82/projects/service-book/app/src/main/java/com/yorvana/ui/records/RecordDetailScreen.kt:584:107 'val Icons.Filled.InsertDriveFile: ImageVector' is deprecated. Use the AutoMirrored version at Icons.AutoMirrored.Filled.InsertDriveFile.
w: file:///home/Messier82/projects/service-book/app/src/main/java/com/yorvana/util/SentryWrapper.kt:5:8 'class UserFeedback : Any, JsonUnknown, JsonSerializable' is deprecated. Deprecated in Java.
w: file:///home/Messier82/projects/service-book/app/src/main/java/com/yorvana/util/SentryWrapper.kt:56:17 'constructor(p0: SentryId!): UserFeedback' is deprecated. Deprecated in Java.
w: file:///home/Messier82/projects/service-book/app/src/main/java/com/yorvana/util/SentryWrapper.kt:60:20 'static fun captureUserFeedback(p0: UserFeedback): Unit' is deprecated. Deprecated in Java.

> Task :app:compileDebugJavaWithJavac
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off

Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off

Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off

> Task :app:processDebugJavaRes UP-TO-DATE
> Task :app:bundleDebugClassesToCompileJar
> Task :app:bundleDebugClassesToRuntimeJar

> Task :app:compileDebugUnitTestKotlin
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/MainActivityTest.kt:27:27 'fun createComposeRule(effectContext: CoroutineContext = ...): ComposeContentTestRule' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/components/RequiredLabelTest.kt:27:27 'fun <reified A : ComponentActivity> createAndroidComposeRule(effectContext: CoroutineContext = ...): AndroidComposeTestRule<ActivityScenarioRule<A>, A>' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createAndroidComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/navigation/SetupScreenTest.kt:17:27 'fun createComposeRule(effectContext: CoroutineContext = ...): ComposeContentTestRule' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/records/AddEditRecordScreenIT.kt:27:27 'fun createComposeRule(effectContext: CoroutineContext = ...): ComposeContentTestRule' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/records/AddEditRecordScreenTest.kt:26:27 'fun <reified A : ComponentActivity> createAndroidComposeRule(effectContext: CoroutineContext = ...): AndroidComposeTestRule<ActivityScenarioRule<A>, A>' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createAndroidComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/records/RecordDetailScreenIT.kt:23:27 'fun createComposeRule(effectContext: CoroutineContext = ...): ComposeContentTestRule' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/records/VehicleDetailScreenIT.kt:28:27 'fun createComposeRule(effectContext: CoroutineContext = ...): ComposeContentTestRule' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/records/VehicleDetailScreenTest.kt:30:27 'fun <reified A : ComponentActivity> createAndroidComposeRule(effectContext: CoroutineContext = ...): AndroidComposeTestRule<ActivityScenarioRule<A>, A>' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createAndroidComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/reportbug/ReportBugScreenTest.kt:30:27 'fun createComposeRule(effectContext: CoroutineContext = ...): ComposeContentTestRule' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/reportbug/ReportBugViewModelTest.kt:232:39 No cast needed.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/reportbug/ReportBugViewModelTest.kt:261:39 No cast needed.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/reportbug/ReportBugViewModelTest.kt:307:39 No cast needed.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/CategoriesScreenIT.kt:27:27 'fun createComposeRule(effectContext: CoroutineContext = ...): ComposeContentTestRule' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/CategoriesScreenTest.kt:24:27 'fun <reified A : ComponentActivity> createAndroidComposeRule(effectContext: CoroutineContext = ...): AndroidComposeTestRule<ActivityScenarioRule<A>, A>' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createAndroidComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsScreenIT.kt:28:27 'fun createComposeRule(effectContext: CoroutineContext = ...): ComposeContentTestRule' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsScreenshotTest.kt:24:27 'fun createComposeRule(effectContext: CoroutineContext = ...): ComposeContentTestRule' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:373:13 The corresponding parameter in the supertype 'VaultStorage' is named 'vehicleId'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:374:13 The corresponding parameter in the supertype 'VaultStorage' is named 'recordId'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:380:13 The corresponding parameter in the supertype 'VaultStorage' is named 'vehicleId'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:381:13 The corresponding parameter in the supertype 'VaultStorage' is named 'recordId'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:385:13 The corresponding parameter in the supertype 'VaultStorage' is named 'vehicleId'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:386:13 The corresponding parameter in the supertype 'VaultStorage' is named 'recordId'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:387:13 The corresponding parameter in the supertype 'VaultStorage' is named 'sourceUri'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:388:13 The corresponding parameter in the supertype 'VaultStorage' is named 'filename'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:392:13 The corresponding parameter in the supertype 'VaultStorage' is named 'vehicleId'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:393:13 The corresponding parameter in the supertype 'VaultStorage' is named 'recordId'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:394:13 The corresponding parameter in the supertype 'VaultStorage' is named 'filename'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:398:13 The corresponding parameter in the supertype 'VaultStorage' is named 'vehicleId'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:399:13 The corresponding parameter in the supertype 'VaultStorage' is named 'recordId'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/settings/SettingsViewModelIT.kt:400:13 The corresponding parameter in the supertype 'VaultStorage' is named 'filename'. This may cause problems when calling this function with named arguments.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/vehicles/AddEditVehicleScreenIT.kt:26:27 'fun createComposeRule(effectContext: CoroutineContext = ...): ComposeContentTestRule' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/vehicles/AddEditVehicleScreenTest.kt:26:27 'fun <reified A : ComponentActivity> createAndroidComposeRule(effectContext: CoroutineContext = ...): AndroidComposeTestRule<ActivityScenarioRule<A>, A>' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createAndroidComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/vehicles/VehicleListConsentDialogTest.kt:34:27 'fun createComposeRule(effectContext: CoroutineContext = ...): ComposeContentTestRule' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/ui/vehicles/VehicleListScreenIT.kt:30:27 'fun createComposeRule(effectContext: CoroutineContext = ...): ComposeContentTestRule' is deprecated. Use `androidx.compose.ui.test.junit4.v2.createComposeRule` instead. The v2 APIs use StandardTestDispatcher instead of UnconfinedTestDispatcher, which aligns with standard coroutine behavior by queuing tasks rather than executing them immediately. Tests relying on immediate execution may require explicit synchronization. Please refer to the migration guide for more details.
w: file:///home/Messier82/projects/service-book/app/src/test/java/com/yorvana/util/SentryWrapperTest.kt:57:20 'static fun captureUserFeedback(p0: UserFeedback): Unit' is deprecated. Deprecated in Java.

> Task :app:compileDebugUnitTestJavaWithJavac NO-SOURCE
> Task :app:processDebugUnitTestJavaRes UP-TO-DATE

> Task :app:testDebugUnitTest
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off
Picked up JAVA_TOOL_OPTIONS: -Xlog:os+container=off


The compileSdk fix is compiling and tests are now running. It produced deprecation warnings only; no build errors after API 37 installation.