Roll recipe dependencies (nontrivial).

This is an automated CL created by the recipe roller. This CL rolls
recipe changes from upstream projects (build, chromiumos_config, chromiumos_proto, depot_tools, fuchsia, infra, recipe_engine) into this repository.

The build that created this CL was
https://ci.chromium.org/b/8836607661027190721

Please review the expectation changes, and LGTM+CQ.

build:
https://chromium.googlesource.com/chromium/tools/build.git/+log/8b8c350bf7087ddf06efcdb9fbd329f8aea85625~..ba265573fe4c88cf8cde78a919e1ada36b93ff51
  8b8c350 (kimstephanie@google.com)
      Add win TARGET_PLATFORM to use with code_coverage
  9d2c5bf (guterman@google.com)
      Enable RTS for android-marshmallow-x86-rel in Quick Runs
  f75a617 (bryner@google.com)
      Update to fixed cffi wheel version.
  f736eb7 (bpastene@chromium.org)
      Restore uploading to test-results for swarmed tests in RDB expe...
  ea89776 (bpastene@chromium.org)
      Restore special archiving for layout-tests in RDB experiment.
  9bdc4d5 (yyanagisawa@chromium.org)
      goma_client: run scripts with python3
  5130615 (bpastene@chromium.org)
      Put every call to the swarming test collect script under a nest...
  0de1aa3 (ukai@google.com)
      Add "Mac Builder (reclient)" in chromium.fyi
  49c4af0 (kimstephanie@google.com)
      Add retry_without_patch to try spec
  12b3183 (bpastene@chromium.org)
      Allow a test's RDB results to update its exit_code after init.
  bc04280 (machenbach@chromium.org)
      [V8] Add custom recipe to run one-off tests
  78e938e (tikuta@chromium.org)
      chromium_tests: add chromium.chromium_tests.use_isolate experim...
  26b3077 (bpastene@chromium.org)
      test_utils: Track unexpected SKIP tests & pass those along to F...
  4940710 (bpastene@chromium.org)
      Fetch RDB results for swarming tasks in batches.
  e898c97 (bjoyce@google.com)
      Remove TODO that's not longer needed.
  487af4c (gbeaty@chromium.org)
      Implement experimental tests using the spec disabling.
  59830a8 (bpastene@chromium.org)
      Render swarming test steps with failure info in RDB experiment.
  81562b0 (liviurau@chromium.org)
      Add CSS lint step to devtools-frontend
  4ef12f8 (lijiawei@chromium.org)
      Add Cast Shell Linux ARM64 try bot config
  8bcbc6c (kimstephanie@google.com)
      [Orchestrator] Pass in branch ref to prepare_checkout
  6d16ff7 (guterman@google.com)
      Add helpful link for determinism failures
  f929202 (bpastene@chromium.org)
      test_utils: Keep track of total number of tests ran in RDB resu...
  14958d3 (ynovikov@chromium.org)
      Decommission chromium.angle Mac builders duplicated in standalone
  3cfc131 (tikuta@chromium.org)
      chromium_tests: Switch to RBE-CAS by default on all builders
  8fd4262 (machenbach@chromium.org)
      [V8] Add fallback lookup for flake bisect
  0b50125 (yyanagisawa@chromium.org)
      Do not use Goma if gn_args does not have use_goma=true.
  0d72038 (tikuta@chromium.org)
      chromium_tests: remove isolate_server
  e814339 (tikuta@chromium.org)
      recipes: remove unnecessary isolate_server config set
  7da543d (tikuta@chromium.org)
      chromium_tests: remove unused arg
  522ee33 (tikuta@chromium.org)
      recipes: remove unnecessary isolate_server config set
  8b12606 (msavigny@google.com)
      [reclient] Remove last refs to runsc reclient builders.
  db97b19 (gbeaty@chromium.org)
      Fix py3 incompatibilities in code that is run when gathering te...
  5dcf6de (gbeaty@chromium.org)
      Make attr_utils python3 compatible.
  fe4a720 (bpastene@chromium.org)
      steps.py: Fix TODO in get_invocation_names().
  00ee0c6 (yyanagisawa@chromium.org)
      reclient: add ensure_verified option.
  8e1a387 (jmadill@chromium.org)
      [angle] Remove extra unused trace tests args.
  f1ec320 (kuanhuang@chromium.org)
      rename ci/mac{,11}-arm64-rel-tests try/mac{,11}-arm64-rel (recipe)
  15ddd9b (gbeaty@chromium.org)
      Fix reason for skipping (without patch) steps.
  ba26557 (bpastene@chromium.org)
      Add suffix to the step name of the 'all results' debug state dump.

chromiumos_config:
https://chromium.googlesource.com/chromiumos/config.git/+log/e59abd149f73b32dc48f0a3314246d852946603c~..9d1e20bb9606c928e33c3b1808c4df15a272e311
  e59abd1 (jackneus@google.com)
      Move go/cros-partner-buildspec-sync to markdown
  a604d10 (jackneus@google.com)
      Tweak partner buildspec instructions
  af8912d (otabek@google.com)
      proto: Add prevent_reboot for provision ChromeOS
  9debec3 (otabek@google.com)
      proto: Add separate docker info for each service used for provi...
  80e02ff (smcallis@google.com)
      protos: Just use golden descriptor set for starlark protos.
  5aaa7cd (justinsuen@google.com)
      boxster: update script to parse FlatConfigs into UFS datastore
  c016578 (smcallis@google.com)
      Revert "boxster: link project config bundle to program config b...
  a681ee7 (smcallis@google.com)
      payloads: Update OWNERS for UFS upload script
  0d7a909 (justinsuen@google.com)
      boxster: save DeviceStability to UFS datastore
  7c6674c (justinsuen@google.com)
      boxster: update DeviceStability file path
  2a23f0c (hyungtaekim@chromium.org)
      tls: ProvisionLacros proto for autoupdate tests
  9d1e20b (smcallis@google.com)
      proto: Update definition of DutAttribute in support of lab labe...

chromiumos_proto:
https://chromium.googlesource.com/chromiumos/infra/proto.git/+log/ce9818fd8c040997c297f38544ea875e7c17f79d~..58611ae2251bd6ddaca9e0414aa37b5170816d5b
  ce9818f (jackneus@google.com)
      Switch generation to use cipd hosted protoc-gen-go-* packages
  58611ae (jaredloucks@google.com)
      skylab_local_state: add RemoveRequest

depot_tools:
https://chromium.googlesource.com/chromium/tools/depot_tools.git/+log/5d0fbd6a2b9fe819b89fcc72c65a589884d5e912~..b1bfb8b4f04970c955088e54c9ea40bab9abebd3
  5d0fbd6 (bryner@google.com)
      Use fixed cffi wheel verison.
  d6d5c46 (gavinmak@google.com)
      Add PYTHON_VERSION_COMPATIBILITY to gitiles and bot_update
  9bccf29 (gavinmak@google.com)
      Add PYTHON_VERSION_COMPATIBILITY to windows_sdk recipe module
  8daaf5c (sokcevic@google.com)
      Explicitly set python version for pylint 2.6
  23508d2 (gavinmak@google.com)
      Add PYTHON_VERSION_COMPATIBILITY to git_cl recipe module
  326546b (gavinmak@google.com)
      Add PYTHON_VERSION_COMPATIBILITY to presubmit recipe module
  1cb5081 (gavinmak@google.com)
      Add PYTHON_VERSION_COMPATIBILITY to gerrit recipe module
  789636c (gavinmak@google.com)
      Add PYTHON_VERSION_COMPATIBILITY to depot_tools recipe module
  d254d5c (gavinmak@google.com)
      Add PYTHON_VERSION_COMPATIBILITY to osx_sdk recipe module
  76b679f (gavinmak@google.com)
      Add PYTHON_VERSION_COMPATIBILITY to gclient recipe module
  7d10c80 (gavinmak@google.com)
      Add PYTHON_VERSION_COMPATIBILITY to gsutil recipe module
  094e3dd (gavinmak@google.com)
      Add PYTHON_VERSION_COMPATIBILITY to cipd recipe module
  535213f (gavinmak@google.com)
      Add PYTHON_VERSION_COMPATIBILITY to tryserver recipe module
  dde93a5 (gavinmak@google.com)
      Add PYTHON_VERSION_COMPATIBILITY to git recipe module
  5819446 (tsniatowski@vewd.com)
      git-cl: add --upstream to git cl format
  bd0674c (gavinmak@google.com)
      Fix remaining unicode py2+3 recipe module errors
  2df329e (yyanagisawa@chromium.org)
      Roll out new goma client binary VERSION=229
  ece5635 (bryner@google.com)
      New git version to depot_tools stable.
  2269427 (sokcevic@google.com)
      Remove branch redirect support in git_cl
  4b2a96e (olivernewman@google.com)
      Remove PYTHON_VERSION_COMPATIBILITY from cipd example
  9589b3a (yiwzhang@google.com)
      recipe: deprecate cipd module in favor of the engine supplied one
  2afc4d2 (bryner@google.com)
      cpython3 3.8.10.chromium.21 to depot_tools bleeding_edge.
  b1bfb8b (bryner@google.com)
      Add explicit vpython verification tags which include mac-arm64.

