)]}'
{
  "log": [
    {
      "commit": "a297e2db6d05dc6b04f7f02960f6f5b9efb72ff8",
      "tree": "8f768e253bac5ecad45d8c7da60bc85dc98de2f0",
      "parents": [
        "2f95ae41d6662088e2d58a68f449c1749b0dc985"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Fri Oct 16 09:58:07 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 16:58:07 2026 +0000"
      },
      "message": "For MacOS update salt package to 3006.9 (#5162)\n\nFor MacOS update salt package to 3006.9 and for Apple Silicon Macs use ARM64 package\r\n\r\nfix: https://github.com/flutter/flutter/issues/193741"
    },
    {
      "commit": "2f95ae41d6662088e2d58a68f449c1749b0dc985",
      "tree": "2612ae23ffa4a133e9523370f7480c11b1627780",
      "parents": [
        "204b120bbfdb3e925876a83b29cd18cc4cbc67fd"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Oct 15 09:54:22 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 16:54:22 2026 +0000"
      },
      "message": "Stop using remaining_jobs and failed_jobs and use jobs statuses instead (#5165)\n\nRemove remaining_jobs and failed_jobs from presubmit_guards\n\nRemove the remaining_jobs and failed_jobs fields from PresubmitGuard and derive guard status directly from the jobs TaskStatus map instead of maintaining separate counters.\n- Update GuardStatus.calculate to evaluate Iterable\u003cTaskStatus\u003e (Succeeded if all isSuccess, Failed if any isFailure, otherwise In Progress)\n- Add PresubmitGuard.status getter and drop remainingJobs/failedJobs\n- Update UnifiedCheckRun, LuciBuildService, request handlers, and unit tests\n\nfix: https://github.com/flutter/flutter/issues/193862"
    },
    {
      "commit": "204b120bbfdb3e925876a83b29cd18cc4cbc67fd",
      "tree": "de8481a7096b74feff02c0eaf14eea1021dbf998",
      "parents": [
        "dd23199b29941e1025401212701245f178379211"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Wed Oct 14 13:51:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 20:51:21 2026 +0000"
      },
      "message": "Enforce test exemptions via missing-tests and test-exempt labels (#5164)\n\n- Apply and update the missing-tests label on PR open, synchronize, and ready_for_review events in app_dart.\r\n- Fix fusion file filtering and comment-only needsTests evaluation in checkForTests.\r\n- Update the missing-tests bot comment to direct reviewers to area tech leads for test exemptions.\r\n- Block autosubmit on PRs with the missing-tests label unless test-exempt or emergency is also applied.\r\n\r\nFixes https://github.com/flutter/flutter/issues/193961"
    },
    {
      "commit": "dd23199b29941e1025401212701245f178379211",
      "tree": "2cb124b9d8724e42fe91cf6cdd70e981efdef48a",
      "parents": [
        "bfb5d1e62f083fd3eb9a91aa935619030fc61906"
      ],
      "author": {
        "name": "Victoria Ashworth",
        "email": "15619084+vashworth@users.noreply.github.com",
        "time": "Tue Oct 13 10:43:44 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 15:43:44 2026 +0000"
      },
      "message": "Increase minimum iOS version of infra_dialog app (#5166)\n\nFixes https://github.com/flutter/flutter/issues/194231."
    },
    {
      "commit": "bfb5d1e62f083fd3eb9a91aa935619030fc61906",
      "tree": "3a1ec62164dac272effac2a5eb34a7096b8221b2",
      "parents": [
        "8eba5e1e99b9a8d0ce11cb2eed43db6aa8223be1"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Wed Oct 07 12:53:08 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 19:53:08 2026 +0000"
      },
      "message": "adding beta testes for reset failed check run to in progress feature (#5163)\n\nAdding Victoria, Andy and Evan to a beta testers of reset failed check run to in progress feature"
    },
    {
      "commit": "8eba5e1e99b9a8d0ce11cb2eed43db6aa8223be1",
      "tree": "a59122b5e76ff92cdfbe5c16fa01ef26ad611fb0",
      "parents": [
        "1421420a5270db1d536b5ef1346b07913f3b9ec6"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Oct 05 15:09:09 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 05 22:09:09 2026 +0000"
      },
      "message": "create Presubmit check-run in in-progress status (#5161)\n\nFor better usability create Presubmit check-run in `In Progress` status"
    },
    {
      "commit": "1421420a5270db1d536b5ef1346b07913f3b9ec6",
      "tree": "ea4f625ad4131c9703813a7e370f0685b28a2fe2",
      "parents": [
        "925875ffefdf560568eac9323ea7ae58d557df0b"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Sep 28 13:53:07 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 20:53:07 2026 +0000"
      },
      "message": "Close filter dialog by pressing `esc` or `enter` (#5158)\n\nClose filter dialog by pressing Enter"
    },
    {
      "commit": "925875ffefdf560568eac9323ea7ae58d557df0b",
      "tree": "4db29b9cd5012c88f954f27c06ad50a1a8924df9",
      "parents": [
        "351ada0bf816cb6252184b73614d9a5f32a062f9"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Sep 28 12:34:24 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 19:34:24 2026 +0000"
      },
      "message": "use head_sha field of guard document to re-create presubmit check-run (#5159)\n\nUse `head_sha` field of `guard` document to re-create Presubmit check-run\r\n\r\nfix:https://github.com/flutter/flutter/issues/193466"
    },
    {
      "commit": "351ada0bf816cb6252184b73614d9a5f32a062f9",
      "tree": "e214415e6e678c6ffda9b3b60588cf1089c9a142",
      "parents": [
        "6e7d349380b0175af734dfbdcec65939b59029e9"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Fri Sep 25 16:32:06 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 25 23:32:06 2026 +0000"
      },
      "message": "191737 reset presubmit check (#5157)\n\nChanged presubmit flow to immediately notify if any presubmit job failed and switch check-run back in progress if re-run all failed:\r\n\r\n- Keep `Dashboard Checks` check-run always in progress unless presubmit successed\r\n- Added `Presubmit` check-run\r\n- Fail `Presubmit` check-run immediately once presubmit job failed\r\n- Create new `Presubmit` check run if all jobs re-run\r\n\r\nfix: https://github.com/flutter/flutter/issues/191737"
    },
    {
      "commit": "6e7d349380b0175af734dfbdcec65939b59029e9",
      "tree": "93df7003dbb054a6a2e5fea3476834b6777d26f9",
      "parents": [
        "33b49d3812241e0924d805d403aabc328fb81412"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Wed Sep 23 17:03:49 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 00:03:49 2026 +0000"
      },
      "message": "190580 Show filter dialog by pressing ctrl+f or / (#5156)\n\nfix: https://github.com/flutter/flutter/issues/190580"
    },
    {
      "commit": "33b49d3812241e0924d805d403aabc328fb81412",
      "tree": "93f6a7ca9ca9a0932a15902161dc79707498ad5c",
      "parents": [
        "e27424a9e68727b2cac157c6c006f714bc355b59"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Sep 22 09:51:56 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 16:51:56 2026 +0000"
      },
      "message": "Added `resetFailedCheckRun` flag (#5148)\n\nAdded `resetFailedCheckRun` flag.\r\nDeleted `unifiedCheckRunFlow` flag as no longer needed. \r\nin scope of https://github.com/flutter/flutter/issues/191737"
    },
    {
      "commit": "e27424a9e68727b2cac157c6c006f714bc355b59",
      "tree": "32a7cec69a588a3a6a02aab79ec49ac44cecbab3",
      "parents": [
        "05308d23b3218614aac16457a311e0c059af3450"
      ],
      "author": {
        "name": "Elijah Okoroh",
        "email": "okorohelijah@google.com",
        "time": "Tue Sep 22 09:12:10 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 16:12:10 2026 +0000"
      },
      "message": "[ci] Build ruby CIPD packages with Xcode 17c52 (#5155)\n\nBoth ruby builders have been failing at `build package` because Homebrew requires Xcode \u003e\u003d 16.0 on macOS 15 and they request Xcode 15a240d:\n\n```\nError: Your Xcode (15.0 \u003d\u003e /opt/flutter/xcode/15a240d/XCode.app/Contents/Developer) at /Applications/Xcode.app is too outdated.\nPlease update to Xcode 26.3 (or delete it).\n```\n\nMove both to 17c52 (Xcode 26.2), the version every other Flutter builder uses, so mac-amd64 and mac-arm64 are built with the same toolchain. This also keeps them aligned with the Intel Xcode pin in https://flutter-review.googlesource.com/c/recipes/+/83760, which would otherwise change only the amd64 builder.\n\nExamples: https://ci.chromium.org/b/8670377120581308353 (Mac ruby), https://ci.chromium.org/b/8670377021801718401 (Mac_arm64 ruby).\n\n### What this does and does not fix\n\nHomebrew\u0027s `fatal_build_from_source_checks` are fatal (exit 1) for `brew reinstall --build-from-source`, which `cipd_packages/ruby/tools/build.sh` uses; on Intel Homebrew no longer ships bottles at all, so even `brew install curl` builds from source. This PR clears one of those checks:\n\nSo these builders will stay red after this lands; this is a prerequisite, not the fix. Umbrella: https://github.com/flutter/flutter/issues/164665.\n\nNote on `os: \"Mac-15.5|Mac-15.7\"`: 17c52 requires macOS 15.6, but there are currently 0 macOS 15.5 bots in `luci.flutter.prod` (150 Mac bots, all 15.7.x), so the dimension is left as is.\n\nConsumers are unaffected either way: every `ruby` dependency in flutter/flutter (80) and flutter/packages (1) pins CIPD ref `ruby_3.1-pod_1.13` (registered 2023-10-23); these builders only re-register `latest`."
    },
    {
      "commit": "05308d23b3218614aac16457a311e0c059af3450",
      "tree": "3967a25fa4fbd90bba0bee4238ec9871213509d5",
      "parents": [
        "e6c186aa8f44def9aeb86d7e2c1a7f0adff3fbae"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Sep 21 16:22:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 23:22:23 2026 +0000"
      },
      "message": "176989 ucr flag removal (#5153)\n\nFor presubmit removed support of legacy check run flow if unifiedCheckRunFlow flag is not enabled .\r\nFor merge queue preserved legacy check run flow.\r\nunifiedCheckRunFlow flag itself will be removed in a separate PR\r\n\r\nfix: https://github.com/flutter/flutter/issues/192812"
    },
    {
      "commit": "e6c186aa8f44def9aeb86d7e2c1a7f0adff3fbae",
      "tree": "99543ab6e9e9c03f8324056dec5917287800d328",
      "parents": [
        "7ded0395b5cd793181983d193a28c64bb2103756"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Mon Sep 21 15:25:47 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 22:25:47 2026 +0000"
      },
      "message": "Don\u0027t mark dashboard checks as neutral on rerun. (#5154)\n\nThis is causing some PRs to autosubmit with failing checks. Ideally, we\u0027d actually rerun failed checks when this is clicked. For now, we should make this a no-op.\r\n\r\nThis should address the main issue with  https://github.com/flutter/flutter/issues/191610 for now."
    },
    {
      "commit": "7ded0395b5cd793181983d193a28c64bb2103756",
      "tree": "0de9a6ace3625c65444d2ff40a4852432ad3970a",
      "parents": [
        "637522860e8c7f8156c5cd80ea08317cc2e80a4b"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Sep 17 14:28:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 21:28:21 2026 +0000"
      },
      "message": "fixed `dart analyze --fatal-infos` for cipd (#5152)\n\nFixed `dart analyze --fatal-infos` for cipd after flutter update"
    },
    {
      "commit": "637522860e8c7f8156c5cd80ea08317cc2e80a4b",
      "tree": "d6d0d4c0bba3d4b4906230321028b44fc7e665bd",
      "parents": [
        "bd585e04fff08d4f7feef5c802fac896243b655f"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Sep 17 13:09:27 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 13:09:27 2026 -0700"
      },
      "message": "Revert \"176989 ucr flag removal preserving legacy flow for merge queue\" (#5151)\n\nReverts flutter/cocoon#5150"
    },
    {
      "commit": "bd585e04fff08d4f7feef5c802fac896243b655f",
      "tree": "77d2ab060e35fb6c14f83f47687fb916d5ab2ee8",
      "parents": [
        "888a09a3c563a837bb72c8a886d292c2952acd38"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Wed Sep 16 13:30:06 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 20:30:06 2026 +0000"
      },
      "message": "176989 ucr flag removal preserving legacy flow for merge queue (#5150)\n\nFor presubmit removed support of legacy check run flow if `unifiedCheckRunFlow` flag is not enabled .\r\nFor merge queue preserved legacy check run flow.\r\n`unifiedCheckRunFlow` flag itself will be removed in a separate PR\r\nFixed `dart analyze --fatal-infos` for cipd\r\n\r\nfix: https://github.com/flutter/flutter/issues/192812"
    },
    {
      "commit": "888a09a3c563a837bb72c8a886d292c2952acd38",
      "tree": "d6d0d4c0bba3d4b4906230321028b44fc7e665bd",
      "parents": [
        "c043b328b0d703ce275cb9389e62bb7088fb615a"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Sep 15 14:19:14 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 14:19:14 2026 -0700"
      },
      "message": "Revert \"176989 ucr flag removal\" (#5149)\n\nReverts flutter/cocoon#5146 due to\nhttps://github.com/flutter/flutter/issues/192812"
    },
    {
      "commit": "c043b328b0d703ce275cb9389e62bb7088fb615a",
      "tree": "0dcca214e856c9d7c694b501239a341aaf338922",
      "parents": [
        "feaf3e20c8b6e393913069b500452572f70638bc"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Sep 14 12:13:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 19:13:21 2026 +0000"
      },
      "message": "176989 ucr flag removal (#5146)\n\nfix: https://github.com/flutter/flutter/issues/176989\r\nreverted config change"
    },
    {
      "commit": "feaf3e20c8b6e393913069b500452572f70638bc",
      "tree": "d6d0d4c0bba3d4b4906230321028b44fc7e665bd",
      "parents": [
        "777f0ce20cf07501a52aaf380be274729c615693"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Sep 08 15:56:49 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 15:56:49 2026 -0700"
      },
      "message": "Revert \"176989 unifiedCheckRunFlow flag removal\" (#5145)\n\nReverts flutter/cocoon#5144"
    },
    {
      "commit": "777f0ce20cf07501a52aaf380be274729c615693",
      "tree": "449a7f47c7418634dafdb0af6d7b480405dd5dfd",
      "parents": [
        "1baf410c62f3704f55b4d34560750624a9daa5f0"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Sep 08 15:53:46 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 22:53:46 2026 +0000"
      },
      "message": "176989 unifiedCheckRunFlow flag removal (#5144)\n\nfix: https://github.com/flutter/flutter/issues/176989"
    },
    {
      "commit": "1baf410c62f3704f55b4d34560750624a9daa5f0",
      "tree": "d6d0d4c0bba3d4b4906230321028b44fc7e665bd",
      "parents": [
        "b406e1ee4ec6d064d9ad0fae383e86c48d4fab48"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Tue Sep 08 10:04:33 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 17:04:33 2026 +0000"
      },
      "message": "Decouple bringup tasks from staging bucket and run in prod (#5143)\n\nPreviously, tasks in .ci.yaml marked with bringup: true were scheduled to run in LUCI\u0027s staging bucket against staging builders and the staging pool of bots.\r\n\r\nBecause bringup tasks do not run in presubmit, the only places where they are scheduled are postsubmit and merge queue builds. Running them in the staging bucket is unnecessary; they should run against the standard prod bots and builders like any other task while maintaining their non-blocking behavior (no postsubmit check runs, no gating on tree status).\r\n\r\nStaging builders and the staging pool are reserved for manual testing (e.g., via led) of experimental bot configurations and should not be automatically used for normal CI tasks.\r\n\r\nThis addresses https://github.com/flutter/flutter/issues/192311"
    },
    {
      "commit": "b406e1ee4ec6d064d9ad0fae383e86c48d4fab48",
      "tree": "8c8506cbb6e568dbf30970bead8506857b905020",
      "parents": [
        "f469832acc0e13f3ef06236b315d8421c6be8455"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Aug 31 10:04:07 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 17:04:07 2026 +0000"
      },
      "message": "hack to handle startup_failure conclusion as failure (#5140)\n\nfix: https://github.com/flutter/flutter/issues/191909"
    },
    {
      "commit": "f469832acc0e13f3ef06236b315d8421c6be8455",
      "tree": "8033be5e9df382c295009b0eef02ad0fc73142d8",
      "parents": [
        "b66cc8ec6b906b4fc159a3b0d135a9e891994638"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Fri Aug 21 15:22:13 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 22:22:13 2026 +0000"
      },
      "message": "Read the PR diff and build logs and feed it to gemini in prompt (#5137)\n\nhttps://github.com/flutter/flutter/issues/191099"
    },
    {
      "commit": "b66cc8ec6b906b4fc159a3b0d135a9e891994638",
      "tree": "9fc4677e8602803df35bfca24bbed5bb51dd7398",
      "parents": [
        "ac5092a4ffbad796b3f1b01018cf43bb60f2ca3b"
      ],
      "author": {
        "name": "Andy Wolff",
        "email": "awolff@google.com",
        "time": "Fri Aug 21 14:17:58 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 14:17:58 2026 -0700"
      },
      "message": "[flutter-gold] Support unified check run Dashboard Checks in push_gold_status_to_github (#5139)\n\nFixes https://github.com/flutter/flutter/issues/191483\n\nAs detailed in the issue, the rollout of unified check runs replaced\nindividual shard check runs with `Dashboard Checks`. Because\n`PushGoldStatusToGithub` matched against a hardcoded list of legacy\nshard names, golden status updates and triage labels stopped triggering\non PRs. This PR adds `\u0027dashboard checks\u0027` to the recognized check run\nlist.\n\nUnder the unified flow, individual shard check runs are no longer\npublished to GitHub. While we could theoretically inspect individual\nshards by querying Firestore `PresubmitGuard` records, doing so is\nunnecessary. `Dashboard Checks` only completes once all scheduled\npresubmit builds have finished, and tests upload golden image digests\ndirectly to Skia Gold as they run. When `Dashboard Checks` completes,\nSkia Gold already knows whether golden tests ran and whether any\nunexpected images were produced. For PRs that do not touch goldens (or\ndo not run golden tests at all), Skia Gold returns zero untriaged\nimages, so Cocoon cleanly marks `flutter-gold` as `SUCCESS` without\nposting comments or applying labels. Skipping Firestore queries keeps\n`PushGoldStatusToGithub` simple, fast, and stateless against GitHub and\nGold.\n\nAdded unit tests in `push_gold_status_to_github_test.dart` for\nin-progress, untriaged, and clean `Dashboard Checks` states.\n\ncc @ievdokdm @jtmcdole\n\n## Pre-launch Checklist\n\n- [x] I read the [Contributor Guide] and followed the process outlined\nthere for submitting PRs.\n- [x] I read the [Tree Hygiene] wiki page, which explains my\nresponsibilities.\n- [x] I read the [Flutter Style Guide] _recently_, and have followed its\nadvice.\n- [x] I signed the [CLA].\n- [x] I listed at least one issue that this PR fixes in the description\nabove.\n- [x] I updated/added relevant documentation (doc comments with `///`).\n- [x] I added new tests to check the change I am making, or this PR is\n[test-exempt].\n- [x] All existing and new tests are passing.\n\nIf you need help, consider asking for advice on the #hackers-new channel\non [Discord].\n\n\u003c!-- Links --\u003e\n[Contributor Guide]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#overview\n[Tree Hygiene]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md\n[test-exempt]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#tests\n[Flutter Style Guide]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md\n[CLA]: https://cla.developers.google.com/\n[flutter/tests]: https://github.com/flutter/tests\n[breaking change policy]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#handling-breaking-changes\n[Discord]:\nhttps://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md"
    },
    {
      "commit": "ac5092a4ffbad796b3f1b01018cf43bb60f2ca3b",
      "tree": "f5facfacffa32d662378569569c1d6be5602a14d",
      "parents": [
        "bc221aae4a52a0c287744c845b973d31151beaa4"
      ],
      "author": {
        "name": "Andy Wolff",
        "email": "awolff@google.com",
        "time": "Thu Aug 20 14:57:58 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 21:57:58 2026 +0000"
      },
      "message": "[cocoon] Support Shift+Scroll for horizontal scrolling and optimize lattice layout (#5135)\n\n# [cocoon] Support Shift+Scroll for horizontal scrolling and optimize lattice layout\r\n\r\nFixes https://github.com/flutter/flutter/issues/191441 \r\n\r\nAdds support Shift+scroll wheel to horizontally scroll on flutter-dashboard.\r\nOptimizes the underlying lattice viewport layout logic to significantly reduce layout overhead during rapid scrolling.\r\n\r\nWe achieve this by wrapping the grid body in a pointer signal listener that catches scroll wheel events when Shift is pressed, or when browsers translate Shift-scroll into horizontal deltas. It routes those deltas directly to the horizontal scroll controller.\r\n\r\nDuring local testing, I noticed scrolling was super janky because `performLayout()` was iterating over every cell in the entire matrix grid regardless of visibility (`O(total_rows * total_cols)`). I added a visibility check in `performLayout()`, bounding iteration strictly to the visible viewport bounds (`O(visible_rows * visible_cols)`), the sticky header row, and the sticky header column. On a 200x400 grid, this reduces layout work from 80,000 cell iterations per frame down to ~600 iterations.\r\n\r\nAdded `dashboard/test/widgets/lattice_test.dart`"
    },
    {
      "commit": "bc221aae4a52a0c287744c845b973d31151beaa4",
      "tree": "67c0c0d895c3f435566be9dce7c5f7a04c62b184",
      "parents": [
        "a68a8c6e26db58dd009f0e8d866491aaaa2165c0"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Aug 20 14:43:01 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 21:43:01 2026 +0000"
      },
      "message": "reset re-runned dashboard checks conclusion to neutral (#5136)\n\nworkaround for https://github.com/flutter/flutter/issues/191005"
    },
    {
      "commit": "a68a8c6e26db58dd009f0e8d866491aaaa2165c0",
      "tree": "96b73c663ed52b0b605f5f04d4220ad9b1dafedf",
      "parents": [
        "6d6505446dee1ff956f73938d0e89a26da8a4c89"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Aug 20 12:41:09 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 19:41:09 2026 +0000"
      },
      "message": "reset re-runned dashboard checks status to queued (#5133)\n\nhttps://github.com/flutter/flutter/issues/191005"
    },
    {
      "commit": "6d6505446dee1ff956f73938d0e89a26da8a4c89",
      "tree": "7c6da00cb20dc124f91e8ca7b5eeff8eba529f2b",
      "parents": [
        "d60dce528678df7eb212e786c1d11d62a4689eaa"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Aug 20 12:26:58 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 19:26:58 2026 +0000"
      },
      "message": "Changed logdog to human readable url for gemini log analysis api (#5134)\n\nfix: https://github.com/flutter/flutter/issues/191099"
    },
    {
      "commit": "d60dce528678df7eb212e786c1d11d62a4689eaa",
      "tree": "9a130a9f26141339820a3c7a8ee4a5b409d6b880",
      "parents": [
        "80b2cb4714c325d47e8e8a95d574bb5dfa138f17"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Wed Aug 19 18:28:04 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 01:28:04 2026 +0000"
      },
      "message": "Added logging for Gemini log analizys (#5132)\n\nin scope of https://github.com/flutter/flutter/issues/191099"
    },
    {
      "commit": "80b2cb4714c325d47e8e8a95d574bb5dfa138f17",
      "tree": "39fa957b127aaeae3ac66760e883a80bb57ef54b",
      "parents": [
        "f330c27d246615c357871c264736b757f6e8f4aa"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Wed Aug 19 15:40:09 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 22:40:09 2026 +0000"
      },
      "message": "Reset Dashboard Checks to In Progress when re-run all failed jobs (#5130)\n\nfix of the github error:\r\n\r\n```\r\nError:\r\n    GitHub Error: \r\n      Message: Invalid request.\r\n    \r\n    For \u0027properties/name\u0027, nil is not a string.\r\n     is not a member of [\"success\", \"failure\", \"neutral\", \"cancelled\", \"timed_out\", \"action_required\", \"skipped\"].\r\n    For \u0027properties/conclusion\u0027, nil is not a string.\r\n    For \u0027properties/completed_at\u0027, nil is not a string.\r\n```\r\nwhen reset check run status back to in progress\r\n\r\nin scope of: https://github.com/flutter/flutter/issues/191005"
    },
    {
      "commit": "f330c27d246615c357871c264736b757f6e8f4aa",
      "tree": "0e9bdc95a42b85e0bf1e32b38aaa886b578d00f5",
      "parents": [
        "7af83c41bda88dbb80f4e48b7d907fb8a470f711"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed Aug 19 11:00:41 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 18:00:41 2026 +0000"
      },
      "message": "roll new packages (#5129)"
    },
    {
      "commit": "7af83c41bda88dbb80f4e48b7d907fb8a470f711",
      "tree": "b2cdb5aebc866b83cc0db0bcb3ec59fda72510a5",
      "parents": [
        "75b7d9c610d77762d38c4a835699916ab4c6125b"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Aug 18 10:28:17 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 17:28:17 2026 +0000"
      },
      "message": "experiment for updating dashboard checks status to in progress (#5128)\n\nhttps://github.com/flutter/flutter/issues/191005"
    },
    {
      "commit": "75b7d9c610d77762d38c4a835699916ab4c6125b",
      "tree": "f1f76ec76f019744bfbb4bae63850480388bd2aa",
      "parents": [
        "63babfe14d79ddab84e8a1585784b3861ab86f05"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed Aug 12 10:04:09 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 17:04:09 2026 +0000"
      },
      "message": "feat(suppression): automatically unsuppress and re-suppress tests on GitHub issue events (#5126)\n\n- Add IssueService and wire it to GithubWebhookSubscription to handle GitHub \u0027issues\u0027 webhook events.\r\n- Automatically unsuppress tests when an associated GitHub issue is closed.\r\n- Automatically re-suppress tests when an associated GitHub issue is reopened.\r\n- Add TestSuppression.canonicalizeIssueUrl to sanitize user input (stripping fragments, query params, subpaths, and trailing slashes) into canonical GitHub issue URLs on ingress.\r\n- Add unit and webhook integration tests for IssueService, TestSuppression, and UpdateSuppressedTest.\r\n\r\nfixes: flutter/flutter#188030 only if we update the webhook."
    },
    {
      "commit": "63babfe14d79ddab84e8a1585784b3861ab86f05",
      "tree": "6a36277d575cd6fcb6258b6768a4284b97ea9fb8",
      "parents": [
        "11859fce2329ec338d8f5651ec7de1d0c5d516ce"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Aug 06 15:08:25 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 22:08:25 2026 +0000"
      },
      "message": "Temporary workaround to fix github authentication (#5125)\n\nfix: https://github.com/flutter/flutter/issues/189892"
    },
    {
      "commit": "11859fce2329ec338d8f5651ec7de1d0c5d516ce",
      "tree": "be4208ae62e493576083fe7878945f93e0285fb6",
      "parents": [
        "fe9480799c826d58ecfb61758af87814b6c04538"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Aug 06 14:32:03 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 21:32:03 2026 +0000"
      },
      "message": "fixed created, start, end date format (#5124)\n\nfix: https://github.com/flutter/flutter/issues/190633"
    },
    {
      "commit": "fe9480799c826d58ecfb61758af87814b6c04538",
      "tree": "e04e4f65773bcfdbfb04e79ea3b88c48db2b705c",
      "parents": [
        "3d97b8f9e06ebddfbaedea42ac6713de96f84453"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Wed Aug 05 15:50:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 22:50:20 2026 +0000"
      },
      "message": "Display job execution start and end time (#5123)\n\nadded start and end times in the job execution details\r\n\r\n\u003cimg width\u003d\"350\" height\u003d\"241\" alt\u003d\"image\" src\u003d\"https://github.com/user-attachments/assets/39bd7a41-0d2b-48af-a61d-160f0ea1b5fe\" /\u003e\r\n\r\nfix: https://github.com/flutter/flutter/issues/190633"
    },
    {
      "commit": "3d97b8f9e06ebddfbaedea42ac6713de96f84453",
      "tree": "b3c5ff9f2a3bfc8fd8f8c0c4964d56ad7474e4b2",
      "parents": [
        "312629481952bb75f841e55f87638be865b800a5"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Aug 04 15:03:30 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 15:03:30 2026 -0700"
      },
      "message": "auth: allow certain googlers to vacuum commits (#5122)"
    },
    {
      "commit": "312629481952bb75f841e55f87638be865b800a5",
      "tree": "c0262053bc1c6723dd8f832dfbc5ba43e739ded2",
      "parents": [
        "b1f79e1ed3edb66fa5f44318b182ee75accd2b01"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Aug 04 12:41:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 19:41:20 2026 +0000"
      },
      "message": "Additional logging for unauthenticated calls (#5121)\n\nadditional logging for deeper investigation of https://github.com/flutter/flutter/issues/189892 and https://github.com/flutter/flutter/issues/190495"
    },
    {
      "commit": "b1f79e1ed3edb66fa5f44318b182ee75accd2b01",
      "tree": "23882a9cec081ef8625ef8517c5aa5f4f5524aab",
      "parents": [
        "72eee5b277937d69d165f8311313339cca5746a6"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Tue Aug 04 12:26:11 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 19:26:11 2026 +0000"
      },
      "message": "Eliminate redundant `getDocument` errors in Firestore. (#5118)\n\nLooking through our GCP logs, a large portion of our errors are coming from calls to get documents from firestore where the document is not found. In many cases, we actually handle this 404 error gracefully and proceed without issue. However, this interaction still causes Firestore itself to log an error, even though cocoon handles it just fine.\r\n\r\nThis change adds a convenience method `getDocumentOrNull` which uses the batch document fetch API instead, which always returns a 200, and if the document is not found, just returns an empty list. I went through and found all the places we were catching the 404 error from fetching a document and used this method instead. This should eliminate a lot of these errors in our GCP logs."
    },
    {
      "commit": "72eee5b277937d69d165f8311313339cca5746a6",
      "tree": "8bad0f3517b2eb12d2f65ad295162d30f0fffc4d",
      "parents": [
        "a4905291287f774f9f1c29f1b4436200bb7e1b6f"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Aug 03 15:31:40 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 22:31:40 2026 +0000"
      },
      "message": "Made Execution Details text in Dashboard Checks selectable (#5120)\n\nfix: https://github.com/flutter/flutter/issues/190147"
    },
    {
      "commit": "a4905291287f774f9f1c29f1b4436200bb7e1b6f",
      "tree": "34bdbfa7c41446b55b1110b7e9d9f21f244f86d4",
      "parents": [
        "42ae12e5801f2cd0e0d1a67bce7a11f1baa3644d"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Aug 03 14:22:18 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 21:22:18 2026 +0000"
      },
      "message": "Adding aditional logging for debugging (#5119)\n\nlogging for debugging behavior of https://github.com/flutter/cocoon/pull/5117"
    },
    {
      "commit": "42ae12e5801f2cd0e0d1a67bce7a11f1baa3644d",
      "tree": "abc604e302afa2de40455d2ea3e5cc1b9d511b47",
      "parents": [
        "4ad5f7fc03cc3bc04e7673ae967d4a7a3783ec18"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Fri Jul 31 09:48:07 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:48:07 2026 +0000"
      },
      "message": "Reset failed check run back to in progress if all failed jobs are re-runned (#5117)\n\nfix: https://github.com/flutter/flutter/issues/189943"
    },
    {
      "commit": "4ad5f7fc03cc3bc04e7673ae967d4a7a3783ec18",
      "tree": "db56f97960b3e32ee0b490f39cbd632c304c2e56",
      "parents": [
        "9958fbb66b39600937647e7b29d6e80471562e7c"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Fri Jul 31 09:45:56 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:45:56 2026 +0000"
      },
      "message": "Store in firestore resutls of auto retry (#5116)\n\nfix: https://github.com/flutter/flutter/issues/190165"
    },
    {
      "commit": "9958fbb66b39600937647e7b29d6e80471562e7c",
      "tree": "6d6a8c491bd275815fa93a60dfbe9eb27229d638",
      "parents": [
        "a74082835c6ad9357327f6740cae388d26cab701"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Jul 27 16:11:24 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 23:11:24 2026 +0000"
      },
      "message": "change status to in progress only for initial scheduling try builds (#5115)\n\nfix: https://github.com/flutter/flutter/issues/190080"
    },
    {
      "commit": "a74082835c6ad9357327f6740cae388d26cab701",
      "tree": "c173392111c20082aee0aa780a6fc071d7e4404d",
      "parents": [
        "f876a761699dbbc395638df000734a4e77b004b3"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Jul 27 12:24:08 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 19:24:08 2026 +0000"
      },
      "message": "Set Dashboard Checks to inProgress state (#5114)\n\nfix: https://github.com/flutter/flutter/issues/190080"
    },
    {
      "commit": "f876a761699dbbc395638df000734a4e77b004b3",
      "tree": "9ad5cd03cbccdabbf7224f8255e705808dc2a93b",
      "parents": [
        "b1b4ac23b55472d6f65896afbb751a4d1948d713"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Fri Jul 24 11:19:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 18:19:21 2026 +0000"
      },
      "message": "In `markConclusion` do not throw exception if remainingJobs is zero (#5113)\n\nIn `markConclusion` do not throw exception if remainingJobs is zero but keep it zero\r\n\r\nfix: https://github.com/flutter/flutter/issues/189989"
    },
    {
      "commit": "b1b4ac23b55472d6f65896afbb751a4d1948d713",
      "tree": "f1b2ee869448b996a16a54852ca9b3bce02dc8e7",
      "parents": [
        "5d46e863311d8827ae5752daccd5a2b82803f5b2"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Fri Jul 24 09:38:32 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 16:38:32 2026 +0000"
      },
      "message": "emergency label processing for unified check run (#5110)\n\nfix: https://github.com/flutter/flutter/issues/189729"
    },
    {
      "commit": "5d46e863311d8827ae5752daccd5a2b82803f5b2",
      "tree": "c45edc6628af53a6bb032a6939b8dd63fece2fe1",
      "parents": [
        "99dd640bb340ad35fff444c5fe8db7778fc24950"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Jul 23 13:56:29 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 20:56:29 2026 +0000"
      },
      "message": "Extend github auth logging (#5112)\n\nAdded logging into github auth for deeper analysis of github auth issue: https://github.com/flutter/flutter/issues/189892"
    },
    {
      "commit": "99dd640bb340ad35fff444c5fe8db7778fc24950",
      "tree": "172dad28f95dfe65ae2d674094c5170407648eee",
      "parents": [
        "8b7ec15d2df16b5f944dbb0017f85289bec22536"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Wed Jul 22 16:04:15 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 23:04:15 2026 +0000"
      },
      "message": "Enabled test suppression for unified check run (#5111)\n\nfix: https://github.com/flutter/flutter/issues/189877"
    },
    {
      "commit": "8b7ec15d2df16b5f944dbb0017f85289bec22536",
      "tree": "c653aa3a326b90af792f8cac54d371f93b37c9ed",
      "parents": [
        "181e70a603ae34dff23e82ff3fc2215696ef10c7"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jul 21 09:28:22 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 16:28:22 2026 +0000"
      },
      "message": "land usage of ordered queue to all users (#5108)\n\nfix: https://github.com/flutter/flutter/issues/189029"
    },
    {
      "commit": "181e70a603ae34dff23e82ff3fc2215696ef10c7",
      "tree": "8239123c74fca35ca04cb60d6a9b30e88b44df82",
      "parents": [
        "7ef207eb78fa34ecdfdafae7adbb72ba82eaa327"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Jul 20 13:51:29 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 20:51:29 2026 +0000"
      },
      "message": "printed list of failed jobs in failed github `Dashboard Checks` details (#5109)\n\nfix: https://github.com/flutter/flutter/issues/189731"
    },
    {
      "commit": "7ef207eb78fa34ecdfdafae7adbb72ba82eaa327",
      "tree": "3c2670efb528dce3441976e17eac63a07c8b9676",
      "parents": [
        "a86ab143a005dc6b98dfb343f482b0600af8513c"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Fri Jul 17 11:23:18 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 18:23:18 2026 +0000"
      },
      "message": "fix(auto_submit): Pass requestSha to GitHub merge API (#5107)\n\nDefense in depth - prevent autosubmit from trying to land a pushed (but not approved) pr. \r\n\r\nThis is not a real issue since we have branch protection rules, but it\u0027s good to have."
    },
    {
      "commit": "a86ab143a005dc6b98dfb343f482b0600af8513c",
      "tree": "097e12bf3415db6a7d9e1c3414172f167696b055",
      "parents": [
        "6f75a18e743bf79f232285312c701d6f123b2cf3"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed Jul 15 15:25:06 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 22:25:06 2026 +0000"
      },
      "message": "fix(ci): harden some workflows in cocoon (#5106)\n\nfixes flutter/flutter#189097\r\n\r\n```\r\n➜  /app /opt/zizmor --gh-token\u003d$(gh auth token) .github/workflows\r\n INFO zizmor: 🌈 zizmor v1.25.2\r\n INFO audit: zizmor: 🌈 completed .github/workflows/app_dart_tests.yaml\r\n INFO audit: zizmor: 🌈 completed .github/workflows/common_validation.yaml\r\n INFO audit: zizmor: 🌈 completed .github/workflows/dashboard_tests.yaml\r\n INFO audit: zizmor: 🌈 completed .github/workflows/packages_checks.yaml\r\nNo findings to report. Good job! (13 suppressed)\r\n➜  /app /opt/zizmor --gh-token\u003d$(gh auth token) packages/wait_for_tests\r\n INFO zizmor: 🌈 zizmor v1.25.2\r\n INFO audit: zizmor: 🌈 completed packages/wait_for_tests/action.yml\r\nNo findings to report. Good job! (1 suppressed)\r\n```"
    },
    {
      "commit": "6f75a18e743bf79f232285312c701d6f123b2cf3",
      "tree": "83d2e0feb6119688e13aebbdbbc39cad63dfb3a7",
      "parents": [
        "b2ef63459e3c2f337decb07e2647425f649c9c20"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Wed Jul 15 10:17:29 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 17:17:29 2026 +0000"
      },
      "message": "Let unified check run be! (#5099)\n\nfix: https://github.com/flutter/flutter/issues/176988"
    },
    {
      "commit": "b2ef63459e3c2f337decb07e2647425f649c9c20",
      "tree": "8eba6e5faf4d4e2bad3160e7c00ed68dc6680770",
      "parents": [
        "8b8e4353632e39776a36b09b1348928ca54bfe98"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jul 14 11:29:49 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 18:29:49 2026 +0000"
      },
      "message": "ordered presubmit builds processing (#5104)\n\nfix: https://github.com/flutter/flutter/issues/189029"
    },
    {
      "commit": "8b8e4353632e39776a36b09b1348928ca54bfe98",
      "tree": "7cb256f57e76e603e31998f9e4e0270f6fbfb8af",
      "parents": [
        "18bfc77abd4f27de76b961f5f489b555cefaba44"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Fri Jul 10 14:28:32 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 14:28:32 2026 -0700"
      },
      "message": "refactor(presubmit_guard): update API used by wait_for_tests to support more Cocoon scheduled tests. (#5102)\n\nEnhances `_getCiStagingFallback` in the presubmit guard handler to\nhandle task rerun sequences chronologically and filter bringup tasks.\n\n\u003e [!NOTE]\n\u003e We should probably rename this function since it now blends all tests.\nIts really just \"give me the tests... please\".\n\n| Repository | Unified Status | Presubmit | GitHub Merge Queue |\nPost-Submit |\n| :--- | :--- | :---: | :--- | :--- |\n| **`flutter/flutter`** | Non-Unified | **Yes** | Engine Phase Only |\nEngine Phase + Tasks |\n| **`flutter/flutter`** | Unified | **Yes** | Engine Phase Only | Engine\nPhase + Tasks |\n| **`flutter/packages`** | Non-Unified | **No** | *No Merge Queue* |\nTasks Only |\n| **`flutter/packages`** | Unified | **Yes** | *No Merge Queue* | Tasks\nOnly |\n\n\u003e [!NOTE]\n\u003e * **`flutter/flutter`** always uses `ciStaging` (Engine Phase) in the\nMerge Queue and blends them with general tasks in Post-Submit.\n\u003e * **`flutter/packages`** does not have a Merge Queue. It only includes\nPresubmit tasks once unified, and transitions directly to general tasks\nin Post-Submit.\n\u003e * **`flutter/packages`** does not use wait_for_tests in presubmits, so\nenabling unified checkruns fixes this.."
    },
    {
      "commit": "18bfc77abd4f27de76b961f5f489b555cefaba44",
      "tree": "b1b0b373c0bdd5927a0cf6171e2385dd7e63c2a6",
      "parents": [
        "c82f779e201b2d22f43b531268cfbd2ce4fbd4ab"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Jul 09 15:00:50 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 22:00:50 2026 +0000"
      },
      "message": "Delete legacy flow for closeMqGuardAfterPresubmit \u003d\u003d false (#5101)\n\nDeleting legacy `closeMqGuardAfterPresubmit \u003d false` flow as it obsolete\r\n\r\n**Context:**\r\nWe have 2  different processing flows based on whether `processJobStatusUpdate` config variable is `true` or `false`:\r\n\r\n1. **Legacy**. if `closeMqGuardAfterPresubmit` flag is set to `false` then flow is the following: \r\n\r\n```mermaid\r\nsequenceDiagram\r\n    LUCI-\u003e\u003eCocoon: Build complete\u003cbr/\u003enotification\r\n    Cocoon-\u003e\u003eGithub: Update Check\r\n    Github-\u003e\u003eCocoon: Check complete\u003cbr/\u003enotification\r\n    Note over Cocoon: Check complete processing\r\n    Cocoon-\u003e\u003eGithub: If all success\u003cbr/\u003eunlock merge queue\r\n```\r\n\r\nFor **Check complete processing** `processJobStatusUpdate()` called with `PresubmitJobState` constructed from check using `PresubmitJobState.fromCheckRun()` \r\n\r\n2. **Current**.  if `closeMqGuardAfterPresubmit` flag is set to `true` or for **Unified Check Run** flow :\r\n\r\n```mermaid\r\nsequenceDiagram\r\n    LUCI-\u003e\u003eCocoon: Build complete\u003cbr/\u003enotification\r\n    Note over Cocoon: Build complete processing\r\n    Cocoon-\u003e\u003eGithub: Update Check\u003cbr/\u003eor Job in firestore\r\n    Cocoon-\u003e\u003eGithub: If all success\u003cbr/\u003eunlock merge queue\r\n    Github-\u003e\u003eCocoon: Check complete\u003cbr/\u003enotification\r\n    Note over Cocoon: Ignoring\r\n```"
    },
    {
      "commit": "c82f779e201b2d22f43b531268cfbd2ce4fbd4ab",
      "tree": "acfe6ac8528091ddc250938e41987d6c9c3e67d7",
      "parents": [
        "25ad54ecf9ef93265712e30e552489b0792151f8"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Mon Jul 06 13:59:56 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 13:59:56 2026 -0700"
      },
      "message": "fix(ci): dart must be setup (#5098)\n\nAction was missing \"uses\" clause to setup dart on the runner.\n+ Includes a change to make `gh act` local development possible"
    },
    {
      "commit": "25ad54ecf9ef93265712e30e552489b0792151f8",
      "tree": "e0599b618621fa764cbad8ec8b699a45952e7b9f",
      "parents": [
        "67ef3d40727ec85574f718d4e2fe911bf72de3de"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed Jul 01 16:08:01 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 16:08:01 2026 -0700"
      },
      "message": "feat(wait-action): add wait_for_tests shared GitHub Action and CLI tool (#5097)\n\nAdd the wait_for_tests action package to the Cocoon workspace. This will\nallow flutter/flutter and flutter/packages to wait on Cocoon scheduled\ntests to complete. This is made more important with the upcoming\nUniversal Presubmits on the flutter dashboard.\n\nKey additions:\n- Configured the GitHub Action workflow definition in `action.yml`.\n- Created the wait_for_tests CLI tool in `bin/wait_for_tests.dart`\nsupporting environment-variable or command-line arguments\n- Implemented robust polling, status clamping (between 30 and 600\nseconds), and evaluation logic in `lib/wait_for_tests.dart` using the\nshared `TaskStatus` from `package:cocoon_common`.\n- Added tests.\n- Registered the package in the workspace root `pubspec.yaml`."
    },
    {
      "commit": "67ef3d40727ec85574f718d4e2fe911bf72de3de",
      "tree": "04b25d0535806149a8d9cc5b53e1dd44206943cc",
      "parents": [
        "e9537ace317f42b75b2d80e02f5bfb2014339831"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed Jul 01 13:55:42 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 13:55:42 2026 -0700"
      },
      "message": "feat(docker): support native multi-arch (amd64/arm64) builds (#5096)\n\n- Update Dockerfile.base to exclude prepackaged cache on arm64/aarch64\nand trigger native SDK bootstrapping.\n- Exclude .pub-preload-cache by default on all architectures to optimize\nsize.\n- Update Dockerfile to download yq dynamically based on target\narchitecture.\n- Refactor cloudbuild.yaml to use docker buildx with QEMU emulation and\ndirect manifest-list pushing.\n- Remove hardcoded amd64 platform constraints from docker-compose.yml.\n- Update README.md to document arm64 capabilities and simplify local\ncommands.\n\nfixes: flutter/flutter#188873"
    },
    {
      "commit": "e9537ace317f42b75b2d80e02f5bfb2014339831",
      "tree": "9a4289c05a6fd79a78dbc9410ae3bf39003e620a",
      "parents": [
        "cd0c18df65594e5e8b638d7228e6b4dffd8165f7"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 30 12:57:52 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 19:57:52 2026 +0000"
      },
      "message": "feat(app_dart): fall back to ciStaging in GetPresubmitGuard when no guards found (#5094)\n\nIn the Unified Check Run flow, if no modern `UnifiedCheckRun` presubmit guards are found for a commit, retrieve the legacy `ciStaging` documents as a fallback. This will make waiting for check-runs to pass universal.\r\n\r\n- Implement `CiStaging.getCiStagingForCommitSha` to query staging documents by repository and commit SHA.\r\n- Refactor `GetPresubmitGuard` to invoke `_getCiStagingFallback` when no guards are present.\r\n- Extract `check_run_id` from the staging `checkRunGuard` JSON, and look up pull request and author metadata via `PrCheckRuns`.\r\n- Add unit tests verifying `ciStaging` fallback execution and JSON response structure.\r\n- Clean up related linter warnings (redundant imports, type annotations, and curly braces).\r\n\r\nfixes flutter/flutter#188756"
    },
    {
      "commit": "cd0c18df65594e5e8b638d7228e6b4dffd8165f7",
      "tree": "a531ce770a96f1b6c03339882f0791ecf2a33d96",
      "parents": [
        "31a0b69748e2da3b4ee2b875861a77e2bed024b4"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Jun 29 13:50:02 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 20:50:02 2026 +0000"
      },
      "message": "comments (#5093)\n\nAdded comments to explain what presubmit guards and presubmit jobs terms means"
    },
    {
      "commit": "31a0b69748e2da3b4ee2b875861a77e2bed024b4",
      "tree": "9bb97156b5161743efdd17ea7713a721d202af8e",
      "parents": [
        "2dd521d8e7b06de33e992b46266252e3f1afc9e3"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Jun 29 13:17:06 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 20:17:06 2026 +0000"
      },
      "message": "Polishing (#5092)\n\nrenamed:\r\n - `get-presubmit-jobs` to `get-presubmit-job` since it returns run details of one job\r\n - `builds` to `jobs` in get-presubmit-guard response"
    },
    {
      "commit": "2dd521d8e7b06de33e992b46266252e3f1afc9e3",
      "tree": "ac339287c55d8d7c9a47c56f013ba9d02ee38d8e",
      "parents": [
        "994995d408ef4d6a45d001b4b7fa48ae0d67fbe6"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Fri Jun 26 15:11:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 22:11:23 2026 +0000"
      },
      "message": "Remove revert bot from autosubmit. (#5091)\n\nThis functionality has been replaced by a GitHub action, so we\u0027re going to remove this feature from cocoon."
    },
    {
      "commit": "994995d408ef4d6a45d001b4b7fa48ae0d67fbe6",
      "tree": "7bb25988e2e4d860cdab8d1b30aaf4c27b08cbb9",
      "parents": [
        "0548289e8570f66ce802dc4351d81569942f3495"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Fri Jun 26 10:07:03 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 17:07:03 2026 +0000"
      },
      "message": "fix(docker): coder-up should report some progress (#5090)\n\nRefactor environment startup to pull images before starting.\r\n\r\n```\r\n❯ coder-up\r\nPulling image for: pr-review...\r\nTrying to pull us-docker.pkg.dev/flutter-infra/flutter-infra/flutter_docker:stable...\r\nGetting image source signatures\r\nCopying blob sha256:d6cecff2cfc0d8bdbed2c1efdef4de8531c66487a8380b2b954f014daf825fc9\r\nCopying blob sha256:7072d26cd09a3c77bb7b35b9c22b3893c89392b79baf4840e7425aacdb09e080\r\nCopying blob sha256:cb259a83ac3dd9fea0b394df41df2b298adf0df938fef5999475af18a751c257\r\nCopying blob sha256:86b721c394db1bb8086ba7973e5e93ea83ed9fef5b6c153886babb2c666530e1\r\nCopying blob sha256:a3c9bf3c2c2f678b4dce5bd10dff513a847ea4d28768519d1cb59e8e4c0da5b9\r\nCopying blob sha256:5f635f4c089e00f4b39a1b5666f94a365ebcd733fa901351a22373bdcd53f71a\r\nCopying blob sha256:aa2962c22a5f8d7291663569925f0f78061fbc432594f6d7190e42f2d56126f5\r\nCopying blob sha256:2815e56b3171962731fc48f3d358dfd5d4c87a68ef645c19f1fde2de83856c8f\r\nCopying blob sha256:cbf3095671ca2d21c59e0bf0f8eabd2e9f3ac096d6d5e7124c633af529d8cb40\r\nCopying blob sha256:15478765193d849298501e70753e4e776e8bcbf13e991ed69ee5ddcd01bfd5b5\r\nCopying blob sha256:59647213e5b0a5ab5dbc04d5e1d6c7934b1e5b70ebcedc3af3f631a15316da63\r\nCopying blob sha256:a1833780d6af2b6427b6dbe64d4984b13074cc86c00b07146e93e2fa995b5558\r\nCopying config sha256:e2ce22a9680f3303f296f1fb672d91d308570df998981a722097844abad8cae3\r\nWriting manifest to image destination\r\nWARNING: image platform (linux/amd64) does not match the expected platform (linux/arm64)\r\ne2ce22a9680f3303f296f1fb672d91d308570df998981a722097844abad8cae3\r\nStarting development environment: pr-review...\r\nWARNING: image platform (linux/amd64) does not match the expected platform (linux/arm64)\r\ne2ce22a9680f3303f296f1fb672d91d308570df998981a722097844abad8cae3\r\n6a534a8c0b384ae7f3897654cca354d94ec06f02542031ac6b00cbb393717a3b\r\n6c5fbce2f44bd49a723a3bbdfd39bfc09671b243a06cfe773bec6ce55df2da33\r\npr-review\r\n```"
    },
    {
      "commit": "0548289e8570f66ce802dc4351d81569942f3495",
      "tree": "73cabb60f0fce6a4fc388594f2a4b2805aad514b",
      "parents": [
        "77d6f1e8a0a3062f77278aaa61d80837d1f6896e"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Jun 25 15:19:13 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 22:19:13 2026 +0000"
      },
      "message": "light theme UI fixes (#5089)\n\nfix: https://github.com/flutter/flutter/issues/188111"
    },
    {
      "commit": "77d6f1e8a0a3062f77278aaa61d80837d1f6896e",
      "tree": "f5e5f25305656245426c05be1748d06d677733ce",
      "parents": [
        "31f34160ebef687ea0fc15c1b1fe1113c8667de5"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Thu Jun 25 14:50:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 14:50:28 2026 -0700"
      },
      "message": "fix: add install of jq to orchestrator (#5088)\n\nTwo AI reviews suggested \"jq\" was included; it was in fact a lie.\n\nRan the cloud-sdk image locally in docker with this and it was able to\nwork. Triggered remotely and waiting for confirmation"
    },
    {
      "commit": "31f34160ebef687ea0fc15c1b1fe1113c8667de5",
      "tree": "dfc52df0361800194ff183322dd47e4280de8f92",
      "parents": [
        "7a4ae880af963916bb473fab3fb828071e770397"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Thu Jun 25 14:36:13 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 21:36:13 2026 +0000"
      },
      "message": "Refactor CICD label management to use per-PR sequential queue (#5035)\n\nThis change overhauls the management of the `CICD` label in Cocoon to address race conditions and non-idempotent operations that caused issues in the previous attempt.\r\n\r\nKey changes:\r\n- Introduced `PullRequestManager` to handle events for a single PR sequentially via an operation queue.\r\n- Moved PR-specific logic from `webhook_subscription.dart` to `PullRequestManager`, thinning out the webhook handler.\r\n- Implemented new state machine logic for `opened` and `synchronize` events to handle privileged users and draft PRs correctly.\r\n- Made `_scheduleIfMergeable` idempotent by tracking `scheduledSha` in Firestore to prevent duplicate triggering of presubmits for the same SHA.\r\n- Refactored `PullRequestManager` creation to be synchronous in the cache, queueing the asynchronous initialization to avoid creation race conditions.\r\n- Restored `cicd_flowchart.md` from a previous commit to document the flow.\r\n- Fixed all static analysis issues and ensured all tests pass."
    },
    {
      "commit": "7a4ae880af963916bb473fab3fb828071e770397",
      "tree": "0bc3ff39729757a6d963750734dd41873d0f85aa",
      "parents": [
        "bc6c7466dc74123650ef3f38e167d3c8824ce3a1"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Thu Jun 25 14:25:48 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 14:25:48 2026 -0700"
      },
      "message": "Change logging option to CLOUD_LOGGING_ONLY (#5087)\n\nUpdated logging options to send logs directly to Cloud Logging."
    },
    {
      "commit": "bc6c7466dc74123650ef3f38e167d3c8824ce3a1",
      "tree": "4972d30e7faafc85a97cab732d9ad9a8318d6dda",
      "parents": [
        "96f9f25f537ab3367959155fcc7465befe1b6cde"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Thu Jun 25 13:27:03 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 20:27:03 2026 +0000"
      },
      "message": "ci(flutter_agy_docker): conditionally tag docker images by release channel (#5086)\n\nAdd `orchestrator.yaml` to fetch the latest `stable` Flutter version and automatically trigger the `flutter-agy-docker` build with the correct version substitution.\r\n\r\nUpdate `cloudbuild.yaml` to fetch the official Flutter releases JSON and conditionally apply docker tags:\r\n- Tag and push as `stable` and `latest` if the built version matches the current stable release.\r\n- Tag and push as `beta` if the built version matches the current beta release.\r\n- Remove the unconditional `latest` tagging that applied to every build.\r\n\r\nFlows:\r\n\r\n```mermaid\r\nsequenceDiagram\r\n    autonumber\r\n    actor Scheduler as Cloud Scheduler\r\n    actor User as Manual Trigger\r\n    participant Orchestrator as orchestrator.yaml\r\n    participant CloudBuild as cloudbuild.yaml\r\n    participant Storage as Google Cloud Storage (Releases)\r\n    participant AR as Artifact Registry\r\n\r\n    %% Cloud Scheduler Flow\r\n    rect rgb(240, 248, 255)\r\n        note over Scheduler, AR: Flow 1: Automated Stable Build\r\n        Scheduler-\u003e\u003eOrchestrator: Trigger daily/weekly\r\n        Orchestrator-\u003e\u003eStorage: Fetch releases_linux.json\r\n        Storage--\u003e\u003eOrchestrator: Return JSON\r\n        Orchestrator-\u003e\u003eOrchestrator: Parse latest stable version (e.g. 3.44.4)\r\n        Orchestrator-\u003e\u003eCloudBuild: gcloud builds triggers run \u003cbr/\u003e(_FLUTTER_VERSION\u003d3.44.4)\r\n\r\n        CloudBuild-\u003e\u003eCloudBuild: Build images (flutter_base, flutter_docker)\r\n        CloudBuild-\u003e\u003eStorage: Fetch releases_linux.json (Step 3)\r\n        Storage--\u003e\u003eCloudBuild: Return JSON\r\n\r\n        CloudBuild-\u003e\u003eCloudBuild: Compare _FLUTTER_VERSION to stable/beta\r\n        note right of CloudBuild: Matches Stable\r\n\r\n        CloudBuild-\u003e\u003eAR: Push tag: :3.44.4\r\n        CloudBuild-\u003e\u003eAR: Push tag: :stable\r\n        CloudBuild-\u003e\u003eAR: Push tag: :latest\r\n    end\r\n\r\n    %% Manual Trigger Flow\r\n    rect rgb(255, 248, 240)\r\n        note over User, AR: Flow 2: Manual Version Build\r\n        User-\u003e\u003eCloudBuild: Trigger manually \u003cbr/\u003e(_FLUTTER_VERSION\u003dX.Y.Z)\r\n\r\n        CloudBuild-\u003e\u003eCloudBuild: Build images (flutter_base, flutter_docker)\r\n        CloudBuild-\u003e\u003eStorage: Fetch releases_linux.json (Step 3)\r\n        Storage--\u003e\u003eCloudBuild: Return JSON\r\n\r\n        CloudBuild-\u003e\u003eCloudBuild: Compare _FLUTTER_VERSION to stable/beta\r\n\r\n        alt Matches Stable Version\r\n            CloudBuild-\u003e\u003eAR: Push tag: :X.Y.Z\r\n            CloudBuild-\u003e\u003eAR: Push tag: :stable\r\n            CloudBuild-\u003e\u003eAR: Push tag: :latest\r\n        else Matches Beta Version\r\n            CloudBuild-\u003e\u003eAR: Push tag: :X.Y.Z\r\n            CloudBuild-\u003e\u003eAR: Push tag: :beta\r\n        else Neither (Random Version)\r\n            CloudBuild-\u003e\u003eAR: Push tag: :X.Y.Z\r\n            note right of CloudBuild: Skips stable, latest, and beta tags\r\n        end\r\n    end\r\n```"
    },
    {
      "commit": "96f9f25f537ab3367959155fcc7465befe1b6cde",
      "tree": "2010fce312d3b797caade115505b20da319388ed",
      "parents": [
        "54f00db3b4dfeb5598e4eb1833de6e6f87017291"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Jun 25 08:57:08 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 15:57:08 2026 +0000"
      },
      "message": "Mobile layout (#5084)\n\nMobile layout implementation\r\n\r\n\u003cimg width\u003d\"377\" height\u003d\"722\" alt\u003d\"image\" src\u003d\"https://github.com/user-attachments/assets/4a632589-0281-4b0b-b4b1-49772eb32f63\" /\u003e\r\n\r\n\u003cimg width\u003d\"375\" height\u003d\"718\" alt\u003d\"image\" src\u003d\"https://github.com/user-attachments/assets/13ec5d5f-9715-4c96-94aa-9b66efb43ec8\" /\u003e\r\n\r\nChanged default layout: \r\n - lowered paddings \r\n-  moved `Filter jobs` and `Re-run failed` buttons to the side view\r\n\u003cimg width\u003d\"850\" height\u003d\"462\" alt\u003d\"image\" src\u003d\"https://github.com/user-attachments/assets/228c12bd-1173-47de-a792-fb9143e2c622\" /\u003e\r\n\r\nfix: https://github.com/flutter/flutter/issues/188344"
    },
    {
      "commit": "54f00db3b4dfeb5598e4eb1833de6e6f87017291",
      "tree": "e14c51c0febaa93c6620ba830c34094025ba8b5e",
      "parents": [
        "2f052338c64bba556e6f892fb8e023a5b8d908dd"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed Jun 24 13:21:51 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 13:21:51 2026 -0700"
      },
      "message": "refactor(docker): optimize base image and clean up build steps (#5085)\n\n- Use /etc/sudoers.d/coder for sudo configuration in Dockerfile.\n- Delete unused Flutter engine artifacts and pub cache assets to reduce\nimage size.\n- Explicitly extract Flutter to /opt with --no-same-owner.\n- Add \u0027flutter doctor\u0027 verification step.\n\nThis should reduce the overall image size by several hundred megs."
    },
    {
      "commit": "2f052338c64bba556e6f892fb8e023a5b8d908dd",
      "tree": "6acfdf4a6912542103d4c7446977cac22028f237",
      "parents": [
        "a3516aac5e6b574e694b924d85c8ee3df88d5aaf"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 23 16:38:16 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 23:38:16 2026 +0000"
      },
      "message": "fix: prevent redundant presubmit builds by checking for existing LUCI… (#5083)\n\nTo avoid re-running all checks if the CICD label is removed and added after presubmits have started, check if builds already exist for the current SHA. If builds already exist, there is no need to cancel them and create new ones.\r\n\r\nfix: https://github.com/flutter/flutter/issues/188126"
    },
    {
      "commit": "a3516aac5e6b574e694b924d85c8ee3df88d5aaf",
      "tree": "0884066953a877f4d9d12d4cc95b073c7299b547",
      "parents": [
        "4da2038215d9ed1e49fe278773ca4e4ee258afb5"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 23 16:07:00 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 16:07:00 2026 -0700"
      },
      "message": "feat: add skill update script and fix docker build context (#5082)\n\nThis commit introduces a new script for updating agent skills. Just run\n`update_skills.sh` and it will download to your mapped `~/.gemini`\nfolder (or the `.agents/skills` in your current working directory with\n`--local`).\n\n- **update_skills.sh**: Added a script to efficiently fetch and update\nagent skills from known GitHub repositories (flutter/skills,\ndart-lang/skills, kevmoo/dash_skills). Features include:\n- Support for global (`~/.gemini/config/skills`) or local\n(`.agents/skills`) installations.\n  - Avoids full clones by utilizing `git ls-remote` for commit checks.\n- Uses `git ls-tree` to track individual skill hashes and only update\nwhat changed.\n- **Dockerfile**: Added `update_skills.sh` to `/usr/local/bin` and made\nit executable.\n- **cloudbuild.yaml**: Fixed the Docker build steps by explicitly\nsetting `dir: \u0027cloud_build/flutter_agy_docker/\u0027` and using relative\npaths for the Dockerfile and build context, resolving potential build\ncontext issues.\n\n\n```shell\n$ update_skills.sh\nUpdating skills in /home/coder/.gemini/config/skills...\n----------------------------------------\n[\u003d] flutter/skills is up to date.\n[\u003d] dart-lang/skills is up to date.\n[\u003d] kevmoo/dash_skills is up to date.\n----------------------------------------\nSummary:\nChecked 3 repositories.\nAll skills are up to date.\nSkills available in: /home/coder/.gemini/config/skill\n```"
    },
    {
      "commit": "4da2038215d9ed1e49fe278773ca4e4ee258afb5",
      "tree": "605c5aab9b470133e9f5aa0a5f2a1441efefc20c",
      "parents": [
        "07125d46d87884335350f09c5c5eac4c0c02534c"
      ],
      "author": {
        "name": "Jackson Gardner",
        "email": "jacksongardner@google.com",
        "time": "Tue Jun 23 14:00:50 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 21:00:50 2026 +0000"
      },
      "message": "Show `bringup: true` tasks by default. (#5066)"
    },
    {
      "commit": "07125d46d87884335350f09c5c5eac4c0c02534c",
      "tree": "89b3ffd6a46b89e20e8ab1e3d0cbb03b8aa7a0d5",
      "parents": [
        "f3422bf3a5581fec4bd7ef4cf990dfde8288a701"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 23 10:57:33 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 10:57:33 2026 -0700"
      },
      "message": "build(docker): split flutter image into base and dev images (#5080)\n\nWhy? Improves caching - flutter maybe has an update weekly; os /\nantigravity release more often.\n\n- Create `Dockerfile.base` to handle heavy Flutter SDK downloads and\nconfiguration.\n- Update `Dockerfile` to focus on user configuration and development\ntools, removing the heavy fetcher stage.\n- Update `cloudbuild.yaml` to implement a multi-step build, creating the\nstatic base image first, then the auto-updating dev image.\n- Inject a `CACHE_BUSTER` build argument in `cloudbuild.yaml` to force\n`apt-get` updates on the dev image"
    },
    {
      "commit": "f3422bf3a5581fec4bd7ef4cf990dfde8288a701",
      "tree": "600cbb512a1116f4b787ef3aa3a163b9d0ceaec0",
      "parents": [
        "a0cf6a7d696623b14efea811a96546233c492647"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 23 10:29:29 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 17:29:29 2026 +0000"
      },
      "message": "Enrolled Justin to unified checkrun (#5081)\n\nEnrolled Justin to Unified Checkrun"
    },
    {
      "commit": "a0cf6a7d696623b14efea811a96546233c492647",
      "tree": "8c005e91069366bb183ba990788e2c9e4e576456",
      "parents": [
        "92a1b90b2d63fada430dd912bc92f905e9be375d"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 23 10:07:05 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 17:07:05 2026 +0000"
      },
      "message": "update test data for packages check run flow (#5079)\n\nupdated seeder test data"
    },
    {
      "commit": "92a1b90b2d63fada430dd912bc92f905e9be375d",
      "tree": "a4923d8c6d5e046b8bb08a385e1f3d80219a4b31",
      "parents": [
        "a363eef1eb2e4417cf33692c9ee6dc754c83f18f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 22 07:07:41 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 07:07:41 2026 +0000"
      },
      "message": "chore(deps): bump actions/checkout from 6 to 7 (#5078)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/actions/checkout/releases\"\u003eactions/checkout\u0027s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eblock checking out fork pr for pull_request_target and workflow_run by \u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2454\"\u003eactions/checkout#2454\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/publish-immutable-action from 0.0.3 to 0.0.4 in the minor-actions-dependencies group across 1 directory by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2458\"\u003eactions/checkout#2458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump flatted from 3.3.1 to 3.4.2 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2460\"\u003eactions/checkout#2460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump js-yaml from 4.1.0 to 4.2.0 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2461\"\u003eactions/checkout#2461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​actions/core\u003c/code\u003e and \u003ccode\u003e@​actions/tool-cache\u003c/code\u003e and Remove uuid by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2459\"\u003eactions/checkout#2459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupgrade module to esm and update dependencies by \u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2463\"\u003eactions/checkout#2463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the minor-npm-dependencies group across 1 directory with 3 updates by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2462\"\u003eactions/checkout#2462\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003egetting ready for checkout v7 release by \u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2464\"\u003eactions/checkout#2464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupdate error wording by \u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2467\"\u003eactions/checkout#2467\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2454\"\u003eactions/checkout#2454\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/checkout/compare/v6.0.3...v7.0.0\"\u003ehttps://github.com/actions/checkout/compare/v6.0.3...v7.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate changelog by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2357\"\u003eactions/checkout#2357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: expand merge commit SHA regex and add SHA-256 test cases by \u003ca href\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2414\"\u003eactions/checkout#2414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix checkout init for SHA-256 repositories by \u003ca href\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2439\"\u003eactions/checkout#2439\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate changelog for v6.0.3 by \u003ca href\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2446\"\u003eactions/checkout#2446\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2414\"\u003eactions/checkout#2414\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/checkout/compare/v6...v6.0.3\"\u003ehttps://github.com/actions/checkout/compare/v6...v6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd orchestration_id to git user-agent when ACTIONS_ORCHESTRATION_ID is set by \u003ca href\u003d\"https://github.com/TingluoHuang\"\u003e\u003ccode\u003e@​TingluoHuang\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2355\"\u003eactions/checkout#2355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix tag handling: preserve annotations and explicit fetch-tags by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2356\"\u003eactions/checkout#2356\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/checkout/compare/v6.0.1...v6.0.2\"\u003ehttps://github.com/actions/checkout/compare/v6.0.1...v6.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate all references from v5 and v4 to v6 by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2314\"\u003eactions/checkout#2314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd worktree support for persist-credentials includeIf by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2327\"\u003eactions/checkout#2327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClarify v6 README by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2328\"\u003eactions/checkout#2328\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href\u003d\"https://github.com/actions/checkout/compare/v6...v6.0.1\"\u003ehttps://github.com/actions/checkout/compare/v6...v6.0.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href\u003d\"https://github.com/actions/checkout/blob/main/CHANGELOG.md\"\u003eactions/checkout\u0027s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003ev7.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBlock checking out fork PR for pull_request_target and workflow_run by \u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2454\"\u003eactions/checkout#2454\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/publish-immutable-action from 0.0.3 to 0.0.4 in the minor-actions-dependencies group across 1 directory by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2458\"\u003eactions/checkout#2458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump flatted from 3.3.1 to 3.4.2 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2460\"\u003eactions/checkout#2460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump js-yaml from 4.1.0 to 4.2.0 by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2461\"\u003eactions/checkout#2461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003e@​actions/core\u003c/code\u003e and \u003ccode\u003e@​actions/tool-cache\u003c/code\u003e and Remove uuid by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2459\"\u003eactions/checkout#2459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupgrade module to esm and update dependencies by \u003ca href\u003d\"https://github.com/aiqiaoy\"\u003e\u003ccode\u003e@​aiqiaoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2463\"\u003eactions/checkout#2463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the minor-npm-dependencies group across 1 directory with 3 updates by \u003ca href\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2462\"\u003eactions/checkout#2462\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix checkout init for SHA-256 repositories by \u003ca href\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2439\"\u003eactions/checkout#2439\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: expand merge commit SHA regex and add SHA-256 test cases by \u003ca href\u003d\"https://github.com/yaananth\"\u003e\u003ccode\u003e@​yaananth\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2414\"\u003eactions/checkout#2414\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix tag handling: preserve annotations and explicit fetch-tags by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2356\"\u003eactions/checkout#2356\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd worktree support for persist-credentials includeIf by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2327\"\u003eactions/checkout#2327\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePersist creds to a separate file by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2286\"\u003eactions/checkout#2286\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate README to include Node.js 24 support details and requirements by \u003ca href\u003d\"https://github.com/salmanmkc\"\u003e\u003ccode\u003e@​salmanmkc\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2248\"\u003eactions/checkout#2248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePort v6 cleanup to v5 by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2301\"\u003eactions/checkout#2301\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate actions checkout to use node 24 by \u003ca href\u003d\"https://github.com/salmanmkc\"\u003e\u003ccode\u003e@​salmanmkc\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2226\"\u003eactions/checkout#2226\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.3.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePort v6 cleanup to v4 by \u003ca href\u003d\"https://github.com/ericsciple\"\u003e\u003ccode\u003e@​ericsciple\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2305\"\u003eactions/checkout#2305\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: update README.md by \u003ca href\u003d\"https://github.com/motss\"\u003e\u003ccode\u003e@​motss\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/1971\"\u003eactions/checkout#1971\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd internal repos for checking out multiple repositories by \u003ca href\u003d\"https://github.com/mouismail\"\u003e\u003ccode\u003e@​mouismail\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/1977\"\u003eactions/checkout#1977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocumentation update - add recommended permissions to Readme by \u003ca href\u003d\"https://github.com/benwells\"\u003e\u003ccode\u003e@​benwells\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2043\"\u003eactions/checkout#2043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust positioning of user email note and permissions heading by \u003ca href\u003d\"https://github.com/joshmgross\"\u003e\u003ccode\u003e@​joshmgross\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2044\"\u003eactions/checkout#2044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate README.md by \u003ca href\u003d\"https://github.com/nebuk89\"\u003e\u003ccode\u003e@​nebuk89\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2194\"\u003eactions/checkout#2194\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CODEOWNERS for actions by \u003ca href\u003d\"https://github.com/TingluoHuang\"\u003e\u003ccode\u003e@​TingluoHuang\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2224\"\u003eactions/checkout#2224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate package dependencies by \u003ca href\u003d\"https://github.com/salmanmkc\"\u003e\u003ccode\u003e@​salmanmkc\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/2236\"\u003eactions/checkout#2236\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eurl-helper.ts\u003c/code\u003e now leverages well-known environment variables by \u003ca href\u003d\"https://github.com/jww3\"\u003e\u003ccode\u003e@​jww3\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/1941\"\u003eactions/checkout#1941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand unit test coverage for \u003ccode\u003eisGhes\u003c/code\u003e by \u003ca href\u003d\"https://github.com/jww3\"\u003e\u003ccode\u003e@​jww3\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/1946\"\u003eactions/checkout#1946\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCheck out other refs/* by commit if provided, fall back to ref by \u003ca href\u003d\"https://github.com/orhantoy\"\u003e\u003ccode\u003e@​orhantoy\u003c/code\u003e\u003c/a\u003e in \u003ca href\u003d\"https://redirect.github.com/actions/checkout/pull/1924\"\u003eactions/checkout#1924\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0\"\u003e\u003ccode\u003e9c091bb\u003c/code\u003e\u003c/a\u003e update error wording (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2467\"\u003e#2467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/1044a6dea927916f2c38ba5aeffbc0a847b1221a\"\u003e\u003ccode\u003e1044a6d\u003c/code\u003e\u003c/a\u003e getting ready for checkout v7 release (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2464\"\u003e#2464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/f0282184c7ce73ab54c7e4ab5a617122602e575f\"\u003e\u003ccode\u003ef028218\u003c/code\u003e\u003c/a\u003e Bump the minor-npm-dependencies group across 1 directory with 3 updates (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2462\"\u003e#2462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/d914b262ffc244530a203ab40decab34c3abf34d\"\u003e\u003ccode\u003ed914b26\u003c/code\u003e\u003c/a\u003e upgrade module to esm and update dependencies (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2463\"\u003e#2463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/537c7ef99cef6e5ddb5e7ff5d16d14510503801d\"\u003e\u003ccode\u003e537c7ef\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003e@​actions/core\u003c/code\u003e and \u003ccode\u003e@​actions/tool-cache\u003c/code\u003e and Remove uuid (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2459\"\u003e#2459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/130a169078a413d3a5246a393625e8e742f387f6\"\u003e\u003ccode\u003e130a169\u003c/code\u003e\u003c/a\u003e Bump js-yaml from 4.1.0 to 4.2.0 (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2461\"\u003e#2461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/7d09575332117a40b46e5e020664df234cd416f3\"\u003e\u003ccode\u003e7d09575\u003c/code\u003e\u003c/a\u003e Bump flatted from 3.3.1 to 3.4.2 (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2460\"\u003e#2460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/0f9f3aa320cb53abeb534aeb54048075d9697a0e\"\u003e\u003ccode\u003e0f9f3aa\u003c/code\u003e\u003c/a\u003e Bump actions/publish-immutable-action (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2458\"\u003e#2458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/actions/checkout/commit/f9e715a95fcd1f9253f77dd28f11e88d2d6460c7\"\u003e\u003ccode\u003ef9e715a\u003c/code\u003e\u003c/a\u003e block checking out fork pr for pull_request_target and workflow_run (\u003ca href\u003d\"https://redirect.github.com/actions/checkout/issues/2454\"\u003e#2454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href\u003d\"https://github.com/actions/checkout/compare/v6...v7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dactions/checkout\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d6\u0026new-version\u003d7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\u003c/details\u003e"
    },
    {
      "commit": "a363eef1eb2e4417cf33692c9ee6dc754c83f18f",
      "tree": "bd5cd6a25f35a995111af04fd97eb25499a65f6c",
      "parents": [
        "cfea040f8bee40cb182183fb5ec00a1334e5f0ca"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Thu Jun 18 15:46:32 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 22:46:32 2026 +0000"
      },
      "message": "added mboetger to unified check run (#5077)\n\nTurned on unified check run feature to Matt"
    },
    {
      "commit": "cfea040f8bee40cb182183fb5ec00a1334e5f0ca",
      "tree": "3e8ce11177ef963258e9dcdeefe630aaef8d5e08",
      "parents": [
        "2e641090c9a4d34b08fa61aec460d8fcd86815f8"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Thu Jun 18 15:41:22 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 22:41:22 2026 +0000"
      },
      "message": "docs(docker): add FAQ for using git worktrees (#5076)\n\nAdded a new FAQ \u0026 Troubleshooting section to the flutter_agy_docker README.\r\nThis section explains how to configure Git to use relative paths for worktrees\r\nwhen working within the container to prevent broken worktree references.\r\n\r\nAlso make sure the next image has this turned on so when you type \"gwta fu\" you get a \".git\" that is relative."
    },
    {
      "commit": "2e641090c9a4d34b08fa61aec460d8fcd86815f8",
      "tree": "532881f877d80bdbd3f0c8c728e39b4782cc2dff",
      "parents": [
        "6590183e6636d7d31a6c0a3add4ced5b9ebda2ac"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Thu Jun 18 14:40:45 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 14:40:45 2026 -0700"
      },
      "message": "feat(docker): add dev environment compose file and helper scripts (#5075)\n\n- Adds a simple. README.md\n- Adds docker-compose.yml configured to use the flutter_docker image,\nwith volume mappings for .dart_tool, build cache, and the .gemini\nfolder.\n- Adds functions.sh with coder-up, coder-attach, and coder-down\nconvenience functions to manage the podman container lifecycle and\nconnect via tmux."
    },
    {
      "commit": "6590183e6636d7d31a6c0a3add4ced5b9ebda2ac",
      "tree": "818041b83e4630cfcd630b5dee104cb283bd3ee6",
      "parents": [
        "8c6e7392131e3a2f80ff9f18069d81c1d4fba3c1"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Wed Jun 17 13:58:07 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 20:58:07 2026 +0000"
      },
      "message": "188117 shaselector (#5074)\n\nShow date and status in ShaSelector drop down menu while collapsed\r\nfix: https://github.com/flutter/flutter/issues/188117"
    },
    {
      "commit": "8c6e7392131e3a2f80ff9f18069d81c1d4fba3c1",
      "tree": "4c938d9907880831eb1e91db0f8c285d315f47b8",
      "parents": [
        "265d8974a2f5604d3881679198b2976c29e0ba9e"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Wed Jun 17 08:19:01 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 15:19:01 2026 +0000"
      },
      "message": "Default user \u003d\u003d coder (#5073)\n\nUbuntu sets `ubuntu` as user 1000. I want this as `coder`. This fixes mounting files into the image."
    },
    {
      "commit": "265d8974a2f5604d3881679198b2976c29e0ba9e",
      "tree": "f8f3f30ada8f12261fa0a6f7fa21e8affcd4e067",
      "parents": [
        "b8b2020b071dd58c36347c4992c175e34edf6c44"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 16 16:31:09 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 23:31:09 2026 +0000"
      },
      "message": "fix comments (#5072)\n\nfix few comment leftovers from https://github.com/flutter/cocoon/pull/5070 renames"
    },
    {
      "commit": "b8b2020b071dd58c36347c4992c175e34edf6c44",
      "tree": "31ff55ff61dc95ee0e938d90f0618b86e2bc36b5",
      "parents": [
        "29f66bdccc3cb7336e7b535b628ba9e2af14d15a"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 16 16:13:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 23:13:23 2026 +0000"
      },
      "message": "Rename “Flutter Presubmits” check to “Dashboard Checks” check (#5070)\n\nRename “Flutter Presubmits” check to “Dashboard Checks” check and add some description"
    },
    {
      "commit": "29f66bdccc3cb7336e7b535b628ba9e2af14d15a",
      "tree": "2e52c1e8fa722cea12f7e1c6d34999bdbb8c4d0f",
      "parents": [
        "6b504a599be5722d2c11928afda0cf9b69d122c4"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 16 15:28:08 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 22:28:08 2026 +0000"
      },
      "message": "added beta testers of unified check run (#5069)\n\nAdded Victoria and Loïc to beta testers"
    },
    {
      "commit": "6b504a599be5722d2c11928afda0cf9b69d122c4",
      "tree": "340ca4c6ba4a754ef80c186bf4d68552a035aac6",
      "parents": [
        "2862ed40de6807eb395e29f0bb2576c78261ae41"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 16 15:17:17 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 15:17:17 2026 -0700"
      },
      "message": "git version 2.54.0 (#5071)\n\nDocker image needs newer version of Git to support relative workspaces."
    },
    {
      "commit": "2862ed40de6807eb395e29f0bb2576c78261ae41",
      "tree": "16a39eccc6da87031b2941f012cdfd177988f5cd",
      "parents": [
        "80616b25f31f6836ee4f457a60d55f66890ff416"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 16 12:27:19 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 19:27:19 2026 +0000"
      },
      "message": "Change Docker build context to `cloud_build/flutter_agy_docker` (#5068)\n\nThis works if you run the cloud build command in the folder, but Cloud Console needs to know the directory though\r\n\r\nAfter this change we can setup a schedule."
    },
    {
      "commit": "80616b25f31f6836ee4f457a60d55f66890ff416",
      "tree": "08dd842c7d569d59110f6308fb0cf84abc410244",
      "parents": [
        "22c0a9e5cf8d9f3c575df5c2b17790c7023358fe"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 16 11:33:11 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 18:33:11 2026 +0000"
      },
      "message": "Update Docker image registry from us-central1 to us (#5067)\n\nmultiregion"
    },
    {
      "commit": "22c0a9e5cf8d9f3c575df5c2b17790c7023358fe",
      "tree": "2600ee51f7d1612774a71300a73c7a48e410143c",
      "parents": [
        "abceaae43c0d7258ad9057097127b25bfafcb717"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Tue Jun 16 11:21:24 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 18:21:24 2026 +0000"
      },
      "message": "store state entirely in query parameters (#5064)\n\nfix: https://github.com/flutter/flutter/issues/186357"
    },
    {
      "commit": "abceaae43c0d7258ad9057097127b25bfafcb717",
      "tree": "21b9d4cdf558ebf390bb9c63a8b02ba8441f183e",
      "parents": [
        "0f861a93e86cfa1a6c1e00a51af5e6dce33ebff5"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Tue Jun 16 11:13:53 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 11:13:53 2026 -0700"
      },
      "message": "bug(cloudbuild): explicitly tell cloudbuild where to send logs. (#5065)\n\nCloud build triggers need this line."
    },
    {
      "commit": "0f861a93e86cfa1a6c1e00a51af5e6dce33ebff5",
      "tree": "0f27d50cf605bdf3b6854c487b6c8306150214bc",
      "parents": [
        "43dcc7d1abbcaaa605d5c08fc2ddd6d85fc31703"
      ],
      "author": {
        "name": "John \"codefu\" McDole",
        "email": "codefu@google.com",
        "time": "Mon Jun 15 18:14:12 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 18:14:12 2026 -0700"
      },
      "message": "feat(flutter_agy_docker): add Dockerfile and Cloud Build configuration (#5063)\n\nNew Dockerfile and cloudbuild.yaml to produce a development image.\n\nThe Dockerfile sets up a multi-stage build that fetches, hydrates, and\nconfigures the Flutter SDK, and installs opinionated developer tools."
    },
    {
      "commit": "43dcc7d1abbcaaa605d5c08fc2ddd6d85fc31703",
      "tree": "b72f46aa77b6c3e8ca977295296e33f715759fc5",
      "parents": [
        "41fbbe2a453a9cb8086520f5346db5d4de9c65dd"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Mon Jun 15 11:32:55 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 18:32:55 2026 +0000"
      },
      "message": "Fixed light mode style discrepancies (#5062)\n\nfix: https://github.com/flutter/flutter/issues/187964"
    },
    {
      "commit": "41fbbe2a453a9cb8086520f5346db5d4de9c65dd",
      "tree": "2a410eb53281e3ca8245e2160e7d079475cc93c7",
      "parents": [
        "5e6ac217a14e35554e922f59607efc5647aa0ffd"
      ],
      "author": {
        "name": "Dmitry Grand (dmgr)",
        "email": "dmgr@google.com",
        "time": "Wed Jun 10 10:40:30 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 17:40:30 2026 +0000"
      },
      "message": "Recursively extract logs of failed steps in build or its subbuilds (#5061)\n\nfix: https://github.com/flutter/flutter/issues/187764"
    },
    {
      "commit": "5e6ac217a14e35554e922f59607efc5647aa0ffd",
      "tree": "3c33e22e00a4673bf0edc28a3b21739d4dcec5b9",
      "parents": [
        "eb605563185f5b0cf50b4bf75d3b87c521997f32"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu Jun 04 12:33:30 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 12:33:30 2026 -0700"
      },
      "message": "show markdown for log analysis (#5059)\n\nfix: https://github.com/flutter/flutter/issues/187577"
    },
    {
      "commit": "eb605563185f5b0cf50b4bf75d3b87c521997f32",
      "tree": "4a42452e44813afd0923848f7f114fb79194df5c",
      "parents": [
        "adbeb316fb3c8888053b5eaada13e20ace89eaeb"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Thu Jun 04 12:32:37 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 12:32:37 2026 -0700"
      },
      "message": "unlock merge queue for cocoon (#5060)\n\nfix: https://github.com/flutter/flutter/issues/187582"
    },
    {
      "commit": "adbeb316fb3c8888053b5eaada13e20ace89eaeb",
      "tree": "4d795db00121be1160093d4bc3cc38e4ee73a26e",
      "parents": [
        "d0b57da7e0e7144c73c94cba1c635012932430dd"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Tue Jun 02 14:00:41 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 21:00:41 2026 +0000"
      },
      "message": "Do not immediately unlock `Flutter Presubmits` on non-fusion repos for unified check run flow (#5058)\n\nModified `triggerPresubmitTargets` event handler logic to do not immediately unlock `MergeQueueGuard` for non-fusion repositories if the unified check run flow is enabled\r\n\r\nfix: https://github.com/flutter/flutter/issues/187458"
    },
    {
      "commit": "d0b57da7e0e7144c73c94cba1c635012932430dd",
      "tree": "a107561483be99b98ffdc2bfd9669be8f5bbb8e4",
      "parents": [
        "b596b13d361670c5e6039adf65669d6e86b4d510"
      ],
      "author": {
        "name": "Dmitry Grand",
        "email": "dmgr@google.com",
        "time": "Mon Jun 01 12:55:17 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 19:55:17 2026 +0000"
      },
      "message": "Check-runs statuses are not updated for flutter/packages (#5057)\n\nFix: https://github.com/flutter/flutter/issues/187387\r\n\r\n1. Match Scheduled Stage: Conditionally set the stage argument passed to scheduleTryBuilds to match the repository type.\r\n2. Do Not Bypass Completed Unified Check Runs: Modified the early return condition in processCheckRunCompleted so that unified checkrun events for non-fusion repositories are processed.\r\n3. Unlock Merge Queue Guard on genericTests Completion: When the stage is CiStage.genericTests and the unified check run completes successfully, close/unlock the merge queue guard."
    }
  ],
  "next": "b596b13d361670c5e6039adf65669d6e86b4d510"
}
