)]}'
{
  "log": [
    {
      "commit": "534a95e4bf9e91048b5dee87f34be21b7770effb",
      "tree": "30a6c42b2a5cac73eb3971601b3b989accb33ee1",
      "parents": [
        "7aba30b3ccf13c2d8727f18f6046a0a97229eb83"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Tue Sep 22 07:24:53 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Sep 22 07:24:53 2026"
      },
      "message": "Roll luci-go from 9a5283e44f9d to 3d1001037226 (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/9a5283e44f9d..3d1001037226\n\n2026-09-22 mdraz@google.com [milo/ui] Refresh package.json.md; document pins and peer deadlocks\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC iannucci@google.com,luci-eng@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: iannucci@google.com\nChange-Id: Ibb856660d0e08927493fbd3205a2090471e97b46\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8438277\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83433}\n"
    },
    {
      "commit": "7aba30b3ccf13c2d8727f18f6046a0a97229eb83",
      "tree": "3ab2a5f6cc302811ef75b674fb4a3751e286e4e7",
      "parents": [
        "666db8054406a6b736b7399d68eac1338e799928"
      ],
      "author": {
        "name": "Bryan Ni",
        "email": "bniche@google.com",
        "time": "Tue Sep 22 03:44:08 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Sep 22 03:44:08 2026"
      },
      "message": "fleetconsole: add separate TasksClient to swarming wrapper package\n\nAdd TasksClient and NewTasksClientFromFlags to the Swarming wrapper package\nto support querying live tasks for Unified Task History without altering\nthe existing Client (BotsClient) interface or existing callers.\n- Extracts shared newPRPCClient helper to deduplicate auth and options setup.\n\nContext \u0026 Design: http://go/unified-task-history\n\nTAG\u003dagy\nCONV\u003dda4d2900-a00b-419b-b3b2-5993976ef2f6\n\nBug: b/525434087\nTest: make test PKG\u003d./internal/infra/ext/swarming/...\nChange-Id: I6fd4472856b46923fd63939df5874d31040381fa\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8334132\nCommit-Queue: Bryan Ni \u003cbniche@google.com\u003e\nAuto-Submit: Bryan Ni \u003cbniche@google.com\u003e\nReviewed-by: Piotr Grabski-Gradziński \u003cpiotrgg@google.com\u003e\nReviewed-by: Tiffany Zhang \u003czhangtiff@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83432}\n"
    },
    {
      "commit": "666db8054406a6b736b7399d68eac1338e799928",
      "tree": "8089b194d0c49c001013276b0f0fb30a89517b83",
      "parents": [
        "1169b75022f0ac11fa8f35cb14f8ef9c2e66bdf2"
      ],
      "author": {
        "name": "Bryan Ni",
        "email": "bniche@google.com",
        "time": "Tue Sep 22 03:41:26 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Sep 22 03:41:26 2026"
      },
      "message": "fleetconsole: add Mobile Harness MOSS gRPC client\n\nAdd external client package for Mobile Harness Object Storage Service (MOSS):\n- Adds Protobuf definitions and Go bindings for moss_service, query, and result.\n- Queries GetTestDetails with 6-hour lookback and property matchers (dut_name:\u003chostname\u003e,\n  dut_name\u003d\u003chostname\u003e, and DeviceSerial) to support satellite containers and direct DUTs.\n- Implements Close() to properly release underlying gRPC connections.\n- Uses grpc.NewClient and time.UnixMilli for modern Go gRPC conventions.\n\nContext \u0026 Design: http://go/unified-task-history\n\nTAG\u003dagy\nCONV\u003dda4d2900-a00b-419b-b3b2-5993976ef2f6\n\nBug: b/525434087\nTest: make test PKG\u003d./internal/infra/ext/moss/...\nChange-Id: I6f9c83b291e5f4c9c52cc53269b00d6cad0b5ce4\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8333828\nCommit-Queue: Bryan Ni \u003cbniche@google.com\u003e\nAuto-Submit: Bryan Ni \u003cbniche@google.com\u003e\nReviewed-by: Tiffany Zhang \u003czhangtiff@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83431}\n"
    },
    {
      "commit": "1169b75022f0ac11fa8f35cb14f8ef9c2e66bdf2",
      "tree": "6747e00d19d4f051ccea4854de9e30f8f3e077ca",
      "parents": [
        "397bd2a41c9a8b0b2c5861cfc25cccfe04e644b6"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Tue Sep 22 03:31:50 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Sep 22 03:31:50 2026"
      },
      "message": "cros: replace errors.Reason with errors.New in wifi_execs\n\nRefactor wifi_execs.go to replace deprecated errors.Reason with errors.New\nfrom go.chromium.org/luci/common/errors per codebase conventions, simplify\nthe trailing error check with errors.WrapIf, and improve comment grammar.\n\nBUG\u003db:564483021\nTEST\u003dgo test ./...; golangci-lint run .\nTAG\u003dagy\n\nChange-Id: If1beb35fed4e1fb2e583c0c6d6bb58474caad163\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8431599\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCommit-Queue: Tiffany Zhang \u003czhangtiff@chromium.org\u003e\nReviewed-by: Tiffany Zhang \u003czhangtiff@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83430}\n"
    },
    {
      "commit": "397bd2a41c9a8b0b2c5861cfc25cccfe04e644b6",
      "tree": "670842f018119a66c2e42e091478fde001aebb1a",
      "parents": [
        "7d7e9d7d70a5068a9ce614af8de4447cd8148147"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Tue Sep 22 02:36:17 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Sep 22 02:36:17 2026"
      },
      "message": "Roll luci-go from 3d5c4b75490e to 9a5283e44f9d (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/3d5c4b75490e..9a5283e44f9d\n\n2026-09-21 iannucci@google.com [gae] Integrate RunMultiQuery into RunQuery.\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC luci-eng@google.com,vadimsh@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: vadimsh@google.com\nChange-Id: Id17a5e7749ce947cb4359c550a283e597731956a\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8434236\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83429}\n"
    },
    {
      "commit": "7d7e9d7d70a5068a9ce614af8de4447cd8148147",
      "tree": "6621fedc71effcc5f72c605b07468b07f045acfa",
      "parents": [
        "deeae437d87b835351ba4a4176b6770ff3261e5b"
      ],
      "author": {
        "name": "Jonathan Pittman",
        "email": "jmpittman@google.com",
        "time": "Tue Sep 22 01:44:15 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Sep 22 01:44:15 2026"
      },
      "message": "[3pp] Add apple_software_update_catalog package\n\nAdds a 3pp package configuration to track and archive Apple Software\nUpdate catalogs (release, developer seed, and public beta streams) into\nCIPD under infra/3pp/apple/apple_software_update_catalog.\n\n- Probes catalog URLs via HTTP HEAD to filter out 404 endpoints (such\n  as retired 11seed/11beta or not-yet-published future OS branches).\n- Automatically probes next year\u0027s OS version token for zero-touch\n  discovery of new yearly seed/beta branches.\n- Combines the newest Last-Modified timestamp with an ETag/length digest\n  for the 3pp version string.\n- Decompresses downloaded .sucatalog.gz archives into named .sucatalog\n  XML plists during installation.\n\nTAG\u003dagy\nCONV\u003dac0e6f1a-37d6-4d70-93d1-6fa776b3788e\n\nBug: 540900167\nNo-Try: true\nChange-Id: I26c5085e3a97155dccb86ac4b349017a093cd515\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8430226\nReviewed-by: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCommit-Queue: Jonathan Pittman \u003cjmpittman@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83428}\n"
    },
    {
      "commit": "deeae437d87b835351ba4a4176b6770ff3261e5b",
      "tree": "f0bb155f588c69766bc8681b53d9b45639fe2846",
      "parents": [
        "2a5a242da32d729fbc5e4581b461fabc3706136c"
      ],
      "author": {
        "name": "Bryan Ni",
        "email": "bniche@google.com",
        "time": "Tue Sep 22 00:18:11 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Sep 22 00:18:11 2026"
      },
      "message": "fleetconsole: define ListTaskHistory RPC and TaskHistoryItem protos\n\nDefine protobuf messages and RPC for Unified Task History across Swarming\nand Mobile Harness (OmniLab) devices:\n- Adds TaskHistoryItem, ListTaskHistoryRequest, and ListTaskHistoryResponse.\n- Conforms to AIP-158 (page_size pagination) and AIP-142 (Timestamp start_time).\n- Defines TaskSource enum (SWARMING, MOBILE_HARNESS) and Duration duration.\n- Adds ListTaskHistory RPC to FleetConsole service definition and serverlib ACLMap.\n\nContext \u0026 Design: http://go/unified-task-history\nTAG\u003dagy\nCONV\u003dda4d2900-a00b-419b-b3b2-5993976ef2f6\n\nBug: b/525434087\nTest: make gen \u0026\u0026 go test ./api/... ./cmd/fleetconsoleserver/serverlib/...\nChange-Id: I822e36ddf8c7fcd7f61dba9de566b65fd27d457a\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8333967\nAuto-Submit: Bryan Ni \u003cbniche@google.com\u003e\nCommit-Queue: Bryan Ni \u003cbniche@google.com\u003e\nReviewed-by: Tiffany Zhang \u003czhangtiff@chromium.org\u003e\nSLSA-Policy-Verified: SLSA Policy Verification Service \u003cdevtools-gerritcodereview-exitgate@google.com\u003e\nReviewed-by: Piotr Grabski-Gradziński \u003cpiotrgg@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83427}\n"
    },
    {
      "commit": "2a5a242da32d729fbc5e4581b461fabc3706136c",
      "tree": "284ef58233e95800a5106c9e478e20f8d9670ed1",
      "parents": [
        "74b515d3649f4c17ae3eaf3394d74012c582cfe9"
      ],
      "author": {
        "name": "Greg NISBET",
        "email": "gregorynisbet@google.com",
        "time": "Mon Sep 21 23:56:48 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 23:56:48 2026"
      },
      "message": "crosskylabadmin: Log RunTask request body in TaskBackendLite\n\nLog the JSON-formatted RunTask request body in\nTaskBackendLiteServerImpl.RunTask using protojson.Format.\n\nBUG\u003d562576798\nTEST\u003dgo test ./...\nTAG\u003dagy\nCONV\u003d88a2fc7e-b964-4b63-8cc9-bf995e7cd270\nR\u003dbniche@google.com\n\nChange-Id: Ie6868a94112e63c9f0a290edb6a833214ba54178\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8434874\nReviewed-by: Bryan Ni \u003cbniche@google.com\u003e\nCommit-Queue: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83426}\n"
    },
    {
      "commit": "74b515d3649f4c17ae3eaf3394d74012c582cfe9",
      "tree": "dfa21af9733adbc6ea3177347de6872ba43cdf9d",
      "parents": [
        "595a55e1e303ce4cfb8aa44f3728ca13b77f80ac"
      ],
      "author": {
        "name": "Jeremy Bettis",
        "email": "jbettis@google.com",
        "time": "Mon Sep 21 23:49:54 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 23:49:54 2026"
      },
      "message": "cros-fw-provision: only check for CSME locked on AP RO updates\n\nWhen running RW-only firmware updates, write protection is enabled,\ncausing flashrom/futility to output messages like \u0027Failed to unlock\nflash status reg with wp support\u0027 or MEMUNLOCK errors. In an RW-only\nupdate, futility exits successfully and these warnings do not indicate\nCSME lock.\n\nOnly check csmeLockedRe when rwOnly is false.\n\nBUG\u003dNone\nTEST\u003dgo test ./cros/cmd/provision/cros-fw-provision/...\n\nChange-Id: I3c29009f402be75c094d011393de79f9a349b1b8\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8436238\nReviewed-by: Kshitij Shah \u003ctij@google.com\u003e\nCommit-Queue: Jeremy Bettis \u003cjbettis@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83425}\n"
    },
    {
      "commit": "595a55e1e303ce4cfb8aa44f3728ca13b77f80ac",
      "tree": "0f5c495e1939b9ae08a7c9855fcd493fec691ce1",
      "parents": [
        "348c0aaa935f5e7489a3c885ccd3c4843ebc4756"
      ],
      "author": {
        "name": "Jeremy Bettis",
        "email": "jbettis@google.com",
        "time": "Mon Sep 21 23:37:51 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 23:37:51 2026"
      },
      "message": "cros-fw-provision: enable gRPC keepalive pings to LSNexus\n\nConfigure keepalive.ClientParameters (Time: 30s, Timeout: 10s,\nPermitWithoutStream: true) on the gRPC connection to LSNexus to\nkeep the connection alive during long-running firmware operations\n(such as Servo EC flashing and CSME recovery).\n\nBUG\u003dNone\nTEST\u003dgo test ./cros/cmd/provision/cros-fw-provision/...\n\nChange-Id: I6e8f3c954cfbac165bd29109b8fd0eaac399206c\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8436937\nReviewed-by: Kshitij Shah \u003ctij@google.com\u003e\nCommit-Queue: Jeremy Bettis \u003cjbettis@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83424}\n"
    },
    {
      "commit": "348c0aaa935f5e7489a3c885ccd3c4843ebc4756",
      "tree": "38820498f62980afbee0074a1b41322b082e6fe4",
      "parents": [
        "5120cf64040e1265c66a29a92bc714edce90cd4d"
      ],
      "author": {
        "name": "Jeremy Bettis",
        "email": "jbettis@google.com",
        "time": "Mon Sep 21 23:37:45 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 23:37:45 2026"
      },
      "message": "lsnexus: enable gRPC keepalive pings to BOLS and server policy\n\nConfigure keepalive.ClientParameters (Time: 30s, Timeout: 10s,\nPermitWithoutStream: true) on the gRPC connection to BOLS to keep\nthe TCP connection alive during long-running firmware operations\n(such as flash_ec and futility).\n\nAlso configure KeepaliveEnforcementPolicy and KeepaliveParams on\nthe LSNexus gRPC server to permit and send keepalive pings with\nclients like cros-fw-provision.\n\nBUG\u003dNone\nTEST\u003dgo test ./cros/cmd/cft/lsnexus/...\n\nChange-Id: I7132757a6d6aa7f0122eae0f3a3cb5a92d54f84f\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8436936\nReviewed-by: Otabek Kasimov \u003cotabek@google.com\u003e\nCommit-Queue: Jeremy Bettis \u003cjbettis@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83423}\n"
    },
    {
      "commit": "5120cf64040e1265c66a29a92bc714edce90cd4d",
      "tree": "9ba7f9e2eefec9d500ed7439ff82e2c3e8356caa",
      "parents": [
        "f1160f15eb232cb606185d08b8de659cb7eec65b"
      ],
      "author": {
        "name": "Jeremy Bettis",
        "email": "jbettis@google.com",
        "time": "Mon Sep 21 23:37:39 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 23:37:39 2026"
      },
      "message": "bols_labstation: configure gRPC keepalive policy and server params\n\nConfigure KeepaliveEnforcementPolicy (MinTime: 10s,\nPermitWithoutStream: true) and ServerParameters (Time: 1m,\nTimeout: 20s) so BOLS allows incoming keepalive pings from\nclients (such as LSNexus) during long-running operations and\npings idle clients.\n\nBUG\u003dNone\nTEST\u003dgo test ./cros/cmd/cft/bols_labstation/...\n\nChange-Id: I1e7f27078c6cdb33205217fe12ace299285c3c7a\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8436935\nReviewed-by: Otabek Kasimov \u003cotabek@google.com\u003e\nCommit-Queue: Jeremy Bettis \u003cjbettis@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83422}\n"
    },
    {
      "commit": "f1160f15eb232cb606185d08b8de659cb7eec65b",
      "tree": "75fbf21c6ed7afea90b3ff2a7f49904f65ca0068",
      "parents": [
        "2910f8eaa81b3240fef1a09c4982355757eede0a"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Mon Sep 21 23:27:51 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 23:27:51 2026"
      },
      "message": "Roll luci-go from 9a8ac949f945 to 3d5c4b75490e (2 revisions)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/9a8ac949f945..3d5c4b75490e\n\n2026-09-21 otabek@google.com [gce] Record error reason on creation failures and zone fallbacks\n2026-09-21 ayatane@google.com [tokenserver] Ensure stable machine token fingerprint\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC luci-eng@google.com,vadimsh@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: vadimsh@google.com\nChange-Id: I3b40017afc662b3fd79a5eb70092a4d8f9da446f\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8436317\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83421}\n"
    },
    {
      "commit": "2910f8eaa81b3240fef1a09c4982355757eede0a",
      "tree": "e9dd29723bd45348d56cbaec56b9df11b889ca10",
      "parents": [
        "93a6d3e55afd3aad9197cd3ae78d6a51af6040bf"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Mon Sep 21 23:09:19 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 23:09:19 2026"
      },
      "message": "dut: replace errors.Reason with errors.New in battery_state_execs\n\nRefactor battery_state_execs.go to replace deprecated errors.Reason with\nerrors.New from go.chromium.org/luci/common/errors per codebase conventions,\nimprove docstring grammar, and adopt got-before-want format in tests.\n\nBUG\u003db:564483021\nTEST\u003dgo test ./...; golangci-lint run .\nTAG\u003dagy\n\nChange-Id: Ia7b23a644cb9a86f1c2ad184c0adffca1486a9d0\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8433902\nReviewed-by: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83420}\n"
    },
    {
      "commit": "93a6d3e55afd3aad9197cd3ae78d6a51af6040bf",
      "tree": "013272207493736a05af60eaa62c7c2cea2ce14e",
      "parents": [
        "3ea883ba234076671ff20f27f7d1448670935f3d"
      ],
      "author": {
        "name": "anushruth",
        "email": "anushruth+git@google.com",
        "time": "Mon Sep 21 22:40:42 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 22:40:42 2026"
      },
      "message": "ufs: Integrate change events v2 dual-run into HistoryClient\n\nIntegrate Change Events V2 recording alongside legacy change events\ninside HistoryClient.\n\n- Adds v2ChangeRecord buffer to HistoryClient.\n- Hooks changeevents.RecordChanges into HistoryClient.SaveChangeEvents\n  transactionally with defer buffer cleanup for retry idempotency.\n- Adds LogProtoChanges helper and connects entity loggers (Asset,\n  Machine, MachineLSE, VM, Rack, NIC, Drac, KVM, Switch, RPM, VLAN,\n  DutState, DeviceLabels, CachingService, SchedulingUnit, DefaultWifi).\n- Adds unit tests in change_test.go verifying dual-run recording,\n  retry idempotency, and transaction rollback safety.\n\nBug: 555880085\nTEST\u003dgo test ./app/changeevents/... ./app/controller\n\nTAG\u003dagy\nCONV\u003ddf92e607-8815-4943-8eae-fd28b159ab50\n\nChange-Id: I4db83865eda631dc7f3364d77329b1035c08b94c\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8340309\nReviewed-by: Bryan Ni \u003cbniche@google.com\u003e\nCommit-Queue: Anushruth Sasivehalli \u003canushruth@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83419}\n"
    },
    {
      "commit": "3ea883ba234076671ff20f27f7d1448670935f3d",
      "tree": "6ac3115dd3399fe4b11d5dad6300c0ffa839980f",
      "parents": [
        "2704835399bdeb37eff83eb30a9aade7f3a5579d"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Mon Sep 21 21:46:28 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 21:46:28 2026"
      },
      "message": "Roll chromiumos/config from a22a7ea6887f to 9ee3e7ade171 (1 revision)\n\nhttps://chromium.googlesource.com/chromiumos/config.git/+log/a22a7ea6887f..9ee3e7ade171\n\n2026-09-21 otabek@google.com bols: add verify_existing_image to DownloadImageToUSBRequest\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/chromiumos-config-infra-autoroll\nPlease CC andrewlamb+autoroll@google.com,andrewlamb@google.com,chromeos-infra-discuss@google.com,pprabhu+autoroll@google.com,pprabhu@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: andrewlamb+autoroll@google.com,pprabhu+autoroll@google.com\nChange-Id: Ia5838f16c42625738d124ec77fb36ead706f4cde\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8436022\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83418}\n"
    },
    {
      "commit": "2704835399bdeb37eff83eb30a9aade7f3a5579d",
      "tree": "baaa03f184e9aefafee46bf3c56ac7745280e6f6",
      "parents": [
        "69157b84518ce70f26f53195f2197027ecd11cf4"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Mon Sep 21 21:32:43 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 21:32:43 2026"
      },
      "message": "cros: replace errors.Reason with errors.New in rootfs_execs\n\nRefactor rootfs_execs.go to replace deprecated errors.Reason with\nerrors.New from go.chromium.org/luci/common/errors per codebase\nconventions, and fix error grammar and docstring punctuation.\n\nBUG\u003db:564483021\nTEST\u003dgo test ./...; golangci-lint run .\nTAG\u003dagy\n\nChange-Id: Iec9cc6426b1905441e29c9fb3ab0386e1be62692\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8431787\nReviewed-by: Phoebe Tang \u003cphoebetang@google.com\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83417}\n"
    },
    {
      "commit": "69157b84518ce70f26f53195f2197027ecd11cf4",
      "tree": "c44a9e5c4d86819be7657b5496c2756aafb31218",
      "parents": [
        "6e0e167c65df37fa689c724548ad2d372e1fee3a"
      ],
      "author": {
        "name": "Jeremy Bettis",
        "email": "jbettis@google.com",
        "time": "Mon Sep 21 21:00:40 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 21:00:40 2026"
      },
      "message": "cros-fw-provision: pass --host_only instead of --host-only to futility\n\nfutility update defines the host-only flag as --host_only (with an underscore) rather than --host-only. Passing --host-only causes futility update to fail with \u0027ERROR: do_update: Unrecognized option (possibly \"--host-only\")\u0027 when AP firmware is pinned and a specific EC image is provided.\n\nBUG\u003dNone\n\nTEST\u003dgo test ./cros/cmd/provision/cros-fw-provision/...\n\nTAG\u003dagy\n\nCONV\u003d1585e400-1064-4aea-aa7e-63da9fb9c4a6\n\nChange-Id: I73d282d1abb058757f78d74681b1ddd71e1efd00\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8435540\nReviewed-by: Kshitij Shah \u003ctij@google.com\u003e\nCommit-Queue: Jeremy Bettis \u003cjbettis@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83416}\n"
    },
    {
      "commit": "6e0e167c65df37fa689c724548ad2d372e1fee3a",
      "tree": "e9fb19bde4b873407deecb43ff1ac99c42cfbe44",
      "parents": [
        "9f4af41c6e804035aecab532040498539f7d0cd9"
      ],
      "author": {
        "name": "Rafal Gawel",
        "email": "rafalgawel@google.com",
        "time": "Mon Sep 21 19:02:44 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 19:02:44 2026"
      },
      "message": "foil-provision: Fix BOLS address resolution for Satlab DUTs\n\nIn Satlab environments the servo address in the DUT topology points at\nthe servod container (e.g. \u003cdut\u003e-docker_servod) rather than at a BOLS\nhost. Dialing \u003cdut\u003e-docker_servod:9100 fails with a DNS lookup error:\nthe container does not exist before StartServod (BOLS is what creates\nit) and it does not serve BolsService in any case.\n\nBUG\u003db:487550487\nTEST\u003dhttps://ci.chromium.org/ui/test-investigate/invocations/satlab-0e1e4f5c-5f12-4575-898a-9b2c4c990e6d\n\nChange-Id: I07bb98283fa5a14439dfd4b2456e0278f32b4848\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8420041\nCommit-Queue: Rafał Gaweł \u003crafalgawel@google.com\u003e\nReviewed-by: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83415}\n"
    },
    {
      "commit": "9f4af41c6e804035aecab532040498539f7d0cd9",
      "tree": "10108a72be3e6ad226dfb445f897e92e3407c7de",
      "parents": [
        "dd335c5084bc86f2155d6cb042db9654f84cf7fa"
      ],
      "author": {
        "name": "Congbin Guo",
        "email": "guocb@google.com",
        "time": "Mon Sep 21 18:59:14 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 18:59:14 2026"
      },
      "message": "device_manager: Allow zero extend duration in ExtendLease\n\nThis is a reland of https://crrev.com/c/8393919\n\nThe original CL rejected all extendDur \u003c\u003d 0 requests. However, clients\nrely on 0-duration ExtendLease requests for lease validity checks\n(labpack) and UserPayload metadata updates without changing expiration\ntime (ctpv2).\n\nKey difference from original CL:\n- Relax validation from extendDur \u003c\u003d 0 to extendDur \u003c 0 in frontend and\n  device_lease_record controller.\n- Allow extendDur \u003d\u003d 0 to succeed with unchanged ExpirationTime while\n  verifying lease validity and updating UserPayload.\n- Add unit tests for 0 duration (success) and negative duration\n  (InvalidArgument).\n\nBUG: b/561737788\nTEST: python3 /work/cr-infra-go-area/infra/go/env.py go test ./device_manager/...\nChange-Id: Ide47fc5e28515ac27e042dfddbb6fd04ae6db5f1\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8407256\nCommit-Queue: Congbin Guo \u003cguocb@chromium.org\u003e\nAuto-Submit: Congbin Guo \u003cguocb@chromium.org\u003e\nReviewed-by: Matt Bubernak \u003cmattbubernak@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83414}\n"
    },
    {
      "commit": "dd335c5084bc86f2155d6cb042db9654f84cf7fa",
      "tree": "ad08b5a0b0a6be9444a7acde04d9863872af5da9",
      "parents": [
        "3237f8c62a8146571829731131c7ebd4c4e33dc4"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Mon Sep 21 18:58:33 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 18:58:33 2026"
      },
      "message": "Roll chromiumos/infra/proto from c0bdc2d99b3d to 192f8197ff51 (1 revision)\n\nhttps://chromium.googlesource.com/chromiumos/infra/proto.git/+log/c0bdc2d99b3d..192f8197ff51\n\n2026-09-21 ramjiyani@google.com auto_qual: Add TimeToLivePolicy to TestPlan\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/cros-proto-infra-autoroll\nPlease CC chromeos-continuous-integration-fire-hose@google.com,seanabraham@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nBug: None\nTbr: chromeos-continuous-integration-fire-hose@google.com\nChange-Id: I3dc4d5073a3232abfe49b52a4dd330378bff4651\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8431273\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83413}\n"
    },
    {
      "commit": "3237f8c62a8146571829731131c7ebd4c4e33dc4",
      "tree": "f17d59b10432b2b41ff61a724206c7d6f2ea2b47",
      "parents": [
        "ff07866bc9e1f4bfba7ab255e56b1a87bfdd00d2"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Mon Sep 21 18:56:35 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 18:56:35 2026"
      },
      "message": "[crosskylabadmin] Remove deprecated DutState enum from tracker.proto\n\nRemove the deprecated target_dut_state enum field (reserving tag 1 and\nfield name) and DutState enum from tracker.proto now that all cron\nhandlers and callers use repeated string target_dut_states in prod.\n\nRemove the legacy TargetDutState fallback switch in\npushBotsForAdminTasksImpl and update unit tests to pass TargetDutStates\ndirectly.\n\nBug: b/535659606\nTAG\u003dagy\nCONV\u003dfd2a2e2f-73eb-4991-a194-45739c9c801d\nChange-Id: I30fe7779575c1737bad55cd33175c53c78f210dd\n\nChange-Id: I75998c223d22f99aa49111a4e322fe923cdd2813\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8435542\nReviewed-by: Congbin Guo \u003cguocb@chromium.org\u003e\nSLSA-Policy-Verified: SLSA Policy Verification Service \u003cdevtools-gerritcodereview-exitgate@google.com\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83412}\n"
    },
    {
      "commit": "ff07866bc9e1f4bfba7ab255e56b1a87bfdd00d2",
      "tree": "c9c1ff317f4df737340d447b8e5f893e91f7b745",
      "parents": [
        "0adbbacef34d625dbc3abc3e2b71a806e08c7e89"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Mon Sep 21 18:50:55 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 18:50:55 2026"
      },
      "message": "cros/lib/usbimage: add shared USB provision image match library\n\nCreate the go.chromium.org/infra/cros/lib/usbimage package so BOLS,\nfoil-provision, and PARIS recovery can verify whether a Servo-attached\nUSB drive (/dev/sdX) already contains the requested provision image\nbefore triggering a re-flash:\n- VerifyCachedImage reads /var/tmp/usb_state_\u003cdev\u003e.json, compares the\n  normalized image key, and hashes bytes[17408 : N] (skipping LBA 0..33\n  MBR and Primary GPT) directly from /dev/sdX.\n- RemoveStateFile deletes the state file prior to writing so interrupted\n  writes cannot leave stale metadata.\n- FinalizeAndRecordImage clears the trailing 33 sectors (Secondary GPT)\n  of /dev/sdX, resolves the uncompressed image size (using Primary GPT\n  AlternateLBA for /decompress/ streams), hashes bytes[17408 : N], and\n  writes the ~200-byte JSON state file.\n\nBUG\u003db:562626583, b:562473937\nTEST\u003dgo test ./cros/lib/usbimage/...\nTAG\u003dagy\nCONV\u003d88a900b2-ebcf-4df5-9d0d-f30819c0a30c\n\nChange-Id: I52d20270dad1515ec744c4f31b764a05ab236017\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8430758\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nReviewed-by: Congbin Guo \u003cguocb@chromium.org\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83411}\n"
    },
    {
      "commit": "0adbbacef34d625dbc3abc3e2b71a806e08c7e89",
      "tree": "a28203e0fb180344b49a5564d725c83702ce8d60",
      "parents": [
        "2fac6bf72812bcc561a50c7c5beca3f63bd813c0"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Mon Sep 21 18:50:48 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 18:50:48 2026"
      },
      "message": "cros/lib/usbimage: add OWNERS and README for USB image match library\n\nCreate the go/src/infra/cros/lib/usbimage directory with its OWNERS and\nREADME.md documentation ahead of adding the shared USB provision image\nverification package.\n\nBUG\u003db:562626583, b:562473937\nTEST\u003dNone\nTAG\u003dagy\nCONV\u003d88a900b2-ebcf-4df5-9d0d-f30819c0a30c\n\nChange-Id: Idd58843fb14045c9027ba24a9f09e54b607691fc\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8436237\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nReviewed-by: Congbin Guo \u003cguocb@chromium.org\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83410}\n"
    },
    {
      "commit": "2fac6bf72812bcc561a50c7c5beca3f63bd813c0",
      "tree": "82678ffc10c85375cf6bfa472ed7712baede708b",
      "parents": [
        "4bc57c7545862674114991469923c14505091565"
      ],
      "author": {
        "name": "Vitali Supruniuk",
        "email": "vsupruniuk@google.com",
        "time": "Mon Sep 21 18:46:09 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 18:46:09 2026"
      },
      "message": "[UFS] Add BrowserNlyteSyncConfig for zone and rack sync policies\n\nIntroduce BrowserNlyteSyncConfig in UFS config.proto and config.cfg to\nsupport phased, per-zone and per-rack rollout of the Browser Nlyte\nBigQuery sync job.\n\n* Separate \"rename_machine\" and \"update_machine\" flags in\n\"AllowedOperations\": In UFS, updating fields (shelf, asset tag, etc) is\na low-risk in-place entity update, whereas renaming a machine changes\nits primary key controller.RenameMachine, updates dependent \"MachineLSE\"\nreferences, and may clean up stale placeholder entities. Separating them\nallows enabling safe field updates on racks while keeping primary-key\nrenames gated.\n* Two ways to define racks in the config: \"racks\" supports targeting individual/non-contiguous racks (e.g., [\"che101\",\"che105\"]), while \"rack_ranges\" (prefix + inclusive start/end, e.g., \"che124..che125\") avoids listing dozens of rack names one-by-one as sync rollout expands.\n\nBug: b/452734875\nChange-Id: I3ee5d99034e4f4aeaa55773e9a805df94cb4e463\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8431909\nCommit-Queue: Vitali Supruniuk \u003cvsupruniuk@google.com\u003e\nReviewed-by: Gowri Denduluri \u003cgowriden@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83409}\n"
    },
    {
      "commit": "4bc57c7545862674114991469923c14505091565",
      "tree": "6e2f935a38df0229f1dcc65862b9579896cdbc56",
      "parents": [
        "92c3d5ca04c0b66530eff5cbaef4c1890c5ca384"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Mon Sep 21 18:21:45 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 18:21:45 2026"
      },
      "message": "recovery: add cache detection to usb download and servo fw actions\n\nSet RunControl: RunControl_RUN_ONCE on \u0027Detect CacheService address\u0027 and\nadd it to the dependencies of:\n- \u0027Call servod to download image to USB-key\u0027\n- \u0027Call servod to download provision image to USB-key\u0027\n- Servo firmware flashing actions (\u0027Flash AP (FW) with enabled serial\n  console\u0027, \u0027Flash EC (FW) by servo (allowed failed)\u0027, etc.)\n\nRegenerated config_trees via \u0027make trees\u0027.\n\nBUG\u003db:562502945\nTEST\u003dmake trees \u0026\u0026 go test ./config/... .\nTAG\u003dagy\nCONV\u003d9e01dbba-9f31-4d8d-9591-92f5adf9ec02\n\nChange-Id: Iea7febe53427be7d44f7b0a8fc4307a80b206b6b\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8422019\nReviewed-by: Bryan Ni \u003cbniche@google.com\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83408}\n"
    },
    {
      "commit": "92c3d5ca04c0b66530eff5cbaef4c1890c5ca384",
      "tree": "9bf773beabdefbe124bdd3ce5724b08a73c10d2d",
      "parents": [
        "33318bd1c6b738d0cc3c16e23ca7d4cf148f8fc1"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Mon Sep 21 18:21:37 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 18:21:37 2026"
      },
      "message": "dut: replace errors.Reason with errors.New in peripheral_wifi_state_execs\n\nRefactor peripheral_wifi_state_execs.go to replace deprecated errors.Reason with\nerrors.New from go.chromium.org/luci/common/errors per codebase conventions,\nimprove docstring grammar, and adopt got-before-want format in tests.\n\nBUG\u003db:564483021\nTEST\u003dgo test ./...; golangci-lint run .\nTAG\u003dagy\n\nChange-Id: Idfc2d437fd5a35ae1097c6d4c47d07c05a5a14a7\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8432535\nReviewed-by: Gowri Denduluri \u003cgowriden@google.com\u003e\nCommit-Queue: Gowri Denduluri \u003cgowriden@google.com\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83407}\n"
    },
    {
      "commit": "33318bd1c6b738d0cc3c16e23ca7d4cf148f8fc1",
      "tree": "5e0c87d240b12747355a70bbeb31e226b70bf493",
      "parents": [
        "2272eee72db33294917c45762874df3a01368ea0"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Mon Sep 21 17:57:06 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 17:57:06 2026"
      },
      "message": "recovery: remove deprecated GetCacheUrl method from tlw.Access\n\nRemove the deprecated GetCacheUrl method from the tlw.Access interface,\nits implementation in localtlw tlwClient, and the mock in btpeer unit\ntests.\n\nAll former callers (CrOS, btpeer, wifirouter execs) have been fully\nmigrated to cache.Manager (DownloadURL / ExtractURL) backed by unit-level\ncache service address extraction.\n\nBUG\u003d555959948\nBUG\u003d557232854\nTAG\u003dagy\nCONV\u003d0a6536e0-d258-467e-9ab9-203fb7af7084\n\nChange-Id: I85bc834ebfea5600152a3b0e8a24debfb8b1144e\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8401448\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nReviewed-by: Garry Wang \u003cxianuowang@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83406}\n"
    },
    {
      "commit": "2272eee72db33294917c45762874df3a01368ea0",
      "tree": "dff1e9e0ad3218a6d90bb949a05a491e7e06e524",
      "parents": [
        "03373f223f08c95c1be189f48c3af49f60ba800b"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Mon Sep 21 17:48:57 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 17:48:57 2026"
      },
      "message": "recovery/config: improve grammar in config_cros_devboard.go\n\nReview and fix grammar, spelling, phrasing, and action documentation\nstrings in config_cros_devboard.go.\n\nBUG\u003db:564483021\nTEST\u003dgo test ./...; golangci-lint run .\nTAG\u003dagy\n\nChange-Id: I08226ddb01994c7717087f1478612fbeac93eae1\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8431598\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nReviewed-by: Bryan Ni \u003cbniche@google.com\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83405}\n"
    },
    {
      "commit": "03373f223f08c95c1be189f48c3af49f60ba800b",
      "tree": "45aa0ee2234c5e292170616bb5eadacce864e7c1",
      "parents": [
        "4d70cb3138407b3812dd7fb253c778f7f51c1456"
      ],
      "author": {
        "name": "Jeremy Bettis",
        "email": "jbettis@google.com",
        "time": "Mon Sep 21 17:01:50 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 17:01:50 2026"
      },
      "message": "recovery: ignore daisy-chained servo_v4/v4p1 as debug header or child\n\nWhen a second servo_v4 or servo_v4p1 is plugged into a primary servo\u0027s\ndownstream hub port (e.g. Aux USB-A port 4), servod in recovery_mode\nattaches it as a child device and reports a composite servo_type such as\nservo_v4p1_with_servo_v4p1.\n\nPreviously, servoHasDebugHeaderExec only skipped ccd_* components and\ntherefore treated the child servo_v4p1 as a debug header servo\n(servo_micro/c2d2), causing \u0027Debug header servo present\u0027 to fail on\ndut_controller_missing_fault and abort servo recovery before running\nCCD/PD/CC toggle recovery actions. Similarly, RetrieveServoTopology and\nBOLS GetServoTopology included non-root servo_v4/servo_v4p1 devices in\nChildren.\n\nUpdate servoHasDebugHeaderExec to explicitly check for c2d2 and\nservo_micro, and update RetrieveServoTopology and BOLS GetServoTopology\nto exclude non-root servo_v4 and servo_v4p1 devices from Children.\n\nBUG\u003dNone\nTEST\u003dgo test ./cros/recovery/internal/execs/servo/... ./cros/lib/bols/...\nTAG\u003dagy\nCONV\u003d7e30ebe4-ae82-4c68-9c21-815a0b78a104\n\nChange-Id: I2733d9ca6b0d35be4f0acaa14523a92d0ae397bf\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8423157\nReviewed-by: Otabek Kasimov \u003cotabek@google.com\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nAuto-Submit: Jeremy Bettis \u003cjbettis@chromium.org\u003e\nCommit-Queue: Jeremy Bettis \u003cjbettis@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83404}\n"
    },
    {
      "commit": "4d70cb3138407b3812dd7fb253c778f7f51c1456",
      "tree": "1693c84a9f43f51259dda6be1a190e1c64fd9130",
      "parents": [
        "ceb2cf55df9046657c1589facd24cfbb1e513a1a"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Mon Sep 21 16:47:02 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 16:47:02 2026"
      },
      "message": "dut: replace errors.Reason with errors.New in cellular_modem_state_execs\n\nRefactor cellular_modem_state_execs.go to replace deprecated errors.Reason with\nerrors.New from go.chromium.org/luci/common/errors per codebase conventions,\nimprove docstring grammar, and adopt got-before-want format in tests.\n\nBUG\u003dNone\nTEST\u003dgo test ./...; golangci-lint run .\nTAG\u003dagy\n\nChange-Id: I5762966d22f3ab2462b57ae29024e5b29c109c0d\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8431301\nReviewed-by: Phoebe Tang \u003cphoebetang@google.com\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83403}\n"
    },
    {
      "commit": "ceb2cf55df9046657c1589facd24cfbb1e513a1a",
      "tree": "3fb469075b01eeff517870ae8261a1039f81f923",
      "parents": [
        "1276e5d4409cfb11d399fd94e7c1aef07080520d"
      ],
      "author": {
        "name": "Rafal Gawel",
        "email": "rafalgawel@google.com",
        "time": "Mon Sep 21 15:01:55 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 15:01:55 2026"
      },
      "message": "satlab: set servo-based provisioning as default for ATS\n\nUse ServoBasedDeviceFlasher as the default provisioning method for\nTradefed test sessions in Satlab.\n\nBug: b:487550487\nTest: go test ./...\nChange-Id: I601a48b637de5eed628f54689cf7b7ab16ee8e3d\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8422304\nCommit-Queue: Rafał Gaweł \u003crafalgawel@google.com\u003e\nAuto-Submit: Rafał Gaweł \u003crafalgawel@google.com\u003e\nReviewed-by: Przemysław Filipek \u003cfilipek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83402}\n"
    },
    {
      "commit": "1276e5d4409cfb11d399fd94e7c1aef07080520d",
      "tree": "816b14f1389201071aeeb317b01d1c55e1327b48",
      "parents": [
        "858a0c75e0d0f5b398efb12635f61fa55dfc9f89"
      ],
      "author": {
        "name": "Konrad Polarczyk",
        "email": "polarczyk@google.com",
        "time": "Mon Sep 21 14:44:39 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 14:44:39 2026"
      },
      "message": "[fleetconsole] Refactor repair queue sync towards DDD\n\nRefactor ChromeOS repair queue sync towards Domain-Driven Design (DDD).\nSplit the 400-line file into clear roles and speed up database queries:\n\n- Domain Entity (device.go): Wrap ent.Device in repairQueueDevice.\n  Devices now parse their own labels and peripheral states instead of\n  relying on scattered helper functions.\n- Repository (repository.go): Move all database queries and transaction\n  handling into repairTaskRepository.\n- Orchestrator (repopulate_chromeos_repair_tasks.go): Shrink the main\n  sync function to 4 steps: fetch devices, find broken devices, close\n  healed tasks, and upsert broken tasks.\n- Faster Database Updates: Close healed tasks with one SQL UPDATE query\n  in Postgres instead of loading all open tasks into Go memory.\n- Better Tests: Delete brittle sqlmock regex tests. Rely on the real\n  Postgres integration tests from the parent CL.\n\nBUG\u003db/542599534\nTEST\u003dgo test ./internal/core/chromeos/crosrepairqueue/...\nTAG\u003dagy\nCONV\u003def2bf3ab-4616-40ac-89b5-7a9b6a983def\n\nChange-Id: Ie09eab151765ae91ff272d46beaf53d3003818a6\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8365888\nReviewed-by: Pietro Scuttari \u003cpietroscutta@google.com\u003e\nCommit-Queue: Konrad Polarczyk \u003cpolarczyk@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83401}\n"
    },
    {
      "commit": "858a0c75e0d0f5b398efb12635f61fa55dfc9f89",
      "tree": "08a6f544e4faf3866a94b055ac99e980fe9bda2d",
      "parents": [
        "97e6af255a6f21ed7c759032150519e633a9e8b4"
      ],
      "author": {
        "name": "Konrad Polarczyk",
        "email": "polarczyk@google.com",
        "time": "Mon Sep 21 14:29:05 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 14:29:05 2026"
      },
      "message": "[fleetconsole] Align repair queue integration tests with standard given/when steps\n\nAlign the setup helpers to use given/when steps so tests follow the standard NewTestEnv flow. Use expect to simplify slice assertions.\n\nBUG\u003db/542599534\nTEST\u003dgo test ./test/integration/...\nTAG\u003dagy\nCONV\u003d5af240c9-6f89-42d5-b6dd-c66472bc6ae7\n\nChange-Id: I9f5fc6b559e7f51a487c946469db67d6a95272a6\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8362363\nAuto-Submit: Konrad Polarczyk \u003cpolarczyk@google.com\u003e\nCommit-Queue: Konrad Polarczyk \u003cpolarczyk@google.com\u003e\nReviewed-by: Pietro Scuttari \u003cpietroscutta@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83400}\n"
    },
    {
      "commit": "97e6af255a6f21ed7c759032150519e633a9e8b4",
      "tree": "46a958c7ac58defb96a8eaa6f2116b07a43a4e46",
      "parents": [
        "6ae83c435006f8a69cae9cd25c53abb4606f4417"
      ],
      "author": {
        "name": "Konrad Polarczyk",
        "email": "polarczyk@google.com",
        "time": "Mon Sep 21 14:03:42 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 14:03:42 2026"
      },
      "message": "[fleetconsole] Open ChromeOS repair cases natively using failure detection rules\n\n- Extract ChromeOS repair queue logic into the internal/core/chromeos/crosrepairqueue bounded context.\n- Implement native device failure detection rules in Go (failure_detector.go and labels.go) covering core states, peripherals, servo/USB/Building 946, Wi-Fi cell, cellular serving pools, and ignored NPI/test/experimental pools.\n- Eliminate database backdoors from integration tests (repair_queue_ingestion_test.go) and verify all failure rules end-to-end via ListRepairQueue.\n\nTAG\u003dagy\nCONV\u003d5af240c9-6f89-42d5-b6dd-c66472bc6ae7\n\nBug: b/542599534\nChange-Id: I2f1f347fab38fd7325809cb65e2aebb81d4d355b\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8367166\nReviewed-by: Pietro Scuttari \u003cpietroscutta@google.com\u003e\nCommit-Queue: Konrad Polarczyk \u003cpolarczyk@google.com\u003e\nAuto-Submit: Konrad Polarczyk \u003cpolarczyk@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83399}\n"
    },
    {
      "commit": "6ae83c435006f8a69cae9cd25c53abb4606f4417",
      "tree": "3d025741103adf14a339ed3af53accb5719dcce7",
      "parents": [
        "36833f4d4788a957fc4f97713686ad881742c4a9"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Mon Sep 21 12:22:28 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 12:22:28 2026"
      },
      "message": "Roll chromiumos/infra/proto from 09384863c799 to c0bdc2d99b3d (1 revision)\n\nhttps://chromium.googlesource.com/chromiumos/infra/proto.git/+log/09384863c799..c0bdc2d99b3d\n\n2026-09-21 azwonek@google.com [satlab] Add skipEth to proto file\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/cros-proto-infra-autoroll\nPlease CC chromeos-continuous-integration-fire-hose@google.com,seanabraham@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nBug: None\nTbr: chromeos-continuous-integration-fire-hose@google.com\nChange-Id: I551b41f8e2b05bfbd496d55b6ced9c6b1178c8c4\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8434071\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83398}\n"
    },
    {
      "commit": "36833f4d4788a957fc4f97713686ad881742c4a9",
      "tree": "1601d8fe1741ad73b1f099764bf25185cb03d9a1",
      "parents": [
        "f9f51140f4089a5317b919899e1ab07a8cfa56f7"
      ],
      "author": {
        "name": "recipe-roller",
        "email": "recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 10:08:01 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 10:08:01 2026"
      },
      "message": "Roll recipe dependencies (trivial).\n\nThis is an automated CL created by the recipe roller. This CL rolls\nrecipe changes from upstream projects (depot_tools) into this repository.\n\nThe build that created this CL was\nhttps://ci.chromium.org/b/8670058538959850193\n\ndepot_tools:\nhttps://chromium.googlesource.com/chromium/tools/depot_tools.git/+/7ccadeaefc68d1711a1187ea57b07f1aaee57538\n  7ccadea (nerima@google.com)\n      git_cache: heal mirrors whose HEAD is dead after a default-bran...\n\nPlease check the following references for more information:\n- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller\n- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback\n- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md\n\nUse https://goo.gl/noib3a to file a bug.\n\nR\u003diannucci@chromium.org\n\nRecipe-Tryjob-Bypass-Reason: Autoroller\nIgnore-Freeze: Autoroller\nBugdroid-Send-Email: False\nChange-Id: Ia5411daa9f145b5ab707abc7397f935672100022\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8433906\nCommit-Queue: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com \u003crecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\u003e\nBot-Commit: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com \u003crecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83397}\n"
    },
    {
      "commit": "f9f51140f4089a5317b919899e1ab07a8cfa56f7",
      "tree": "9d02d3ae3d56185ca5275e033b19bc76b1e35380",
      "parents": [
        "63df9e9df52e8edfd3cd86b642ba79f440e96ecd"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Mon Sep 21 06:35:02 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 06:35:02 2026"
      },
      "message": "Roll luci-go from f5923918c52a to 9a8ac949f945 (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/f5923918c52a..9a8ac949f945\n\n2026-09-21 newtonlam@google.com #Chronicle - Show progress segments in timeline view.\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC iannucci@google.com,luci-eng@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: iannucci@google.com\nChange-Id: If321c11d96d29fb1d9e0ea1068e7cbbcbe9f92d2\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8434124\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83396}\n"
    },
    {
      "commit": "63df9e9df52e8edfd3cd86b642ba79f440e96ecd",
      "tree": "18f2784983f4caa8df61ea7fdfea343ebf2fd773",
      "parents": [
        "5cbe306084c8ed1d49d10dc6b4a083b703e7bb1f"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Mon Sep 21 03:44:47 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Sep 21 03:44:47 2026"
      },
      "message": "Roll luci-go from 862f8c12a438 to f5923918c52a (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/862f8c12a438..f5923918c52a\n\n2026-09-21 mdraz@google.com [milo/ui] Sweep dependencies to latest minors; drop prod vulns to zero\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC iannucci@google.com,luci-eng@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: iannucci@google.com\nChange-Id: I6cafb0444a16fbf3cbe27fbdf42bddb63453a9cd\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8431995\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83395}\n"
    },
    {
      "commit": "5cbe306084c8ed1d49d10dc6b4a083b703e7bb1f",
      "tree": "76790fba3982c818c0d1699dde611fb565076666",
      "parents": [
        "7da57323d441e413ff998e60e7df25a6122af01a"
      ],
      "author": {
        "name": "recipe-roller",
        "email": "recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com",
        "time": "Sun Sep 20 22:57:30 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Sun Sep 20 22:57:30 2026"
      },
      "message": "Roll recipe dependencies (trivial).\n\nThis is an automated CL created by the recipe roller. This CL rolls\nrecipe changes from upstream projects (depot_tools) into this repository.\n\nThe build that created this CL was\nhttps://ci.chromium.org/b/8670100700000765793\n\ndepot_tools:\nhttps://chromium.googlesource.com/chromium/tools/depot_tools.git/+log/0306e4682b4ac35287c726fa35a983157a625902~..ca054941f756b50e1a3d83727270d879bec1f331\n  0306e46 (hnakashima@chromium.org)\n      [Agents] Enhance test_history with per-builder summary and pagi...\n  ca05494 (jsca@google.com)\n      git_cl: Remove TBR feature\n\nPlease check the following references for more information:\n- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller\n- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback\n- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md\n\nUse https://goo.gl/noib3a to file a bug.\n\nR\u003diannucci@chromium.org\n\nRecipe-Tryjob-Bypass-Reason: Autoroller\nIgnore-Freeze: Autoroller\nBugdroid-Send-Email: False\nChange-Id: I1202e4702985ae162d9a726f8b86bb9c0baa1295\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8434301\nBot-Commit: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com \u003crecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\u003e\nCommit-Queue: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com \u003crecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83394}\n"
    },
    {
      "commit": "7da57323d441e413ff998e60e7df25a6122af01a",
      "tree": "c0b888d959bfa5738eba87a13e5067328d0d2acb",
      "parents": [
        "5fd22eb595531a6e649fd22ed9c6a6e62ae06d8c"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Sat Sep 19 16:03:47 2026"
      },
      "committer": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Sat Sep 19 16:03:47 2026"
      },
      "message": "recovery/config: improve grammar and documentation in config_cros_vm.go\n\nReview and fix grammar, spelling, phrasing, and action documentation\nstrings in config_cros_vm.go.\n\nBUG\u003dNone\nTEST\u003dmake trees; go test ./...\nTAG\u003dagy\n\nChange-Id: Ic2fab77b2ebf16130c128759e8c31bffcd4ead28\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8430861\nReviewed-by: Congbin Guo \u003cguocb@chromium.org\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83393}\n"
    },
    {
      "commit": "5fd22eb595531a6e649fd22ed9c6a6e62ae06d8c",
      "tree": "4233d00aad38575ef79bcc00f4c1474283484fbb",
      "parents": [
        "cc9cb82f87e18358c2dbd14d6303b380bcd52338"
      ],
      "author": {
        "name": "images-pins-roller",
        "email": "images-pins-roller@chops-service-accounts.iam.gserviceaccount.com",
        "time": "Sat Sep 19 00:35:35 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Sat Sep 19 00:35:35 2026"
      },
      "message": "[images] Roll pinned docker image tags.\n\nUpdated pins:\n  * docker.io/library/ubuntu:noble\n  * docker.io/library/ubuntu:24.04\n  * docker.io/library/ubuntu:26.04\n  * docker.io/library/ubuntu:resolute\n\nR\u003dvadimsh@chromium.org\n\nChange-Id: I4dc0c8bbca75bc620bf5be66d612e4bac7dc1065\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8430425\nCommit-Queue: images-pins-roller@chops-service-accounts.iam.gserviceaccount.com \u003cimages-pins-roller@chops-service-accounts.iam.gserviceaccount.com\u003e\nBot-Commit: images-pins-roller@chops-service-accounts.iam.gserviceaccount.com \u003cimages-pins-roller@chops-service-accounts.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83392}\n"
    },
    {
      "commit": "cc9cb82f87e18358c2dbd14d6303b380bcd52338",
      "tree": "488b21587de2e704767b817ed9e828474739fe5f",
      "parents": [
        "2f3bde27292bd2267fd4e7dd54cd6d661b865be5"
      ],
      "author": {
        "name": "Congbin Guo",
        "email": "guocb@google.com",
        "time": "Fri Sep 18 23:16:51 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 23:16:51 2026"
      },
      "message": "[fleet_promoter] Update rollback.json when promoting services if present\n\nWhen promoting a service to prod, if the service directory contains\na rollback.json file, record the previous stable tag into rollback.json\n(keeping the most recent 2 candidate tags).\n\nThis works in tandem with infradata/cloud-run to prevent rollback\ncandidate tags from being pruned.\n\nBUG: b/561736713\nTEST: ./recipes.py test run --filter \u0027fleet/promoter*\u0027\n\nChange-Id: I02c6f75fcea46a14b3151450df122f7130bbe357\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8422440\nReviewed-by: Bryan Ni \u003cbniche@google.com\u003e\nAuto-Submit: Congbin Guo \u003cguocb@chromium.org\u003e\nCommit-Queue: Congbin Guo \u003cguocb@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83391}\n"
    },
    {
      "commit": "2f3bde27292bd2267fd4e7dd54cd6d661b865be5",
      "tree": "8c5fecdbad1c4939f412af5586d14a025d0b34a0",
      "parents": [
        "54ed0bd3e4d32804e63447a506f7ae5c71de16ca"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Fri Sep 18 21:28:02 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 21:28:02 2026"
      },
      "message": "Roll luci-py from b48070890f99 to 0c8d1049e5e7 (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-py.git/+log/b48070890f99..0c8d1049e5e7\n\n2026-09-18 chromium-autoroll@skia-public.iam.gserviceaccount.com Roll Swarming Client from ca4b0c87dc48 to 54ed0bd3e4d3\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-py-infra-autoroll\nPlease CC luci-eng@google.com,yiwzhang@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: yiwzhang@google.com\nChange-Id: Ic17d0c2bde3cdd1942b520b0a6cbf64d0bf30b2a\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8431469\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83390}\n"
    },
    {
      "commit": "54ed0bd3e4d32804e63447a506f7ae5c71de16ca",
      "tree": "6ce168527b3bab5d09e6ca45371710603a643a08",
      "parents": [
        "ca4b0c87dc48baeb568cdc2d43f90c963d7ce2f1"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Fri Sep 18 20:53:06 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 20:53:06 2026"
      },
      "message": "Roll luci-go from d2a656d14661 to 862f8c12a438 (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/d2a656d14661..862f8c12a438\n\n2026-09-18 iannucci@google.com [cipd] Require no incompatible duplicates in resolved version file.\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC luci-eng@google.com,yiwzhang@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: yiwzhang@google.com\nChange-Id: Id9d5d8be77f612cbae8db4aa659f8505b06880d9\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8423389\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83389}\n"
    },
    {
      "commit": "ca4b0c87dc48baeb568cdc2d43f90c963d7ce2f1",
      "tree": "dcae200523b1e9ce434991bb681d521511fa3948",
      "parents": [
        "552f860a1c46d8c4648e0783e4f31cf2843bf489"
      ],
      "author": {
        "name": "Greg NISBET",
        "email": "gregorynisbet@google.com",
        "time": "Fri Sep 18 20:33:10 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 20:33:10 2026"
      },
      "message": "karte: Add race detector test helper and property tests\n\nAdd race detection build tag helpers in internal/testsupport and add\nTestSweepOldRecordsOverflowProperty to verify SweepOldRecords never\ndeletes more records than the requested limit using quick.Check.\n\nBUG\u003d358676120\nTEST\u003dgo test ./... \u0026\u0026 go test -race ./...\nTAG\u003dagy\nCONV\u003dbbe6e8e7-93bf-4044-a13d-fc3ff1cf7093\n\nChange-Id: Ic165c21f723a4382a1d9017cf10286384fdc9fd4\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8306166\nReviewed-by: Xixuan Wu \u003cxixuan@google.com\u003e\nCommit-Queue: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83388}\n"
    },
    {
      "commit": "552f860a1c46d8c4648e0783e4f31cf2843bf489",
      "tree": "9e88904178181fbb1f48d1f178c7d22a67e5642a",
      "parents": [
        "1e8a86e7a2aab9090d884944ab04db3cb717a23a"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Fri Sep 18 20:19:52 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 20:19:52 2026"
      },
      "message": "Roll luci-go from 40537865742b to d2a656d14661 (2 revisions)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/40537865742b..d2a656d14661\n\n2026-09-18 zhangtiff@google.com [fleetconsole] Add support for location_tag field across all platforms\n2026-09-18 otabek@google.com [fleet-console] Document shared UI component organization convention\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC luci-eng@google.com,yiwzhang@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: yiwzhang@google.com\nChange-Id: I7588cd3d230b0961e75932c90bfd956d53bd622c\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8423534\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83387}\n"
    },
    {
      "commit": "1e8a86e7a2aab9090d884944ab04db3cb717a23a",
      "tree": "278e9a1f755fe9fcd2587e93478598a48687a446",
      "parents": [
        "b8623780ebc01245b9a1c6656cfa9ff960c80aeb"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Fri Sep 18 19:44:58 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 19:44:58 2026"
      },
      "message": "Roll luci-go from 3d7c3f56e2fb to 40537865742b (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/3d7c3f56e2fb..40537865742b\n\n2026-09-18 iannucci@google.com [gae] Add CurrentCursor to QueryIter and RawQueryIter.\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC luci-eng@google.com,yiwzhang@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: yiwzhang@google.com\nChange-Id: Ida76cee4a6c9f4af61d19b09ed42ab7527e7974f\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8426287\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83386}\n"
    },
    {
      "commit": "b8623780ebc01245b9a1c6656cfa9ff960c80aeb",
      "tree": "6f5396454c0acc4c3d30320b00d596709b3eb1b7",
      "parents": [
        "d15a221dc4db715dad70736efae58ba6e5f1964e"
      ],
      "author": {
        "name": "Ethan Lee",
        "email": "ethanalee@google.com",
        "time": "Fri Sep 18 19:21:48 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 19:21:48 2026"
      },
      "message": "result_adapter: support Go 1.26 test artifacts in go subcommand\n\nIn Go 1.26+, \u0027go test -json -artifacts\u0027 emits Action\u003d\"artifacts\" events\nwith a Path field pointing to the test\u0027s artifact directory created by\ntesting.TB.ArtifactDir().\n\nUpdate GoTestEvent and TestRecord/PackageRecord to ingest these events,\nwalk the directory via processArtifacts, and attach the files as\nResultSink file artifacts on the corresponding TestResult.\n\nFor golang/go#79238.\nFor golang/go#71558.\n\nChange-Id: I21256f9d7959cdf6335df3089f2feddc06b099b1\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8425421\nAuto-Submit: Ethan Lee \u003cethanalee@google.com\u003e\nCommit-Queue: Chan Li \u003cchanli@chromium.org\u003e\nReviewed-by: Chan Li \u003cchanli@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83385}\n"
    },
    {
      "commit": "d15a221dc4db715dad70736efae58ba6e5f1964e",
      "tree": "fe0d29444ebdd1380d0e72fc2d0bc9a043244001",
      "parents": [
        "8aabdd4f11c8a004cc37f03e8f0336035a8f182a"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Fri Sep 18 18:54:31 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 18:54:31 2026"
      },
      "message": "Roll luci-go from dc0e2ed7a963 to 3d7c3f56e2fb (3 revisions)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/dc0e2ed7a963..3d7c3f56e2fb\n\n2026-09-18 otabek@google.com [fleet-console] Add copy markdown option to Autorepair results dialog\n2026-09-18 otabek@google.com [fleet-console] Use shared MarkdownSnippet in SaveDiffDialog\n2026-09-18 otabek@google.com [fleet-console] Extract shared MarkdownSnippet and toFullUrl helper\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC luci-eng@google.com,yiwzhang@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: yiwzhang@google.com\nChange-Id: I8a78e19632e66b494b9781ffcfa3b6eae64af605\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8423626\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83384}\n"
    },
    {
      "commit": "8aabdd4f11c8a004cc37f03e8f0336035a8f182a",
      "tree": "ecdc964dd0e7bc2cebde8c1fa228af77ac410b94",
      "parents": [
        "e41df83106870eeafc5cd31bc315366955f16dde"
      ],
      "author": {
        "name": "Greg NISBET",
        "email": "gregorynisbet@google.com",
        "time": "Fri Sep 18 18:25:16 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 18:25:16 2026"
      },
      "message": "karte: Implement sweepFailures Datastore cleaner\n\nImplement sweepFailures in internal/frontend/sweep.go using\nQueryKeyBatchesBefore to sweep and delete old failures from Datastore\nup to the configured limit. Add failure unit tests to sweep_test.go.\n\nBUG\u003d358676120\nTEST\u003dgo test ./...\nTAG\u003dagy\nCONV\u003d02a1ffb1-e1c7-4e59-b1ef-e96a98234b00\n\nChange-Id: Ie7d48b9b4565467ab315104264ecaf5585d7c867\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8306165\nReviewed-by: Gowri Denduluri \u003cgowriden@google.com\u003e\nCommit-Queue: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83383}\n"
    },
    {
      "commit": "e41df83106870eeafc5cd31bc315366955f16dde",
      "tree": "7aa9ba00948187855dd52d07aac5bd544d4df3ce",
      "parents": [
        "e7f5adefe0a8ff1dc185177abf345e715c25793b"
      ],
      "author": {
        "name": "xixuan",
        "email": "xixuan@google.com",
        "time": "Fri Sep 18 18:03:46 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 18:03:46 2026"
      },
      "message": "mallet: respect -namespace flag in set-fw-target command\n\nSetFwTargetRun.innerRun previously hardcoded ufsUtil.OSNamespace in\noutgoing UFS gRPC metadata and omitted InventoryNamespace in\nbuildbucket.Params, causing PermissionDenied errors for partner\nservice accounts targeting os-partner devices.\n\nUse c.envFlags.Namespace() for both outgoing UFS context metadata\nand buildbucket.Params.InventoryNamespace. Also fix copy-pasted\nExtraTags task tag from task:serial-console to task:set-fw-target.\n\nBug: b/487770206\nTest: go test ./go/src/infra/cmd/mallet/internal/cmd/tasks/...\nChange-Id: Ibc5df442a2d9f6224bd5972a4f79b2ec9ef6e701\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8422837\nReviewed-by: Otabek Kasimov \u003cotabek@google.com\u003e\nReviewed-by: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCommit-Queue: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83382}\n"
    },
    {
      "commit": "e7f5adefe0a8ff1dc185177abf345e715c25793b",
      "tree": "0da68bfd7bb56116f11070ba2f1b8d4b275c1b67",
      "parents": [
        "781cde54c8329b83b883a8cc0ef97b7209b227b9"
      ],
      "author": {
        "name": "Matt Bubernak",
        "email": "mattbubernak@google.com",
        "time": "Fri Sep 18 16:37:02 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 16:37:02 2026"
      },
      "message": "ctpv2, cros-tool-runner: enforce container registry allowlist\n\nEnforce a strict allowlist on container image registries and GCP\nproject prefixes across CTPv2, cros_test_runner, common_lib, and\ncros-tool-runner (section 4.1 of comment #6 in b/548306504).\n\n- Define DefaultAllowedContainerRegistries and validation helpers in\n  common_lib/common (ExtractContainerRepository,\n  IsContainerRegistryAllowed, ValidateContainerImage,\n  ValidateContainerImageInfo, ValidateContainerMetadata).\n- Validate container metadata and image paths in common_lib\n  (FetchContainerMetadata, CreateImagePath, FetchImageData) and\n  cros_test_runner (FetchContainerMetadataCmd).\n- Validate container images before pulling or running in\n  cros-tool-runner (StartContainer in v2, runDockerImage in v1).\n\nBug: b:548306504\nTest: go test -count\u003d1 ./cros/cmd/common_lib/...\nTest: https://ci.chromium.org/b/8670381440637466129\nChange-Id: Iba283b699902b4e6798c7ada9112d1a8393a3a7e\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8423232\nCommit-Queue: Matt Bubernak \u003cmattbubernak@google.com\u003e\nReviewed-by: Terry Yan \u003cyichiyan@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83381}\n"
    },
    {
      "commit": "781cde54c8329b83b883a8cc0ef97b7209b227b9",
      "tree": "cf364fe7527794c53395ddc82d73eb7df2aa6c7b",
      "parents": [
        "9b982551bc5362397b248d1b8035753c4c682191"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Fri Sep 18 16:19:45 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 16:19:45 2026"
      },
      "message": "recovery: replace errors.Reason with New and WrapIf in dut_visibility\n\nRefactor dut_visibility_execs.go to replace deprecated errors.Reason and\nerrors.Fmt with errors.New and errors.WrapIf from\ngo.chromium.org/luci/common/errors per codebase conventions, simplify\nreturn statement, and fix docstring and error grammar.\n\nBUG\u003dNone\nTEST\u003dgo test ./...; golangci-lint run .\nTAG\u003dagy\n\nChange-Id: Ife1b319c8862199071693c6877982681a5ea2cea\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8424018\nReviewed-by: Tiffany Zhang \u003czhangtiff@chromium.org\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83380}\n"
    },
    {
      "commit": "9b982551bc5362397b248d1b8035753c4c682191",
      "tree": "a4c39c5d6f2f2716fe0fd1c49ec5391f28fb822e",
      "parents": [
        "c57bd91f3aead6eb0714924c40b3f0d9277f270d"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Fri Sep 18 15:09:43 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 15:09:43 2026"
      },
      "message": "Roll luci-py from 5411e727d3b7 to b48070890f99 (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-py.git/+log/5411e727d3b7..b48070890f99\n\n2026-09-18 chromium-autoroll@skia-public.iam.gserviceaccount.com Roll CAS Client from fa8afb264db5 to 3817b11a153d\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-py-infra-autoroll\nPlease CC iannucci@google.com,luci-eng@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: iannucci@google.com\nChange-Id: I52b5bd218d17ec54ec2355fe53192eed69694be0\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8430716\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83379}\n"
    },
    {
      "commit": "c57bd91f3aead6eb0714924c40b3f0d9277f270d",
      "tree": "4d74d4dfca514940ea7765f2edf97a79b7450db8",
      "parents": [
        "3e4f5e68df0b0ff12624bad09cc1853652efd399"
      ],
      "author": {
        "name": "recipe-roller",
        "email": "recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 15:06:48 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 15:06:48 2026"
      },
      "message": "Roll recipe dependencies (trivial).\n\nThis is an automated CL created by the recipe roller. This CL rolls\nrecipe changes from upstream projects (depot_tools) into this repository.\n\nThe build that created this CL was\nhttps://ci.chromium.org/b/8670311463397605985\n\ndepot_tools:\nhttps://chromium.googlesource.com/chromium/tools/depot_tools.git/+/7f2ac24f332d4778fdb254cd4d44ca6920c0192c\n  7f2ac24 (agrieve@chromium.org)\n      Add a presubmit output_parser that accepts stderr / stdout sepa...\n\nPlease check the following references for more information:\n- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller\n- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback\n- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md\n\nUse https://goo.gl/noib3a to file a bug.\n\nR\u003diannucci@chromium.org\n\nRecipe-Tryjob-Bypass-Reason: Autoroller\nIgnore-Freeze: Autoroller\nBugdroid-Send-Email: False\nChange-Id: I83a74b79590d0134c94f329e24be6a3f7fdc86d7\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8422252\nCommit-Queue: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com \u003crecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\u003e\nBot-Commit: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com \u003crecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83378}\n"
    },
    {
      "commit": "3e4f5e68df0b0ff12624bad09cc1853652efd399",
      "tree": "8d789b6c1a5d013ad589ee981d08c7779d97aa6d",
      "parents": [
        "3817b11a153d12984e8c2ed80855938fa2dfef50"
      ],
      "author": {
        "name": "Misha Beliy",
        "email": "mykhailobilyi@google.com",
        "time": "Fri Sep 18 14:57:52 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 14:57:52 2026"
      },
      "message": "[satlab] Wire Ctrl-C to the sign-in it is supposed to cancel\n\n`satlab login` already knew what to do about an interrupt: poll returns\nas soon as the context is done, and Run turns that into a silent exit\n130. Nothing ever cancelled the context, though, so Ctrl-C only reached\nthe process as the default disposition and both branches were dead code.\nThe status was 130 either way, which is how this got past review; what\nwas lost is the deferred cleanup around it.\n\nOnly SIGINT is taken over. luci/common/system/signals counts SIGTERM as\nan interrupt too, and routing it here would report a terminated command\nas 130 -- the status of a signal it never received.\n\nTwo smaller fixes fell out of the same path. The handler is given back\nonce the context is done, so a second Ctrl-C still kills a command that\nfails to wind down. And an interrupt part way through a poll arrives as\na transport error, which the loop retried; past the device code deadline\nthat turned a Ctrl-C into exit 1 and a message about a timeout.\n\nThe regression test re-executes the test binary and signals it there.\nNothing in-process can cover a missing handler, since that shows up as\nthe process dying on the signal. It covers SIGTERM as well, so the split\nabove cannot be undone quietly.\n\nWhile here, two descriptions justified the device flow with a redirect\nit never used. What rules out LUCI\u0027s interactive login is the OAuth\nclient: CreateLoginSession refuses Satlab\u0027s, as it is not on the\nallowlist. The terminal that flow insists on is a second obstacle, and\nsatlabrpcserver\u0027s rather than the CLI\u0027s.\n\nBUG\u003db:548497403\nTEST\u003dgo test ./common/... ./satlab/...\nTEST\u003dsatlab login, then Ctrl-C at the prompt: exits 130, says nothing\nTEST\u003dsatlab login against the real endpoint, signed in end to end\nTEST\u003dprpc CreateLoginSession: refuses Satlab\u0027s client, accepts default\nR\u003dfilipek@google.com, jakubowskit@google.com, rafalgawel@google.com\n\nChange-Id: If92a90205ab0b56fd3aebee58af03a57c5fcd7a8\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8420744\nReviewed-by: Przemysław Filipek \u003cfilipek@google.com\u003e\nReviewed-by: Rafał Gaweł \u003crafalgawel@google.com\u003e\nCommit-Queue: Misha Bilyi \u003cmykhailobilyi@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83377}\n"
    },
    {
      "commit": "3817b11a153d12984e8c2ed80855938fa2dfef50",
      "tree": "27b1e4bfa524dcb60301fbd6e668d8a19b45906f",
      "parents": [
        "d7531f1163075f94276ccaecfd4b5122f9a6e846"
      ],
      "author": {
        "name": "images-pins-roller",
        "email": "images-pins-roller@chops-service-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 06:31:28 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 06:31:28 2026"
      },
      "message": "[images] Roll pinned docker image tags.\n\nUpdated pins:\n  * docker.io/library/ubuntu:resolute\n  * docker.io/library/ubuntu:26.04\n  * docker.io/library/ubuntu:jammy\n  * docker.io/library/ubuntu:24.04\n  * docker.io/library/ubuntu:noble\n  * docker.io/library/ubuntu:22.04\n\nR\u003dvadimsh@chromium.org\n\nChange-Id: I3e67bd6c2b7654ed70221ac1c3e4fdff47c8c27f\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8427682\nCommit-Queue: images-pins-roller@chops-service-accounts.iam.gserviceaccount.com \u003cimages-pins-roller@chops-service-accounts.iam.gserviceaccount.com\u003e\nBot-Commit: images-pins-roller@chops-service-accounts.iam.gserviceaccount.com \u003cimages-pins-roller@chops-service-accounts.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83376}\n"
    },
    {
      "commit": "d7531f1163075f94276ccaecfd4b5122f9a6e846",
      "tree": "b285779ebe0a63890fe66a45981f19d147d583ff",
      "parents": [
        "57a9b3b021a9dd6bb405d9e0cfb85f49bf3c4adf"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Fri Sep 18 06:21:39 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 06:21:39 2026"
      },
      "message": "Roll chromiumos/infra/proto from 043a4950d2ba to 09384863c799 (1 revision)\n\nhttps://chromium.googlesource.com/chromiumos/infra/proto.git/+log/043a4950d2ba..09384863c799\n\n2026-09-18 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial).\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/cros-proto-infra-autoroll\nPlease CC chromeos-continuous-integration-fire-hose@google.com,seanabraham@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nBug: None\nTbr: chromeos-continuous-integration-fire-hose@google.com\nChange-Id: Icfafc07b0a8c2d7ef4687c353c497bc13a86032e\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8422656\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83375}\n"
    },
    {
      "commit": "57a9b3b021a9dd6bb405d9e0cfb85f49bf3c4adf",
      "tree": "ca4124eabf2bbd8468696ae72b5eae635b736f42",
      "parents": [
        "32c59c6d99a2cfa6838225ef859f05d9111a2d3a"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Fri Sep 18 06:08:03 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 06:08:03 2026"
      },
      "message": "Roll chromiumos/config from 04d666937932 to a22a7ea6887f (1 revision)\n\nhttps://chromium.googlesource.com/chromiumos/config.git/+log/04d666937932..a22a7ea6887f\n\n2026-09-18 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial).\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/chromiumos-config-infra-autoroll\nPlease CC andrewlamb+autoroll@google.com,andrewlamb@google.com,chromeos-infra-discuss@google.com,pprabhu+autoroll@google.com,pprabhu@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: andrewlamb+autoroll@google.com,pprabhu+autoroll@google.com\nChange-Id: Ie390be8b611656850ba42e930a034a05291d3b62\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8427736\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83374}\n"
    },
    {
      "commit": "32c59c6d99a2cfa6838225ef859f05d9111a2d3a",
      "tree": "27a3a20f5eb929717b038eb7f55e5f636a50a7d9",
      "parents": [
        "c07432ae43d98151b149de5992f2d10981bf7e18"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Fri Sep 18 06:06:13 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 06:06:13 2026"
      },
      "message": "Roll luci-go from 3e63417366f9 to dc0e2ed7a963 (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/3e63417366f9..dc0e2ed7a963\n\n2026-09-18 jwata@google.com [cas] Test file parent path extraction in createDirectories.\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC iannucci@google.com,luci-eng@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: iannucci@google.com\nChange-Id: I12ead7a8a63ea01817f34a36a152974a9256cb0f\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8428525\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83373}\n"
    },
    {
      "commit": "c07432ae43d98151b149de5992f2d10981bf7e18",
      "tree": "e7df311c8b54d1a229e9367dfc9e99d4b76250f0",
      "parents": [
        "f09a2ffa6fdcc0bb555460296ea9c4f89a56f3e3"
      ],
      "author": {
        "name": "Roman Margold",
        "email": "rmargold@google.com",
        "time": "Fri Sep 18 05:56:09 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 05:56:09 2026"
      },
      "message": "[predator] Restrict triage updates to an allowlist of properties\n\nCrashAnalysis.Update() applied every key in the caller-supplied dict\nwith a bare setattr(), so the /\u003cclient\u003e/triage-analysis handler could\noverwrite any property of a stored analysis, including analysis\n*inputs* such as regression_repository, stacktrace_str and\ndependencies.\n\nOverwriting regression_repository is the entry point of the\nstored-SSRF chain in the linked bug: a later rerun of the poisoned\nanalysis makes Predator fetch an attacker-chosen host. (The\ncredential-exfiltration end of that chain was fixed separately by\ne78026bb2d, which stopped GitilesRepository attaching an OAuth token\nto arbitrary hosts.)\n\nRestrict Update() to TRIAGE_UPDATABLE_PROPERTIES: the nine properties\nthe result-feedback page actually submits -- four *_triage_status\nverdicts, the four corresponding culprit_* corrections, and the\nfree-form note. That set is exactly what triageAnalysisResult() and\nsaveCulprits() build in result_feedback.html and\nclusterfuzz_result_feedback.html, and exactly what the pre-existing\ntestUpdateResultProperty/testUpdateNote cases exercise.\n\nAlso stop _UpdateAnalysis() deriving the triage_history record from\nunvalidated keys: previously {\"bogus_triage_status\": 9999} was\nignored by Update() but still reached\nTRIAGE_STATUS_TO_DESCRIPTION[...], raising a KeyError and returning\nHTTP 500.\n\nRemaining hardening for this bug is tracked separately there.\n\nR\u003dsrgbrt@google.com, titouan@google.com\n\nTAG\u003dagy\nCONV\u003df9a5f480-3ef3-41a2-b39f-e3c3832e06bf\n\nBug: 537517946\nChange-Id: I706661e5d9a6ef802a8d7be7ce9e731f18bce732\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8422834\nReviewed-by: Sergey Bartosh \u003csrgbrt@google.com\u003e\nCommit-Queue: Sergey Bartosh \u003csrgbrt@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83372}\n"
    },
    {
      "commit": "f09a2ffa6fdcc0bb555460296ea9c4f89a56f3e3",
      "tree": "91b43ba2ffa7cb82156b37ada0f802126b0da90e",
      "parents": [
        "a669981fadf25bc8fc4cc17938bd780896c07481"
      ],
      "author": {
        "name": "recipe-roller",
        "email": "recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 05:55:19 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 05:55:19 2026"
      },
      "message": "Roll recipe dependencies (trivial).\n\nThis is an automated CL created by the recipe roller. This CL rolls\nrecipe changes from upstream projects (recipe_engine) into this repository.\n\nThe build that created this CL was\nhttps://ci.chromium.org/b/8670346067466759409\n\nrecipe_engine:\nhttps://chromium.googlesource.com/infra/luci/recipes-py.git/+/b46cb6da5f16f2ca116f486953d4a6d641579d51\n  b46cb6d (jwata@google.com)\n      [cas] Roll CAS Client to b38049afc44e.\n\nPlease check the following references for more information:\n- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller\n- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback\n- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md\n\nUse https://goo.gl/noib3a to file a bug.\n\nR\u003diannucci@chromium.org\n\nRecipe-Tryjob-Bypass-Reason: Autoroller\nIgnore-Freeze: Autoroller\nBugdroid-Send-Email: False\nChange-Id: Ide6010a660c4fc6a5dab20f8d196d35eaea73975\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8429662\nCommit-Queue: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com \u003crecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\u003e\nBot-Commit: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com \u003crecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83371}\n"
    },
    {
      "commit": "a669981fadf25bc8fc4cc17938bd780896c07481",
      "tree": "f795963ae68e7b8998b34c12eddddda6b965121c",
      "parents": [
        "0b6751f9597cf17dd11f6b2edd69d2e40ed4cd9a"
      ],
      "author": {
        "name": "Jeremy Bettis",
        "email": "jbettis@google.com",
        "time": "Fri Sep 18 05:40:58 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 05:40:58 2026"
      },
      "message": "cros-fw-provision: Hold kernel wake lock during slow ADB operations\n\nAndroid DUTs enter idle sleep 120 seconds after boot because adb shell\ncommands do not reset the user activity timer and flashrom\u0027s\ndisable_power_management() only writes to ChromeOS powerd\u0027s\n/run/lock/power_override/flashrom.lock. When the SoC suspends mid-flash,\nthe TCP ADB connection drops and futility fails with exit status 255.\n\nAdd reference-counted wake lock management using /sys/power/wake_lock\nand /sys/power/wake_unlock (with lock name \"cros-fw-provision\") on\nAndroid DUTs:\n- Acquire the wake lock across FirmwareUpdateRoState and\n  FirmwareUpdateRwState so the DUT stays awake continuously across\n  archive download, extraction, EC RW swap, and flashing.\n- Acquire the wake lock during FlashWithFutility, runFutilityViaSSH,\n  ExtractFile, SwapECRWImage, and any DUTCmd* invocation with\n  deadline \u003e 1 minute or running futility.\n- Retain the wake lock when RestartRequired is true until RestartDut\n  reboots the DUT (or doProvision exits) to prevent suspend between\n  flashing and post-install cleanup/reboot.\n- Re-acquire the wake lock on ConnectToDUT if wakeLockCount \u003e 0 (e.g.\n  after ectool reboot_ec during write-protect clearing).\n\nBUG\u003db:562156827\nTEST\u003dgo test ./...\nTEST\u003dRan cros-fw-provision cli against Android DUT (ruby) and verified wake lock/unlock logs and STATUS_SUCCESS\nTAG\u003dagy\nCONV\u003d892bcb47-bf1d-4f00-b079-98065a15f923\n\nChange-Id: I3d4c366edc6794ad5b12d42ef42c3d9fffd0cdc1\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8414300\nReviewed-by: Kshitij Shah \u003ctij@google.com\u003e\nCommit-Queue: Jeremy Bettis \u003cjbettis@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83370}\n"
    },
    {
      "commit": "0b6751f9597cf17dd11f6b2edd69d2e40ed4cd9a",
      "tree": "9ecf49c99e36f5d62c1d59328cc33b893fccbbc2",
      "parents": [
        "6adfb25d4e51781087e018d8b09a3dfaceacfe6f"
      ],
      "author": {
        "name": "Sergey Bartosh",
        "email": "srgbrt@google.com",
        "time": "Fri Sep 18 05:40:20 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 05:40:20 2026"
      },
      "message": "predator: Use HTML-safe JSON serialization in ToJson filter\n\nPrevent potential stored XSS in Predator feedback templates by\nreplacing Python standard json.dumps in ToJson with Jinja2\u0027s\nhtmlsafe_json_dumps. This ensures HTML characters like \u0027\u003c\u0027, \u0027\u003e\u0027,\nand \u0027\u0026\u0027 are escaped to Unicode escape sequences (e.g. \\u003c) when\nrendered inside inline \u003cscript\u003e blocks.\n- Update ToJson in base_handler to use htmlsafe_json_dumps while\n  preserving key sorting and datetime serialization.\n- Add unit tests for ToJson HTML escaping and template rendering.\n\nBug: b/548261316\nChange-Id: I18e086473310af0ff593eb32842120bd6d4c1539\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8419623\nCommit-Queue: Sergey Bartosh \u003csrgbrt@google.com\u003e\nReviewed-by: Roman Margold \u003crmargold@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83369}\n"
    },
    {
      "commit": "6adfb25d4e51781087e018d8b09a3dfaceacfe6f",
      "tree": "d17764d9747ad9bf26bc955d5ab67e3f84e6b418",
      "parents": [
        "4c2ee5c9bcfd35b21d5dd1803fab5e3ccc8641e2"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Fri Sep 18 05:33:25 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 05:33:25 2026"
      },
      "message": "Roll luci-go from e6706b5ccc5a to 3e63417366f9 (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/e6706b5ccc5a..3e63417366f9\n\n2026-09-18 heidichan@google.com [Bisection] Enforce project boundary validation on Gerrit actions\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC iannucci@google.com,luci-eng@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: iannucci@google.com\nChange-Id: I5034fd209aea9624282a538eede98a7ba76a1345\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8421472\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83368}\n"
    },
    {
      "commit": "4c2ee5c9bcfd35b21d5dd1803fab5e3ccc8641e2",
      "tree": "251fb37f6024a1c9640080016eab9a52caad5acc",
      "parents": [
        "db140337afeb8ce0aa8daee63d729c8a0c9c3824"
      ],
      "author": {
        "name": "Alex Ovsienko",
        "email": "ovsienko@google.com",
        "time": "Fri Sep 18 02:08:56 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 02:08:56 2026"
      },
      "message": "[dockerbuild] Package pip 25.0.1 universal wheel\n\nThird-party tools outside Chromium control (such as tc39/test262\u0027s\nlint.py in V8) unconditionally import pip at module import time. Since\nuv virtual environments do not include pip by default, package pip as a\nuniversal wheel so vpython.toml specs can depend on it when required by\nexternal dependencies.\n\nBug: 491263752\nTAG\u003dagy\nCONV\u003db53bdf70-37e7-4696-be50-8ee6fc19b1f8\n\nChange-Id: Ib1cbbf0c681bcde769b6d784b1df7c67b7b3f1fb\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8424100\nReviewed-by: Takuto Ikuta \u003ctikuta@chromium.org\u003e\nCommit-Queue: Alex Ovsienko \u003covsienko@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83367}\n"
    },
    {
      "commit": "db140337afeb8ce0aa8daee63d729c8a0c9c3824",
      "tree": "778abfaf392c6789bf9aeaea31017adbf93eb281",
      "parents": [
        "2218e4b200f1257f20914572216942ec0ced5637"
      ],
      "author": {
        "name": "yichiyan",
        "email": "yichiyan@google.com",
        "time": "Fri Sep 18 01:39:27 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 01:39:27 2026"
      },
      "message": "Support the excluded params in Tradefed\n\nAndroid Desktop is not required to run the instant_app parameter, skipping when param in the excludedTradefedParams list.\n\nBUG\u003db:562185948\nTEST\u003dgo test.\n\nChange-Id: I60dbef812b9125437af447d6460a36d1c904546b\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8428581\nReviewed-by: Judy Wu \u003cjinrongwu@google.com\u003e\nCommit-Queue: Terry Yan \u003cyichiyan@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83366}\n"
    },
    {
      "commit": "2218e4b200f1257f20914572216942ec0ced5637",
      "tree": "38b5e720956cdfc89991acb818fc88b502e6b77e",
      "parents": [
        "f094e02c08e49731d7571ee646157920d690f48a"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Fri Sep 18 01:32:32 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 01:32:32 2026"
      },
      "message": "cros/provision: Detect missing USB drive and update servo state\n\nDetect when servod or ServoNexus fails to locate the physical USB flash\ndrive during image download or mux switching in SetupUSBState. Fail fast\nwith STATUS_PRE_PROVISION_USB_NOT_DETECTED instead of retrying fallback\nimage URLs.\n\nIn cros_test_runner UpdateDutStateCmd, set ServoUsbState to\nHARDWARE_NOT_DETECTED when STATUS_PRE_PROVISION_USB_NOT_DETECTED is\nreported so that recovery actions can accurately identify missing Servo\nUSB drives.\n\nBUG\u003db:562529021\nTEST\u003dgo test ./cros/cmd/provision/common-utils/cross-over/... ./cros/cmd/cros_test_runner/internal/commands/...\nTAG\u003dagy\nCONV\u003da95d7b3b-9488-489b-84fa-69776f9b75bc\n\nChange-Id: I3bdd480f0361a92addc8dfbbc4a52a9da44b1065\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8418598\nReviewed-by: Terry Yan \u003cyichiyan@google.com\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83365}\n"
    },
    {
      "commit": "f094e02c08e49731d7571ee646157920d690f48a",
      "tree": "b70ce08e7772fbc02a04484d1cecd29bb1b175b3",
      "parents": [
        "6c6ef0ff28bb1a133afb76fa80638832aea8745f"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Fri Sep 18 00:38:36 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Sep 18 00:38:36 2026"
      },
      "message": "Roll luci-go from 53441cb29817 to e6706b5ccc5a (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/53441cb29817..e6706b5ccc5a\n\n2026-09-18 ayatane@google.com [auth/tokenserver] Ensure stable delegation token fingerprint\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC luci-eng@google.com,yiwzhang@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: yiwzhang@google.com\nChange-Id: Ib17d090267b2bbb4e42900fb73c23617f0ca63f4\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8421651\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83364}\n"
    },
    {
      "commit": "6c6ef0ff28bb1a133afb76fa80638832aea8745f",
      "tree": "ace0aec970231f0993803f1a9e2e732bb0c44734",
      "parents": [
        "f9c48effe0c4368633871ba908cb063c5389c057"
      ],
      "author": {
        "name": "anushruth",
        "email": "anushruth+git@google.com",
        "time": "Thu Sep 17 22:58:27 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 22:58:27 2026"
      },
      "message": "ufs: Add public RecordChanges API for change events v2\n\nImplement the high-level RecordChanges entry point in app/changeevents:\n- Retrieves namespace, user attribution, and active OpenTelemetry trace context\n- Derives destination BigQuery dataset from security realm\n- Computes reflection deltas and assigns UUIDv7 event identifiers\n- Transactionally enqueues ChangeEventBatch tasks to LUCI Task Queue\n- Encapsulates functional options (WithIgnoredFields) and normalizes typed nils\n- Integration tests verifying creation, deletion, and mock BQ export\n\nBug: 555880085\nTEST\u003dgo test -v ./app/changeevents/...\n\nTAG\u003dagy\nCONV\u003ddf92e607-8815-4943-8eae-fd28b159ab50\n\nChange-Id: Ibc3fef620d789b2dfdfba0de8dcc2dd3ad27cf2c\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8340308\nReviewed-by: Phoebe Tang \u003cphoebetang@google.com\u003e\nCommit-Queue: Anushruth Sasivehalli \u003canushruth@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83363}\n"
    },
    {
      "commit": "f9c48effe0c4368633871ba908cb063c5389c057",
      "tree": "599e609a7947350b8782d020b37b149cfb41d129",
      "parents": [
        "9cc2a556292c227454694d2851496c13a3f2ce86"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 22:54:37 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 22:54:37 2026"
      },
      "message": "cros/recovery: wire servo CBI restore into Android deep repair\n\nAdd \"Restore CBI contents from UFS by servo (allow fail)\" immediately after\nAP firmware flashing by servo in:\n- \"Update FW and install Android OS from servo USB-drive\"\n- \"Install OS in recovery mode by booting from servo USB-drive (with FW update)\"\n- \"Update FW from fw-image by servo and wait for boot\"\n\nFlashing EC firmware via servo can wipe or reset CBI EEPROM contents on\ndevices such as sapphire (b/561839161). Restoring formatted CBI data from\nUFS inventory over the servod EC UART console immediately after firmware\nflashing ensures that board info tags (e.g., skuid, ufsc, dram_part_num) are\nlatched via servo cold reset before OS installation or recovery boot.\n\nRegenerate recovery configuration trees via make trees.\n\nBUG\u003db:561839161\nBUG\u003db:554121879\nTEST\u003dmake trees\nTEST\u003dgo test ./config/...\nTEST\u003dgo test -run TestConfigTreeChanges .\nTAG\u003dagy\nCONV\u003d53c04325-6c61-44ad-b4e8-17f2aadde506\n\nChange-Id: I722d1c92bd6298e96f213aac92f50c2cd7e7c3dd\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8411521\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nReviewed-by: Anushruth Sasivehalli \u003canushruth@chromium.org\u003e\nCommit-Queue: Anushruth Sasivehalli \u003canushruth@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83362}\n"
    },
    {
      "commit": "9cc2a556292c227454694d2851496c13a3f2ce86",
      "tree": "895b7272d2faf5b7a557d0616d9653268df9caa6",
      "parents": [
        "4fda9960adaee199a8db9988736a02f085a5c104"
      ],
      "author": {
        "name": "Jeremy Bettis",
        "email": "jbettis@google.com",
        "time": "Thu Sep 17 22:24:12 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 22:24:12 2026"
      },
      "message": "firmware-filter: Remove gs://chromeos-releases from GCS search paths\n\nfirmware-filter does not have access to the gs://chromeos-releases\nbucket. Remove the canary-channel search in gs://chromeos-releases\nfrom findGCSPath.\n\nBUG\u003dNone\nTEST\u003dgo test ./cros/cmd/ctpv2-filters/firmware-filter/...\nTAG\u003dagy\nCONV\u003d221b51cb-1a42-4e5e-9f5b-b8486378130a\n\nChange-Id: I67ab740a6b496627fa1c92a3c09b85c56973aba7\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8418874\nReviewed-by: Kshitij Shah \u003ctij@google.com\u003e\nCommit-Queue: Jeremy Bettis \u003cjbettis@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83361}\n"
    },
    {
      "commit": "4fda9960adaee199a8db9988736a02f085a5c104",
      "tree": "26f4c2ebe503def5a7570bfb2e614fe557edc721",
      "parents": [
        "adc11b732c00aa4810c6f06884b6ed864825fdf2"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 22:15:13 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 22:15:13 2026"
      },
      "message": "recovery: use errors.Fmt inside if err !\u003d nil in release_info_execs\n\nRefactor release_info_execs.go to use errors.Fmt instead of errors.WrapIf\ninside the if err !\u003d nil block per codebase error handling conventions,\nsince err is already guaranteed non-nil.\n\nBUG\u003dNone\nTEST\u003dgo test ./...; golangci-lint run .\nTAG\u003dagy\n\nChange-Id: Ia63b1ddfe15d412e8ab59831a8c333281a7f3d56\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8423231\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nReviewed-by: Tiffany Zhang \u003czhangtiff@chromium.org\u003e\nCommit-Queue: Tiffany Zhang \u003czhangtiff@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83360}\n"
    },
    {
      "commit": "adc11b732c00aa4810c6f06884b6ed864825fdf2",
      "tree": "6f43431ed288e5c08ce330881838dc8eb4e4f22e",
      "parents": [
        "54c248d63ea6457284f7856e0326aaae47b45525"
      ],
      "author": {
        "name": "Jeremy Bettis",
        "email": "jbettis@google.com",
        "time": "Thu Sep 17 22:12:43 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 22:12:43 2026"
      },
      "message": "cros-fw-provision: always pass live\u003d1 to ectool pdchipinfo\n\nPass \u00271\u0027 (live read) on all \u0027ectool pdchipinfo \u003cport\u003e 1\u0027 attempts\nrather than only on retry, matching ChromeOS runtime_probe behavior.\nThis avoids reading uninitialized or stale cached PDC firmware versions\nwhile retries handle any transient EC_RES_BUSY when the PDC state\nmachine is busy.\n\nBUG\u003db:562139145\nTEST\u003dgo test ./...\nTAG\u003dagy\nCONV\u003d6b4a8eec-03ed-4106-a0f8-fa06f04a8413\n\nChange-Id: I681e4c5c6f8c73f78e5f9b96b8c0b7b67af6d756\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8422164\nReviewed-by: Kshitij Shah \u003ctij@google.com\u003e\nCommit-Queue: Jeremy Bettis \u003cjbettis@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83359}\n"
    },
    {
      "commit": "54c248d63ea6457284f7856e0326aaae47b45525",
      "tree": "b7e756aa49f4487b20f008a0e6daa418942c0e8f",
      "parents": [
        "6b5cd52309345e46ecec2a60c5c6140d62c7da59"
      ],
      "author": {
        "name": "Greg NISBET",
        "email": "gregorynisbet@google.com",
        "time": "Thu Sep 17 22:03:05 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 22:03:05 2026"
      },
      "message": "crosskylabadmin: Add dummy TaskBackendLite implementation\n\nAdd TaskBackendLiteServerImpl and DecoratedTaskBackendLite to handle\nRunTask requests with a dummy task response, and register the server\nin both App Engine frontend and Cloud Run crosadm.\n\nBUG\u003d562576798\nTEST\u003dgo test ./...\nTAG\u003dagy\nCONV\u003dfcb86d48-e3d0-44ab-94f1-d492635b2976\n\nChange-Id: I1b4846342ee64e4a944a5508e34ce714fc7d1ab7\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8418571\nReviewed-by: Bryan Ni \u003cbniche@google.com\u003e\nCommit-Queue: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83358}\n"
    },
    {
      "commit": "6b5cd52309345e46ecec2a60c5c6140d62c7da59",
      "tree": "695de9114f39a1b181596fa8411149f93a06158f",
      "parents": [
        "9e47c23df33f28df8dfe8fdb75821ff52be1e522"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 22:02:54 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 22:02:54 2026"
      },
      "message": "dt-converter: Add stable-version subcommand to query DUT stable version\n\nAdd the stable-version subcommand to dt-converter to query labservice\nfor a DUT\u0027s stable OS and RO firmware image information per host. By\ndefault, the command queries both Android OS (androidos) and ChromeOS\n(cros) stable versions in a single run and prints separate Android and\nChromeOS data.\n\nMotivation \u0026 Details:\n- CrossOver and Android Desktop test harnesses (such as Mobile Harness\n  and TradeFed) need to resolve target Android OS and ChromeOS build\n  targets, build IDs, and image paths for a DUT prior to running\n  foil-provision.\n- Queries labservice DutTopology (dut-info) first for the required host\n  (-unit) to resolve its board, model, and pools, and passes hostname,\n  board, model, and pools down in StableVersionTarget to labservice\n  GetStableVersion so that local recovery version JSON files and custom\n  UFS namespaces are resolved accurately.\n- Queries both \u0027androidos\u0027 and \u0027cros\u0027 device types from labservice by\n  default when -device-type is omitted, tolerating single-OS lookup\n  errors when a device only has one OS type configured.\n- Supports optional -device-type filtering (\u0027androidos\u0027, \u0027android\u0027,\n  \u0027cros\u0027, or \u0027chromeos\u0027) to query a single OS type.\n- Implements ExtractBuildInfo to parse build target and build ID from\n  Android Build Explorer paths (artifacts_list/\u003cbuild_id\u003e/\u003ctarget\u003e/...)\n  and ChromeOS GCS image paths (\u003cboard\u003e-release/\u003cversion\u003e).\n- Supports both human-readable prefixed key-value text output and\n  structured JSON output (-json).\n\nExpected Output Examples:\n\n1. Default Text Output (queries both Android OS and ChromeOS):\n  $ dt-converter stable-version -unit chromeos8-row1-rack2-host24\n  android_build_target: brya-trunk_staging-userdebug\n  android_build_id: 12345678\n  android_os_version: 12345678\n  android_os_image_path: android-build/build_explorer/artifacts_list/12345678/brya-trunk_staging-userdebug/brya-ota-12345678.zip\n  android_firmware_ro_version: Google_Brya.14505.0.0\n  android_firmware_ro_image_path: gs://chromeos-image-archive/firmware-brya-14505.B/firmware_from_source.tar.bz2\n  cros_build_target: brya-release\n  cros_build_id: R130-16033.0.0\n  cros_os_version: R130-16033.0.0\n  cros_os_image_path: brya-release/R130-16033.0.0\n  cros_firmware_ro_version: Google_Brya.14505.0.0\n  cros_firmware_ro_image_path: brya-firmware/R130-14505.0.0\n\n2. Filtered Text Output (-device-type androidos):\n  $ dt-converter stable-version -unit chromeos8-row1-rack2-host24 -device-type androidos\n  android_build_target: brya-trunk_staging-userdebug\n  android_build_id: 12345678\n  android_os_version: 12345678\n  android_os_image_path: android-build/build_explorer/artifacts_list/12345678/brya-trunk_staging-userdebug/brya-ota-12345678.zip\n  android_firmware_ro_version: Google_Brya.14505.0.0\n  android_firmware_ro_image_path: gs://chromeos-image-archive/firmware-brya-14505.B/firmware_from_source.tar.bz2\n\n3. JSON Output (-json):\n  $ dt-converter stable-version -unit chromeos8-row1-rack2-host24 -json\n  {\n    \"android\": {\n      \"build_target\": \"brya-trunk_staging-userdebug\",\n      \"build_id\": \"12345678\",\n      \"os_version\": \"12345678\",\n      \"os_image_path\": \"android-build/build_explorer/artifacts_list/12345678/brya-trunk_staging-userdebug/brya-ota-12345678.zip\",\n      \"firmware_ro_version\": \"Google_Brya.14505.0.0\",\n      \"firmware_ro_image_path\": \"gs://chromeos-image-archive/firmware-brya-14505.B/firmware_from_source.tar.bz2\"\n    },\n    \"cros\": {\n      \"build_target\": \"brya-release\",\n      \"build_id\": \"R130-16033.0.0\",\n      \"os_version\": \"R130-16033.0.0\",\n      \"os_image_path\": \"brya-release/R130-16033.0.0\",\n      \"firmware_ro_version\": \"Google_Brya.14505.0.0\",\n      \"firmware_ro_image_path\": \"brya-firmware/R130-14505.0.0\"\n    }\n  }\n\nBUG\u003db:562152171\nTEST\u003dgo test ./cros/cmd/dt-converter/...\nTAG\u003dagy\nCONV\u003dac2009fb-2637-4281-badc-6b863a44b522\n\nChange-Id: Ia7fb8a4ee249a6e27e5cd200d39f16d2c59c868a\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8418878\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nReviewed-by: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83357}\n"
    },
    {
      "commit": "9e47c23df33f28df8dfe8fdb75821ff52be1e522",
      "tree": "45b6278a1572983fa1d5b0b5d86cc027fe1111a2",
      "parents": [
        "925275a92a29420ea5594f8735357c76dc6f5e49"
      ],
      "author": {
        "name": "Greg NISBET",
        "email": "gregorynisbet@google.com",
        "time": "Thu Sep 17 21:54:10 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 21:54:10 2026"
      },
      "message": "karte: Implement sweepObservations Datastore cleaner\n\nImplement sweepObservations in internal/frontend/sweep.go using\nQueryKeyBatchesBefore to sweep and delete old observations from Datastore\nup to the configured limit. Add observation tests to sweep_test.go.\n\nBUG\u003d358676120\nTEST\u003dgo test ./...\nTAG\u003dagy\nCONV\u003da827cd9f-fff6-44f4-958d-89e4244d187d\n\nChange-Id: Ice651d8f48264d77b9135bdd9ed973b83082cdef\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8306164\nReviewed-by: Congbin Guo \u003cguocb@chromium.org\u003e\nCommit-Queue: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83356}\n"
    },
    {
      "commit": "925275a92a29420ea5594f8735357c76dc6f5e49",
      "tree": "aeeb4603dd30fb6e6f82ba6398d8288bfadb7f2c",
      "parents": [
        "57905c9f4f1abc634d57340b937c1b882b769185"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 21:40:04 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 21:40:04 2026"
      },
      "message": "mallet: consolidate CIPD installation and login instructions in README\n\nConsolidate Mallet CIPD installation and login instructions from\ngo/mallet into README.md so go/mallet can serve as a concise pointer to\nthe canonical documentation in the repository.\n\nBUG\u003db:561455816\nTAG\u003dagy\nCONV\u003d9c9144d2-4d08-4802-90f3-a08f04fbf291\n\nChange-Id: I8d7a8d78e0f9d2261f4277c70a116a2975f75e61\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8420902\nCommit-Queue: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nReviewed-by: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83355}\n"
    },
    {
      "commit": "57905c9f4f1abc634d57340b937c1b882b769185",
      "tree": "939191cd56d57a54695e23d443e4e2d6b240e177",
      "parents": [
        "4a5bf2ace0cc97d887d19ef52c6b45f4f94b7359"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 21:36:07 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 21:36:07 2026"
      },
      "message": "labservice: Add StableVersion client helper to query DUT stable version\n\nAdd StableVersion client helper to infra/cros/lib/labservice to query\nthe InventoryService.GetStableVersion gRPC endpoint and return the\nresolved labapi.StableVersion protobuf message.\n\nMotivation \u0026 Details:\n- Test harnesses and CLI utilities (such as dt-converter) need a\n  shared gRPC client helper to query target OS and firmware stable\n  versions for a Device Under Test (DUT) from labservice.\n- The StableVersion helper manages gRPC client connection lifecycle,\n  invokes InventoryServiceClient.GetStableVersion with the provided\n  GetStableVersionRequest, and validates that the returned protobuf\n  response and its nested StableVersion payload are non-nil.\n- Includes an in-process gRPC test server in labservice_test.go\n  verifying both DutTopology and StableVersion RPC handling, request\n  parameter forwarding, and nil-response error handling.\n\nBUG\u003db:562152171\nTEST\u003dgo test ./cros/lib/labservice/...\nTAG\u003dagy\nCONV\u003dac2009fb-2637-4281-badc-6b863a44b522\n\nChange-Id: I1bdf335fb274da676d40eabad07532d9d71e6d27\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8422165\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nReviewed-by: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCommit-Queue: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83354}\n"
    },
    {
      "commit": "4a5bf2ace0cc97d887d19ef52c6b45f4f94b7359",
      "tree": "bbfd4e3ae78bab27e058a1eb834dc1d7a410ac27",
      "parents": [
        "e624a9aa470ed28edc6123ced9f816ca87fd5b24"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 21:12:59 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 21:12:59 2026"
      },
      "message": "recovery: replace errors.Reason with New in crypto_home_status_test\n\nRefactor crypto_home_status_test.go to replace deprecated errors.Reason\nwith errors.New from go.chromium.org/luci/common/errors per codebase\nconventions, and fix test assertion got-before-want formatting.\n\nBUG\u003dNone\nTEST\u003dgo test ./...; golangci-lint run .\nTAG\u003dagy\n\nChange-Id: Ia3865f93947a4d41c00ad64b4c3484365074fb87\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8422825\nReviewed-by: Anushruth Sasivehalli \u003canushruth@chromium.org\u003e\nCommit-Queue: Anushruth Sasivehalli \u003canushruth@chromium.org\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83353}\n"
    },
    {
      "commit": "e624a9aa470ed28edc6123ced9f816ca87fd5b24",
      "tree": "50419a791c0323d231019ccb61c627070a579f79",
      "parents": [
        "626bfe0d33cd90b0f91d248ed618b4fba06aa9b6"
      ],
      "author": {
        "name": "recipe-roller",
        "email": "recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 20:38:46 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 20:38:46 2026"
      },
      "message": "Roll recipe dependencies (trivial).\n\nThis is an automated CL created by the recipe roller. This CL rolls\nrecipe changes from upstream projects (depot_tools) into this repository.\n\nThe build that created this CL was\nhttps://ci.chromium.org/b/8670381299048016321\n\ndepot_tools:\nhttps://chromium.googlesource.com/chromium/tools/depot_tools.git/+/1a91c4bb802179b50776aabcc7d8aa53901a8e80\n  1a91c4b (gavinmak@google.com)\n      Gate --end-of-options in git checkout on Git \u003e\u003d 2.44.0\n\nPlease check the following references for more information:\n- autoroller, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#autoroller\n- rollback, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/workflow.md#rollback\n- cross-repo dependencies, https://chromium.googlesource.com/infra/luci/recipes-py/+/main/doc/cross_repo.md\n\nUse https://goo.gl/noib3a to file a bug.\n\nR\u003diannucci@chromium.org\n\nRecipe-Tryjob-Bypass-Reason: Autoroller\nIgnore-Freeze: Autoroller\nBugdroid-Send-Email: False\nChange-Id: I50803ac6558b60e737ce9145dd3685b48351c1c5\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8423291\nBot-Commit: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com \u003crecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\u003e\nCommit-Queue: recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com \u003crecipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83352}\n"
    },
    {
      "commit": "626bfe0d33cd90b0f91d248ed618b4fba06aa9b6",
      "tree": "d2b71b6029328686be5aed1af9228333fd115387",
      "parents": [
        "67af183bb2b2b1023e79b9290109af234f305c49"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 20:31:53 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 20:31:53 2026"
      },
      "message": "recovery: replace errors.Reason with New in cros_log_crossystem_exec\n\nRefactor cros_log_crossystem_exec.go to replace deprecated errors.Reason\nwith errors.New from go.chromium.org/luci/common/errors per codebase\nconventions, and fix docstring grammar.\n\nBUG\u003dNone\nTEST\u003dgo test ./...; golangci-lint run .\nTAG\u003dagy\n\nChange-Id: I9059b73d69106b09846d305fe4509a68ad93c39c\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8421285\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nReviewed-by: Congbin Guo \u003cguocb@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83351}\n"
    },
    {
      "commit": "67af183bb2b2b1023e79b9290109af234f305c49",
      "tree": "de97aad007168d8703462c5dd95695133503f5ec",
      "parents": [
        "d4c68b212f821e61a925f2c700d5ace624d7e320"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 20:19:35 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 20:19:35 2026"
      },
      "message": "recovery: replace errors.Reason with New and Fmt in cros_gpu_id_execs\n\nRefactor cros_gpu_id_execs.go to replace deprecated errors.Reason with\nerrors.New and use errors.Fmt inside if err !\u003d nil block per codebase\nconventions, and fix error and docstring grammar/phrasing.\n\nBUG\u003dNone\nTEST\u003dgo test ./...; golangci-lint run .\nTAG\u003dagy\n\nChange-Id: Iae90cc959a2da73a27e35067562341ef5568420d\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8423048\nReviewed-by: Anushruth Sasivehalli \u003canushruth@chromium.org\u003e\nCommit-Queue: Anushruth Sasivehalli \u003canushruth@chromium.org\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83350}\n"
    },
    {
      "commit": "d4c68b212f821e61a925f2c700d5ace624d7e320",
      "tree": "11895db485c0cf33e5e9d9c77c238cbff2fe24f2",
      "parents": [
        "4d5d921ad856b8cd404eb81b238212f08645bb92"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Thu Sep 17 19:42:00 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 19:42:00 2026"
      },
      "message": "Roll luci-go from 5ffda3a1adff to 53441cb29817 (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/5ffda3a1adff..53441cb29817\n\n2026-09-17 chanli@chromium.org [Buildbucket] Clean up legacy raw swarming build execution\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC luci-eng@google.com,yiwzhang@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: yiwzhang@google.com\nChange-Id: I0105eded9ee612a02eefc28cc3528c0004d737e6\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8427321\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83349}\n"
    },
    {
      "commit": "4d5d921ad856b8cd404eb81b238212f08645bb92",
      "tree": "9cf548de491a9eb22e390cbf7ae30942ef3a2920",
      "parents": [
        "f546514bba9e9e501849a6c124ae743b0c1082cd"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 19:27:10 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 19:27:10 2026"
      },
      "message": "recovery: make JobRepoUrl non-critical and short-circuit cache detect\n\nShort-circuit cacheAddressDetectionExec when the CacheService address\nis already populated in CFT config scope so that subsequent plans do not\nmake redundant RPC calls to labservice after PlanCrOSBase detects the\naddress.\n\nAlso clear stale JobRepoUrl in updateProvisionedInfoExec before\nresolving the new download URL from scope, and log a warning instead of\nfailing the action if JobRepoUrl generation fails so that missing cache\nserver addresses never block provision info updates.\n\nBUG\u003db:561686138, b:555959948\nTEST\u003dgo test ./internal/execs/cros/...\nTAG\u003dagy\nCONV\u003dbe61a605-80ef-4e05-af65-d6bf09da148f\n\nChange-Id: I6c0fb212b37424ff637ba122e3e30fcc3fc6a072\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8407255\nReviewed-by: Gowri Denduluri \u003cgowriden@google.com\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83348}\n"
    },
    {
      "commit": "f546514bba9e9e501849a6c124ae743b0c1082cd",
      "tree": "f71e930e0ad42430d6d1eed10b9bc7389f172b93",
      "parents": [
        "83c1f9815fde4c63ca7aa81f50f1a2fbc0ee9ff2"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 19:07:56 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 19:07:56 2026"
      },
      "message": "recovery: replace errors.Reason with Fmt in release_info_execs\n\nRefactor release_info_execs.go to replace deprecated errors.Reason and\nerrors.Fmt with errors.Fmt and errors.WrapIf from\ngo.chromium.org/luci/common/errors per codebase conventions, and fix\ndocstring grammar.\n\nBUG\u003dNone\nTEST\u003dgo test ./...; golangci-lint run .\nTAG\u003dagy\n\nChange-Id: I68156de0c08ff316eb0b9d51e583f163eca17464\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8422166\nReviewed-by: Yang Yang \u003cechoyang@chromium.org\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83347}\n"
    },
    {
      "commit": "83c1f9815fde4c63ca7aa81f50f1a2fbc0ee9ff2",
      "tree": "485642626cbd539ddd1209a726bf520c597794e4",
      "parents": [
        "2c5b6afd1d772deb1cb69830177ea00510101e65"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Thu Sep 17 19:06:57 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 19:06:57 2026"
      },
      "message": "Roll luci-go from fbd24248de2e to 5ffda3a1adff (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/fbd24248de2e..5ffda3a1adff\n\n2026-09-17 jiameil@google.com [bisection] Scope review URL query and culprit verification to prevent tree reopen\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC luci-eng@google.com,yiwzhang@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: yiwzhang@google.com\nChange-Id: I8cf45f880f52817f2f6af75257784a33d8e5e92c\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8425474\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83346}\n"
    },
    {
      "commit": "2c5b6afd1d772deb1cb69830177ea00510101e65",
      "tree": "ac21b00ec75a50df582a5d7c6b7b1e6936d64d12",
      "parents": [
        "558d93db2ff8a31ebbeb261d621972cf095ecdaf"
      ],
      "author": {
        "name": "Gowri Denduluri",
        "email": "gowriden@google.com",
        "time": "Thu Sep 17 18:45:20 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 18:45:20 2026"
      },
      "message": "[UFS] dumper: register ufs.puppet_enc.BqDump cron job and tsmon metrics\n\nRegisters the cron dumper ufs.puppet_enc.BqDump in dumper_jobs.go\nand implements end-to-end Gitiles config synchronization and host\nevaluation (b/537909612).\n\n- Implements dumpPuppetEnc orchestrating Gitiles fetch of nodes.yaml and\n  vlan_domain_map.yaml, Datastore host collection, and batch streaming.\n- Registers ufs.puppet_enc.BqDump scheduled every 2 hours.\n- Adds LUCI tsmon metrics:\n  - chromeos/ufs/dumper/dump_puppet_enc (status counter)\n  - chromeos/ufs/dumper/dump_puppet_enc_duration (execution duration)\n  - chromeos/ufs/dumper/dump_puppet_enc_rows (exported row counter)\n- Adds unit tests covering end-to-end execution with mock Gitiles and\n  mock uploader.\n\nBug: b/537909612\nTAG\u003dagy\nCONV\u003d310d6f61-77b9-44fa-8caf-6e0d12670717\n\nChange-Id: I31a2f069ff47810675a5becf58f47a6e8477f8c8\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8401447\nReviewed-by: Otabek Kasimov \u003cotabek@google.com\u003e\nCommit-Queue: Gowri Denduluri \u003cgowriden@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83345}\n"
    },
    {
      "commit": "558d93db2ff8a31ebbeb261d621972cf095ecdaf",
      "tree": "ba6b35ba0eba07fa3ab6e43b109efaa2ab1fd6ba",
      "parents": [
        "cfef0b3ed8d4616b9643648cf6086b768cc2c408"
      ],
      "author": {
        "name": "Gowri Denduluri",
        "email": "gowriden@google.com",
        "time": "Thu Sep 17 18:44:48 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 18:44:48 2026"
      },
      "message": "[UFS] enc: implement Exporter with 500-row batch streaming\n\nImplements Exporter and RowUploader in app/dumper/enc for chunking and\nstreaming Puppet ENC classifications to BigQuery (b/537909612).\n\n- Evaluates hosts in-memory using puppetenc and constructs\n  PuppetNodeClassificationRow records.\n- Buffers and flushes rows in bounded batches of 500.\n- Implements BigQueryUploader using cloud.google.com/go/bigquery.\n- Adds comprehensive unit tests for batch chunking boundaries (1,250 hosts -\u003e\n  [500, 500, 250]) and full field evaluations.\n\nBug: b/537909612\nTAG\u003dagy\nCONV\u003d310d6f61-77b9-44fa-8caf-6e0d12670717\n\nChange-Id: I02706e26344bc9ffff2dd97f57ea50563a83ff99\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8400483\nCommit-Queue: Gowri Denduluri \u003cgowriden@google.com\u003e\nReviewed-by: Phoebe Tang \u003cphoebetang@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83344}\n"
    },
    {
      "commit": "cfef0b3ed8d4616b9643648cf6086b768cc2c408",
      "tree": "0d3408e5a66305db537b55040e9fbe163898ca0d",
      "parents": [
        "02055e0edb267cadc3d22928ce674c8f233f7f72"
      ],
      "author": {
        "name": "Gowri Denduluri",
        "email": "gowriden@google.com",
        "time": "Thu Sep 17 18:37:23 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 18:37:23 2026"
      },
      "message": "[UFS] enc: add BigQuery schema DDL, setup script, and ValueSaver model\n\nDefines PuppetNodeClassificationRow and BigQuery schema DDL in\napp/dumper/enc for the Puppet ENC BigQuery export pipeline (b/537909612).\n\n- Implements PuppetNodeClassificationRow with bigquery.ValueSaver,\n  deterministic insertID for streaming deduplication, and nested UfsMetadata.\n- Adds classifications.sql defining partition by DATE(snapshot_timestamp),\n  cluster by environment and hostname, 90-day retention, and the\n  latest_classifications snapshot view.\n- Adds setup_bigquery.sh automation script.\n- Adds unit tests verifying ValueSaver serialization and NULL swarming handling.\n\nBug: b/537909612\nTAG\u003dagy\nCONV\u003d310d6f61-77b9-44fa-8caf-6e0d12670717\n\nChange-Id: Ia90a45a178a919424e7c6d3a3093b2cdbff4e761\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8394350\nCommit-Queue: Gowri Denduluri \u003cgowriden@google.com\u003e\nReviewed-by: Yang Yang \u003cechoyang@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#83343}\n"
    },
    {
      "commit": "02055e0edb267cadc3d22928ce674c8f233f7f72",
      "tree": "4484f8284632f2592a159bb7371e896f1c6edab4",
      "parents": [
        "765d01568cba2db4ad3628b55afc124aa863b309"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Thu Sep 17 18:36:13 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 18:36:13 2026"
      },
      "message": "Roll chromiumos/config from b8c3bf547467 to 04d666937932 (1 revision)\n\nhttps://chromium.googlesource.com/chromiumos/config.git/+log/b8c3bf547467..04d666937932\n\n2026-09-17 otabek@google.com cros/config: Add STATUS_PRE_PROVISION_USB_NOT_DETECTED to proto\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/chromiumos-config-infra-autoroll\nPlease CC andrewlamb+autoroll@google.com,andrewlamb@google.com,chromeos-infra-discuss@google.com,pprabhu+autoroll@google.com,pprabhu@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: andrewlamb+autoroll@google.com,pprabhu+autoroll@google.com\nChange-Id: If1c6c42fc78627c98879ca2a0bdeb82873c34963\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8422702\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83342}\n"
    },
    {
      "commit": "765d01568cba2db4ad3628b55afc124aa863b309",
      "tree": "9a77c91f536da2fec483374f87f72e7a9c61b054",
      "parents": [
        "1ece223641ed23b43534bf6ec2f4d845a1895c1a"
      ],
      "author": {
        "name": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "email": "chromium-autoroll@skia-public.iam.gserviceaccount.com",
        "time": "Thu Sep 17 18:30:44 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 18:30:44 2026"
      },
      "message": "Roll luci-go from e53d299b3122 to fbd24248de2e (1 revision)\n\nhttps://chromium.googlesource.com/infra/luci/luci-go.git/+log/e53d299b3122..fbd24248de2e\n\n2026-09-17 chanli@chromium.org [buildbucket] Validate swarming_host against swarming_backends in config\n\nIf this roll has caused a breakage, revert this CL and set the roller\nto dry run mode using the controls here:\nhttps://autoroll.skia.org/r/luci-go-infra-autoroll\nPlease CC luci-eng@google.com,yiwzhang@google.com on the revert to ensure that a human\nis aware of the problem.\n\nTo report a problem with the AutoRoller itself, please file a bug:\nhttps://issues.skia.org/issues/new?component\u003d1389291\u0026template\u003d1850622\n\nDocumentation for the AutoRoller is here:\nhttps://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md\n\nTbr: yiwzhang@google.com\nChange-Id: I32286601c6c6728aacde431b557d09ac8dd87bbb\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8421457\nCommit-Queue: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nBot-Commit: chromium-autoroll@skia-public.iam.gserviceaccount.com \u003cchromium-autoroll@skia-public.iam.gserviceaccount.com\u003e\nCr-Commit-Position: refs/heads/main@{#83341}\n"
    },
    {
      "commit": "1ece223641ed23b43534bf6ec2f4d845a1895c1a",
      "tree": "84c5f71b6669e7c8f3238a703d7d341d2427ca65",
      "parents": [
        "8bbec59abaf4dab49c5985c0634d9f29267454e7"
      ],
      "author": {
        "name": "Jon Toohill",
        "email": "jtoohill@google.com",
        "time": "Thu Sep 17 18:24:13 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 18:24:13 2026"
      },
      "message": "3pp: bump 7z to 26.03\n\nBug: 554531101\nChange-Id: Ifb61bb278bcacb4647455dd5e9b73ede6a6a6964\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8421469\nCommit-Queue: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nAuto-Submit: Jon Toohill \u003cjtoohill@google.com\u003e\nReviewed-by: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83340}\n"
    },
    {
      "commit": "8bbec59abaf4dab49c5985c0634d9f29267454e7",
      "tree": "9100dc3ca9270e1c479a084a86f1cdb5da228670",
      "parents": [
        "44c5fec8c17141701f7cbfd291070d3e6aa5e790"
      ],
      "author": {
        "name": "Gowri Denduluri",
        "email": "gowriden@google.com",
        "time": "Thu Sep 17 18:23:28 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 18:23:28 2026"
      },
      "message": "[UFS] puppet_enc: implement in-memory Classify engine\n\nImplements in-memory node classification combining nodes.yaml AST rules\nwith UFS host ownership metadata in app/util/puppet_enc (b/537909612).\n\n- Implements Classify matching glob queries, UFS ownership queries, and\n  exclusions.\n- Injects computed classification parameters: is_swarming, is_swarming_permitted,\n  swarming, pool, builder, and ufs_entry metadata struct.\n- Adds comprehensive unit tests for the full classification flow.\n\nBug: b/537909612\nTAG\u003dagy\nCONV\u003d310d6f61-77b9-44fa-8caf-6e0d12670717\n\nChange-Id: I55265002f3173c55fc32b80c00f0bbde150bcf02\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8399614\nReviewed-by: Gregory Nisbet \u003cgregorynisbet@google.com\u003e\nCommit-Queue: Gowri Denduluri \u003cgowriden@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83339}\n"
    },
    {
      "commit": "44c5fec8c17141701f7cbfd291070d3e6aa5e790",
      "tree": "ba6e53dc86cb3cfda5d46a9ada9a0299fb462f16",
      "parents": [
        "b8bc04c5606c6c3782ab13c4b71cbcec30069e84"
      ],
      "author": {
        "name": "Gowri Denduluri",
        "email": "gowriden@google.com",
        "time": "Thu Sep 17 18:18:18 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 18:18:18 2026"
      },
      "message": "[UFS] puppet_enc: implement MergeNodeConfigs and IsSwarmingPermitted\n\nImplements hierarchical configuration merging and swarming permission\nverification in app/util/puppet_enc (b/537909612).\n\n- Implements MergeNodeConfigs merging classes, parameters, and environments.\n- Deduplicates and deterministically sorts parameter lists.\n- Implements IsSwarmingPermitted enforcing host prefix and suffix rules.\n\nBug: b/537909612\nTAG\u003dagy\nCONV\u003d310d6f61-77b9-44fa-8caf-6e0d12670717\n\nChange-Id: I720c2f68b61c114eff8cbdc93ad1a74f8e62c61c\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8394451\nCommit-Queue: Gowri Denduluri \u003cgowriden@google.com\u003e\nReviewed-by: Bryan Ni \u003cbniche@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83338}\n"
    },
    {
      "commit": "b8bc04c5606c6c3782ab13c4b71cbcec30069e84",
      "tree": "f11517d673249af9b16a46249489eb7b32e27113",
      "parents": [
        "00d484f7e6876a2454a633b0afcb18186cd3f3ef"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 18:17:40 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 18:17:40 2026"
      },
      "message": "cros: support servod fallback in cros_read_cbi_data\n\nIntegrate servod EC console UART reading as an automatic fallback\ninto cros_read_cbi_data when host-side SSH reading fails or is disabled\n(read_host: false). Add action arguments read_host (default: true),\nread_servo_fallback (default: true), servo_timeout (default: 10s),\nand servo_regex to configure collection behavior.\n\nSimplify telemetry observations to cbi_data and cbi_source (values:\n\"host-hex\", \"host-tags\", or \"servod\"). Add unit test coverage in\ncros_cbi_data_test.go for host and fallback scenarios.\n\nBUG\u003db:535206629\nTAG\u003dagy\nCONV\u003d54efbfda-e1e2-45cf-bea7-8d4e32d29838\n\nChange-Id: I21c5af71959c7ff1eaa1415edb7966ee58fcf00e\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8375281\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nReviewed-by: Bryan Ni \u003cbniche@google.com\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83337}\n"
    },
    {
      "commit": "00d484f7e6876a2454a633b0afcb18186cd3f3ef",
      "tree": "c7a18af6fe137e8cf85751eb2f90fbbbbaeb5424",
      "parents": [
        "94f885e782454b7feaa77226b65d84519d4c5d20"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 18:07:38 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 18:07:38 2026"
      },
      "message": "recovery/config: improve grammar and documentation in config_servo_maui.go\n\nReview and fix grammar, spelling, phrasing, and action documentation\nstrings in config_servo_maui.go, and regenerate config trees.\n\nBUG\u003dNone\nTEST\u003dmake trees; go test ./...\nTAG\u003dagy\n\nChange-Id: I5f5011938aa8f4e622af0ce21898ce92286d6c88\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8423047\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCommit-Queue: Phoebe Tang \u003cphoebetang@google.com\u003e\nReviewed-by: Phoebe Tang \u003cphoebetang@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83336}\n"
    },
    {
      "commit": "94f885e782454b7feaa77226b65d84519d4c5d20",
      "tree": "f637e7d6c2999a851b3ce6a3572d7888a6b14113",
      "parents": [
        "5ca6960db49fd459176c4c9485bc38e1a5b8ad52"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 17:58:27 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 17:58:27 2026"
      },
      "message": "mallet: update CBI tooling to update-cbi and cbi-advance\n\nStructure Mallet CBI recovery tooling into two distinct commands:\n- \u0027update-cbi\u0027: updates/cleans up formatted CBI data in UFS inventory\n  and optionally performs basic servo console recovery (-recover).\n  Retains legacy -force flag as an alias for -clear for backwards\n  compatibility.\n- \u0027cbi-advance\u0027: performs advanced servo recovery by re-flashing EC\n  firmware without preserving corrupt CBI and initializing fresh CBI tags.\n\nInventory update semantics:\n- If -cbi-data is provided: perform inventory update (EnforceCBIDataUpdate: false).\n- If -clear is set: force update if -cbi-data is provided (EnforceCBIDataUpdate: true)\n  or clean up inventory if -cbi-data is not provided (Clear: true).\n- Block contradictory combinations where -clear is used with recovery\n  when -cbi-data is empty.\n\nUses UpdateCBIDataConfigRequest with UpdateCBIDataConfig from cros/recovery/config\npassing CBIData, EnforceCBIDataUpdate, Clear, and UserRecovery (UserRecoveryNone,\nUserRecoveryBasic, UserRecoveryAdvance).\nDetailed help text and usage semantics are documented in both commands\nand in mallet/GEMINI.md.\n\nBUG\u003db:554121879\nTEST\u003dgo test ./cmd/mallet/internal/cmd/tasks/...\nTEST\u003dgo build ./cmd/mallet/...\nTAG\u003dagy\nCONV\u003d1ad4991c-bbc6-41ed-b92f-3dce5e233c18\n\nChange-Id: I123d886983ba4028b7a0a50df43eb3826950ec19\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8395047\nReviewed-by: Gowri Denduluri \u003cgowriden@google.com\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83335}\n"
    },
    {
      "commit": "5ca6960db49fd459176c4c9485bc38e1a5b8ad52",
      "tree": "24e35b2d13c3c0f8e7228b73746d271221c88b97",
      "parents": [
        "387a626b0054c2c614568b0638d9bad61952391a"
      ],
      "author": {
        "name": "Otabek Kasimov",
        "email": "otabek@google.com",
        "time": "Thu Sep 17 17:48:09 2026"
      },
      "committer": {
        "name": "LUCI CQ",
        "email": "infra-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 17 17:48:09 2026"
      },
      "message": "recovery: replace errors.Reason with WrapIf and Fmt in cros_boot_exec\n\nRefactor cros_boot_exec.go to replace deprecated errors.Reason with\nerrors.Fmt, use errors.WrapIf for error propagation per codebase\nconventions, and improve docstring grammar.\n\nBUG\u003dNone\nTEST\u003dgo test ./...; golangci-lint run .\nTAG\u003dagy\n\nChange-Id: I2e84758167563014f0c6373a15e0ae7eb4e2b059\nReviewed-on: https://chromium-review.googlesource.com/c/infra/infra/+/8418605\nReviewed-by: Bryan Ni \u003cbniche@google.com\u003e\nAuto-Submit: Otabek Kasimov \u003cotabek@google.com\u003e\nCommit-Queue: Otabek Kasimov \u003cotabek@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#83334}\n"
    }
  ],
  "next": "387a626b0054c2c614568b0638d9bad61952391a"
}