fuchsia:
https://fuchsia.googlesource.com/infra/recipes.git/+log/713d6c76e29038acc53d62c0a234063b974e9f98~..a8c1d3e20817d6ca73ca296fc8da541eab6ab4d1
  713d6c7 (atyfto@google.com)
      [bloaty] Misc recipe cleanup + migrate to proto properties
  8e30129 (olivernewman@google.com)
      [code_search] Merge in functionality from submodule.py
  cdaea61 (olivernewman@google.com)
      [code_search] Use same push options as submodule.py
  9b0f4b6 (olivernewman@google.com)
      [submodule_update] Add missing copyright header
  570670a (olivernewman@google.com)
      [submodule] Delete
  62ce438 (olivernewman@google.com)
      [fint] Update mock fint param paths
  fe15c6f (leonardchan@google.com)
      [recipes][clang] Reduce the number of parallel link jobs to 8
  42254c2 (liyl@google.com)
      [aemu] Disable tests on aemu builders.
  be0148c (olivernewman@google.com)
      [luci_config] Convert to proto properties
  4618e5b (yupingz@google.com)
      [submodule_update] Update integration submodule
  5015f55 (yupingz@google.com)
      [submodule_update] Remove last_build
  732ad9c (yupingz@google.com)
      [submodule_update] is_ancestor return true then exit
  b34b4ec (atyfto@google.com)
      [bloaty] Move clang pin to last-known-good pin
  88fee9e (atyfto@google.com)
      [bloaty] Pin Rust toolchain
  2a0a843 (yupingz@google.com)
      [submodule_update] Push change from root fuchsia.
  7f4029c (yupingz@google.com)
      [submodule_update] Push change to HEAD:main
  4f17e41 (olivernewman@google.com)
      [luci_config] Checkout using git instead of jiri
  c0624d9 (atyfto@google.com)
      Revert "[luci_config] Checkout using git instead of jiri"
  c048d49 (dangyi@google.com)
      [symbolize] Do not consider timeout as a failure
  4e434df (olivernewman@google.com)
      Reland "[luci_config] Checkout using git instead of jiri"
  69ad1e0 (olivernewman@google.com)
      Commit .git-blame-ignore-revs file
  ee9e2b6 (olivernewman@google.com)
      [subbuild] Set -adjust-priority=0 for led jobs
  030cb0b (phosek@google.com)
      [clang_ml_training] Support restarting training from checkpoint
  b127543 (dmike@google.com)
      [DOCS] Change inclusive language backup list for pow
  72ac432 (atyfto@google.com)
      [sapling] Filter out build failures
  881d9fb (haowei@google.com)
      [clang] Add ResultDB integration to clang toolchain recipe
  943c4dc (phosek@google.com)
      [coverage] Pass older llvm-profdata to covargs
  523aed0 (olivernewman@google.com)
      [auto_roller] Add owners to roll commit messages
  13abd13 (olivernewman@google.com)
      [fuchsia_cipd_roller] Clean up tests
  c872169 (ihuh@google.com)
      [coverage] Upload all profiles back to CAS.
  048b09a (olivernewman@google.com)
      [properties] Create properties helper funcs
  2dc5640 (olivernewman@google.com)
      [py3] Enable py3 for some tests
  deb00e8 (olivernewman@google.com)
      [fuchsia] Propagate failed subbuild output props
  5e09845 (olivernewman@google.com)
      [testing_requests] Delete unused env vars
  7d8eecc (mohrr@google.com)
      [auto_roller] Use tag for retrigger link
  df556ea (olivernewman@google.com)
      [testing_requests] Delete unused INPUT_COMMIT_* env vars
  cf2f02d (olivernewman@google.com)
      [py3] s/raw_io.output/raw_io.output_text
  a53f060 (ihuh@google.com)
      [subbuild][coverage] Add child_build_ids to reuse builds for co...
  c171566 (atyfto@google.com)
      [sapling] Exclude checkout failures, re-include public build fa...
  42a084e (nmulcahey@google.com)
      [jiri] Roll to 6fbf3e3
  42fa9a9 (dangyi@google.com)
      Reland "[crashpad] Point roller at fuchsia.googlesource"
  3ea16a1 (olivernewman@google.com)
      [clang_toolchain] Don't return from `finally` clause
  b62ca41 (haowei@google.com)
      [clang_toolchain] Make builders be triggered regardless of the...
  839e74c (olivernewman@google.com)
      [python3] Fix python 2/3 inconsistencies
  54d3d90 (mohrr@google.com)
      [auto_roller] Change poll_timeout_secs default
  4535f48 (olivernewman@google.com)
      [python3] Mark more recipe modules as py3-compatible
  0843adf (olivernewman@google.com)
      [symbolize] Return stdout in case of timeout
  3f44372 (atyfto@google.com)
      [fxt] Always categorize `launch` failures as reds
  4cca74e (olivernewman@google.com)
      [python3] Fix remaining python3 incompatibilities
  eb59b64 (nmulcahey@google.com)
      Revert "[python3] Fix remaining python3 incompatibilities"
  da4890a (dgreenaway@google.com)
      [tricium] Update "fx format-code" command for C++
  3495b79 (olivernewman@google.com)
      Reland "[python3] Fix remaining python3 incompatibilities"
  300a260 (olivernewman@google.com)
      [buildbucket_util] Make compatible with Python 3
  518b81c (phosek@google.com)
      [clang_ml_training] Set TF_PROTO_HEADERS
  32e013c (olivernewman@google.com)
      [docker] Delete version method
  21d96e1 (olivernewman@google.com)
      [clang_ml_training] Use raw_io.output_text
  b6643c5 (phosek@google.com)
      [clang_ml_training] Use correct job name
  386254b (phosek@google.com)
      [clang_ml_training] Only download model if passed to recipe
  e863c4e (phosek@google.com)
      [clang_ml_training] Disable random_network_distillation
  ed5be2c (atyfto@google.com)
      [publish] Add stop_rollout property
  8ff7d01 (mohrr@google.com)
      [gerrit] Add project_from_remote_url()
  09f59ae (ihuh@google.com)
      [coverage] Add property to collect absolute coverage on tryjobs.
  d194817 (atyfto@google.com)
      [build] Add option to produce codesize report
  5f820f1 (phosek@google.com)
      [clang_ml_training] Reduce the number of policy iterations
  a8c1d3e (phosek@google.com)
      [fuchsia_cipd_roller] Support including extra tryjobs

