Output too large. Showing first 8,000 and last 32,000 characters. For full output see: /home/Messier82/.gemini/tmp/service-book/tool-outputs/session-4309ada4-4f19-4cde-b811-1f9ffe728f5e/mcp_github_list_commits_1777400800360_0.txt [{"sha":"b3d5a7f71c31239b09bc446e57b1ff1112656693","html_url":"https://github.com/Mesya82/Service-Book/commit/b3d5a7f71c31239b09bc446e57b1ff1112656693","commit":{"message":"Add @OptIn(ExperimentalCoroutinesApi::class) to BillingManagerImplTest\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/8723c2e9-36df-42d9-95ab-c9dce86b5318\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T17:02:57Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T17:02:57Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"6ba8823e4702b1a18bc65c859ba41f2b95417b59","html_url":"https://github.com/Mesya82/Service-Book/commit/6ba8823e4702b1a18bc65c859ba41f2b95417b59","commit":{"message":"Fix cachedPremiumFlow null seed and add ITEM_ALREADY_OWNED test\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/ab890c08-7544-45fa-a7e2-6d15537aac5b\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T16:28:10Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T16:28:10Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"10dce45fb9ccff8ee3f34749807459b9280d5daf","html_url":"https://github.com/Mesya82/Service-Book/commit/10dce45fb9ccff8ee3f34749807459b9280d5daf","commit":{"message":"Fix inaccurate comments and unresolved KDoc symbol references\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/5484f693-8a74-44d7-853d-4623bd462291\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T14:25:04Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T14:25:04Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"1c5a7af2a0cd56a04d5832f6c2c8c4a05b3525a4","html_url":"https://github.com/Mesya82/Service-Book/commit/1c5a7af2a0cd56a04d5832f6c2c8c4a05b3525a4","commit":{"message":"Eliminate first() suspension in processPurchases; seed DebugBillingOverride._isPremium from delegate\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/9c26ce99-c174-40e3-8e24-a5a46bf6325c\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T13:50:16Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T13:50:16Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"9afdf208d6433bda40b7b5d0688895b156f5edbb","html_url":"https://github.com/Mesya82/Service-Book/commit/9afdf208d6433bda40b7b5d0688895b156f5edbb","commit":{"message":"Fix DataStore write guard and test cache-seed bug in processPurchases\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/5d1c1eb1-8715-4247-91e4-7b78a1bf6307\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T13:24:38Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T13:24:38Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"26ade302d058007aff6a36ac56ae87bfecace3c5","html_url":"https://github.com/Mesya82/Service-Book/commit/26ade302d058007aff6a36ac56ae87bfecace3c5","commit":{"message":"Address reviewer: fun interface, null-safe purchases/details, accurate comments\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/f4e87b13-5770-4aad-b11b-987e52bc2e53\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T12:48:38Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T12:48:38Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"fd1f387cfd4616037415c2e6876e81572af5304a","html_url":"https://github.com/Mesya82/Service-Book/commit/fd1f387cfd4616037415c2e6876e81572af5304a","commit":{"message":"Address reviewer: move DebugBillingOverride to src/debug, fix stateIn comment, handle ITEM_ALREADY_OWNED\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/3924df17-7295-4be9-86f7-93c4285cb6b4\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T12:29:50Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T12:29:50Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"d07391871158512db0147fbaa7502f335a861dce","html_url":"https://github.com/Mesya82/Service-Book/commit/d07391871158512db0147fbaa7502f335a861dce","commit":{"message":"Review followup: NO_OVERRIDE constant, isActive guard on both suspendCancellableCoroutine callbacks\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/82d21920-178d-46d6-8c20-0edacac2df01\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T09:27:14Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T09:27:14Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"1b5808a97481c15d935feda640c63f15c69f74e7","html_url":"https://github.com/Mesya82/Service-Book/comm ... [2,643 characters omitted] ... ply@github.com","date":"2026-04-28T08:45:42Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"59187dbfb09e82b57e22de797a9a192e93dc69cf","html_url":"https://github.com/Mesya82/Service-Book/commit/59187dbfb09e82b57e22de797a9a192e93dc69cf","commit":{"message":"Add KDoc to acknowledgeOnePurchase, queryPurchasesAsync, and prefetchProductDetails\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/e31f0320-4a2b-432f-870e-dd11c502aea3\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T08:30:34Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T08:30:34Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"da93d3f2fbf6c6e8ddd8c74ad033719dba7db0d6","html_url":"https://github.com/Mesya82/Service-Book/commit/da93d3f2fbf6c6e8ddd8c74ad033719dba7db0d6","commit":{"message":"Fix thread safety: use AtomicReference for cachedProductDetails and currentOverrideMode\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/e31f0320-4a2b-432f-870e-dd11c502aea3\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T08:28:54Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T08:28:54Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"10d3f691f72161ae9d97aee36a55a6c8625835f4","html_url":"https://github.com/Mesya82/Service-Book/commit/10d3f691f72161ae9d97aee36a55a6c8625835f4","commit":{"message":"Address review feedback: fix KDoc, add OdometerUnit import, rename FakePreferencesStore, remove unused imports\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/e31f0320-4a2b-432f-870e-dd11c502aea3\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T08:25:52Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T08:25:52Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"cdd29dc82ddd39444916a7083b39a33595f8ee59","html_url":"https://github.com/Mesya82/Service-Book/commit/cdd29dc82ddd39444916a7083b39a33595f8ee59","commit":{"message":"Fix review comments: rename FakeBillingManager backing field, shorten lambda param name\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/e31f0320-4a2b-432f-870e-dd11c502aea3\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T08:22:13Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T08:22:13Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"aec7b0ba18b7570cc73cd6c5f28f783a2927b343","html_url":"https://github.com/Mesya82/Service-Book/commit/aec7b0ba18b7570cc73cd6c5f28f783a2927b343","commit":{"message":"Implement BillingManagerImpl, DebugBillingOverride, FakeBillingManager, BillingManagerImplTest\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/e31f0320-4a2b-432f-870e-dd11c502aea3\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T08:20:22Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T08:20:22Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"3382717e53683446f8ed7ee3ec6ef8f4fc7380b5","html_url":"https://github.com/Mesya82/Service-Book/commit/3382717e53683446f8ed7ee3ec6ef8f4fc7380b5","commit":{"message":"Initial plan","author":{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T08:05:11Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T08:05:11Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"ec9ed8c10ea8edde04948cc190ffb6a73088d176","html_url":"https://github.com/Mesya82/Service-Book/commit/ec9ed8c10ea8edde04948cc190ffb6a73088d176","commit":{"message":"Phase 1 — Paywall foundation: preferences + billing types (#43)\n\n* Initial plan\n\n* chore: initial plan for Phase 1 paywall foundation\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/b2feaf60-1386-4dd8-bdb6-959c10bb9fea\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e\n\n* feat: Phase 1 paywall foundation - preferences + billing types\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/b2feaf60-1386-4dd8-bdb6-959c10bb9fea\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e\n\n* fix: address PR review comments on billing types and preferences\n\nAgent-Logs-Url: https://github.com/Mesya82/Service-Book/sessions/103a5dde-190c-4b9b-8b27-f4b9f0b48ddd\n\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] \u003c198982749+Copilot@users.noreply.github.com\u003e\nCo-authored-by: Mesya82 \u003c32867735+Mesya82@users.noreply.github.com\u003e","author":{"name":"Copilot","email":"198982749+Copilot@users.noreply.github.com","date":"2026-04-28T08:04:29Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-28T08:04:29Z"}},"author":{"login":"Copilot","id":198982749,"profile_url":"https://github.com/apps/copilot-swe-agent","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"ae5eafc95337897ba32a2ebc25e1836e3165862e","html_url":"https://github.com/Mesya82/Service-Book/commit/ae5eafc95337897ba32a2ebc25e1836e3165862e","commit":{"message":"build(deps): bump mockk from 1.13.10 to 1.14.9 (#31)\n\nBumps `mockk` from 1.13.10 to 1.14.9.\n\nUpdates `io.mockk:mockk` from 1.13.10 to 1.14.9\n- [Release notes](https://github.com/mockk/mockk/releases)\n- [Commits](https://github.com/mockk/mockk/compare/1.13.10...1.14.9)\n\nUpdates `io.mockk:mockk-android` from 1.13.10 to 1.14.9\n- [Release notes](https://github.com/mockk/mockk/releases)\n- [Commits](https://github.com/mockk/mockk/compare/1.13.10...1.14.9)\n\n---\nupdated-dependencies:\n- dependency-name: io.mockk:mockk\n dependency-version: 1.14.9\n dependency-type: direct:production\n update-type: version-update:semver-minor\n- dependency-name: io.mockk:mockk-android\n dependency-version: 1.14.9\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e","author":{"name":"dependabot[bot]","email":"49699333+dependabot[bot]@users.noreply.github.com","date":"2026-04-27T14:43:16Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-27T14:43:16Z"}},"author":{"login":"dependabot[bot]","id":49699333,"profile_url":"https://github.com/apps/dependabot","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"4bb1a0681e4917a463505430e1c199bc0ac82d41","html_url":"https://github.com/Mesya82/Service-Book/commit/4bb1a0681e4917a463505430e1c199bc0ac82d41","commit":{"message":"build(deps): bump kotlin from 2.0.0 to 2.3.21 (#32)\n\n* build(deps): bump kotlin from 2.0.0 to 2.3.21\n\nBumps `kotlin` from 2.0.0 to 2.3.21.\n\nUpdates `org.jetbrains.kotlin.android` from 2.0.0 to 2.3.21\n- [Release notes](https://github.com/JetBrains/kotlin/releases)\n- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)\n- [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.0...v2.3.21)\n\nUpdates `org.jetbrains.kotlin.plugin.serialization` from 2.0.0 to 2.3.21\n- [Release notes](https://github.com/JetBrains/kotlin/releases)\n- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)\n- [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.0...v2.3.21)\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.0.0 to 2.3.21\n- [Release notes](https://github.com/JetBrains/kotlin/releases)\n- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)\n- [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.0...v2.3.21)\n\n---\nupdated-dependencies:\n- dependency-name: org.jetbrains.kotlin.android\n dependency-version: 2.3.21\n dependency-type: direct:production\n update-type: version-update:semver-minor\n- dependency-name: org.jetbrains.kotlin.plugin.serialization\n dependency-version: 2.3.21\n dependency-type: direct:production\n update-type: version-update:semver-minor\n- dependency-name: org.jetbrains.kotlin.plugin.compose\n dependency-version: 2.3.21\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\n\n* fix: resolve Kotlin 2.3.21 compatibility issues and Managed Devices deprecation\n\n---------\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: Mesya82 \u003cmesya82@users.noreply.github.com\u003e","author":{"name":"dependabot[bot]","email":"49699333+dependabot[bot]@users.noreply.github.com","date":"2026-04-27T14:30:01Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-27T14:30:01Z"}},"author":{"login":"dependabot[bot]","id":49699333,"profile_url":"https://github.com/apps/dependabot","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"2eb17eb736e1b0f1e96ab0b906ceff0459425aa5","html_url":"https://github.com/Mesya82/Service-Book/commit/2eb17eb736e1b0f1e96ab0b906ceff0459425aa5","commit":{"message":"build(deps): bump marocchino/sticky-pull-request-comment from 2 to 3 (#30)\n\nBumps [marocchino/sticky-pull-request-comment](https://github.com/marocchino/sticky-pull-request-comment) from 2 to 3.\n- [Release notes](https://github.com/marocchino/sticky-pull-request-comment/releases)\n- [Commits](https://github.com/marocchino/sticky-pull-request-comment/compare/v2...v3)\n\n---\nupdated-dependencies:\n- dependency-name: marocchino/sticky-pull-request-comment\n dependency-version: '3'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e","author":{"name":"dependabot[bot]","email":"49699333+dependabot[bot]@users.noreply.github.com","date":"2026-04-27T12:52:12Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-27T12:52:12Z"}},"author":{"login":"dependabot[bot]","id":49699333,"profile_url":"https://github.com/apps/dependabot","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"7d451becccf8506cb08ff46c39e43c871379c27e","html_url":"https://github.com/Mesya82/Service-Book/commit/7d451becccf8506cb08ff46c39e43c871379c27e","commit":{"message":"build(deps): bump actions/checkout from 4 to 6 (#29)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n dependency-version: '6'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e","author":{"name":"dependabot[bot]","email":"49699333+dependabot[bot]@users.noreply.github.com","date":"2026-04-27T12:50:59Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-27T12:50:59Z"}},"author":{"login":"dependabot[bot]","id":49699333,"profile_url":"https://github.com/apps/dependabot","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"478b41c2eda22ec1228bf25160420b7723d72753","html_url":"https://github.com/Mesya82/Service-Book/commit/478b41c2eda22ec1228bf25160420b7723d72753","commit":{"message":"build(deps): bump androidx.documentfile:documentfile from 1.0.1 to 1.1.0 (#33)\n\nBumps androidx.documentfile:documentfile from 1.0.1 to 1.1.0.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.documentfile:documentfile\n dependency-version: 1.1.0\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e","author":{"name":"dependabot[bot]","email":"49699333+dependabot[bot]@users.noreply.github.com","date":"2026-04-27T12:50:56Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-27T12:50:56Z"}},"author":{"login":"dependabot[bot]","id":49699333,"profile_url":"https://github.com/apps/dependabot","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"5a18507b4f287082bcdc33f8aeb289c44b89ea11","html_url":"https://github.com/Mesya82/Service-Book/commit/5a18507b4f287082bcdc33f8aeb289c44b89ea11","commit":{"message":"build(deps): bump actions/upload-artifact from 4 to 7 (#26)\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v4...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n dependency-version: '7'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e","author":{"name":"dependabot[bot]","email":"49699333+dependabot[bot]@users.noreply.github.com","date":"2026-04-27T12:50:36Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-27T12:50:36Z"}},"author":{"login":"dependabot[bot]","id":49699333,"profile_url":"https://github.com/apps/dependabot","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"7d820f39473ea3058ddaba7f127733f849e4a453","html_url":"https://github.com/Mesya82/Service-Book/commit/7d820f39473ea3058ddaba7f127733f849e4a453","commit":{"message":"build(deps): bump androidx.test.ext:junit from 1.1.5 to 1.3.0 (#27)\n\nBumps androidx.test.ext:junit from 1.1.5 to 1.3.0.\n\n---\nupdated-dependencies:\n- dependency-name: androidx.test.ext:junit\n dependency-version: 1.3.0\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e","author":{"name":"dependabot[bot]","email":"49699333+dependabot[bot]@users.noreply.github.com","date":"2026-04-27T12:50:34Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-27T12:50:34Z"}},"author":{"login":"dependabot[bot]","id":49699333,"profile_url":"https://github.com/apps/dependabot","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"bdd592c56d180f5cb5df629a35b2a565bd4bac01","html_url":"https://github.com/Mesya82/Service-Book/commit/bdd592c56d180f5cb5df629a35b2a565bd4bac01","commit":{"message":"build(deps): bump actions/setup-java from 4 to 5 (#28)\n\nBumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n dependency-version: '5'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e","author":{"name":"dependabot[bot]","email":"49699333+dependabot[bot]@users.noreply.github.com","date":"2026-04-27T12:50:30Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-27T12:50:30Z"}},"author":{"login":"dependabot[bot]","id":49699333,"profile_url":"https://github.com/apps/dependabot","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"cdd82cfa22b942c0fc22298db3d15ff77f34b4c0","html_url":"https://github.com/Mesya82/Service-Book/commit/cdd82cfa22b942c0fc22298db3d15ff77f34b4c0","commit":{"message":"build(deps): bump app.cash.paparazzi from 1.3.4 to 1.3.5 (#34)\n\nBumps [app.cash.paparazzi](https://github.com/cashapp/paparazzi) from 1.3.4 to 1.3.5.\n- [Release notes](https://github.com/cashapp/paparazzi/releases)\n- [Changelog](https://github.com/cashapp/paparazzi/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/cashapp/paparazzi/compare/1.3.4...1.3.5)\n\n---\nupdated-dependencies:\n- dependency-name: app.cash.paparazzi\n dependency-version: 1.3.5\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e","author":{"name":"dependabot[bot]","email":"49699333+dependabot[bot]@users.noreply.github.com","date":"2026-04-27T12:50:28Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-27T12:50:28Z"}},"author":{"login":"dependabot[bot]","id":49699333,"profile_url":"https://github.com/apps/dependabot","avatar_url":"https://avatars.githubusercontent.com/in/29110?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"ba36cdda140165b3abf49061328dcd558d912f87","html_url":"https://github.com/Mesya82/Service-Book/commit/ba36cdda140165b3abf49061328dcd558d912f87","commit":{"message":"chore: phase 3 hardening (concurrency and dependabot) (#25)\n\n- Added `concurrency: cancel-in-progress` to `ci.yml` to cancel redundant runs on rapid PR pushes, recovering runner minutes.\n- Added `.github/dependabot.yml` to keep Gradle and GitHub Actions dependencies up to date.","author":{"name":"Igor Vinogradov","email":"igor.vinogradov.82@gmail.com","date":"2026-04-27T12:22:44Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-27T12:22:44Z"}},"author":{"login":"Mesya82","id":32867735,"profile_url":"https://github.com/Mesya82","avatar_url":"https://avatars.githubusercontent.com/u/32867735?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"e34b884d0ac45a6508a7959191e652fff5668205","html_url":"https://github.com/Mesya82/Service-Book/commit/e34b884d0ac45a6508a7959191e652fff5668205","commit":{"message":"ci(smoke): add support for [smoke] label trigger (Phase 2 follow-up) (#24)\n\n* ci(smoke): add support for [smoke] label trigger\n\nEnables running smoke tests on PRs when the 'smoke' label is applied, even if\nno tracked files were changed. Uses dorny/paths-filter to handle the logic.\nMaintains the world-writable KVM setup required for GMD stability.\n\n* ci(smoke): optimize job execution logic\n\n- Add job-level guard to skip the changes job if a non-smoke label is added,\n saving actions minutes on irrelevant labels.\n- Skip checkout and paths-filter steps on non-pull_request events, as the\n workflow forces true output for them anyway.\n\n* ci(smoke): fix paths-filter permissions and expression evaluation\n\n- Added `pull-requests: read` permission, which is required by `dorny/paths-filter` to query PR files via the GitHub API.\n- Reordered `run_smoke` output logic to short-circuit on non-PR events before evaluating `github.event.pull_request.labels`, preventing evaluation warnings on push/workflow_dispatch events.\n\n* ci(smoke): minimize changes job overhead and update docs\n\n- Removed the `actions/checkout` step from the `changes` job, as `dorny/paths-filter` uses the GitHub API to query file changes for PRs and does not require a checked-out workspace. This reduces overhead on PR updates where `smoke` ends up being skipped.\n- Updated the header comment to accurately reflect the new path-filtering behavior (where the lightweight `changes` job runs on all PR updates to conditionally gate the expensive `smoke` job).\n\n* ci(smoke): restore path filtering and add reusable label trigger workflow\n\nRestores workflow-level 'pull_request.paths' to smoke.yml to ensure zero\nminutes are consumed on unrelated PRs. Introduces smoke-label.yml for the\nmanual trigger, which uses workflow_call to share the smoke job while\nmaintaining independent trigger/guard logic to prevent double-runs.\n\n* ci(smoke): simplify manual trigger to a one-shot labeled event\n\n- Removed 'opened', 'synchronize', and 'reopened' types to ensure this acts as a true manual one-shot trigger, preventing significant runner-minute burn on subsequent pushes.\n- Removed the 'check' job and path filters entirely. The workflow now relies purely on 'github.event.label.name == smoke' to evaluate directly and execute the reusable workflow, fixing the bug where the manual trigger would skip if paths matched.\n\n---------\n\nCo-authored-by: Mesya82 \u003cmesya82@users.noreply.github.com\u003e","author":{"name":"Igor Vinogradov","email":"igor.vinogradov.82@gmail.com","date":"2026-04-27T11:55:17Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-27T11:55:17Z"}},"author":{"login":"Mesya82","id":32867735,"profile_url":"https://github.com/Mesya82","avatar_url":"https://avatars.githubusercontent.com/u/32867735?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}},{"sha":"fe7ac1ac51355c31e6971640d3e76e5303584fa0","html_url":"https://github.com/Mesya82/Service-Book/commit/fe7ac1ac51355c31e6971640d3e76e5303584fa0","commit":{"message":"chore: Phase 2 prep for public→private migration (#23)\n\n* chore: prep repo for public→private migration (Phase 2)\n\n- Replace CodeQL (GHAS-only on private) with Semgrep:\n - Delete .github/workflows/codeql.yml\n - Add semgrep.yml using p/default + p/kotlin + p/owasp-top-ten,\n PR/push/weekly cron/dispatch, SARIF artifact, concurrency cancel\n- Add smoke.yml — GMD pixel2api33Check on CI:\n - Path-filtered PRs, push to master, workflow_dispatch\n - swiftshader_indirect (free runners lack KVM)\n - concurrency cancel-in-progress\n- Stale-baseline-check job in smoke.yml: sticky PR comment via\n marocchino/sticky-pull-request-comment, flips between ⚠️ stale (with\n refresh command) and ✅ current based on git timestamps of\n app/src/main vs gmd_smoke.ec\n- TESTING_SETUP.md: surface the explicit refresh + commit runbook,\n reference the new sticky PR comment\n\nRefs #21\n\nCo-Authored-By: Claude Opus 4.7 \u003cnoreply@anthropic.com\u003e\n\n* ci(smoke): enable KVM on runner so GMD x86_64 image can boot\n\nThe first smoke run on PR #23 failed at pixel2api33Setup with\n\"x86_64 emulation currently requires hardware acceleration!\". The\nswiftshader_indirect flag only sets the GPU; the x86_64 system image\nstill needs CPU acceleration via KVM. GitHub-hosted ubuntu-latest\nrunners do expose /dev/kvm, but the runner user lacks permission by\ndefault — install the standard udev rule and drop the swiftshader\noverride so the default host GPU is used.\n\nCo-Authored-By: Claude Opus 4.7 \u003cnoreply@anthropic.com\u003e\n\n* ci(smoke): restore swiftshader_indirect — runner has no GPU driver\n\nPrevious commit dropped the swiftshader override on the assumption that\ndefault `host` GPU would work once KVM was enabled. It does not — the\nrunner has no Vulkan driver, so emulator setup fails with\nVK_ERROR_INCOMPATIBLE_DRIVER. Both fixes are required: KVM for CPU\nacceleration, swiftshader_indirect for software rendering.\n\nCo-Authored-By: Claude Opus 4.7 \u003cnoreply@anthropic.com\u003e\n\n* ci: replace stale-baseline-check with simpler baseline-reminder workflow\n\nThe timestamp-based stale check fired on most PRs (any app/src/main edit\nbeats the baseline mtime), which trains people to ignore it, and used\ngit mtime as a proxy for semantic staleness. Replace with a path-filtered\nreminder workflow that runs on every PR touching app/src/main/** and\nposts a sticky comment with a UTC + commit SHA footer so freshness is\nvisible at a glance. No false ✅ self-healing claims.\n\n- Move out of smoke.yml (which is path-filtered to UI surface only) into\n its own baseline-reminder.yml so it covers all production-code changes.\n- Drop now-unused pull-requests: write permission from smoke.yml.\n\nCo-Authored-By: Claude Opus 4.7 \u003cnoreply@anthropic.com\u003e\n\n* chore: address PR #23 review feedback\n\nPin Semgrep container image to 1.161.0 for reproducible CI, and update\nTESTING_SETUP.md to reference the Baseline Reminder workflow instead of\nthe removed Smoke / Stale Baseline Check job.\n\nCo-Authored-By: Claude Opus 4.7 \u003cnoreply@anthropic.com\u003e\n\n* ci(semgrep): fix exit code handling to catch execution errors\n\nReplace continue-on-error: true with manual exit code handling to ensure\nthe Semgrep job fails on actual execution errors while still tolerating\nsecurity findings (exit code 1).\n\n* chore: address additional PR #23 review comments\n\n- Run Semgrep via docker run instead of job-level container so `actions/checkout` and `actions/upload-artifact` can run reliably on the host runner (which has the required Node.js dependencies).\n- Tighten `/dev/kvm` permissions on the host runner from world-writable `0666` to `0660` using `setfacl`.\n\n* ci: address final PR comments and enable Semgrep PR reporting\n\n- Make baseline reminder non-blocking (continue-on-error: true).\n- Add reviewdog to Semgrep workflow for inline PR comments.\n- Grant pull-requests: write permission to Semgrep workflow.\n\n* ci(smoke): revert KVM permission tightening to fix GMD run\n\nReverts the KVM permissions back to world-writable (0666) and removes the setfacl command, as tightening the permissions caused the GMD run to fail.\n\n* ci(semgrep): fix exit code handling and switch to semgrep scan\n\n- Added 'set +e' around docker run to prevent bash from aborting immediately on exit code 1.\n- Switched from 'semgrep ci' to 'semgrep scan' for local execution without a dashboard token.\n- Ensures the SARIF file is processed by reviewdog even if findings are found.\n\n* ci(semgrep): gate reviewdog reporting to pull_request event\n\nPrevents reviewdog from failing on push or schedule events where the github-pr-review reporter is unavailable.\n\n* docs(ci): document KVM 0666 permission rationale\n\nUpdates the smoke.yml documentation to explain that the world-writable 0666\nudev rule is a common approach when running GMD tests on ephemeral Ubuntu\nrunners to ensure the emulator process has necessary permissions.\n\n* ci(semgrep): pin reviewdog version for deterministic reporting\n\nPins the reviewdog_version to v0.20.3 (instead of 'latest') in order to\nprevent upstream behavior changes from unexpectedly breaking Semgrep reporting.\n\n* ci(semgrep): fail job on findings for non-PR events\n\nEnsures that scheduled and push scans on the default branch provide an actionable failure signal when security issues are detected, while still tolerating exit code 1 on PRs so reviewdog can post inline comments.\n\n---------\n\nCo-authored-by: Mesya82 \u003cmesya82@users.noreply.github.com\u003e\nCo-authored-by: Claude Opus 4.7 \u003cnoreply@anthropic.com\u003e","author":{"name":"Igor Vinogradov","email":"igor.vinogradov.82@gmail.com","date":"2026-04-27T09:13:04Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-04-27T09:13:04Z"}},"author":{"login":"Mesya82","id":32867735,"profile_url":"https://github.com/Mesya82","avatar_url":"https://avatars.githubusercontent.com/u/32867735?v=4"},"committer":{"login":"web-flow","id":19864447,"profile_url":"https://github.com/web-flow","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4"}}]