[bzlmod] Migrate to bzlmod.

Switch from WORKSPACE to MODULE.

Bug: 308624902
Change-Id: I0ac262c7955732605b3b0ea6f6aca57679fb34f9
Reviewed-on: https://fuchsia-review.googlesource.com/c/template/driver/+/1529417
Reviewed-by: Chase Latta <chaselatta@google.com>
diff --git a/.gitmodules b/.gitmodules
index 6fb3280..3c99dc8 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,15 +1,3 @@
 [submodule "third_party/fuchsia-infra-bazel-rules"]
 	path = third_party/fuchsia-infra-bazel-rules
 	url = https://fuchsia.googlesource.com/fuchsia-infra-bazel-rules
-[submodule "third_party/googletest"]
-	path = third_party/googletest
-	url = https://fuchsia.googlesource.com/third_party/github.com/google/googletest
-[submodule "third_party/platforms"]
-	path = third_party/platforms
-	url = https://fuchsia.googlesource.com/third_party/github.com/bazelbuild/platforms
-[submodule "third_party/rules_python"]
-	path = third_party/rules_python
-	url = https://fuchsia.googlesource.com/third_party/github.com/bazelbuild/rules_python/
-[submodule "third_party/rules_license"]
-	path = third_party/rules_license
-	url = https://fuchsia.googlesource.com/third_party/github.com/bazelbuild/rules_license/
diff --git a/MODULE.bazel b/MODULE.bazel
new file mode 100644
index 0000000..ac29cbf
--- /dev/null
+++ b/MODULE.bazel
@@ -0,0 +1,82 @@
+# Copyright 2026 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+module(
+    name = "xx__replace_me__xx",
+    version = "0.0.1",
+)
+
+bazel_dep(name = "fuchsia_infra")
+local_path_override(
+    module_name = "fuchsia_infra",
+    path = "third_party/fuchsia-infra-bazel-rules",
+)
+
+# BCR dependencies.
+bazel_dep(name = "googletest", version = "1.17.0", repo_name = "com_google_googletest")
+bazel_dep(name = "platforms", version = "1.0.0")  # Used by @fuchsia_clang transitively.
+bazel_dep(name = "rules_cc", version = "0.2.14")
+
+# Replace the fake (stub) `@fuchsia_sdk` in googletest with our real `@fuchsia_sdk` instance.
+fake_fuchsia_sdk_extension = use_extension("@com_google_googletest//:fake_fuchsia_sdk.bzl", "fuchsia_sdk")
+
+override_repo(fake_fuchsia_sdk_extension, "fuchsia_sdk")
+
+# Setup CIPD.
+cipd_tool_repository = use_repo_rule("@fuchsia_infra//cipd:defs.bzl", "cipd_tool_repository")
+
+cipd_tool_repository(name = "cipd_tool")
+
+cipd_ext = use_extension("@fuchsia_infra//cipd:defs.bzl", "cipd_ext")
+
+# Fuchsia dependencies.
+cipd_ext.repository(
+    name = "rules_fuchsia",
+    ensure_file = "//manifests:rules_fuchsia.ensure",
+)
+use_repo(cipd_ext, "rules_fuchsia")
+
+cipd_ext.repository(
+    name = "fuchsia_sdk",
+    ensure_file = "//manifests:bazel_sdk.ensure",
+)
+use_repo(cipd_ext, "fuchsia_sdk")
+
+fuchsia_clang_ext = use_extension("@fuchsia_infra//:extensions.bzl", "fuchsia_clang_ext")
+fuchsia_clang_ext.cipd_ensure(
+    ensure_file = "//manifests:clang.ensure",
+)
+use_repo(fuchsia_clang_ext, "fuchsia_clang")
+
+fuchsia_products_repository = use_repo_rule("@rules_fuchsia//fuchsia:products.bzl", "fuchsia_products_repository")
+
+fuchsia_products_repository(
+    name = "fuchsia_products",
+    cipd_bin = "@cipd_tool//:cipd",
+    ensure_file = "//manifests:product_bundles.ensure",
+)
+
+# Register toolchains.
+# Fuchsia SDK toolchain.
+fuchsia_toolchain_repo = use_repo_rule("@rules_fuchsia//fuchsia/workspace:register_fuchsia_sdk_toolchain.bzl", "fuchsia_toolchain_decl")
+
+fuchsia_toolchain_repo(
+    name = "fuchsia_sdk_toolchain",
+    toolchain_path = "@fuchsia_sdk//:fuchsia_toolchain_info",
+)
+
+register_toolchains("@fuchsia_sdk_toolchain//:all")
+
+# Target cpp toolchain.
+register_toolchains("@fuchsia_clang//:all")
+
+# Host cpp toolchain.
+fuchsia_clang_host_toolchain_repo = use_repo_rule("@fuchsia_infra//infra:host_toolchains.bzl", "fuchsia_clang_host_toolchain_repo")
+
+fuchsia_clang_host_toolchain_repo(name = "host_clang_toolchain")
+
+register_toolchains("@host_clang_toolchain//:all")
+
+# Shac
+use_repo(cipd_ext, "shac")
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock
new file mode 100644
index 0000000..2177b96
--- /dev/null
+++ b/MODULE.bazel.lock
@@ -0,0 +1,393 @@
+{
+  "lockFileVersion": 18,
+  "registryFileHashes": {
+    "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497",
+    "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2",
+    "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915",
+    "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed",
+    "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/MODULE.bazel": "c4a89e7ceb9bf1e25cf84a9f830ff6b817b72874088bf5141b314726e46a57c1",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/source.json": "03c90ee57977264436d3231676dcddae116c4769a5d02b6fc16c2c9e019b583a",
+    "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85",
+    "https://bcr.bazel.build/modules/apple_support/1.15.1/source.json": "517f2b77430084c541bc9be2db63fdcbb7102938c5f64c17ee60ffda2e5cf07b",
+    "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd",
+    "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8",
+    "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d",
+    "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d",
+    "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a",
+    "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58",
+    "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b",
+    "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d",
+    "https://bcr.bazel.build/modules/bazel_features/1.28.0/source.json": "16a3fc5b4483cb307643791f5a4b7365fa98d2e70da7c378cdbde55f0c0b32cf",
+    "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7",
+    "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/source.json": "7ebaefba0b03efe59cac88ed5bbc67bcf59a3eff33af937345ede2a38b2d368a",
+    "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84",
+    "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8",
+    "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb",
+    "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4",
+    "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6",
+    "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f",
+    "https://bcr.bazel.build/modules/googletest/1.15.2/MODULE.bazel": "6de1edc1d26cafb0ea1a6ab3f4d4192d91a312fd2d360b63adaa213cd00b2108",
+    "https://bcr.bazel.build/modules/googletest/1.17.0/MODULE.bazel": "dbec758171594a705933a29fcf69293d2468c49ec1f2ebca65c36f504d72df46",
+    "https://bcr.bazel.build/modules/googletest/1.17.0/source.json": "38e4454b25fc30f15439c0378e57909ab1fd0a443158aa35aec685da727cd713",
+    "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075",
+    "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d",
+    "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902",
+    "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5",
+    "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f",
+    "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee",
+    "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37",
+    "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615",
+    "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814",
+    "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d",
+    "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc",
+    "https://bcr.bazel.build/modules/platforms/1.0.0/MODULE.bazel": "f05feb42b48f1b3c225e4ccf351f367be0371411a803198ec34a389fb22aa580",
+    "https://bcr.bazel.build/modules/platforms/1.0.0/source.json": "f4ff1fd412e0246fd38c82328eb209130ead81d62dcd5a9e40910f867f733d96",
+    "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7",
+    "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c",
+    "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d",
+    "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df",
+    "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92",
+    "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e",
+    "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981",
+    "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0",
+    "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e",
+    "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34",
+    "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680",
+    "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206",
+    "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a",
+    "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/source.json": "2ff292be6ef3340325ce8a045ecc326e92cbfab47c7cbab4bd85d28971b97ac4",
+    "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa",
+    "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8",
+    "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.14/source.json": "55d0a4587c5592fad350f6e698530f4faf0e7dd15e69d43f8d87e220c78bea54",
+    "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6",
+    "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8",
+    "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e",
+    "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74",
+    "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86",
+    "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39",
+    "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6",
+    "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31",
+    "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a",
+    "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6",
+    "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab",
+    "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2",
+    "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe",
+    "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017",
+    "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939",
+    "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2",
+    "https://bcr.bazel.build/modules/rules_java/8.6.1/source.json": "f18d9ad3c4c54945bf422ad584fa6c5ca5b3116ff55a5b1bc77e5c1210be5960",
+    "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7",
+    "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909",
+    "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036",
+    "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d",
+    "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4",
+    "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0",
+    "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197",
+    "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59",
+    "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3",
+    "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5",
+    "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0",
+    "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d",
+    "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c",
+    "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb",
+    "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc",
+    "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff",
+    "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a",
+    "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06",
+    "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7",
+    "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483",
+    "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73",
+    "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2",
+    "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1",
+    "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f",
+    "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300",
+    "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382",
+    "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed",
+    "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58",
+    "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937",
+    "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c",
+    "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7",
+    "https://bcr.bazel.build/modules/rules_python/1.1.0/MODULE.bazel": "57e01abae22956eb96d891572490d20e07d983e0c065de0b2170cafe5053e788",
+    "https://bcr.bazel.build/modules/rules_python/1.1.0/source.json": "29f1fdfd23a40808c622f813bc93e29c3aae277333f03293f667e76159750a0f",
+    "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c",
+    "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95",
+    "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8",
+    "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c",
+    "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef",
+    "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c",
+    "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7",
+    "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5",
+    "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216",
+    "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43",
+    "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0",
+    "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79",
+    "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d",
+    "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198"
+  },
+  "selectedYankedVersions": {},
+  "moduleExtensions": {
+    "@@apple_support+//crosstool:setup.bzl%apple_cc_configure_extension": {
+      "general": {
+        "bzlTransitiveDigest": "p7Ghcq3+nnQxCrf+U3xnhdn7yOSTDbcFyGHK7Ja+rU4=",
+        "usagesDigest": "aYRVMk+1OupIp+5hdBlpzT36qgd6ntgSxYTzMLW5K4U=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "local_config_apple_cc_toolchains": {
+            "repoRuleId": "@@apple_support+//crosstool:setup.bzl%_apple_cc_autoconf_toolchains",
+            "attributes": {}
+          },
+          "local_config_apple_cc": {
+            "repoRuleId": "@@apple_support+//crosstool:setup.bzl%_apple_cc_autoconf",
+            "attributes": {}
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "apple_support+",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "bazel_tools",
+            "rules_cc",
+            "rules_cc+"
+          ]
+        ]
+      }
+    },
+    "@@fuchsia_infra+//:extensions.bzl%fuchsia_clang_ext": {
+      "general": {
+        "bzlTransitiveDigest": "GThjmXHcQqr1LjrYdce23ycsbzUzrmg2KcGAmFX6Ftc=",
+        "usagesDigest": "4kb4Pxs604qGVVTUfdihNbISvixvOVOcb2EA7NjzBRc=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "fuchsia_clang": {
+            "repoRuleId": "@@fuchsia_infra++cipd_ext+rules_fuchsia//fuchsia/workspace:fuchsia_clang_repository.bzl%fuchsia_clang_repository",
+            "attributes": {
+              "cipd_bin": "@@fuchsia_infra++_repo_rules+cipd_tool//:cipd",
+              "cipd_ensure_file": "@@//manifests:clang.ensure",
+              "cipd_tag": "",
+              "sha256": {}
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "bazel_tools",
+            "rules_cc",
+            "rules_cc+"
+          ],
+          [
+            "fuchsia_infra+",
+            "rules_fuchsia",
+            "fuchsia_infra++cipd_ext+rules_fuchsia"
+          ],
+          [
+            "fuchsia_infra++cipd_ext+rules_fuchsia",
+            "bazel_skylib",
+            "bazel_skylib+"
+          ],
+          [
+            "fuchsia_infra++cipd_ext+rules_fuchsia",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "fuchsia_infra++cipd_ext+rules_fuchsia",
+            "fuchsia_sdk",
+            "fuchsia_infra++cipd_ext+fuchsia_sdk"
+          ],
+          [
+            "fuchsia_infra++cipd_ext+rules_fuchsia",
+            "rules_cc",
+            "rules_cc+"
+          ],
+          [
+            "rules_cc+",
+            "cc_compatibility_proxy",
+            "rules_cc++compatibility_proxy+cc_compatibility_proxy"
+          ],
+          [
+            "rules_cc++compatibility_proxy+cc_compatibility_proxy",
+            "rules_cc",
+            "rules_cc+"
+          ]
+        ]
+      }
+    },
+    "@@fuchsia_infra+//cipd:defs.bzl%cipd_ext": {
+      "general": {
+        "bzlTransitiveDigest": "fJkxs06iLDUxIuKRBBRpSB5AjrkC8jPPKegXtDCURi0=",
+        "usagesDigest": "shjVn3CqBlVyBZGOfSuqVx7naJA0fsgr5r+DqS9Fu6k=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "rules_fuchsia": {
+            "repoRuleId": "@@fuchsia_infra+//cipd/private:cipd_repository.bzl%cipd_repository",
+            "attributes": {
+              "ensure_file": "@@//manifests:rules_fuchsia.ensure",
+              "package": "",
+              "tag": "",
+              "exports_files": false,
+              "cipd_bin": "@@fuchsia_infra++_repo_rules+cipd_tool//:cipd"
+            }
+          },
+          "fuchsia_sdk": {
+            "repoRuleId": "@@fuchsia_infra+//cipd/private:cipd_repository.bzl%cipd_repository",
+            "attributes": {
+              "ensure_file": "@@//manifests:bazel_sdk.ensure",
+              "package": "",
+              "tag": "",
+              "exports_files": false,
+              "cipd_bin": "@@fuchsia_infra++_repo_rules+cipd_tool//:cipd"
+            }
+          },
+          "shac": {
+            "repoRuleId": "@@fuchsia_infra+//cipd/private:cipd_repository.bzl%cipd_repository",
+            "attributes": {
+              "ensure_file": "@@fuchsia_infra+//manifests:shac.ensure",
+              "package": "",
+              "tag": "",
+              "exports_files": true,
+              "cipd_bin": "@@fuchsia_infra++_repo_rules+cipd_tool//:cipd"
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "fuchsia_infra+",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "fuchsia_infra+",
+            "fuchsia_infra",
+            "fuchsia_infra+"
+          ]
+        ]
+      }
+    },
+    "@@rules_java+//java:rules_java_deps.bzl%compatibility_proxy": {
+      "general": {
+        "bzlTransitiveDigest": "84xJEZ1jnXXwo8BXMprvBm++rRt4jsTu9liBxz0ivps=",
+        "usagesDigest": "jTQDdLDxsS43zuRmg1faAjIEPWdLAbDAowI1pInQSoo=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "compatibility_proxy": {
+            "repoRuleId": "@@rules_java+//java:rules_java_deps.bzl%_compatibility_proxy_repo_rule",
+            "attributes": {}
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_java+",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    },
+    "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": {
+      "general": {
+        "bzlTransitiveDigest": "sFhcgPbDQehmbD1EOXzX4H1q/CD5df8zwG4kp4jbvr8=",
+        "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "com_github_jetbrains_kotlin_git": {
+            "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository",
+            "attributes": {
+              "urls": [
+                "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip"
+              ],
+              "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88"
+            }
+          },
+          "com_github_jetbrains_kotlin": {
+            "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository",
+            "attributes": {
+              "git_repository_name": "com_github_jetbrains_kotlin_git",
+              "compiler_version": "1.9.23"
+            }
+          },
+          "com_github_google_ksp": {
+            "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository",
+            "attributes": {
+              "urls": [
+                "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip"
+              ],
+              "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d",
+              "strip_version": "1.9.23-1.0.20"
+            }
+          },
+          "com_github_pinterest_ktlint": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file",
+            "attributes": {
+              "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985",
+              "urls": [
+                "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint"
+              ],
+              "executable": true
+            }
+          },
+          "rules_android": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806",
+              "strip_prefix": "rules_android-0.1.1",
+              "urls": [
+                "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip"
+              ]
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_kotlin+",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    }
+  }
+}
diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel
deleted file mode 100644
index 5c456be..0000000
--- a/WORKSPACE.bazel
+++ /dev/null
@@ -1,111 +0,0 @@
-# Copyright 2023 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# buildifier: disable=load-on-top
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-# Set up bazel skylib and its dependencies
-http_archive(
-    name = "bazel_skylib",
-    sha256 = "f7be3474d42aae265405a592bb7da8e171919d74c16f082a5457840f06054728",
-    urls = [
-        "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.2.1/bazel-skylib-1.2.1.tar.gz",
-        "https://github.com/bazelbuild/bazel-skylib/releases/download/1.2.1/bazel-skylib-1.2.1.tar.gz",
-    ],
-)
-
-load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
-
-bazel_skylib_workspace()
-
-local_repository(
-    name = "platforms",
-    path = "third_party/platforms",
-)
-
-load("@platforms//host:extension.bzl", "host_platform_repo")
-
-host_platform_repo(
-    name = "host_platforms",
-)
-
-local_repository(
-    name = "rules_license",
-    path = "third_party/rules_license",
-)
-
-local_repository(
-    name = "rules_python",
-    path = "third_party/rules_python",
-)
-
-# The fuchsia_infra repository provides rules which allow us to work inside of
-# fuchsia's infrastructure.
-local_repository(
-    name = "fuchsia_infra",
-    path = "third_party/fuchsia-infra-bazel-rules",
-)
-
-load("@fuchsia_infra//:workspace.bzl", "fuchsia_infra_workspace")
-load("@fuchsia_infra//cipd:defs.bzl", "cipd_repository")
-load("@fuchsia_infra//shac:shac.bzl", "shac_deps")
-
-fuchsia_infra_workspace()
-
-shac_deps()
-
-# Fetch the Fuchsia SDK and register it as a repostiory. The version that is
-# used is stored in the manifests/bazel_sdk.ensure file so it can be updated by
-# our autoroller infrastructure. When the version changes bazel will fetch the
-# new prebuilts.
-cipd_repository(
-    name = "fuchsia_sdk",
-    ensure_file = "//manifests:bazel_sdk.ensure",
-)
-
-# The fuchsia toolchain contains tools like ffx and fidlc.
-register_toolchains("@fuchsia_sdk//:fuchsia_toolchain_sdk")
-
-load(
-    "@fuchsia_sdk//fuchsia:products.bzl",
-    "fuchsia_products_repository",
-)
-
-fuchsia_products_repository(
-    name = "fuchsia_products",
-    cipd_bin = "@cipd_tool//:cipd",
-    ensure_file = "//manifests:product_bundles.ensure",
-)
-
-load(
-    "@fuchsia_sdk//fuchsia:clang.bzl",
-    "fuchsia_clang_repository",
-)
-
-# Set up our clang repository.
-fuchsia_clang_repository(
-    name = "fuchsia_clang",
-    cipd_bin = "@cipd_tool//:cipd",
-    cipd_ensure_file = "//manifests:clang.ensure",
-)
-
-load("@fuchsia_clang//:defs.bzl", "register_clang_toolchains")
-
-# Register a clang toolchain which will be used to compile fuchsia targets
-register_clang_toolchains()
-
-load("@fuchsia_infra//infra:host_toolchains.bzl", "configure_fuchsia_clang_host_toolchain")
-
-# Configure a host toolchain for local execution. This is not used to compile
-# fuchsia targets but is made available so we don't try to access the host gcc
-# which is not available in infrastructure builds. This call must happen after
-# you create a fuchsia_clang repository.
-configure_fuchsia_clang_host_toolchain(name = "host_clang_toolchain")
-
-# gTest.
-local_repository(
-    name = "com_google_googletest",
-    path = "third_party/googletest",
-)
diff --git a/_rollers.textproto b/_rollers.textproto
index a25ec2a..a33af0f 100644
--- a/_rollers.textproto
+++ b/_rollers.textproto
@@ -14,23 +14,6 @@
       ]
     },
     {
-      submodule: {
-        path: "third_party/googletest"
-      }
-      notify_emails: [
-          "fuchsia-sdk-experiences+notify@google.com"
-      ]
-    },
-    {
-      submodule: {
-        path: "third_party/platforms"
-        ref: "refs/heads/upstream/main"
-      }
-      notify_emails: [
-          "fuchsia-sdk-experiences+notify@google.com"
-      ]
-    },
-    {
       cipd_packages: {
         dep_name: "bazel_sdk"
         ensure_files: [
diff --git a/manifests/bazel_sdk.ensure b/manifests/bazel_sdk.ensure
index 1fb51b3..c65426c 100644
--- a/manifests/bazel_sdk.ensure
+++ b/manifests/bazel_sdk.ensure
@@ -1,3 +1,3 @@
 $ResolvedVersions bazel_sdk.resolved
 $VerifiedPlatform linux-amd64
-fuchsia/sdk/core/fuchsia-bazel-rules/${os=linux}-${arch} version:24.20240924.3.1
+fuchsia/sdk/core/fuchsia-bazel-rules/${os=linux}-${arch} version:31.20260305.4.1
diff --git a/manifests/bazel_sdk.resolved b/manifests/bazel_sdk.resolved
index 5612814..d986955 100644
--- a/manifests/bazel_sdk.resolved
+++ b/manifests/bazel_sdk.resolved
@@ -2,5 +2,5 @@
 # Do not modify manually. All changes will be overwritten.
 
 fuchsia/sdk/core/fuchsia-bazel-rules/linux-amd64
-	version:24.20240924.3.1
-	uvMomYAUsFBh-6bY32Vy9LVkFwqkpD9i7241YgDzq0sC
+	version:31.20260305.4.1
+	NI73C32xImWEe4B3MWJSKd5CWnmKzN_G2z9c6HP_FdMC
diff --git a/manifests/clang.ensure b/manifests/clang.ensure
index b53a9e0..706655d 100644
--- a/manifests/clang.ensure
+++ b/manifests/clang.ensure
@@ -1,4 +1,3 @@
 $ResolvedVersions clang.resolved
-$VerifiedPlatform linux-amd64 linux-arm64 mac-amd64 windows-amd64
-fuchsia/third_party/clang/${os=linux}-${arch} git_revision:3809e20afc68d7d03821f0ec59b928dcf9befbf4
-fuchsia/third_party/clang/${os=mac,windows}-amd64 git_revision:3809e20afc68d7d03821f0ec59b928dcf9befbf4
+$VerifiedPlatform linux-amd64
+fuchsia/third_party/clang/${os=linux}-${arch} git_revision:cb3d7ffb09e8be115da1fd57a6c09860e89f5449
diff --git a/manifests/clang.resolved b/manifests/clang.resolved
index 7daae73..ee165dd 100644
--- a/manifests/clang.resolved
+++ b/manifests/clang.resolved
@@ -2,17 +2,5 @@
 # Do not modify manually. All changes will be overwritten.
 
 fuchsia/third_party/clang/linux-amd64
-	git_revision:3809e20afc68d7d03821f0ec59b928dcf9befbf4
-	PCxEK2HNno8bVnc49tU8_-EbP8gg59roeoKghZvo8gQC
-
-fuchsia/third_party/clang/linux-arm64
-	git_revision:3809e20afc68d7d03821f0ec59b928dcf9befbf4
-	SVwECqg1rPeBZD_Dhmk57vhUYqn6f2FqdLUGA3Fn-ZMC
-
-fuchsia/third_party/clang/mac-amd64
-	git_revision:3809e20afc68d7d03821f0ec59b928dcf9befbf4
-	gLn6tUye8_hs9KK3XOUYt8BocmKasRMSsWMBU0veDoYC
-
-fuchsia/third_party/clang/windows-amd64
-	git_revision:3809e20afc68d7d03821f0ec59b928dcf9befbf4
-	ya_VuD_G47f8eICbJSOQ0Jnx9bOMsNO0FhqqG-mz034C
+	git_revision:cb3d7ffb09e8be115da1fd57a6c09860e89f5449
+	Px9Uxp4ltvVYPpPGjq1qI6bkaCzi9Qrr6gDRZPjWu8MC
diff --git a/manifests/product_bundles.ensure b/manifests/product_bundles.ensure
index 8ac9641..848b138 100644
--- a/manifests/product_bundles.ensure
+++ b/manifests/product_bundles.ensure
@@ -1,2 +1,2 @@
 $ResolvedVersions product_bundles.resolved
-fuchsia/development/product_bundles/v2 version:24.20240924.3.1
+fuchsia/development/product_bundles/v2 version:31.20260305.4.1
diff --git a/manifests/product_bundles.resolved b/manifests/product_bundles.resolved
index a17e8e6..2b34a77 100644
--- a/manifests/product_bundles.resolved
+++ b/manifests/product_bundles.resolved
@@ -2,5 +2,5 @@
 # Do not modify manually. All changes will be overwritten.
 
 fuchsia/development/product_bundles/v2
-	version:24.20240924.3.1
-	B321K5yut4ojw9j_1uedy0Qwp_3904XjWoesWXix3rwC
+	version:31.20260305.4.1
+	8Nj3RdehcV4nQSdcB8dUDchnoewF-UxJDhNk6ynItHUC
diff --git a/manifests/rules_fuchsia.ensure b/manifests/rules_fuchsia.ensure
new file mode 100644
index 0000000..264eadd
--- /dev/null
+++ b/manifests/rules_fuchsia.ensure
@@ -0,0 +1,4 @@
+$ResolvedVersions rules_fuchsia.resolved
+$VerifiedPlatform linux-amd64
+fuchsia/development/rules_fuchsia version:31.20260305.4.1
+
diff --git a/manifests/rules_fuchsia.resolved b/manifests/rules_fuchsia.resolved
new file mode 100644
index 0000000..d0b4779
--- /dev/null
+++ b/manifests/rules_fuchsia.resolved
@@ -0,0 +1,6 @@
+# This file is auto-generated by 'cipd ensure-file-resolve'.
+# Do not modify manually. All changes will be overwritten.
+
+fuchsia/development/rules_fuchsia
+	version:31.20260305.4.1
+	C6SMCxrAf2GKaXqnEe3ETbXLni8oIhRNBQrJG2XJMQ8C
diff --git a/platform_mappings b/platform_mappings
deleted file mode 120000
index d4586be..0000000
--- a/platform_mappings
+++ /dev/null
@@ -1 +0,0 @@
-third_party/fuchsia-infra-bazel-rules/config/fuchsia_platform_mappings
\ No newline at end of file
diff --git a/third_party/fuchsia-infra-bazel-rules b/third_party/fuchsia-infra-bazel-rules
index d49c2eb..bfcbce6 160000
--- a/third_party/fuchsia-infra-bazel-rules
+++ b/third_party/fuchsia-infra-bazel-rules
@@ -1 +1 @@
-Subproject commit d49c2eb1c95adbd8d3f7fa649f7235b9e67e5595
+Subproject commit bfcbce6b9a094145b354280f860362c0e272b699
diff --git a/third_party/googletest b/third_party/googletest
deleted file mode 160000
index b35cae9..0000000
--- a/third_party/googletest
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b35cae9916d80789e1745c31277fa3c3c241be98
diff --git a/third_party/platforms b/third_party/platforms
deleted file mode 160000
index d5fcb55..0000000
--- a/third_party/platforms
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit d5fcb55bf8201539d0c3cb3a882c475330983156
diff --git a/third_party/rules_license b/third_party/rules_license
deleted file mode 160000
index 5b980ea..0000000
--- a/third_party/rules_license
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5b980eaa19dec16c85d8ec5e58c16257c8738ea3
diff --git a/third_party/rules_python b/third_party/rules_python
deleted file mode 160000
index 5ea804f..0000000
--- a/third_party/rules_python
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5ea804f7f32fd79a36d866faa34050dab8a3da03