infra:
https://chromium.googlesource.com/infra/infra.git/+log/09d2a198859d8bc8427d2f7f61fd2959bf4b6220~..3c533d325fdb43c04dc7773b292052e37de0bf55
  09d2a19 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from 82d95d4b4634 to 184aa82a5d36 (...
  5639818 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 2407b4405239 to 4deb66537be1 (1 revision)
  3918f85 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 4deb66537be1 to 0d9279762385 (1 revision)
  5ad35d6 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from 69d8d0302830 to af9a71f769e6 (1 revision)
  90724b3 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from 184aa82a5d36 to 1d455d2c6ad9 (...
  8f036f3 (gregorynisbet@google.com)
      [karte] Make site internal
  312f99d (gregorynisbet@google.com)
      [karte] Configure CLI tool.
  1f2bf91 (seanmccullough@google.com)
      [pinpoint cli] format report json so `bq load --autodetect` can...
  eb05eb0 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 0d9279762385 to 7276538e6308 (1 revision)
  1ad5aa3 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from 1d455d2c6ad9 to ce9818fd8c04 (...
  56b5c6e (jackneus@google.com)
      Add Google ToS/Privacy Policy to setup_project
  1ca17b5 (pasthana@google.com)
      Fetch file content from gitiles parallelly
  6dc5364 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 7276538e6308 to f0b52ecec831 (1 revision)
  f17ece9 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from f0b52ecec831 to 6adc333a7827 (1 revision)
  c3bc8ab (meiring@google.com)
      [Weetbix] Update app to use LUCI config service.
  c395e79 (iannucci@chromium.org)
      Roll infra/go/src/go.chromium.org/luci/ 6adc333a7..8a49f227f (1...
  db1befb (bryner@google.com)
      Update to fixed cffi wheel version.
  406c706 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 8a49f227f5e9 to 8014b71c005c (1 revision)
  5824a69 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from af9a71f769e6 to 4c1ea0a780b2 (1 revision)
  a19089c (jackneus@google.com)
      project buildspecs: tweak error messages
  d623d3e (pasthana@google.com)
      Fetch commits from gitiles in batched manner
  7997767 (gregorynisbet@google.com)
      [karte] Update karte's app.yaml
  6220202 (otabek@google.com)
      recovery: Make ping and shh check universal
  19d3aac (chanli@chromium.org)
      [Weetbix] Add payload proto for test result ingestion task
  6b3bcc2 (linxinan@chromium.org)
      Add new adapter for tast results
  ac6ed7d (vadimsh@chromium.org)
      [build] Start building tarballs with auth_service code.
  657d563 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 8014b71c005c to 646a26a0a877 (1 revision)
  d0e2bcc (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from 4c1ea0a780b2 to 96dfac9f57b3 (1 revision)
  c122ebf (sunxiaodi@google.com)
      Modified nested Conveys to avoid repetition
  ed8f72a (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 646a26a0a877 to 55d264ad002b (1 revision)
  cb8483c (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 55d264ad002b to 4c8de8c0f037 (1 revision)
  afca6c0 (dtu@google.com)
      🚝 Use ../../ENV/bin/python for serving, which includes six a...
  a18f180 (bryner@google.com)
      Update to fixed psutil wheel.
  67d2272 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 4c8de8c0f037 to 363257ddc492 (1 revision)
  20f5cbd (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 363257ddc492 to 1d8cc1305a82 (1 revision)
  c9a6319 (bryner@google.com)
      Update to fixed psutil wheel (py3).
  8faa682 (pasthana@google.com)
      Invoke fetch content from gitiles only once per commit.
  ed40c5c (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 1d8cc1305a82 to fed80cfb4f13 (1 revision)
  4390e31 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from fed80cfb4f13 to 58e74586eae6 (1 revision)
  9046742 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 58e74586eae6 to d00350a4f827 (1 revision)
  a66109b (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from d00350a4f827 to 81fae1042197 (1 revision)
  e91cc38 (fancl@chromium.org)
      Enable numpy=1.19.2 on mac-x64-cp38
  ef678f1 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 81fae1042197 to 5886a1685e3e (1 revision)
  049eb4a (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from 96dfac9f57b3 to dba7d0bf2aa0 (1 revision)
  4e98d51 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 5886a1685e3e to 0cfac7a0bdaf (1 revision)
  0298f3f (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from dba7d0bf2aa0 to d433975751c1 (1 revision)
  0b2fe9b (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 0cfac7a0bdaf to f89b24abeb65 (1 revision)
  6dd4cc6 (bryner@google.com)
      Update to fixed cffi wheel version.
  9fa8145 (bryner@google.com)
      Fix the cffi wheel version again. '3' is the latest patch level.
  a44a439 (meiring@google.com)
      [Weetbix] Add MonorailClient.
  6486ac9 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from f89b24abeb65 to bc1426080836 (1 revision)
  e3dceef (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from bc1426080836 to 6d2bf22b7549 (1 revision)
  7282803 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 6d2bf22b7549 to 972def40090f (1 revision)
  139f64f (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from d433975751c1 to 303384e125c9 (1 revision)
  dcc14c3 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from 303384e125c9 to a380142204c7 (1 revision)
  beda08e (gbeaty@chromium.org)
      Add sheriff_rotations property to SoM BQ views.
  a1492b9 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from ce9818fd8c04 to 5300d7da9584 (...
  88dd1d6 (otabek@google.com)
      recovery: Extect ExecFunction to provide action specific arguments
  d725a81 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from 5300d7da9584 to 8621b247c4d0 (...
  477288f (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 972def40090f to 25723236dc38 (1 revision)
  a9d959f (otabek@google.com)
      recovery: Pass Action exec args to the exec function
  b4e106b (caitlinfischer@google.com)
      Improve the Tricium warning for histograms using microsecond un...
  bbaab08 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from 8621b247c4d0 to 58611ae2251b (...
  387f19f (kimjae@chromium.org)
      Reboot prior to block level stateful wipe
  c263dc1 (gregorynisbet@google.com)
      [karte] [recovery] Add metrics interface to recovery lib.
  1b059ce (yunzhiyu@google.com)
      recovery: Add new execs dev_default_boot, devmode, hwid
  650810b (guocb@chromium.org)
      k8s-metrics: refactoring using subcommand
  3f230c1 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 25723236dc38 to 2941e084a4bd (1 revision)
  b1fbb1e (jaredloucks@google.com)
      phosphorus: add command to remove autotest results dir
  09bb2ff (pasthana@google.com)
      Split feature coverage into multiple tasks.
  937333e (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 2941e084a4bd to 6a1cb4c0859a (1 revision)
  48fa558 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 6a1cb4c0859a to 61d3510de3b0 (1 revision)
  d4f25a5 (justinsuen@google.com)
      UFS: modify FlatConfig ID implementation
  8e1046f (pasthana@google.com)
      Fix wrong url in cron.yaml
  4071ef7 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 61d3510de3b0 to 5748e7a74442 (1 revision)
  15c7193 (kevinruvalcaba@google.com)
      Monorail corrected user preference to enable by default markdow...
  aea7b1e (sokcevic@google.com)
      [crrev] Invoke datastore.EnableSafeGet
  1f6fbe4 (pasthana@google.com)
      Convert modifier id to int before fetching corresponding Entity
  baa5d89 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from 58611ae2251b to bac1ae73af14 (...
  d1f4164 (xianuowang@chromium.org)
      cros_ec_type_boards: Add asurada and keeby to the list
  10aea6d (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 5748e7a74442 to 5989dfc93a10 (1 revision)
  6e64ae5 (pasthana@google.com)
      fix minor bug while invoking feature coverage sub tasks
  4bb4f72 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 5989dfc93a10 to 9e970082731e (1 revision)
  9f0155a (guocb@chromium.org)
      k8s-metrics: add a pod-perf subcommand
  babc96e (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from a380142204c7 to 4ce2261a119f (1 revision)
  1896554 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 9e970082731e to 95f14d90b313 (1 revision)
  2d130d9 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from 4ce2261a119f to c0879372cb00 (1 revision)
  e9923de (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from bac1ae73af14 to 9abac58bf671 (...
  0903a1d (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from c0879372cb00 to a1d521f54731 (2 revisions)
  3d27156 (images-pins-roller@chops-service-accounts.iam.gserviceaccount.com)
      [images] Roll pinned docker image tags.
  1f335bd (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 95f14d90b313 to bcccebb34e6a (1 revision)
  4b140bf (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from bcccebb34e6a to 8bf27a3fa302 (1 revision)
  1d38288 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 8bf27a3fa302 to b631e03edbff (1 revision)
  73ff3fa (engeg@google.com)
      prejob: correctly examine bucket default
  7ceb785 (pasthana@google.com)
      Reduce max no. of concurrent requests for feature coverage sub...
  dfc7f1b (madhavadas@google.com)
      Skylab inventory: Update protoc version
  a5baaa9 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from b631e03edbff to 80176e2bb368 (1 revision)
  efb5117 (otabek@google.com)
      recovery: Add execs for labstation reboot
  b323a57 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from 9abac58bf671 to 4b05d4fab44f (...
  342a635 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 80176e2bb368 to 31954b0e37c3 (1 revision)
  ad8db27 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from 4b05d4fab44f to 550170f90376 (...
  e2ca515 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 31954b0e37c3 to f796d4e6b0d5 (2 revisions)
  5c61088 (sokcevic@google.com)
      [py3] Use py3 with gerrit_plugins
  627a73a (meiring@google.com)
      [Weetbix] Setup OAuth authentication.
  d60a13c (nqmtuan@google.com)
      [TreeStatus] Copy chromium_status to another folder
  042de2e (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from f796d4e6b0d5 to e5b08a7057b0 (1 revision)
  62eac30 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from e5b08a7057b0 to a69464cdb100 (1 revision)
  648b410 (nqmtuan@google.com)
      Migrate Chromium Tree Status to py3
  1ede223 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from a69464cdb100 to 2657625b8e60 (2 revisions)
  6faaa6e (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from a1d521f54731 to 9c2f2e937e87 (1 revision)
  39a8e85 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from 9c2f2e937e87 to cb522191774c (1 revision)
  112c7b9 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from cb522191774c to b07395eec49c (1 revision)
  3c3d6af (images-pins-roller@chops-service-accounts.iam.gserviceaccount.com)
      [images] Roll pinned docker image tags.
  70b1f82 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 2657625b8e60 to 945287e10cc2 (1 revision)
  c548501 (gbeaty@chromium.org)
      Reorganize code to support getting exe from CAS.
  1261995 (jackneus@google.com)
      tclint: temporarily disable TestErrorMessages test
  981107a (sunxiaodi@google.com)
      reduced size of test dataset to two metrics, modified analyze_t...
  79a9664 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/config from 86c6f5d3e881 to c0165784065f (49 re...
  156d479 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from b07395eec49c to 6ac6411ff3e2 (1 revision)
  041c4ee (pasthana@google.com)
      Fix flaky tests
  d202893 (otabek@google.com)
      recovery: Add action to check if kernel priority changed
  09fa1ad (jackneus@google.com)
      project buildspecs: handle buildspecs more gracefully
  7a16a8b (vyshu@chromium.org)
      Add force flag to provisioning
  ddb6071 (otabek@google.com)
      labpack: Recover panics to mark task as fail
  1c67390 (justinsuen@google.com)
      UFS: add boxster labels luci config
  f55cda7 (sokcevic@google.com)
      Remove sync_submodules - no longer used
  8129389 (chanli@chromium.org)
      [Weetbix] Add Spanner emulator
  488f745 (gregorynisbet@google.com)
      [satlab] Rename update command to add.
  3d51c14 (gregorynisbet@google.com)
      [karte] Add filter observation
  d6ce862 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 945287e10cc2 to 11a6fd7896a4 (1 revision)
  1bfc764 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 11a6fd7896a4 to 2b2acaf80513 (1 revision)
  7e30cff (otabek@google.com)
      recovery: Fix action name to update os version for provision info
  88b5b4a (xianuowang@chromium.org)
      crosfleet: Support multi-DUTs testing in run test/suite
  9f305ca (otabek@google.com)
      recovery: Add custom shell command exec
  a3ccdc7 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/config from c0165784065f to a681ee70a0db (1 rev...
  363ebb8 (gregorynisbet@google.com)
      [satlab] Add update dut command to satlab
  fead883 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 2b2acaf80513 to 01332f94e57f (1 revision)
  3900190 (meiring@google.com)
      [Weetbix] Add Bugs to Weetbix Schema.
  f4ad7e0 (otabek@google.com)
      labpack: Fix step name issue
  90b2fed (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 01332f94e57f to f83d98e4ac59 (1 revision)
  ecd0beb (bryner@google.com)
      Add gym 0.19.0.
  6f91e52 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from f83d98e4ac59 to b11f5dceb8d5 (1 revision)
  b6c19a1 (tandrii@google.com)
      [python_pb2] update protos.
  cc0446a (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from b11f5dceb8d5 to debaa7f5cc54 (1 revision)
  2c38192 (otabek@google.com)
      recovery: Update intent for default logger
  f872d0f (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from 6ac6411ff3e2 to 5f52024c878e (1 revision)
  960272b (gregorynisbet@google.com)
      [satlab] Fix typo: implementation
  58e23f4 (otabek@google.com)
      recovery: Set name for return error
  d6185df (otabek@google.com)
      labpack: Add option to block steps
  7f42370 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from debaa7f5cc54 to a92698824865 (1 revision)
  3319f9d (gregorynisbet@google.com)
      [karte] Add ListObservations test
  a464670 (smut@google.com)
      [cr-buildbucket] Remove Builds pRPC service
  081d958 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from 5f52024c878e to c46a9afa6772 (1 revision)
  f13399a (otabek@google.com)
      cros-provision: Rename the CLI
  37b6820 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from a92698824865 to 45ca51e94357 (1 revision)
  22d5bd9 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 45ca51e94357 to ed194676d55f (1 revision)
  e3eb27c (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from c46a9afa6772 to ac8377486e92 (1 revision)
  512d061 (gregorynisbet@google.com)
      [satlab] Serialize shivas arguments.
  a9bbc2b (gregorynisbet@google.com)
      [karte] Add calls to datastore.EnableSafeGet
  46dfd70 (gregorynisbet@google.com)
      [karte] Remove GAE_PY variable from makefile
  0e0b8b9 (anushruth@chromium.org)
      [UFS] Preemptively upgrade compiled protos
  0b21a28 (gregorynisbet@google.com)
      [satlab] Wire up update dut command.
  a548232 (smut@google.com)
      [config] Enable BBAgent GetBuild mode by default on dev builders
  6cb017c (otabek@google.com)
      labpack: Add option to pass custom configuration
  5992c31 (ddoman@chromium.org)
      Revert "[tsmon] Change endpoint to PA WBL."
  2d43836 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from ed194676d55f to 8efa19ac207f (2 revisions)
  e96e9f1 (smut@google.com)
      [config] Enable BBAgent GetBuild mode by default
  3c68501 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 8efa19ac207f to 84b5b8d9188f (1 revision)
  63d0761 (justinsuen@google.com)
      UFS: use feature flag to hide boxster schedulable labels
  fa228ea (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from ac8377486e92 to 1660b21ce322 (1 revision)
  1fb6835 (meiring@google.com)
      [Weetbix] Read bug clusters from Spanner.
  c8bbea7 (meiring@google.com)
      [Weetbix] Read clusters from BigQuery.
  fb80cac (fancl@chromium.org)
      Add numpy=1.18.5 numpy=1.20.3
  c583a33 (xianuowang@chromium.org)
      recovery: Point rpm_frontend_uri to cluster internal rpm service
  58b0396 (chanli@chromium.org)
      [Weetbix] Add BuildbucketPubSubHandler
  0f51fc6 (mkiedys@google.com)
      Bump infra_libs version to 2.2.1.
  1521d83 (mkiedys@google.com)
      Roll infra_libs to 2.2.1.
  db74934 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 84b5b8d9188f to f84e8223903b (1 revision)
  1c69c2d (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from f84e8223903b to a3a6ac7ad677 (1 revision)
  eb4657a (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from a3a6ac7ad677 to f75f41608fa1 (1 revision)
  4de536e (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from f75f41608fa1 to d239ad4070d1 (1 revision)
  f6222e8 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from d239ad4070d1 to 189a15c487b6 (5 revisions)
  1f4c99f (robertocn@chromium.org)
      [result_adapter] Print payload's output.
  508f27f (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 189a15c487b6 to 50a700ee8c71 (3 revisions)
  a329a86 (otabek@google.com)
      provision-cli: Read input params and init provisioning
  44bf3a3 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from 1660b21ce322 to 62992b862f5f (1 revision)
  1759860 (fancl@chromium.org)
      Enable numpy=1.20.3 and numpy=1.18.5 on windows
  599d34a (nqmtuan@google.com)
      [ChromiumStatus] Add cloud logging
  93ad643 (mkiedys@google.com)
      [tsmon] Panic if infra_libs < 2.2.1.
  80c0e2d (mkiedys@google.com)
      Reland "[tsmon] Change endpoint to PA WBL."
  e934820 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 50a700ee8c71 to 3b86db6a1d30 (1 revision)
  3e1f1f7 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 3b86db6a1d30 to da095ca13450 (1 revision)
  990aab4 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from 62992b862f5f to 8782afa15348 (1 revision)
  1d9f72f (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from 8782afa15348 to d9f0db2bb6b2 (1 revision)
  ccc4adc (fancl@chromium.org)
      Build opencv wheel from source
  752171e (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/config from a681ee70a0db to e4b4b5c61f80 (1 rev...
  92712aa (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from 550170f90376 to 673b2dec8abb (...
  384c5ab (otabek@google.com)
      mallet: Pass configuration for scheduled task
  396f4c2 (otabek@google.com)
      recovery: Add configs to run labstation repair
  e905f55 (bryner@google.com)
      Enable pathos wheel for mac-arm64.
  b2588bb (nqmtuan@google.com)
      [ChromiumStatus] Implement OAuth2 and OpenID Connect
  46a74e7 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from da095ca13450 to 7db34563656c (1 revision)
  5f83435 (otabek@google.com)
      recovery: Add basic actions for servo_repair
  a7d6d36 (otabek@google.com)
      labpack: Add logs for debugging
  d51156f (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/config from e4b4b5c61f80 to 0d7a9099b39e (1 rev...
  8e841d5 (gbeaty@chromium.org)
      Add support for running an executable from CAS.
  d9e9e3f (andrewjc@google.com)
      Revert "🚝 Use ../../ENV/bin/python for serving, which includ...
  0802704 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 7db34563656c to 5ffb826785ac (2 revisions)
  4199f7f (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from 673b2dec8abb to 351596af2696 (...
  514abaf (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/config from 0d7a9099b39e to d9af6bfaea68 (1 rev...
  e2b47c3 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/config from d9af6bfaea68 to 795e6c6dff63 (1 rev...
  3e77827 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 5ffb826785ac to cd382fbb42dd (1 revision)
  137ce0e (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from 351596af2696 to 17de50eeae65 (...
  84548e7 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from cd382fbb42dd to 5ea822acab1f (1 revision)
  e80a7fa (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/config from 795e6c6dff63 to 7c6674cd690d (1 rev...
  8e7e2ae (chanli@chromium.org)
      [Weetbix] Get ResultDB information from buildbucket
  43b2e75 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 5ea822acab1f to 600014e1da67 (1 revision)
  691d786 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 600014e1da67 to 8916fd413e62 (1 revision)
  6bb2553 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 8916fd413e62 to e12d445016e7 (1 revision)
  0646548 (tikhonov@google.com)
      [build] LUCI CD YAML builder configuration file for Swarming
  23b81ab (jackneus@google.com)
      manifest doctor: fix firestore API scope
  447ab86 (hyungtaekim@chromium.org)
      tls: Support ssh port other than 22 to DUT
  b75ce40 (meiring@google.com)
      [Weetbix] Refactor Cluster Query API.
  7bd1e96 (calamity@chromium.org)
      Add instrumentation to git cl map-branches
  a00e33a (meiring@google.com)
      [Weetbix] Extend MonorailClient.
  1f12306 (meiring@google.com)
      [Weetbix] Setup LUCI GAE Automatic Deployment (part 1).
  392b171 (meiring@google.com)
      [Weetbix] Add issue generator.
  4b04c96 (meiring@google.com)
      [Weetbix] Add method to save bug clusters.
  f2c2696 (meiring@google.com)
      [Weetbix] Implement initial auto-bug filing.
  7b62727 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from e12d445016e7 to 8e944005719b (1 revision)
  b6a764b (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-py from d9f0db2bb6b2 to 6ac98ccd93c5 (1 revision)
  fff10eb (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 8e944005719b to 466a277d1df2 (1 revision)
  f5b9482 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 466a277d1df2 to ddf091a9a4ea (1 revision)
  88f8bd8 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from ddf091a9a4ea to 70f86e26d619 (1 revision)
  352decc (kimstephanie@google.com)
      Compilator watcher luciexe sub_build
  13253cc (jackneus@google.com)
      improve logging for local manifest branching
  9d1a968 (me@avm99963.com)
      Monorail: minor fix for markdown blocklist
  e667feb (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 70f86e26d619 to 5f5f8f0d6018 (1 revision)
  6bdf4cb (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 5f5f8f0d6018 to a1d48bbc7458 (3 revisions)
  bf24860 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from a1d48bbc7458 to 8a4616a0c123 (1 revision)
  0e80990 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 8a4616a0c123 to 327213023d8c (1 revision)
  8c26b8c (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/config from 7c6674cd690d to 2a23f0c11ed3 (1 rev...
  1938b08 (guocb@chromium.org)
      drone-agent: drain bug fix
  2490ca6 (vadimsh@chromium.org)
      [config] Poll refs/heads/main in gitiles poller.
  41022c8 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 327213023d8c to 7561dff96e5f (1 revision)
  56e1e68 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll luci-go from 7561dff96e5f to 461a36caf948 (1 revision)
  c7f31b4 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from 17de50eeae65 to 7389a02f1d09 (...
  caa21aa (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll chromiumos/infra/proto from 7389a02f1d09 to c10af8b5116a (...
  3c533d3 (yuanjunh@google.com)
      Add yuanjunh@ into OWNERS of infra recipes

recipe_engine:
https://chromium.googlesource.com/infra/luci/recipes-py.git/+log/5a08ca64d8089f0668cbdb50de4cfe366b237982~..cc2189852d46923cc745bd1682d5c2f058bb3344
  5a08ca6 (yiwzhang@google.com)
      py3: add python compatibility version info to recipe README
  21e0880 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll CAS Client from 5639818d5b74 to 3918f8505244
  8abfa9b (bryner@google.com)
      Update to fixed cffi wheel.
  c7a64fb (yiwzhang@google.com)
      py3: add detailed explanation for soft error
  aaa0f9b (yiwzhang@google.com)
      py3: mark python module as PY2+3
  6fa3a72 (yiwzhang@google.com)
      regen the recipe doc
  07fdd8a (iannucci@chromium.org)
      [test] Use fewer coverage files.
  4c803c9 (yuanjunh@google.com)
      Use a different data file for total coverage
  7514f5c (yuanjunh@google.com)
      [python3] Make recipes test cmd work when RECIPES_USE_PY3 is true
  5a6f911 (bpastene@chromium.org)
      Add a 'json.input' step log to all resultdb recipe_module RPCs.
  9bdc387 (bryner@google.com)
      Update coverage wheel to fixed version.
  8dc885f (yuanjunh@google.com)
      Add the coverage issue to the user guide doc
  e8975f0 (yuanjunh@google.com)
      [python3] Make the rest of context and step recipes py3 compatible
  bb3c1e2 (olivernewman@google.com)
      [python3] Make file module py3-compatible
  0712831 (olivernewman@google.com)
      [python3] Make cipd module py3-compatible
  fdc27f0 (mohrr@google.com)
      [buildbucket] Allow setting execution_timeout
  a3f37fc (olivernewman@google.com)
      [python3] Stop using re._pattern_type in py3
  284f068 (olivernewman@google.com)
      [json] Sort test data keys
  889cd34 (yiwzhang@google.com)
      py3: add instruction on how to enable py3 for led build
  97494ab (olivernewman@google.com)
      [python3] Mark time module as py3-compatible
  f8c1156 (mohrr@google.com)
      [python3] Make post_process_inputs.py Py3-compatible
  91cbc7a (yiwzhang@google.com)
      regen the recipe doc
  91da5c3 (olivernewman@google.com)
      [python3] Make url module py3 compatible
  1586d73 (yuanjunh@google.com)
      [python3] Make buildbucket module py3 compatible
  e35ed93 (olivernewman@google.com)
      [proto] Respect codec in logs
  5f4231a (mohrr@google.com)
      [url] Clarify exception messages
  57b1636 (mohrr@google.com)
      [python3] led module Py3 compatibility fixes
  70ae6f1 (yuanjunh@google.com)
      [python3] Unify the json.loads error msg in py2 and py3 test mode
  22306fb (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll CAS Client from d6185df04086 to 7f42370cb3b7
  32636a5 (yiwzhang@google.com)
      py3: report internal error as well when enable_py3_details bit...
  937803a (olivernewman@google.com)
      [python3] Make service_account module py3 compatible
  cb989e1 (mohrr@google.com)
      [python3] Make cas module py3 compatible
  a7d06b1 (mohrr@google.com)
      [python3] Make uuid module py3 compatible
  3e7ed54 (mohrr@google.com)
      [python3] Make isolated module py3 compatible
  151b0c5 (mohrr@google.com)
      [python3] Make swarming module py3 compatible
  b44ae7d (gbeaty@chromium.org)
      Make the assertions module python3 compatible.
  a481418 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll CAS Client from c8bbea79d509 to 0a5ecd73c992
  b33402d (mohrr@google.com)
      [python3] Make scheduler module py3 compatible
  6bce37b (mohrr@google.com)
      [python3] Make cq module py3 compatible
  fb539bc (mohrr@google.com)
      [python3] Make futures module py3 compatible
  97386e6 (mohrr@google.com)
      [python3] Make file resources py3-compatible
  5e01592 (bpastene@chromium.org)
      resultdb: Allow limit to be passed as 0 in query().
  302c087 (mohrr@google.com)
      [python3] Replace xrange() and iteritems() calls
  9193c33 (yiwzhang@google.com)
      regen the recipe doc
  7f5b583 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll CAS Client from e9348203ea8f to 3e1f1f7a109e
  39ab460 (olivernewman@google.com)
      [swarming] Avoid comparing string to None
  86d8136 (olivernewman@google.com)
      [buildbucket] Sort keys in mock data
  fae1afe (yuanjunh@google.com)
      [python3] Migrate proto and led recipe modules
  e84958e (tikuta@chromium.org)
      swarming: use chromium.org in owners
  ee8bca9 (mohrr@google.com)
      [swarming] Change import order
  43efea0 (yiwzhang@google.com)
      tricium: bump the comment num limit to 1000
  5676c4b (tikuta@chromium.org)
      swarming: require binary for secret_bytes
  7f6b105 (tikuta@chromium.org)
      swarming: make use_cas True in test
  22a97a5 (yiwzhang@google.com)
      py3: include python interpreter version in the setup_build step...
  3d8de63 (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll CAS Client from f2c26964eca4 to 7b62727dc713
  e6841cf (chromium-autoroll@skia-public.iam.gserviceaccount.com)
      Roll CAS Client from fff10ebb9562 to f5b94828455a
  cc21898 (gbeaty@chromium.org)
      Add a flag for test command to only run python3 tests.

More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.

R=athom@google.com, whesse@google.com

Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I3832ef2bb8b2a540b03afb01ad0daec4aa124ab8
Reviewed-on: https://dart-review.googlesource.com/c/recipes/+/212940
Auto-Submit: Dart CI <dart-luci-ci-builder@dart-ci.iam.gserviceaccount.com>
Commit-Queue: Alexander Thomas <athom@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
diff --git a/README.recipes.md b/README.recipes.md
index ed7e7f3..337b423 100644
--- a/README.recipes.md
+++ b/README.recipes.md
@@ -34,6 +34,8 @@
 
 [DEPS](/recipe_modules/bisect_build/__init__.py#5): [depot\_tools/gitiles][depot_tools/recipe_modules/gitiles], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 #### **class [BisectApi](/recipe_modules/bisect_build/api.py#11)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 
 &mdash; **def [get\_base\_build](/recipe_modules/bisect_build/api.py#19)(self):**
@@ -47,6 +49,8 @@
 
 [DEPS](/recipe_modules/build/__init__.py#5): [build/goma][build/recipe_modules/goma], [depot\_tools/depot\_tools][depot_tools/recipe_modules/depot_tools], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 #### **class [BuildApi](/recipe_modules/build/api.py#7)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 
 Recipe module for building the Dart SDK with and without goma.
@@ -62,6 +66,8 @@
 
 [DEPS](/recipe_modules/dart/__init__.py#5): [bisect\_build](#recipe_modules-bisect_build), [build](#recipe_modules-build), [depot\_tools/bot\_update][depot_tools/recipe_modules/bot_update], [depot\_tools/depot\_tools][depot_tools/recipe_modules/depot_tools], [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [depot\_tools/git][depot_tools/recipe_modules/git], [depot\_tools/gsutil][depot_tools/recipe_modules/gsutil], [depot\_tools/tryserver][depot_tools/recipe_modules/tryserver], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/cipd][recipe_engine/recipe_modules/cipd], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/isolated][recipe_engine/recipe_modules/isolated], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime], [recipe\_engine/service\_account][recipe_engine/recipe_modules/service_account], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/swarming][recipe_engine/recipe_modules/swarming]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 #### **class [DartApi](/recipe_modules/dart/api.py#62)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
 
 Recipe module for code commonly used in dart recipes.
@@ -120,26 +126,36 @@
 
 [DEPS](/recipe_modules/bisect_build/tests/tests.py#16): [bisect\_build](#recipe_modules-bisect_build), [depot\_tools/gitiles][depot_tools/recipe_modules/gitiles], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipe_modules/bisect_build/tests/tests.py#39)(api, current_failure, is_experimental):**
 ### *recipes* / [build:tests/test\_build](/recipe_modules/build/tests/test_build.py)
 
 [DEPS](/recipe_modules/build/tests/test_build.py#9): [build](#recipe_modules-build), [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipe_modules/build/tests/test_build.py#16)(api):**
 ### *recipes* / [build:tests/test\_gn](/recipe_modules/build/tests/test_gn.py)
 
 [DEPS](/recipe_modules/build/tests/test_gn.py#9): [build](#recipe_modules-build), [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipe_modules/build/tests/test_gn.py#16)(api):**
 ### *recipes* / [cron/cron](/recipes/cron/cron.py)
 
 [DEPS](/recipes/cron/cron.py#21): [depot\_tools/gitiles][depot_tools/recipe_modules/gitiles], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/properties][recipe_engine/recipe_modules/properties]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipes/cron/cron.py#28)(api, properties):**
 ### *recipes* / [dart/cbuild](/recipes/dart/cbuild.py)
 
 [DEPS](/recipes/dart/cbuild.py#21): [depot\_tools/gitiles][depot_tools/recipe_modules/gitiles], [depot\_tools/gsutil][depot_tools/recipe_modules/gsutil], [fuchsia/gerrit][fuchsia/recipe_modules/gerrit], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 A recipe that processes go/dart-cbuild results.
 
 The cbuild uploads files to a GCS bucket (one per SDK commit). This recipe reads
@@ -153,16 +169,22 @@
 
 [DEPS](/recipes/dart/chocolatey.py#11): [dart](#recipe_modules-dart), [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/url][recipe_engine/recipe_modules/url]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipes/dart/chocolatey.py#29)(api):**
 ### *recipes* / [dart/docker](/recipes/dart/docker.py)
 
 [DEPS](/recipes/dart/docker.py#7): [dart](#recipe_modules-dart), [depot\_tools/git][depot_tools/recipe_modules/git], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipes/dart/docker.py#16)(api):**
 ### *recipes* / [dart/external](/recipes/dart/external.py)
 
 [DEPS](/recipes/dart/external.py#19): [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 A recipe to create synthethic builds for non-Luci builds.
 
 This recipe is meant to be triggered by other recipes that process results from
@@ -177,6 +199,8 @@
 
 [DEPS](/recipes/dart/flutter_engine.py#16): [build/goma][build/recipe_modules/goma], [bisect\_build](#recipe_modules-bisect_build), [depot\_tools/bot\_update][depot_tools/recipe_modules/bot_update], [depot\_tools/depot\_tools][depot_tools/recipe_modules/depot_tools], [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [depot\_tools/gitiles][depot_tools/recipe_modules/gitiles], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/cipd][recipe_engine/recipe_modules/cipd], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [AnalyzeDartUI](/recipes/dart/flutter_engine.py#79)(api, engine_src):**
 
 &mdash; **def [Build](/recipes/dart/flutter_engine.py#62)(api, engine_src, config, \*targets):**
@@ -212,83 +236,105 @@
 
 [DEPS](/recipes/dart/forward_branch.py#8): [dart](#recipe_modules-dart), [depot\_tools/git][depot_tools/recipe_modules/git], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipes/dart/forward_branch.py#19)(api):**
 ### *recipes* / [dart/gclient](/recipes/dart/gclient.py)
 
 [DEPS](/recipes/dart/gclient.py#7): [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [depot\_tools/tryserver][depot_tools/recipe_modules/tryserver], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/properties][recipe_engine/recipe_modules/properties]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipes/dart/gclient.py#15)(api):**
 ### *recipes* / [dart/linearize](/recipes/dart/linearize.py)
 
 [DEPS](/recipes/dart/linearize.py#8): [dart](#recipe_modules-dart), [depot\_tools/git][depot_tools/recipe_modules/git], [depot\_tools/gitiles][depot_tools/recipe_modules/gitiles], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipes/dart/linearize.py#24)(api):**
 ### *recipes* / [dart/neo](/recipes/dart/neo.py)
 
 [DEPS](/recipes/dart/neo.py#22): [bisect\_build](#recipe_modules-bisect_build), [dart](#recipe_modules-dart), [depot\_tools/gitiles][depot_tools/recipe_modules/gitiles], [depot\_tools/osx\_sdk][depot_tools/recipe_modules/osx_sdk], [depot\_tools/tryserver][depot_tools/recipe_modules/tryserver], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipes/dart/neo.py#94)(api, properties):**
 ### *recipes* / [dart/package\_co19](/recipes/dart/package_co19.py)
 
 [DEPS](/recipes/dart/package_co19.py#8): [depot\_tools/git][depot_tools/recipe_modules/git], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/cipd][recipe_engine/recipe_modules/cipd], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipes/dart/package_co19.py#18)(api):**
 ### *recipes* / [dart/package\_dart\_ci](/recipes/dart/package_dart_ci.py)
 
 [DEPS](/recipes/dart/package_dart_ci.py#10): [depot\_tools/git][depot_tools/recipe_modules/git], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/cipd][recipe_engine/recipe_modules/cipd], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipes/dart/package_dart_ci.py#20)(api):**
 ### *recipes* / [dart:examples/example](/recipe_modules/dart/examples/example.py)
 
 [DEPS](/recipe_modules/dart/examples/example.py#21): [build](#recipe_modules-build), [dart](#recipe_modules-dart), [depot\_tools/tryserver][depot_tools/recipe_modules/tryserver], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/swarming][recipe_engine/recipe_modules/swarming]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipe_modules/dart/examples/example.py#299)(api):**
 ### *recipes* / [dart:examples/example-get\_secret](/recipe_modules/dart/examples/example-get_secret.py)
 
 [DEPS](/recipe_modules/dart/examples/example-get_secret.py#7): [dart](#recipe_modules-dart), [recipe\_engine/platform][recipe_engine/recipe_modules/platform]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipe_modules/dart/examples/example-get_secret.py#12)(api):**
 ### *recipes* / [presubmit/presubmit](/recipes/presubmit/presubmit.py)
 
 [DEPS](/recipes/presubmit/presubmit.py#10): [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [depot\_tools/presubmit][depot_tools/recipe_modules/presubmit], [depot\_tools/tryserver][depot_tools/recipe_modules/tryserver], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipes/presubmit/presubmit.py#21)(api):**
 ### *recipes* / [roller/lkgr](/recipes/roller/lkgr.py)
 
 [DEPS](/recipes/roller/lkgr.py#17): [depot\_tools/bot\_update][depot_tools/recipe_modules/bot_update], [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [depot\_tools/git][depot_tools/recipe_modules/git], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime], [recipe\_engine/step][recipe_engine/recipe_modules/step]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipes/roller/lkgr.py#33)(api, properties):**
 ### *recipes* / [roller/roll\_to\_dev](/recipes/roller/roll_to_dev.py)
 
 [DEPS](/recipes/roller/roll_to_dev.py#9): [depot\_tools/bot\_update][depot_tools/recipe_modules/bot_update], [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [depot\_tools/git][depot_tools/recipe_modules/git], [depot\_tools/gitiles][depot_tools/recipe_modules/gitiles], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/runtime][recipe_engine/recipe_modules/runtime], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time]
 
+PYTHON_VERSION_COMPATIBILITY: PY2
+
 &mdash; **def [RunSteps](/recipes/roller/roll_to_dev.py#36)(api, properties):**
 
-[build/recipe_modules/goma]: https://chromium.googlesource.com/chromium/tools/build.git/+/037be3e0d5fcfd4f35553cab321b20f1d42a5aa5/recipes/README.recipes.md#recipe_modules-goma
-[depot_tools/recipe_modules/bot_update]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/982aad0e2af601a55fd441570f76acff15e345d3/recipes/README.recipes.md#recipe_modules-bot_update
-[depot_tools/recipe_modules/depot_tools]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/982aad0e2af601a55fd441570f76acff15e345d3/recipes/README.recipes.md#recipe_modules-depot_tools
-[depot_tools/recipe_modules/gclient]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/982aad0e2af601a55fd441570f76acff15e345d3/recipes/README.recipes.md#recipe_modules-gclient
-[depot_tools/recipe_modules/git]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/982aad0e2af601a55fd441570f76acff15e345d3/recipes/README.recipes.md#recipe_modules-git
-[depot_tools/recipe_modules/gitiles]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/982aad0e2af601a55fd441570f76acff15e345d3/recipes/README.recipes.md#recipe_modules-gitiles
-[depot_tools/recipe_modules/gsutil]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/982aad0e2af601a55fd441570f76acff15e345d3/recipes/README.recipes.md#recipe_modules-gsutil
-[depot_tools/recipe_modules/osx_sdk]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/982aad0e2af601a55fd441570f76acff15e345d3/recipes/README.recipes.md#recipe_modules-osx_sdk
-[depot_tools/recipe_modules/presubmit]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/982aad0e2af601a55fd441570f76acff15e345d3/recipes/README.recipes.md#recipe_modules-presubmit
-[depot_tools/recipe_modules/tryserver]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/982aad0e2af601a55fd441570f76acff15e345d3/recipes/README.recipes.md#recipe_modules-tryserver
-[fuchsia/recipe_modules/gerrit]: https://fuchsia.googlesource.com/infra/recipes/+/4bbc9ba040a635841c1613e452ff593e89ab51a8/README.recipes.md#recipe_modules-gerrit
-[recipe_engine/recipe_modules/buildbucket]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-buildbucket
-[recipe_engine/recipe_modules/cipd]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-cipd
-[recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-context
-[recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-file
-[recipe_engine/recipe_modules/isolated]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-isolated
-[recipe_engine/recipe_modules/json]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-json
-[recipe_engine/recipe_modules/path]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-path
-[recipe_engine/recipe_modules/platform]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-platform
-[recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-properties
-[recipe_engine/recipe_modules/raw_io]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-raw_io
-[recipe_engine/recipe_modules/runtime]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-runtime
-[recipe_engine/recipe_modules/service_account]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-service_account
-[recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-step
-[recipe_engine/recipe_modules/swarming]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-swarming
-[recipe_engine/recipe_modules/time]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-time
-[recipe_engine/recipe_modules/url]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/README.recipes.md#recipe_modules-url
-[recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/a357987df4e8bee834c80cace3066518004e7e27/recipe_engine/recipe_api.py#881
+[build/recipe_modules/goma]: https://chromium.googlesource.com/chromium/tools/build.git/+/9926236049ecaa26c71a5a30ad712c3b598169d3/recipes/README.recipes.md#recipe_modules-goma
+[depot_tools/recipe_modules/bot_update]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/728566654bb1d2c78cdbe6b642c0d68c6f658ca7/recipes/README.recipes.md#recipe_modules-bot_update
+[depot_tools/recipe_modules/depot_tools]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/728566654bb1d2c78cdbe6b642c0d68c6f658ca7/recipes/README.recipes.md#recipe_modules-depot_tools
+[depot_tools/recipe_modules/gclient]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/728566654bb1d2c78cdbe6b642c0d68c6f658ca7/recipes/README.recipes.md#recipe_modules-gclient
+[depot_tools/recipe_modules/git]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/728566654bb1d2c78cdbe6b642c0d68c6f658ca7/recipes/README.recipes.md#recipe_modules-git
+[depot_tools/recipe_modules/gitiles]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/728566654bb1d2c78cdbe6b642c0d68c6f658ca7/recipes/README.recipes.md#recipe_modules-gitiles
+[depot_tools/recipe_modules/gsutil]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/728566654bb1d2c78cdbe6b642c0d68c6f658ca7/recipes/README.recipes.md#recipe_modules-gsutil
+[depot_tools/recipe_modules/osx_sdk]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/728566654bb1d2c78cdbe6b642c0d68c6f658ca7/recipes/README.recipes.md#recipe_modules-osx_sdk
+[depot_tools/recipe_modules/presubmit]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/728566654bb1d2c78cdbe6b642c0d68c6f658ca7/recipes/README.recipes.md#recipe_modules-presubmit
+[depot_tools/recipe_modules/tryserver]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/728566654bb1d2c78cdbe6b642c0d68c6f658ca7/recipes/README.recipes.md#recipe_modules-tryserver
+[fuchsia/recipe_modules/gerrit]: https://fuchsia.googlesource.com/infra/recipes/+/33627e6bd14733f15d5964c5b798a1e707eceb40/README.recipes.md#recipe_modules-gerrit
+[recipe_engine/recipe_modules/buildbucket]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-buildbucket
+[recipe_engine/recipe_modules/cipd]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-cipd
+[recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-context
+[recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-file
+[recipe_engine/recipe_modules/isolated]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-isolated
+[recipe_engine/recipe_modules/json]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-json
+[recipe_engine/recipe_modules/path]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-path
+[recipe_engine/recipe_modules/platform]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-platform
+[recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-properties
+[recipe_engine/recipe_modules/raw_io]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-raw_io
+[recipe_engine/recipe_modules/runtime]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-runtime
+[recipe_engine/recipe_modules/service_account]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-service_account
+[recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-step
+[recipe_engine/recipe_modules/swarming]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-swarming
+[recipe_engine/recipe_modules/time]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-time
+[recipe_engine/recipe_modules/url]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/README.recipes.md#recipe_modules-url
+[recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/cc2189852d46923cc745bd1682d5c2f058bb3344/recipe_engine/recipe_api.py#881
diff --git a/infra/config/recipes.cfg b/infra/config/recipes.cfg
index edccc98..0faf2a1 100644
--- a/infra/config/recipes.cfg
+++ b/infra/config/recipes.cfg
@@ -21,37 +21,37 @@
   "deps": {
     "build": {
       "branch": "refs/heads/main",
-      "revision": "037be3e0d5fcfd4f35553cab321b20f1d42a5aa5",
+      "revision": "9926236049ecaa26c71a5a30ad712c3b598169d3",
       "url": "https://chromium.googlesource.com/chromium/tools/build.git"
     },
     "chromiumos_config": {
       "branch": "refs/heads/main",
-      "revision": "4ad9c86ef36080cefdd1b03025c14675914b479b",
+      "revision": "037900fbe573628d57ceb51738613033d52d51c6",
       "url": "https://chromium.googlesource.com/chromiumos/config.git"
     },
     "chromiumos_proto": {
       "branch": "refs/heads/main",
-      "revision": "82d95d4b463485cf4de5369104aac3ecde6c8f21",
+      "revision": "544262fd91b48f4697ec6469ca0c27f24f2890f2",
       "url": "https://chromium.googlesource.com/chromiumos/infra/proto.git"
     },
     "depot_tools": {
       "branch": "refs/heads/main",
-      "revision": "982aad0e2af601a55fd441570f76acff15e345d3",
+      "revision": "728566654bb1d2c78cdbe6b642c0d68c6f658ca7",
       "url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git"
     },
     "fuchsia": {
       "branch": "refs/heads/main",
-      "revision": "4bbc9ba040a635841c1613e452ff593e89ab51a8",
+      "revision": "33627e6bd14733f15d5964c5b798a1e707eceb40",
       "url": "https://fuchsia.googlesource.com/infra/recipes.git"
     },
     "infra": {
       "branch": "refs/heads/main",
-      "revision": "e3f096d60c08ffdfd9f58e2f05b3639cedd64f53",
+      "revision": "acc845b57db79931b4d2530e8a6f5eba0e7c9fa0",
       "url": "https://chromium.googlesource.com/infra/infra.git"
     },
     "recipe_engine": {
       "branch": "refs/heads/main",
-      "revision": "a357987df4e8bee834c80cace3066518004e7e27",
+      "revision": "cc2189852d46923cc745bd1682d5c2f058bb3344",
       "url": "https://chromium.googlesource.com/infra/luci/recipes-py.git"
     }
   },
diff --git a/recipe_modules/bisect_build/tests/tests.expected/do-not-start-bisect-if-all-previous-builds-are-non-regular.json b/recipe_modules/bisect_build/tests/tests.expected/do-not-start-bisect-if-all-previous-builds-are-non-regular.json
index 8f2d870..ac53e6e 100644
--- a/recipe_modules/bisect_build/tests/tests.expected/do-not-start-bisect-if-all-previous-builds-are-non-regular.json
+++ b/recipe_modules/bisect_build/tests/tests.expected/do-not-start-bisect-if-all-previous-builds-are-non-regular.json
@@ -22,9 +22,9 @@
     "name": "find bisection base build.list previous builds",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@raw_io.output_text@{\"status\": \"SUCCESS\", \"output\": {\"properties\": {\"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", \"bisect_reason\": \"failure\"}}, \"builder\": {\"project\": \"dart\", \"builder\": \"foo\", \"bucket\": \"ci\"}, \"number\": 2}@@@",
-      "@@@STEP_LOG_LINE@raw_io.output_text@{\"status\": \"SUCCESS\", \"output\": {\"properties\": {\"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", \"bisect_reason\": \"failure\"}}, \"builder\": {\"project\": \"dart\", \"builder\": \"foo\", \"bucket\": \"ci\"}, \"number\": 1}@@@",
-      "@@@STEP_LOG_LINE@raw_io.output_text@{\"status\": \"SUCCESS\", \"output\": {\"properties\": {\"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", \"bisect_reason\": \"failure\"}}, \"builder\": {\"project\": \"dart\", \"builder\": \"foo\", \"bucket\": \"ci\"}}@@@",
+      "@@@STEP_LOG_LINE@raw_io.output_text@{\"builder\": {\"bucket\": \"ci\", \"builder\": \"foo\", \"project\": \"dart\"}, \"number\": 2, \"output\": {\"properties\": {\"bisect_reason\": \"failure\", \"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"}}, \"status\": \"SUCCESS\"}@@@",
+      "@@@STEP_LOG_LINE@raw_io.output_text@{\"builder\": {\"bucket\": \"ci\", \"builder\": \"foo\", \"project\": \"dart\"}, \"number\": 1, \"output\": {\"properties\": {\"bisect_reason\": \"failure\", \"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"}}, \"status\": \"SUCCESS\"}@@@",
+      "@@@STEP_LOG_LINE@raw_io.output_text@{\"builder\": {\"bucket\": \"ci\", \"builder\": \"foo\", \"project\": \"dart\"}, \"output\": {\"properties\": {\"bisect_reason\": \"failure\", \"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"}}, \"status\": \"SUCCESS\"}@@@",
       "@@@STEP_LOG_END@raw_io.output_text@@@",
       "@@@STEP_LINK@0@https://cr-buildbucket.appspot.com/build/8945511751514863184@@@"
     ]
diff --git a/recipe_modules/bisect_build/tests/tests.expected/do-not-start-bisect-if-previous-build-failed.json b/recipe_modules/bisect_build/tests/tests.expected/do-not-start-bisect-if-previous-build-failed.json
index c8f5b90..67f2368 100644
--- a/recipe_modules/bisect_build/tests/tests.expected/do-not-start-bisect-if-previous-build-failed.json
+++ b/recipe_modules/bisect_build/tests/tests.expected/do-not-start-bisect-if-previous-build-failed.json
@@ -22,7 +22,7 @@
     "name": "find bisection base build.list previous builds",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@raw_io.output_text@{\"status\": \"FAILURE\", \"output\": {\"properties\": {\"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"}}, \"builder\": {\"project\": \"dart\", \"builder\": \"foo\", \"bucket\": \"ci\"}, \"number\": 2}@@@",
+      "@@@STEP_LOG_LINE@raw_io.output_text@{\"builder\": {\"bucket\": \"ci\", \"builder\": \"foo\", \"project\": \"dart\"}, \"number\": 2, \"output\": {\"properties\": {\"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"}}, \"status\": \"FAILURE\"}@@@",
       "@@@STEP_LOG_END@raw_io.output_text@@@",
       "@@@STEP_LINK@0@https://cr-buildbucket.appspot.com/build/8945511751514863184@@@"
     ]
diff --git a/recipe_modules/bisect_build/tests/tests.expected/start-experimental-bisection.json b/recipe_modules/bisect_build/tests/tests.expected/start-experimental-bisection.json
index b4d7c38..52dd3ff 100644
--- a/recipe_modules/bisect_build/tests/tests.expected/start-experimental-bisection.json
+++ b/recipe_modules/bisect_build/tests/tests.expected/start-experimental-bisection.json
@@ -22,7 +22,7 @@
     "name": "find bisection base build.list previous builds",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@raw_io.output_text@{\"status\": \"SUCCESS\", \"output\": {\"properties\": {\"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"}}, \"builder\": {\"project\": \"dart\", \"builder\": \"foo\", \"bucket\": \"ci\"}, \"number\": 2}@@@",
+      "@@@STEP_LOG_LINE@raw_io.output_text@{\"builder\": {\"bucket\": \"ci\", \"builder\": \"foo\", \"project\": \"dart\"}, \"number\": 2, \"output\": {\"properties\": {\"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"}}, \"status\": \"SUCCESS\"}@@@",
       "@@@STEP_LOG_END@raw_io.output_text@@@",
       "@@@STEP_LINK@0@https://cr-buildbucket.appspot.com/build/8945511751514863184@@@"
     ]
diff --git a/recipe_modules/bisect_build/tests/tests.expected/starts bisection.json b/recipe_modules/bisect_build/tests/tests.expected/starts bisection.json
index b084995..337ee39 100644
--- a/recipe_modules/bisect_build/tests/tests.expected/starts bisection.json
+++ b/recipe_modules/bisect_build/tests/tests.expected/starts bisection.json
@@ -22,7 +22,7 @@
     "name": "find bisection base build.list previous builds",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@raw_io.output_text@{\"status\": \"SUCCESS\", \"output\": {\"properties\": {\"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"}}, \"builder\": {\"project\": \"dart\", \"builder\": \"foo\", \"bucket\": \"ci\"}, \"number\": 2}@@@",
+      "@@@STEP_LOG_LINE@raw_io.output_text@{\"builder\": {\"bucket\": \"ci\", \"builder\": \"foo\", \"project\": \"dart\"}, \"number\": 2, \"output\": {\"properties\": {\"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"}}, \"status\": \"SUCCESS\"}@@@",
       "@@@STEP_LOG_END@raw_io.output_text@@@",
       "@@@STEP_LINK@0@https://cr-buildbucket.appspot.com/build/8945511751514863184@@@"
     ]
diff --git a/recipe_modules/dart/examples/example.expected/analyzer-linux-release.json b/recipe_modules/dart/examples/example.expected/analyzer-linux-release.json
index 5fc4715..6708bff 100644
--- a/recipe_modules/dart/examples/example.expected/analyzer-linux-release.json
+++ b/recipe_modules/dart/examples/example.expected/analyzer-linux-release.json
@@ -1849,14 +1849,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test1_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"0\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1865,7 +1867,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test1_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
@@ -1928,14 +1930,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test1_shard_2\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"1\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1944,7 +1948,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_2@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test1_shard_2@@@",
-      "@@@STEP_LINK@task isolated outputs: test1_shard_2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test1_shard_2@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
@@ -2007,14 +2011,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test3_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"2\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -2023,7 +2029,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test3_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test3_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: test3_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test3_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
@@ -2625,14 +2631,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test1_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"3\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -2641,7 +2649,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test1_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
diff --git a/recipe_modules/dart/examples/example.expected/basic-mac.json b/recipe_modules/dart/examples/example.expected/basic-mac.json
index 5b5a4ee..5f642f3 100644
--- a/recipe_modules/dart/examples/example.expected/basic-mac.json
+++ b/recipe_modules/dart/examples/example.expected/basic-mac.json
@@ -1157,14 +1157,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test1_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"0\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1173,7 +1175,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test1_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
@@ -1233,14 +1235,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test1_shard_2\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"1\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1249,7 +1253,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_2@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test1_shard_2@@@",
-      "@@@STEP_LINK@task isolated outputs: test1_shard_2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test1_shard_2@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
diff --git a/recipe_modules/dart/examples/example.expected/basic.json b/recipe_modules/dart/examples/example.expected/basic.json
index 0bfad12..e79db9c 100644
--- a/recipe_modules/dart/examples/example.expected/basic.json
+++ b/recipe_modules/dart/examples/example.expected/basic.json
@@ -1217,14 +1217,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test1_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"0\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1233,7 +1235,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test1_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
@@ -1296,14 +1298,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test1_shard_2\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"1\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1312,7 +1316,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_2@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test1_shard_2@@@",
-      "@@@STEP_LINK@task isolated outputs: test1_shard_2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test1_shard_2@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
@@ -1846,14 +1850,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test1_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"2\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1862,7 +1868,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test1_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
diff --git a/recipe_modules/dart/examples/example.expected/bisection-does-not-refer-to-latest-build-or-publish-results.json b/recipe_modules/dart/examples/example.expected/bisection-does-not-refer-to-latest-build-or-publish-results.json
index 66056a6..72933bc 100644
--- a/recipe_modules/dart/examples/example.expected/bisection-does-not-refer-to-latest-build-or-publish-results.json
+++ b/recipe_modules/dart/examples/example.expected/bisection-does-not-refer-to-latest-build-or-publish-results.json
@@ -1152,14 +1152,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test1_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"0\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1168,7 +1170,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test1_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
@@ -1231,14 +1233,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test1_shard_2\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"1\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1247,7 +1251,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_2@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test1_shard_2@@@",
-      "@@@STEP_LINK@task isolated outputs: test1_shard_2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test1_shard_2@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
@@ -1733,14 +1737,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test1_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"2\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1749,7 +1755,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test1_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
diff --git a/recipe_modules/dart/examples/example.expected/co19.json b/recipe_modules/dart/examples/example.expected/co19.json
index 7d07f45..cd4fef4 100644
--- a/recipe_modules/dart/examples/example.expected/co19.json
+++ b/recipe_modules/dart/examples/example.expected/co19.json
@@ -284,14 +284,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"co19_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"0\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -300,7 +302,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: co19_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: co19_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: co19_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: co19_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
@@ -578,14 +580,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"co19_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"1\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -594,7 +598,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: co19_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: co19_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: co19_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: co19_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
diff --git a/recipe_modules/dart/examples/example.expected/example-android.json b/recipe_modules/dart/examples/example.expected/example-android.json
index 1260dc6..aa0edde 100644
--- a/recipe_modules/dart/examples/example.expected/example-android.json
+++ b/recipe_modules/dart/examples/example.expected/example-android.json
@@ -923,14 +923,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"android_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"0\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -939,7 +941,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: android_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: android_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: android_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: android_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
@@ -1002,14 +1004,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"android_shard_2\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"1\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1018,7 +1022,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: android_shard_2@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: android_shard_2@@@",
-      "@@@STEP_LINK@task isolated outputs: android_shard_2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: android_shard_2@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
@@ -1369,14 +1373,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"android_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"2\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1385,7 +1391,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: android_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: android_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: android_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: android_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
diff --git a/recipe_modules/dart/examples/example.expected/fuzz-test.json b/recipe_modules/dart/examples/example.expected/fuzz-test.json
index 24a0b51..17a59d9 100644
--- a/recipe_modules/dart/examples/example.expected/fuzz-test.json
+++ b/recipe_modules/dart/examples/example.expected/fuzz-test.json
@@ -941,14 +941,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 1, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"make a fuzz_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"0\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -957,7 +959,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: make a fuzz_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: make a fuzz_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: make a fuzz_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@",
+      "@@@STEP_LINK@task cas outputs: make a fuzz_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
@@ -984,14 +986,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"make a fuzz_shard_2\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"1\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1000,7 +1004,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: make a fuzz_shard_2@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: make a fuzz_shard_2@@@",
-      "@@@STEP_LINK@task isolated outputs: make a fuzz_shard_2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: make a fuzz_shard_2@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
diff --git a/recipe_modules/dart/examples/example.expected/vm-win.json b/recipe_modules/dart/examples/example.expected/vm-win.json
index 0e11e25..22bc2d5 100644
--- a/recipe_modules/dart/examples/example.expected/vm-win.json
+++ b/recipe_modules/dart/examples/example.expected/vm-win.json
@@ -1952,14 +1952,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test1_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"0\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -1968,7 +1970,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test1_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: test1_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test1_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
@@ -2028,14 +2030,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test1_shard_2\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"1\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -2044,7 +2048,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test1_shard_2@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test1_shard_2@@@",
-      "@@@STEP_LINK@task isolated outputs: test1_shard_2@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test1_shard_2@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
@@ -2104,14 +2108,16 @@
       "@@@STEP_LOG_LINE@json.output@    \"outputs\": [], @@@",
       "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
       "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\", @@@",
+      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\", @@@",
+      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\", @@@",
+      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"exit_code\": 0, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"name\": \"test3_shard_1\", @@@",
-      "@@@STEP_LOG_LINE@json.output@      \"outputs_ref\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolated\": \"abc123\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"isolatedserver\": \"https://isolateserver.appspot.com\", @@@",
-      "@@@STEP_LOG_LINE@json.output@        \"namespace\": \"default-gzip\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }, @@@",
       "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\", @@@",
       "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"2\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
@@ -2120,7 +2126,7 @@
       "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@task stdout+stderr: test3_shard_1@hello world!@@@",
       "@@@STEP_LOG_END@task stdout+stderr: test3_shard_1@@@",
-      "@@@STEP_LINK@task isolated outputs: test3_shard_1@https://isolateserver.appspot.com/browse?namespace=default-gzip&hash=abc123@@@"
+      "@@@STEP_LINK@task cas outputs: test3_shard_1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
     ]
   },
   {
diff --git a/recipes.py b/recipes.py
index 8d550e8..8224c13 100755
--- a/recipes.py
+++ b/recipes.py
@@ -6,12 +6,12 @@
 # We want to run python in unbuffered mode; however shebangs on linux grab the
 # entire rest of the shebang line as a single argument, leading to errors like:
 #
-#   /usr/bin/env: 'python2 -u': No such file or directory
+#   /usr/bin/env: 'python -u': No such file or directory
 #
 # This little shell hack is a triple-quoted noop in python, but in sh it
 # evaluates to re-exec'ing this script in unbuffered mode.
 # pylint: disable=pointless-string-statement
-''''exec python2 -u -- "$0" ${1+"$@"} # '''
+''''exec python -u -- "$0" ${1+"$@"} # '''
 # vi: syntax=python
 """Bootstrap script to clone and forward to the recipe engine tool.
 
@@ -33,6 +33,7 @@
 import sys
 
 from collections import namedtuple
+from io import open  # pylint: disable=redefined-builtin
 
 try:
   import urllib.parse as urlparse
@@ -70,7 +71,7 @@
       current repo (i.e. the folder containing `recipes/` and/or
       `recipe_modules`)
   """
-  with open(recipes_cfg_path, 'rU') as fh:
+  with open(recipes_cfg_path, 'r') as fh:
     pb = json.load(fh)
 
   try:
diff --git a/recipes/dart/docker.expected/release.json b/recipes/dart/docker.expected/release.json
index 945a559..33c54fb 100644
--- a/recipes/dart/docker.expected/release.json
+++ b/recipes/dart/docker.expected/release.json
@@ -47,7 +47,7 @@
     "infra_step": true,
     "name": "read revision",
     "~followup_annotations": [
-      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+      "@@@STEP_TEXT@<br/>checked out u'deadbeef'<br/>@@@"
     ]
   },
   {
diff --git a/recipes/dart/flutter_engine.expected/start-bisect.json b/recipes/dart/flutter_engine.expected/start-bisect.json
index a387273..ba25e9e 100644
--- a/recipes/dart/flutter_engine.expected/start-bisect.json
+++ b/recipes/dart/flutter_engine.expected/start-bisect.json
@@ -38,7 +38,7 @@
     "name": "find bisection base build.list previous builds",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@raw_io.output_text@{\"status\": \"SUCCESS\", \"output\": {\"properties\": {\"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"}}, \"builder\": {\"project\": \"dart\", \"builder\": \"foo\", \"bucket\": \"ci\"}, \"number\": 4710}@@@",
+      "@@@STEP_LOG_LINE@raw_io.output_text@{\"builder\": {\"bucket\": \"ci\", \"builder\": \"foo\", \"project\": \"dart\"}, \"number\": 4710, \"output\": {\"properties\": {\"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"}}, \"status\": \"SUCCESS\"}@@@",
       "@@@STEP_LOG_END@raw_io.output_text@@@",
       "@@@STEP_LINK@0@https://cr-buildbucket.appspot.com/build/8945511751514863184@@@"
     ]
diff --git a/recipes/dart/linearize.expected/base.json b/recipes/dart/linearize.expected/base.json
index 214a584..0d9d2cb 100644
--- a/recipes/dart/linearize.expected/base.json
+++ b/recipes/dart/linearize.expected/base.json
@@ -148,7 +148,7 @@
     "infra_step": true,
     "name": "read revision",
     "~followup_annotations": [
-      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+      "@@@STEP_TEXT@<br/>checked out u'deadbeef'<br/>@@@"
     ]
   },
   {
diff --git a/recipes/dart/neo.expected/builders_dart2js-win-debug-x64-firefox-try.json b/recipes/dart/neo.expected/builders_dart2js-win-debug-x64-firefox-try.json
index 97fd237..91401d3 100644
--- a/recipes/dart/neo.expected/builders_dart2js-win-debug-x64-firefox-try.json
+++ b/recipes/dart/neo.expected/builders_dart2js-win-debug-x64-firefox-try.json
@@ -241,16 +241,16 @@
       "/path/to/tmp/json",
       "copy",
       "{'variables': {'files': '[]'}}",
-      "[CACHE]/builder/sdk/nameoffileset"
+      "[CACHE]/builder/sdk/fileset1"
     ],
     "env": {
       "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
     },
     "infra_step": true,
-    "name": "write fileset nameoffileset to sdk root",
+    "name": "write fileset fileset1 to sdk root",
     "~followup_annotations": [
-      "@@@STEP_LOG_LINE@nameoffileset@{'variables': {'files': '[]'}}@@@",
-      "@@@STEP_LOG_END@nameoffileset@@@"
+      "@@@STEP_LOG_LINE@fileset1@{'variables': {'files': '[]'}}@@@",
+      "@@@STEP_LOG_END@fileset1@@@"
     ]
   },
   {
@@ -262,16 +262,16 @@
       "/path/to/tmp/json",
       "copy",
       "{'variables': {'files': '[]'}}",
-      "[CACHE]/builder/sdk/fileset1"
+      "[CACHE]/builder/sdk/nameoffileset"
     ],
     "env": {
       "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
     },
     "infra_step": true,
-    "name": "write fileset fileset1 to sdk root",
+    "name": "write fileset nameoffileset to sdk root",
     "~followup_annotations": [
-      "@@@STEP_LOG_LINE@fileset1@{'variables': {'files': '[]'}}@@@",
-      "@@@STEP_LOG_END@fileset1@@@"
+      "@@@STEP_LOG_LINE@nameoffileset@{'variables': {'files': '[]'}}@@@",
+      "@@@STEP_LOG_END@nameoffileset@@@"
     ]
   },
   {
diff --git a/recipes/dart/neo.expected/failing-test-step-starts-bisection.json b/recipes/dart/neo.expected/failing-test-step-starts-bisection.json
index a99b9f9..47d4a0f 100644
--- a/recipes/dart/neo.expected/failing-test-step-starts-bisection.json
+++ b/recipes/dart/neo.expected/failing-test-step-starts-bisection.json
@@ -192,16 +192,16 @@
       "/path/to/tmp/json",
       "copy",
       "{'variables': {'files': '[]'}}",
-      "[CACHE]/builder/sdk/nameoffileset"
+      "[CACHE]/builder/sdk/fileset1"
     ],
     "env": {
       "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
     },
     "infra_step": true,
-    "name": "write fileset nameoffileset to sdk root",
+    "name": "write fileset fileset1 to sdk root",
     "~followup_annotations": [
-      "@@@STEP_LOG_LINE@nameoffileset@{'variables': {'files': '[]'}}@@@",
-      "@@@STEP_LOG_END@nameoffileset@@@"
+      "@@@STEP_LOG_LINE@fileset1@{'variables': {'files': '[]'}}@@@",
+      "@@@STEP_LOG_END@fileset1@@@"
     ]
   },
   {
@@ -213,16 +213,16 @@
       "/path/to/tmp/json",
       "copy",
       "{'variables': {'files': '[]'}}",
-      "[CACHE]/builder/sdk/fileset1"
+      "[CACHE]/builder/sdk/nameoffileset"
     ],
     "env": {
       "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
     },
     "infra_step": true,
-    "name": "write fileset fileset1 to sdk root",
+    "name": "write fileset nameoffileset to sdk root",
     "~followup_annotations": [
-      "@@@STEP_LOG_LINE@fileset1@{'variables': {'files': '[]'}}@@@",
-      "@@@STEP_LOG_END@fileset1@@@"
+      "@@@STEP_LOG_LINE@nameoffileset@{'variables': {'files': '[]'}}@@@",
+      "@@@STEP_LOG_END@nameoffileset@@@"
     ]
   },
   {
@@ -1682,7 +1682,7 @@
     "name": "find bisection base build.list previous builds",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@raw_io.output_text@{\"status\": \"SUCCESS\", \"output\": {\"properties\": {\"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"}}, \"builder\": {\"project\": \"dart\", \"builder\": \"foo\", \"bucket\": \"ci\"}, \"number\": 4710}@@@",
+      "@@@STEP_LOG_LINE@raw_io.output_text@{\"builder\": {\"bucket\": \"ci\", \"builder\": \"foo\", \"project\": \"dart\"}, \"number\": 4710, \"output\": {\"properties\": {\"got_revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\"}}, \"status\": \"SUCCESS\"}@@@",
       "@@@STEP_LOG_END@raw_io.output_text@@@",
       "@@@STEP_LINK@0@https://cr-buildbucket.appspot.com/build/8945511751514863184@@@"
     ]
diff --git a/recipes/dart/neo.expected/infra-failure-does-not-start-bisection.json b/recipes/dart/neo.expected/infra-failure-does-not-start-bisection.json
index a102587..46327b2 100644
--- a/recipes/dart/neo.expected/infra-failure-does-not-start-bisection.json
+++ b/recipes/dart/neo.expected/infra-failure-does-not-start-bisection.json
@@ -192,16 +192,16 @@
       "/path/to/tmp/json",
       "copy",
       "{'variables': {'files': '[]'}}",
-      "[CACHE]/builder/sdk/nameoffileset"
+      "[CACHE]/builder/sdk/fileset1"
     ],
     "env": {
       "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
     },
     "infra_step": true,
-    "name": "write fileset nameoffileset to sdk root",
+    "name": "write fileset fileset1 to sdk root",
     "~followup_annotations": [
-      "@@@STEP_LOG_LINE@nameoffileset@{'variables': {'files': '[]'}}@@@",
-      "@@@STEP_LOG_END@nameoffileset@@@"
+      "@@@STEP_LOG_LINE@fileset1@{'variables': {'files': '[]'}}@@@",
+      "@@@STEP_LOG_END@fileset1@@@"
     ]
   },
   {
@@ -213,16 +213,16 @@
       "/path/to/tmp/json",
       "copy",
       "{'variables': {'files': '[]'}}",
-      "[CACHE]/builder/sdk/fileset1"
+      "[CACHE]/builder/sdk/nameoffileset"
     ],
     "env": {
       "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
     },
     "infra_step": true,
-    "name": "write fileset fileset1 to sdk root",
+    "name": "write fileset nameoffileset to sdk root",
     "~followup_annotations": [
-      "@@@STEP_LOG_LINE@fileset1@{'variables': {'files': '[]'}}@@@",
-      "@@@STEP_LOG_END@fileset1@@@"
+      "@@@STEP_LOG_LINE@nameoffileset@{'variables': {'files': '[]'}}@@@",
+      "@@@STEP_LOG_END@nameoffileset@@@"
     ]
   },
   {
diff --git a/recipes/dart/neo.expected/successful-build-does-not-start-bisection.json b/recipes/dart/neo.expected/successful-build-does-not-start-bisection.json
index 6180956..e5d7352 100644
--- a/recipes/dart/neo.expected/successful-build-does-not-start-bisection.json
+++ b/recipes/dart/neo.expected/successful-build-does-not-start-bisection.json
@@ -192,16 +192,16 @@
       "/path/to/tmp/json",
       "copy",
       "{'variables': {'files': '[]'}}",
-      "[CACHE]/builder/sdk/nameoffileset"
+      "[CACHE]/builder/sdk/fileset1"
     ],
     "env": {
       "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
     },
     "infra_step": true,
-    "name": "write fileset nameoffileset to sdk root",
+    "name": "write fileset fileset1 to sdk root",
     "~followup_annotations": [
-      "@@@STEP_LOG_LINE@nameoffileset@{'variables': {'files': '[]'}}@@@",
-      "@@@STEP_LOG_END@nameoffileset@@@"
+      "@@@STEP_LOG_LINE@fileset1@{'variables': {'files': '[]'}}@@@",
+      "@@@STEP_LOG_END@fileset1@@@"
     ]
   },
   {
@@ -213,16 +213,16 @@
       "/path/to/tmp/json",
       "copy",
       "{'variables': {'files': '[]'}}",
-      "[CACHE]/builder/sdk/fileset1"
+      "[CACHE]/builder/sdk/nameoffileset"
     ],
     "env": {
       "ANALYZER_STATE_LOCATION_OVERRIDE": "[CLEANUP]/analysis-cache"
     },
     "infra_step": true,
-    "name": "write fileset fileset1 to sdk root",
+    "name": "write fileset nameoffileset to sdk root",
     "~followup_annotations": [
-      "@@@STEP_LOG_LINE@fileset1@{'variables': {'files': '[]'}}@@@",
-      "@@@STEP_LOG_END@fileset1@@@"
+      "@@@STEP_LOG_LINE@nameoffileset@{'variables': {'files': '[]'}}@@@",
+      "@@@STEP_LOG_END@nameoffileset@@@"
     ]
   },
   {
diff --git a/recipes/dart/package_co19.expected/basic-with-revision.json b/recipes/dart/package_co19.expected/basic-with-revision.json
index 7ade516..fec0b1e 100644
--- a/recipes/dart/package_co19.expected/basic-with-revision.json
+++ b/recipes/dart/package_co19.expected/basic-with-revision.json
@@ -47,7 +47,7 @@
     "infra_step": true,
     "name": "read revision",
     "~followup_annotations": [
-      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
+      "@@@STEP_TEXT@<br/>checked out u'deadbeef'<br/>@@@",
       "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
     ]
   },
diff --git a/recipes/dart/package_co19.expected/basic-with-variant.json b/recipes/dart/package_co19.expected/basic-with-variant.json
index 171bd1e..a8d7a3e 100644
--- a/recipes/dart/package_co19.expected/basic-with-variant.json
+++ b/recipes/dart/package_co19.expected/basic-with-variant.json
@@ -47,7 +47,7 @@
     "infra_step": true,
     "name": "read revision",
     "~followup_annotations": [
-      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
+      "@@@STEP_TEXT@<br/>checked out u'deadbeef'<br/>@@@",
       "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
     ]
   },
diff --git a/recipes/dart/package_co19.expected/basic.json b/recipes/dart/package_co19.expected/basic.json
index 2636652..6331a7a 100644
--- a/recipes/dart/package_co19.expected/basic.json
+++ b/recipes/dart/package_co19.expected/basic.json
@@ -47,7 +47,7 @@
     "infra_step": true,
     "name": "read revision",
     "~followup_annotations": [
-      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
+      "@@@STEP_TEXT@<br/>checked out u'deadbeef'<br/>@@@",
       "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
     ]
   },
diff --git a/recipes/dart/package_dart_ci.expected/basic-mac-arm64.json b/recipes/dart/package_dart_ci.expected/basic-mac-arm64.json
index c61214a..e83822b 100644
--- a/recipes/dart/package_dart_ci.expected/basic-mac-arm64.json
+++ b/recipes/dart/package_dart_ci.expected/basic-mac-arm64.json
@@ -46,7 +46,7 @@
     "infra_step": true,
     "name": "read revision",
     "~followup_annotations": [
-      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
+      "@@@STEP_TEXT@<br/>checked out u'deadbeef'<br/>@@@",
       "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
     ]
   },
diff --git a/recipes/dart/package_dart_ci.expected/basic-with-revision.json b/recipes/dart/package_dart_ci.expected/basic-with-revision.json
index 35a9ea5..bed9aec 100644
--- a/recipes/dart/package_dart_ci.expected/basic-with-revision.json
+++ b/recipes/dart/package_dart_ci.expected/basic-with-revision.json
@@ -47,7 +47,7 @@
     "infra_step": true,
     "name": "read revision",
     "~followup_annotations": [
-      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
+      "@@@STEP_TEXT@<br/>checked out u'deadbeef'<br/>@@@",
       "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
     ]
   },
diff --git a/recipes/dart/package_dart_ci.expected/basic.json b/recipes/dart/package_dart_ci.expected/basic.json
index a932d7d..b8ad071 100644
--- a/recipes/dart/package_dart_ci.expected/basic.json
+++ b/recipes/dart/package_dart_ci.expected/basic.json
@@ -46,7 +46,7 @@
     "infra_step": true,
     "name": "read revision",
     "~followup_annotations": [
-      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@",
+      "@@@STEP_TEXT@<br/>checked out u'deadbeef'<br/>@@@",
       "@@@SET_BUILD_PROPERTY@got_revision@\"deadbeef\"@@@"
     ]
   },
diff --git a/recipes/roller/roll_to_dev.expected/no-push-if-already-merged.json b/recipes/roller/roll_to_dev.expected/no-push-if-already-merged.json
index acecc84..89f0376 100644
--- a/recipes/roller/roll_to_dev.expected/no-push-if-already-merged.json
+++ b/recipes/roller/roll_to_dev.expected/no-push-if-already-merged.json
@@ -100,7 +100,7 @@
     "infra_step": true,
     "name": "read revision",
     "~followup_annotations": [
-      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+      "@@@STEP_TEXT@<br/>checked out u'deadbeef'<br/>@@@"
     ]
   },
   {
diff --git a/recipes/roller/roll_to_dev.expected/push.json b/recipes/roller/roll_to_dev.expected/push.json
index 9630a1d..addcc7d 100644
--- a/recipes/roller/roll_to_dev.expected/push.json
+++ b/recipes/roller/roll_to_dev.expected/push.json
@@ -100,7 +100,7 @@
     "infra_step": true,
     "name": "read revision",
     "~followup_annotations": [
-      "@@@STEP_TEXT@<br/>checked out 'deadbeef'<br/>@@@"
+      "@@@STEP_TEXT@<br/>checked out u'deadbeef'<br/>@@@"
     ]
   },
   {