[StatusOr] Move Cobalt StatusOr into public directory

Planning to use this in the LocalTimeConverterInterface.

Bug: 93229

Change-Id: Ibb4ce17b5f3954d87876db26db7ab359d3b7aa7a
Reviewed-on: https://fuchsia-review.googlesource.com/c/cobalt/+/643142
Reviewed-by: Zach Bush <zmbush@google.com>
Commit-Queue: Laura Peskin <pesk@google.com>
diff --git a/keys/BUILD.gn b/keys/BUILD.gn
index 32f65ae..fa7d082 100644
--- a/keys/BUILD.gn
+++ b/keys/BUILD.gn
@@ -21,10 +21,10 @@
     ":key_tests_files",
     "$cobalt_root/src:logging",
     "$cobalt_root/src/lib/crypto_util",
-    "$cobalt_root/src/lib/statusor",
     "$cobalt_root/src/lib/util:encrypted_message_util",
     "$cobalt_root/src/lib/util:file_util",
     "$cobalt_root/src/pb",
+    "$cobalt_root/src/public/lib/statusor",
     "//third_party/abseil-cpp/absl/strings",
     "//third_party/googletest:gtest",
     "//third_party/tink/proto:tink_proto",
diff --git a/src/algorithms/privacy/BUILD.gn b/src/algorithms/privacy/BUILD.gn
index 6680393..79fe841 100644
--- a/src/algorithms/privacy/BUILD.gn
+++ b/src/algorithms/privacy/BUILD.gn
@@ -77,8 +77,8 @@
 
   deps = [
     ":hash",
-    "$cobalt_root/src/lib/statusor",
     "$cobalt_root/src/public/lib:status",
+    "$cobalt_root/src/public/lib/statusor",
   ]
 }
 
@@ -88,7 +88,7 @@
 
   deps = [
     ":count_min",
-    "$cobalt_root/src/lib/statusor",
+    "$cobalt_root/src/public/lib/statusor",
     "//third_party/gflags",
     "//third_party/googletest:gtest",
   ]
diff --git a/src/algorithms/privacy/count_min.h b/src/algorithms/privacy/count_min.h
index 125a63d..37aca4f 100644
--- a/src/algorithms/privacy/count_min.h
+++ b/src/algorithms/privacy/count_min.h
@@ -10,8 +10,8 @@
 #include <vector>
 
 #include "src/algorithms/privacy/hash.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/public/lib/status.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt {
 
diff --git a/src/algorithms/privacy/count_min_test.cc b/src/algorithms/privacy/count_min_test.cc
index 7e74b02..df9b8c2 100644
--- a/src/algorithms/privacy/count_min_test.cc
+++ b/src/algorithms/privacy/count_min_test.cc
@@ -6,7 +6,7 @@
 
 #include <gtest/gtest.h>
 
-#include "src/lib/statusor/status_macros.h"
+#include "src/public/lib/statusor/status_macros.h"
 
 namespace cobalt {
 
diff --git a/src/lib/clearcut/BUILD.gn b/src/lib/clearcut/BUILD.gn
index ca83d05..c8b6a4c 100644
--- a/src/lib/clearcut/BUILD.gn
+++ b/src/lib/clearcut/BUILD.gn
@@ -22,11 +22,11 @@
   public_deps = [
     ":clearcut_proto",
     "$cobalt_root/src:logging",
-    "$cobalt_root/src/lib/statusor:statusor",
     "$cobalt_root/src/lib/util:clock",
     "$cobalt_root/src/lib/util:sleeper",
     "$cobalt_root/src/logger:internal_metrics",
     "$cobalt_root/src/public/lib:http_client",
+    "$cobalt_root/src/public/lib/statusor",
     "//third_party/abseil-cpp",
   ]
 
@@ -70,9 +70,9 @@
   ]
 
   deps = [
-    "$cobalt_root/src/lib/statusor:statusor",
     "$cobalt_root/src/public/lib:http_client",
     "$cobalt_root/src/public/lib:status",
+    "$cobalt_root/src/public/lib/statusor",
     "//third_party/curl:libcurl",
   ]
 
diff --git a/src/lib/clearcut/curl_handle.h b/src/lib/clearcut/curl_handle.h
index 060a886..744d230 100644
--- a/src/lib/clearcut/curl_handle.h
+++ b/src/lib/clearcut/curl_handle.h
@@ -11,10 +11,10 @@
 
 #include <curl/curl.h>
 
-#include "src/lib/statusor/status_macros.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/public/lib/http_client.h"
 #include "src/public/lib/status.h"
+#include "src/public/lib/statusor/status_macros.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt::lib::clearcut {
 
diff --git a/src/lib/clearcut/curl_http_client.h b/src/lib/clearcut/curl_http_client.h
index 1439091..77f5aee 100644
--- a/src/lib/clearcut/curl_http_client.h
+++ b/src/lib/clearcut/curl_http_client.h
@@ -5,8 +5,8 @@
 #ifndef COBALT_SRC_LIB_CLEARCUT_CURL_HTTP_CLIENT_H_
 #define COBALT_SRC_LIB_CLEARCUT_CURL_HTTP_CLIENT_H_
 
-#include "src/lib/statusor/statusor.h"
 #include "src/public/lib/http_client.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt::lib::clearcut {
 
diff --git a/src/lib/clearcut/uploader.cc b/src/lib/clearcut/uploader.cc
index d899391..184e7db 100644
--- a/src/lib/clearcut/uploader.cc
+++ b/src/lib/clearcut/uploader.cc
@@ -8,8 +8,8 @@
 #include <cmath>
 
 #include "src/lib/clearcut/clearcut.pb.h"
-#include "src/lib/statusor/status_macros.h"
 #include "src/logging.h"
+#include "src/public/lib/statusor/status_macros.h"
 #include "unistd.h"
 
 namespace cobalt::lib::clearcut {
diff --git a/src/lib/clearcut/uploader.h b/src/lib/clearcut/uploader.h
index 99e276b..f8fb8f9 100644
--- a/src/lib/clearcut/uploader.h
+++ b/src/lib/clearcut/uploader.h
@@ -10,12 +10,12 @@
 #include <vector>
 
 #include "src/lib/clearcut/clearcut.pb.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/lib/util/clock.h"
 #include "src/lib/util/sleeper.h"
 #include "src/logger/internal_metrics.h"
 #include "src/public/lib/http_client.h"
 #include "src/public/lib/status.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "third_party/abseil-cpp/absl/strings/escaping.h"
 
 namespace cobalt::lib::clearcut {
diff --git a/src/lib/privacy/BUILD.gn b/src/lib/privacy/BUILD.gn
index aac55d5..73f4cde 100644
--- a/src/lib/privacy/BUILD.gn
+++ b/src/lib/privacy/BUILD.gn
@@ -18,9 +18,9 @@
 
   public_deps = [
     "$cobalt_root/src/algorithms/privacy:numeric_encoding",
-    "$cobalt_root/src/lib/statusor",
     "$cobalt_root/src/logger:event_vector_index",
     "$cobalt_root/src/public/lib:status",
+    "$cobalt_root/src/public/lib/statusor",
     "$cobalt_root/src/registry:cobalt_registry_proto",
     "//third_party/protobuf:protobuf_lite",
   ]
diff --git a/src/lib/privacy/private_index_decoding.cc b/src/lib/privacy/private_index_decoding.cc
index e6f5485..81b3124 100644
--- a/src/lib/privacy/private_index_decoding.cc
+++ b/src/lib/privacy/private_index_decoding.cc
@@ -1,8 +1,8 @@
 #include "src/lib/privacy/private_index_decoding.h"
 
 #include "src/algorithms/privacy/numeric_encoding.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/logger/event_vector_index.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt {
 namespace {
diff --git a/src/lib/statusor/BUILD.gn b/src/lib/statusor/BUILD.gn
index a171aee..e5809a9 100644
--- a/src/lib/statusor/BUILD.gn
+++ b/src/lib/statusor/BUILD.gn
@@ -1,27 +1,10 @@
-# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Copyright 2022 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.
 
-visibility = [
-  "$cobalt_root/*",
-  "//src/cobalt/bin/utils:fuchsia_http_client",
-]
+visibility = [ "//src/cobalt/bin/utils:fuchsia_http_client" ]
 
-static_library("statusor") {
-  sources = [
-    "status_macros.cc",
-    "status_macros.h",
-    "statusor.cc",
-    "statusor.h",
-    "statusor_internals.h",
-  ]
-
-  public_configs = [ "$cobalt_root:cobalt_config" ]
-
-  public_deps = [
-    "$cobalt_root/src/public/lib:status",
-    "//third_party/glog:glog",
-    "//third_party/protobuf:protobuf_lite",
-  ]
-  deps = [ "$cobalt_root/src/public/lib:status" ]
+# TODO(fxbug.dev/93229): Remove once the StatusOr move is done.
+group("statusor") {
+  public_deps = [ "$cobalt_root/src/public/lib/statusor" ]
 }
diff --git a/src/lib/statusor/status_macros.h b/src/lib/statusor/status_macros.h
new file mode 120000
index 0000000..ac2a84c
--- /dev/null
+++ b/src/lib/statusor/status_macros.h
@@ -0,0 +1 @@
+../../public/lib/statusor/status_macros.h
\ No newline at end of file
diff --git a/src/lib/statusor/statusor.h b/src/lib/statusor/statusor.h
new file mode 120000
index 0000000..d539b3c
--- /dev/null
+++ b/src/lib/statusor/statusor.h
@@ -0,0 +1 @@
+../../public/lib/statusor/statusor.h
\ No newline at end of file
diff --git a/src/lib/statusor/statusor_internals.h b/src/lib/statusor/statusor_internals.h
new file mode 120000
index 0000000..e13ca14
--- /dev/null
+++ b/src/lib/statusor/statusor_internals.h
@@ -0,0 +1 @@
+../../public/lib/statusor/statusor_internals.h
\ No newline at end of file
diff --git a/src/lib/util/BUILD.gn b/src/lib/util/BUILD.gn
index 0b4716d..5dfbc1a 100644
--- a/src/lib/util/BUILD.gn
+++ b/src/lib/util/BUILD.gn
@@ -54,8 +54,8 @@
 
   deps = [
     "$cobalt_root/src/lib/crypto_util",
-    "$cobalt_root/src/lib/statusor",
     "$cobalt_root/src/public/lib:status",
+    "$cobalt_root/src/public/lib/statusor",
     "//third_party/abseil-cpp/absl/strings",
   ]
 
@@ -117,8 +117,8 @@
     ":named_type",
     "$cobalt_root/src:logging",
     "$cobalt_root/src/lib/crypto_util",
-    "$cobalt_root/src/lib/statusor",
     "$cobalt_root/src/public/lib:status",
+    "$cobalt_root/src/public/lib/statusor",
     "//third_party/abseil-cpp/absl/strings",
   ]
   visibility += [ "//src/cobalt/bin/app:lib" ]
@@ -204,7 +204,7 @@
   configs += [ "$cobalt_root:cobalt_config" ]
   public_deps = [
     ":proto_serialization",
-    "$cobalt_root/src/lib/statusor",
+    "$cobalt_root/src/public/lib/statusor",
     "//third_party/abseil-cpp/absl/strings",
   ]
 }
@@ -228,9 +228,9 @@
   deps = [
     ":proto_serialization",
     "$cobalt_root/src:logging",
-    "$cobalt_root/src/lib/statusor",
     "$cobalt_root/src/lib/util:posix_file_system",
     "$cobalt_root/src/public/lib:status",
+    "$cobalt_root/src/public/lib/statusor",
     "//third_party/abseil-cpp/absl/strings",
   ]
   public_deps = [ "//third_party/protobuf:protobuf_lite" ]
diff --git a/src/lib/util/consistent_proto_store.cc b/src/lib/util/consistent_proto_store.cc
index bbf86ec..ed0290f 100644
--- a/src/lib/util/consistent_proto_store.cc
+++ b/src/lib/util/consistent_proto_store.cc
@@ -9,8 +9,8 @@
 
 #include <google/protobuf/io/zero_copy_stream_impl.h>
 
-#include "src/lib/statusor/status_macros.h"
 #include "src/logging.h"
+#include "src/public/lib/statusor/status_macros.h"
 #include "third_party/abseil-cpp/absl/strings/str_cat.h"
 
 namespace cobalt::util {
diff --git a/src/lib/util/encrypted_message_util.h b/src/lib/util/encrypted_message_util.h
index 107a6e9..362c5b4 100644
--- a/src/lib/util/encrypted_message_util.h
+++ b/src/lib/util/encrypted_message_util.h
@@ -18,8 +18,8 @@
 #include <vector>
 
 #include "google/protobuf/message_lite.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/pb/encrypted_message.pb.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt::util {
 
diff --git a/src/lib/util/file_system.h b/src/lib/util/file_system.h
index d3de030..bb923f3 100644
--- a/src/lib/util/file_system.h
+++ b/src/lib/util/file_system.h
@@ -13,7 +13,7 @@
 
 #include <google/protobuf/io/zero_copy_stream.h>
 
-#include "src/lib/statusor/statusor.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt::util {
 
diff --git a/src/lib/util/file_util.h b/src/lib/util/file_util.h
index a79b034..86f621f 100644
--- a/src/lib/util/file_util.h
+++ b/src/lib/util/file_util.h
@@ -6,9 +6,9 @@
 
 #include <string>
 
-#include "src/lib/statusor/statusor.h"
 #include "src/lib/util/named_type.h"
 #include "src/lib/util/status_builder.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt::util {
 
diff --git a/src/lib/util/testing/test_posix_file_system.h b/src/lib/util/testing/test_posix_file_system.h
index c53b4a8..6083650 100644
--- a/src/lib/util/testing/test_posix_file_system.h
+++ b/src/lib/util/testing/test_posix_file_system.h
@@ -10,8 +10,8 @@
 #include <string>
 #include <vector>
 
-#include "src/lib/statusor/status_macros.h"
 #include "src/lib/util/posix_file_system.h"
+#include "src/public/lib/statusor/status_macros.h"
 
 namespace cobalt::util::testing {
 
diff --git a/src/local_aggregation/BUILD.gn b/src/local_aggregation/BUILD.gn
index 8b47479..5a993e4 100644
--- a/src/local_aggregation/BUILD.gn
+++ b/src/local_aggregation/BUILD.gn
@@ -48,8 +48,8 @@
   ]
 
   deps = [
-    "$cobalt_root/src/lib/statusor",
     "$cobalt_root/src/lib/util:status_builder",
+    "$cobalt_root/src/public/lib/statusor",
     "$cobalt_root/src/registry:cobalt_registry_proto",
   ]
   public_deps = [
diff --git a/src/local_aggregation/event_aggregator_mgr.cc b/src/local_aggregation/event_aggregator_mgr.cc
index 4a43809..742a836 100644
--- a/src/local_aggregation/event_aggregator_mgr.cc
+++ b/src/local_aggregation/event_aggregator_mgr.cc
@@ -6,11 +6,11 @@
 
 #include <memory>
 
-#include "src/lib/statusor/status_macros.h"
 #include "src/lib/util/consistent_proto_store.h"
 #include "src/lib/util/datetime_util.h"
 #include "src/lib/util/file_system.h"
 #include "src/lib/util/status_builder.h"
+#include "src/public/lib/statusor/status_macros.h"
 #include "src/registry/window_size.pb.h"
 
 namespace cobalt::local_aggregation {
diff --git a/src/local_aggregation_1_1/BUILD.gn b/src/local_aggregation_1_1/BUILD.gn
index 1ef2614..e056556 100644
--- a/src/local_aggregation_1_1/BUILD.gn
+++ b/src/local_aggregation_1_1/BUILD.gn
@@ -105,11 +105,11 @@
   ]
   deps = [
     ":backfill_manager",
-    "$cobalt_root/src/lib/statusor",
     "$cobalt_root/src/lib/util:clock",
     "$cobalt_root/src/lib/util:datetime_util",
     "$cobalt_root/src/logger:project_context_factory",
     "$cobalt_root/src/pb:metadata_builder",
+    "$cobalt_root/src/public/lib/statusor",
     "aggregation_procedures",
     "local_aggregate_storage",
   ]
diff --git a/src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.cc b/src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.cc
index abc5c4e..31c37d4 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.cc
+++ b/src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.cc
@@ -6,8 +6,6 @@
 
 #include <memory>
 
-#include "src/lib/statusor/status_macros.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/at_least_once_aggregation_procedure.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/count_aggregation_procedure.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/integer_histogram_aggregation_procedure.h"
@@ -19,6 +17,8 @@
 #include "src/local_aggregation_1_1/local_aggregation.pb.h"
 #include "src/logger/event_vector_index.h"
 #include "src/logging.h"
+#include "src/public/lib/statusor/status_macros.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/metric_definition.pb.h"
 #include "src/registry/report_definition.pb.h"
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h b/src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h
index 7bb35ae..9267897 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h
+++ b/src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h
@@ -10,7 +10,6 @@
 #include <string>
 #include <vector>
 
-#include "src/lib/statusor/statusor.h"
 #include "src/lib/util/datetime_util.h"
 #include "src/lib/util/status_builder.h"
 #include "src/local_aggregation_1_1/local_aggregation.pb.h"
@@ -18,6 +17,7 @@
 #include "src/logging.h"
 #include "src/pb/event.pb.h"
 #include "src/pb/observation.pb.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/aggregation_window.pb.h"
 #include "src/registry/metric_definition.pb.h"
 #include "src/registry/report_definition.pb.h"
diff --git a/src/local_aggregation_1_1/aggregation_procedures/at_least_once_aggregation_procedure.cc b/src/local_aggregation_1_1/aggregation_procedures/at_least_once_aggregation_procedure.cc
index 4fb0f0c..ab2159b 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/at_least_once_aggregation_procedure.cc
+++ b/src/local_aggregation_1_1/aggregation_procedures/at_least_once_aggregation_procedure.cc
@@ -4,9 +4,9 @@
 
 #include "src/local_aggregation_1_1/aggregation_procedures/at_least_once_aggregation_procedure.h"
 
-#include "src/lib/statusor/status_macros.h"
 #include "src/logger/encoder.h"
 #include "src/pb/observation.pb.h"
+#include "src/public/lib/statusor/status_macros.h"
 
 namespace cobalt::local_aggregation {
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/at_least_once_aggregation_procedure.h b/src/local_aggregation_1_1/aggregation_procedures/at_least_once_aggregation_procedure.h
index cd008e6..3168fe9 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/at_least_once_aggregation_procedure.h
+++ b/src/local_aggregation_1_1/aggregation_procedures/at_least_once_aggregation_procedure.h
@@ -8,8 +8,8 @@
 #include <set>
 #include <vector>
 
-#include "src/lib/statusor/statusor.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt::local_aggregation {
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/count_aggregation_procedure.cc b/src/local_aggregation_1_1/aggregation_procedures/count_aggregation_procedure.cc
index 672da79..301fa6f 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/count_aggregation_procedure.cc
+++ b/src/local_aggregation_1_1/aggregation_procedures/count_aggregation_procedure.cc
@@ -6,11 +6,11 @@
 
 #include <tuple>
 
-#include "src/lib/statusor/status_macros.h"
 #include "src/lib/util/datetime_util.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h"
 #include "src/logger/encoder.h"
 #include "src/pb/observation.pb.h"
+#include "src/public/lib/statusor/status_macros.h"
 
 namespace cobalt::local_aggregation {
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/count_aggregation_procedure.h b/src/local_aggregation_1_1/aggregation_procedures/count_aggregation_procedure.h
index 0dce4f7..6450932 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/count_aggregation_procedure.h
+++ b/src/local_aggregation_1_1/aggregation_procedures/count_aggregation_procedure.h
@@ -5,8 +5,8 @@
 #ifndef COBALT_SRC_LOCAL_AGGREGATION_1_1_AGGREGATION_PROCEDURES_COUNT_AGGREGATION_PROCEDURE_H_
 #define COBALT_SRC_LOCAL_AGGREGATION_1_1_AGGREGATION_PROCEDURES_COUNT_AGGREGATION_PROCEDURE_H_
 
-#include "src/lib/statusor/statusor.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/hourly_aggregation_procedure.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/metric_definition.pb.h"
 #include "src/registry/report_definition.pb.h"
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/hourly_aggregation_procedure.h b/src/local_aggregation_1_1/aggregation_procedures/hourly_aggregation_procedure.h
index 12bb647..b79c461 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/hourly_aggregation_procedure.h
+++ b/src/local_aggregation_1_1/aggregation_procedures/hourly_aggregation_procedure.h
@@ -9,8 +9,8 @@
 #include <set>
 #include <vector>
 
-#include "src/lib/statusor/statusor.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/report_definition.pb.h"
 
 namespace cobalt::local_aggregation {
diff --git a/src/local_aggregation_1_1/aggregation_procedures/integer_histogram_aggregation_procedure.cc b/src/local_aggregation_1_1/aggregation_procedures/integer_histogram_aggregation_procedure.cc
index 614cf41..754b139 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/integer_histogram_aggregation_procedure.cc
+++ b/src/local_aggregation_1_1/aggregation_procedures/integer_histogram_aggregation_procedure.cc
@@ -7,12 +7,12 @@
 #include <tuple>
 
 #include "src/lib/client/cpp/buckets_config.h"
-#include "src/lib/statusor/status_macros.h"
 #include "src/lib/util/datetime_util.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h"
 #include "src/logger/encoder.h"
 #include "src/pb/event.pb.h"
 #include "src/pb/observation.pb.h"
+#include "src/public/lib/statusor/status_macros.h"
 #include "src/registry/metric_definition.pb.h"
 #include "src/registry/report_definition.pb.h"
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/integer_histogram_aggregation_procedure.h b/src/local_aggregation_1_1/aggregation_procedures/integer_histogram_aggregation_procedure.h
index a809e30..ce6f006 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/integer_histogram_aggregation_procedure.h
+++ b/src/local_aggregation_1_1/aggregation_procedures/integer_histogram_aggregation_procedure.h
@@ -6,8 +6,8 @@
 #define COBALT_SRC_LOCAL_AGGREGATION_1_1_AGGREGATION_PROCEDURES_INTEGER_HISTOGRAM_AGGREGATION_PROCEDURE_H_
 
 #include "src/lib/client/cpp/buckets_config.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/hourly_aggregation_procedure.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/metric_definition.pb.h"
 #include "src/registry/report_definition.pb.h"
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/numeric_stat_aggregation_procedure.cc b/src/local_aggregation_1_1/aggregation_procedures/numeric_stat_aggregation_procedure.cc
index 465f1b0..8c26130 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/numeric_stat_aggregation_procedure.cc
+++ b/src/local_aggregation_1_1/aggregation_procedures/numeric_stat_aggregation_procedure.cc
@@ -8,10 +8,10 @@
 #include <limits>
 #include <memory>
 
-#include "src/lib/statusor/status_macros.h"
 #include "src/local_aggregation_1_1/local_aggregation.pb.h"
 #include "src/logger/encoder.h"
 #include "src/pb/observation.pb.h"
+#include "src/public/lib/statusor/status_macros.h"
 #include "src/registry/metric_definition.pb.h"
 #include "src/registry/report_definition.pb.h"
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/numeric_stat_aggregation_procedure.h b/src/local_aggregation_1_1/aggregation_procedures/numeric_stat_aggregation_procedure.h
index b0a311c..71a0fa0 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/numeric_stat_aggregation_procedure.h
+++ b/src/local_aggregation_1_1/aggregation_procedures/numeric_stat_aggregation_procedure.h
@@ -9,9 +9,9 @@
 #include <set>
 #include <vector>
 
-#include "src/lib/statusor/statusor.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h"
 #include "src/logger/event_record.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/metric_definition.pb.h"
 #include "src/registry/report_definition.pb.h"
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/select_first_aggregation_procedure.cc b/src/local_aggregation_1_1/aggregation_procedures/select_first_aggregation_procedure.cc
index 31217e5..cef9424 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/select_first_aggregation_procedure.cc
+++ b/src/local_aggregation_1_1/aggregation_procedures/select_first_aggregation_procedure.cc
@@ -4,9 +4,9 @@
 
 #include "src/local_aggregation_1_1/aggregation_procedures/select_first_aggregation_procedure.h"
 
-#include "src/lib/statusor/status_macros.h"
 #include "src/logger/encoder.h"
 #include "src/pb/observation.pb.h"
+#include "src/public/lib/statusor/status_macros.h"
 
 namespace cobalt::local_aggregation {
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/select_first_aggregation_procedure.h b/src/local_aggregation_1_1/aggregation_procedures/select_first_aggregation_procedure.h
index e6cad9b..814cee1 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/select_first_aggregation_procedure.h
+++ b/src/local_aggregation_1_1/aggregation_procedures/select_first_aggregation_procedure.h
@@ -5,8 +5,8 @@
 #ifndef COBALT_SRC_LOCAL_AGGREGATION_1_1_AGGREGATION_PROCEDURES_SELECT_FIRST_AGGREGATION_PROCEDURE_H_
 #define COBALT_SRC_LOCAL_AGGREGATION_1_1_AGGREGATION_PROCEDURES_SELECT_FIRST_AGGREGATION_PROCEDURE_H_
 
-#include "src/lib/statusor/statusor.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt::local_aggregation {
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/select_most_common_aggregation_procedure.cc b/src/local_aggregation_1_1/aggregation_procedures/select_most_common_aggregation_procedure.cc
index a2f56c3..f276749 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/select_most_common_aggregation_procedure.cc
+++ b/src/local_aggregation_1_1/aggregation_procedures/select_most_common_aggregation_procedure.cc
@@ -4,9 +4,9 @@
 
 #include "src/local_aggregation_1_1/aggregation_procedures/select_most_common_aggregation_procedure.h"
 
-#include "src/lib/statusor/status_macros.h"
 #include "src/logger/encoder.h"
 #include "src/pb/observation.pb.h"
+#include "src/public/lib/statusor/status_macros.h"
 
 namespace cobalt::local_aggregation {
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/select_most_common_aggregation_procedure.h b/src/local_aggregation_1_1/aggregation_procedures/select_most_common_aggregation_procedure.h
index ebc8e0b..e4f67a4 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/select_most_common_aggregation_procedure.h
+++ b/src/local_aggregation_1_1/aggregation_procedures/select_most_common_aggregation_procedure.h
@@ -8,8 +8,8 @@
 #include <set>
 #include <vector>
 
-#include "src/lib/statusor/statusor.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt::local_aggregation {
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/string_histogram_aggregation_procedure.cc b/src/local_aggregation_1_1/aggregation_procedures/string_histogram_aggregation_procedure.cc
index eb66fd0..bf4cd9b 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/string_histogram_aggregation_procedure.cc
+++ b/src/local_aggregation_1_1/aggregation_procedures/string_histogram_aggregation_procedure.cc
@@ -6,12 +6,12 @@
 
 #include <tuple>
 
-#include "src/lib/statusor/status_macros.h"
 #include "src/lib/util/datetime_util.h"
 #include "src/lib/util/hash.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h"
 #include "src/logger/encoder.h"
 #include "src/pb/observation.pb.h"
+#include "src/public/lib/statusor/status_macros.h"
 
 namespace cobalt::local_aggregation {
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/string_histogram_aggregation_procedure.h b/src/local_aggregation_1_1/aggregation_procedures/string_histogram_aggregation_procedure.h
index 84774fd..60edd72 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/string_histogram_aggregation_procedure.h
+++ b/src/local_aggregation_1_1/aggregation_procedures/string_histogram_aggregation_procedure.h
@@ -5,8 +5,8 @@
 #ifndef COBALT_SRC_LOCAL_AGGREGATION_1_1_AGGREGATION_PROCEDURES_STRING_HISTOGRAM_AGGREGATION_PROCEDURE_H_
 #define COBALT_SRC_LOCAL_AGGREGATION_1_1_AGGREGATION_PROCEDURES_STRING_HISTOGRAM_AGGREGATION_PROCEDURE_H_
 
-#include "src/lib/statusor/statusor.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/hourly_aggregation_procedure.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/report_definition.pb.h"
 
 namespace cobalt::local_aggregation {
diff --git a/src/local_aggregation_1_1/aggregation_procedures/sum_and_count_aggregation_procedure.cc b/src/local_aggregation_1_1/aggregation_procedures/sum_and_count_aggregation_procedure.cc
index 7e446ab..ab6dc27 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/sum_and_count_aggregation_procedure.cc
+++ b/src/local_aggregation_1_1/aggregation_procedures/sum_and_count_aggregation_procedure.cc
@@ -6,11 +6,11 @@
 
 #include <tuple>
 
-#include "src/lib/statusor/status_macros.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h"
 #include "src/logger/encoder.h"
 #include "src/logging.h"
 #include "src/pb/observation.pb.h"
+#include "src/public/lib/statusor/status_macros.h"
 
 namespace cobalt::local_aggregation {
 
diff --git a/src/local_aggregation_1_1/aggregation_procedures/sum_and_count_aggregation_procedure.h b/src/local_aggregation_1_1/aggregation_procedures/sum_and_count_aggregation_procedure.h
index bddb3b2..62cd875 100644
--- a/src/local_aggregation_1_1/aggregation_procedures/sum_and_count_aggregation_procedure.h
+++ b/src/local_aggregation_1_1/aggregation_procedures/sum_and_count_aggregation_procedure.h
@@ -5,8 +5,8 @@
 #ifndef COBALT_SRC_LOCAL_AGGREGATION_1_1_AGGREGATION_PROCEDURES_SUM_AND_COUNT_AGGREGATION_PROCEDURE_H_
 #define COBALT_SRC_LOCAL_AGGREGATION_1_1_AGGREGATION_PROCEDURES_SUM_AND_COUNT_AGGREGATION_PROCEDURE_H_
 
-#include "src/lib/statusor/statusor.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/hourly_aggregation_procedure.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/metric_definition.pb.h"
 #include "src/registry/report_definition.pb.h"
 
diff --git a/src/local_aggregation_1_1/local_aggregate_storage/BUILD.gn b/src/local_aggregation_1_1/local_aggregate_storage/BUILD.gn
index ba9de15..2c1b08a 100644
--- a/src/local_aggregation_1_1/local_aggregate_storage/BUILD.gn
+++ b/src/local_aggregation_1_1/local_aggregate_storage/BUILD.gn
@@ -44,13 +44,13 @@
   deps = [
     ":local_aggregate_storage",
     "$cobalt_root/src:logging",
-    "$cobalt_root/src/lib/statusor",
     "$cobalt_root/src/lib/util:hash",
     "$cobalt_root/src/lib/util/testing:test_with_files",
     "$cobalt_root/src/local_aggregation_1_1:proto",
     "$cobalt_root/src/local_aggregation_1_1/testing:test_registry",
     "$cobalt_root/src/logger:project_context_factory",
     "$cobalt_root/src/pb:metadata_builder",
+    "$cobalt_root/src/public/lib/statusor",
     "$cobalt_root/src/registry:cobalt_registry_proto",
     "$cobalt_root/src/system_data:fake_system_data",
     "//third_party/googletest:gmock",
diff --git a/src/local_aggregation_1_1/local_aggregate_storage/delayed_local_aggregate_storage.cc b/src/local_aggregation_1_1/local_aggregate_storage/delayed_local_aggregate_storage.cc
index 9208f1f..297e900 100644
--- a/src/local_aggregation_1_1/local_aggregate_storage/delayed_local_aggregate_storage.cc
+++ b/src/local_aggregation_1_1/local_aggregate_storage/delayed_local_aggregate_storage.cc
@@ -8,7 +8,6 @@
 #include <set>
 
 #include "absl/strings/str_cat.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/lib/util/file_system.h"
 #include "src/local_aggregation_1_1/local_aggregate_storage/local_aggregate_storage.h"
 #include "src/local_aggregation_1_1/local_aggregation.pb.h"
@@ -19,6 +18,7 @@
 #include "src/pb/metadata_builder.h"
 #include "src/public/lib/registry_identifiers.h"
 #include "src/public/lib/status.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt::local_aggregation {
 
diff --git a/src/local_aggregation_1_1/local_aggregate_storage/delayed_local_aggregate_storage.h b/src/local_aggregation_1_1/local_aggregate_storage/delayed_local_aggregate_storage.h
index 7d6faf4..b4c1b14 100644
--- a/src/local_aggregation_1_1/local_aggregate_storage/delayed_local_aggregate_storage.h
+++ b/src/local_aggregation_1_1/local_aggregate_storage/delayed_local_aggregate_storage.h
@@ -11,7 +11,6 @@
 #include <string>
 #include <thread>
 
-#include "src/lib/statusor/statusor.h"
 #include "src/lib/util/consistent_proto_store.h"
 #include "src/lib/util/file_system.h"
 #include "src/lib/util/protected_fields.h"
@@ -23,6 +22,7 @@
 #include "src/pb/common.pb.h"
 #include "src/pb/metadata_builder.h"
 #include "src/public/lib/registry_identifiers.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/cobalt_registry.pb.h"
 
 namespace cobalt::local_aggregation {
diff --git a/src/local_aggregation_1_1/local_aggregate_storage/delayed_local_aggregate_storage_test.cc b/src/local_aggregation_1_1/local_aggregate_storage/delayed_local_aggregate_storage_test.cc
index 5fdf917..01156e0 100644
--- a/src/local_aggregation_1_1/local_aggregate_storage/delayed_local_aggregate_storage_test.cc
+++ b/src/local_aggregation_1_1/local_aggregate_storage/delayed_local_aggregate_storage_test.cc
@@ -11,7 +11,6 @@
 #include <gtest/gtest.h>
 
 #include "absl/strings/escaping.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/lib/util/hash.h"
 #include "src/lib/util/testing/test_with_files.h"
 #include "src/local_aggregation_1_1/local_aggregate_storage/local_aggregate_storage.h"
@@ -19,6 +18,7 @@
 #include "src/logger/project_context_factory.h"
 #include "src/logging.h"
 #include "src/pb/metadata_builder.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/cobalt_registry.pb.h"
 #include "src/system_data/fake_system_data.h"
 
diff --git a/src/local_aggregation_1_1/local_aggregate_storage/immediate_local_aggregate_storage.cc b/src/local_aggregation_1_1/local_aggregate_storage/immediate_local_aggregate_storage.cc
index 32bf410..7fc3256 100644
--- a/src/local_aggregation_1_1/local_aggregate_storage/immediate_local_aggregate_storage.cc
+++ b/src/local_aggregation_1_1/local_aggregate_storage/immediate_local_aggregate_storage.cc
@@ -8,12 +8,12 @@
 
 #include "absl/strings/numbers.h"
 #include "absl/strings/str_cat.h"
-#include "src/lib/statusor/status_macros.h"
 #include "src/local_aggregation_1_1/local_aggregate_storage/local_aggregate_storage.h"
 #include "src/logger/project_context_factory.h"
 #include "src/logging.h"
 #include "src/pb/metadata_builder.h"
 #include "src/public/lib/registry_identifiers.h"
+#include "src/public/lib/statusor/status_macros.h"
 
 namespace cobalt::local_aggregation {
 
diff --git a/src/local_aggregation_1_1/local_aggregate_storage/immediate_local_aggregate_storage_test.cc b/src/local_aggregation_1_1/local_aggregate_storage/immediate_local_aggregate_storage_test.cc
index e6a62d8..9e56cdf 100644
--- a/src/local_aggregation_1_1/local_aggregate_storage/immediate_local_aggregate_storage_test.cc
+++ b/src/local_aggregation_1_1/local_aggregate_storage/immediate_local_aggregate_storage_test.cc
@@ -11,7 +11,6 @@
 
 #include "absl/strings/escaping.h"
 #include "absl/strings/str_cat.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/lib/util/hash.h"
 #include "src/lib/util/testing/test_with_files.h"
 #include "src/local_aggregation_1_1/local_aggregate_storage/local_aggregate_storage.h"
@@ -19,6 +18,7 @@
 #include "src/logger/project_context_factory.h"
 #include "src/logging.h"
 #include "src/pb/metadata_builder.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/cobalt_registry.pb.h"
 #include "src/system_data/fake_system_data.h"
 
diff --git a/src/local_aggregation_1_1/local_aggregate_storage/local_aggregate_storage.h b/src/local_aggregation_1_1/local_aggregate_storage/local_aggregate_storage.h
index 82073c0..196ca33 100644
--- a/src/local_aggregation_1_1/local_aggregate_storage/local_aggregate_storage.h
+++ b/src/local_aggregation_1_1/local_aggregate_storage/local_aggregate_storage.h
@@ -8,7 +8,6 @@
 #include <mutex>
 #include <ostream>
 
-#include "src/lib/statusor/statusor.h"
 #include "src/lib/util/datetime_util.h"
 #include "src/lib/util/file_system.h"
 #include "src/lib/util/protected_fields.h"
@@ -20,6 +19,7 @@
 #include "src/pb/metadata_builder.h"
 #include "src/public/lib/registry_identifiers.h"
 #include "src/public/lib/status.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt::local_aggregation {
 // LocalAggregateStorage is the generic interface for storing MetricAggregates.
diff --git a/src/local_aggregation_1_1/local_aggregation.cc b/src/local_aggregation_1_1/local_aggregation.cc
index 8459e2b..c6fec2d 100644
--- a/src/local_aggregation_1_1/local_aggregation.cc
+++ b/src/local_aggregation_1_1/local_aggregation.cc
@@ -7,7 +7,6 @@
 #include <algorithm>
 #include <memory>
 
-#include "src/lib/statusor/status_macros.h"
 #include "src/lib/util/clock.h"
 #include "src/lib/util/datetime_util.h"
 #include "src/lib/util/hash.h"
@@ -18,6 +17,7 @@
 #include "src/pb/metadata_builder.h"
 #include "src/pb/observation_batch.pb.h"
 #include "src/public/lib/registry_identifiers.h"
+#include "src/public/lib/statusor/status_macros.h"
 #include "src/registry/report_definition.pb.h"
 #include "src/system_data/system_data.h"
 
diff --git a/src/local_aggregation_1_1/observation_generator.cc b/src/local_aggregation_1_1/observation_generator.cc
index 9c7310a..1ccecff 100644
--- a/src/local_aggregation_1_1/observation_generator.cc
+++ b/src/local_aggregation_1_1/observation_generator.cc
@@ -9,8 +9,6 @@
 #include <thread>
 
 #include "absl/strings/str_cat.h"
-#include "src/lib/statusor/status_macros.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/lib/util/clock.h"
 #include "src/lib/util/datetime_util.h"
 #include "src/local_aggregation_1_1/aggregation_procedures/aggregation_procedure.h"
@@ -20,6 +18,8 @@
 #include "src/pb/metadata_builder.h"
 #include "src/pb/observation_batch.pb.h"
 #include "src/public/lib/status_codes.h"
+#include "src/public/lib/statusor/status_macros.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/window_size.pb.h"
 #include "src/system_data/system_data.h"
 
diff --git a/src/logger/BUILD.gn b/src/logger/BUILD.gn
index 1a3960d..9650a72 100644
--- a/src/logger/BUILD.gn
+++ b/src/logger/BUILD.gn
@@ -54,7 +54,7 @@
   ]
   public_deps = [
     "$cobalt_root/src:logging",
-    "$cobalt_root/src/lib/statusor",
+    "$cobalt_root/src/public/lib/statusor",
     "$cobalt_root/src/registry:cobalt_registry_proto",
     "$cobalt_root/src/registry:project_configs",
   ]
@@ -452,7 +452,7 @@
   ]
 
   public_deps = [
-    "$cobalt_root/src/lib/statusor",
+    "$cobalt_root/src/public/lib/statusor",
     "$cobalt_root/src/registry:cobalt_registry_proto",
   ]
 }
@@ -481,8 +481,8 @@
     "$cobalt_root/src/algorithms/privacy:rappor",
     "$cobalt_root/src/algorithms/random:random",
     "$cobalt_root/src/lib/client/cpp:buckets_config",
-    "$cobalt_root/src/lib/statusor",
     "$cobalt_root/src/pb",
+    "$cobalt_root/src/public/lib/statusor",
     "$cobalt_root/src/registry:cobalt_registry_proto",
   ]
 }
@@ -496,8 +496,8 @@
     ":privacy_encoder",
     "$cobalt_root/src/algorithms/privacy:count_min",
     "$cobalt_root/src/algorithms/random:test_secure_random",
-    "$cobalt_root/src/lib/statusor",
     "$cobalt_root/src/lib/util:hash",
+    "$cobalt_root/src/public/lib/statusor",
     "$cobalt_root/src/registry:cobalt_registry_proto",
     "//third_party/googletest:gtest",
   ]
diff --git a/src/logger/event_record.h b/src/logger/event_record.h
index 073bec5..350d070 100644
--- a/src/logger/event_record.h
+++ b/src/logger/event_record.h
@@ -9,13 +9,13 @@
 
 #include <third_party/abseil-cpp/absl/strings/str_cat.h>
 
-#include "src/lib/statusor/statusor.h"
 #include "src/lib/util/status_builder.h"
 #include "src/logger/project_context.h"
 #include "src/logging.h"
 #include "src/pb/common.pb.h"
 #include "src/pb/event.pb.h"
 #include "src/public/lib/registry_identifiers.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/metric_definition.pb.h"
 
 namespace cobalt::logger {
diff --git a/src/logger/event_vector_index.cc b/src/logger/event_vector_index.cc
index 069030f..f85fcfb 100644
--- a/src/logger/event_vector_index.cc
+++ b/src/logger/event_vector_index.cc
@@ -4,8 +4,8 @@
 
 #include "src/logger/event_vector_index.h"
 
-#include "src/lib/statusor/status_macros.h"
-#include "src/lib/statusor/statusor.h"
+#include "src/public/lib/statusor/status_macros.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt::logger {
 
diff --git a/src/logger/event_vector_index.h b/src/logger/event_vector_index.h
index c973114..b7c0b20 100644
--- a/src/logger/event_vector_index.h
+++ b/src/logger/event_vector_index.h
@@ -7,7 +7,7 @@
 
 #include <google/protobuf/repeated_field.h>
 
-#include "src/lib/statusor/statusor.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/metric_definition.pb.h"
 
 namespace cobalt::logger {
diff --git a/src/logger/logger.cc b/src/logger/logger.cc
index 1c5622c..86778f3 100644
--- a/src/logger/logger.cc
+++ b/src/logger/logger.cc
@@ -8,10 +8,10 @@
 #include <string>
 
 #include "google/protobuf/repeated_field.h"
-#include "src/lib/statusor/status_macros.h"
 #include "src/logger/event_loggers.h"
 #include "src/logger/event_record.h"
 #include "src/logging.h"
+#include "src/public/lib/statusor/status_macros.h"
 #include "src/registry/metric_definition.pb.h"
 #include "src/registry/report_definition.pb.h"
 
diff --git a/src/logger/privacy_encoder.cc b/src/logger/privacy_encoder.cc
index 4b0c33c..fb49dd1 100644
--- a/src/logger/privacy_encoder.cc
+++ b/src/logger/privacy_encoder.cc
@@ -5,9 +5,9 @@
 #include "src/algorithms/privacy/rappor.h"
 #include "src/algorithms/random/random.h"
 #include "src/lib/client/cpp/buckets_config.h"
-#include "src/lib/statusor/status_macros.h"
 #include "src/logger/event_vector_index.h"
 #include "src/pb/observation.pb.h"
+#include "src/public/lib/statusor/status_macros.h"
 
 namespace cobalt::logger {
 namespace {
diff --git a/src/logger/privacy_encoder.h b/src/logger/privacy_encoder.h
index 462f5a1..e531737 100644
--- a/src/logger/privacy_encoder.h
+++ b/src/logger/privacy_encoder.h
@@ -7,8 +7,8 @@
 
 #include "src/algorithms/privacy/count_min.h"
 #include "src/algorithms/random/random.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/pb/observation.pb.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/metric_definition.pb.h"
 #include "src/registry/report_definition.pb.h"
 
diff --git a/src/logger/privacy_encoder_test.cc b/src/logger/privacy_encoder_test.cc
index 1bce8d0..85bf717 100644
--- a/src/logger/privacy_encoder_test.cc
+++ b/src/logger/privacy_encoder_test.cc
@@ -6,10 +6,10 @@
 
 #include "src/algorithms/privacy/count_min.h"
 #include "src/algorithms/random/test_secure_random.h"
-#include "src/lib/statusor/status_macros.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/lib/util/hash.h"
 #include "src/pb/observation.pb.h"
+#include "src/public/lib/statusor/status_macros.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/metric_definition.pb.h"
 #include "src/registry/report_definition.pb.h"
 
diff --git a/src/logger/project_context.h b/src/logger/project_context.h
index dc40a1b..e634970 100644
--- a/src/logger/project_context.h
+++ b/src/logger/project_context.h
@@ -12,9 +12,9 @@
 
 #include <google/protobuf/repeated_field.h>
 
-#include "src/lib/statusor/statusor.h"
 #include "src/lib/util/status_builder.h"
 #include "src/public/lib/registry_identifiers.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "src/registry/cobalt_registry.pb.h"
 #include "src/registry/metric_definition.pb.h"
 #include "src/registry/project.pb.h"
diff --git a/src/observation_store/BUILD.gn b/src/observation_store/BUILD.gn
index b31b877..5fc4c37 100644
--- a/src/observation_store/BUILD.gn
+++ b/src/observation_store/BUILD.gn
@@ -40,13 +40,13 @@
   deps = [
     ":observation_store_update_recipient",
     "$cobalt_root/src:tracing",
-    "$cobalt_root/src/lib/statusor",
     "$cobalt_root/src/lib/util:posix_file_system",
     "$cobalt_root/src/lib/util:protected_fields",
     "$cobalt_root/src/lib/util:proto_serialization",
     "$cobalt_root/src/logger:internal_metrics",
     "$cobalt_root/src/logger:logger_interface",
     "$cobalt_root/src/public/lib:registry_identifiers",
+    "$cobalt_root/src/public/lib/statusor",
   ]
   public_deps = [
     ":observation_store_internal_proto",
diff --git a/src/observation_store/file_observation_store.h b/src/observation_store/file_observation_store.h
index 0e43467..c4b9c75 100644
--- a/src/observation_store/file_observation_store.h
+++ b/src/observation_store/file_observation_store.h
@@ -14,13 +14,13 @@
 #include <vector>
 
 #include "google/protobuf/io/zero_copy_stream.h"
-#include "src/lib/statusor/statusor.h"
 #include "src/lib/util/file_system.h"
 #include "src/lib/util/protected_fields.h"
 #include "src/logger/internal_metrics.h"
 #include "src/observation_store/envelope_maker.h"
 #include "src/observation_store/observation_store.h"
 #include "src/public/diagnostics_interface.h"
+#include "src/public/lib/statusor/statusor.h"
 #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.h"
 
 namespace cobalt::observation_store {
diff --git a/src/public/lib/BUILD.gn b/src/public/lib/BUILD.gn
index ae1f4ae..0c97e01 100644
--- a/src/public/lib/BUILD.gn
+++ b/src/public/lib/BUILD.gn
@@ -1,6 +1,6 @@
 source_set("http_client") {
   sources = [ "http_client.h" ]
-  public_deps = [ "$cobalt_root/src/lib/statusor" ]
+  public_deps = [ "$cobalt_root/src/public/lib/statusor" ]
   deps = [ ":status" ]
 }
 
diff --git a/src/public/lib/http_client.h b/src/public/lib/http_client.h
index 15a9785..e7efb3e 100644
--- a/src/public/lib/http_client.h
+++ b/src/public/lib/http_client.h
@@ -8,8 +8,8 @@
 #include <future>
 #include <map>
 
-#include "src/lib/statusor/statusor.h"
 #include "src/public/lib/status.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt::lib {
 
diff --git a/src/public/lib/statusor/BUILD.gn b/src/public/lib/statusor/BUILD.gn
new file mode 100644
index 0000000..8f5e9de
--- /dev/null
+++ b/src/public/lib/statusor/BUILD.gn
@@ -0,0 +1,22 @@
+# Copyright 2018 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.
+
+static_library("statusor") {
+  sources = [
+    "status_macros.cc",
+    "status_macros.h",
+    "statusor.cc",
+    "statusor.h",
+    "statusor_internals.h",
+  ]
+
+  public_configs = [ "$cobalt_root:cobalt_config" ]
+
+  public_deps = [
+    "$cobalt_root/src/public/lib:status",
+    "//third_party/glog:glog",
+    "//third_party/protobuf:protobuf_lite",
+  ]
+  deps = [ "$cobalt_root/src/public/lib:status" ]
+}
diff --git a/src/lib/statusor/COBALT_README.md b/src/public/lib/statusor/COBALT_README.md
similarity index 88%
rename from src/lib/statusor/COBALT_README.md
rename to src/public/lib/statusor/COBALT_README.md
index bc33ed0..05a6a0d 100644
--- a/src/lib/statusor/COBALT_README.md
+++ b/src/public/lib/statusor/COBALT_README.md
@@ -6,7 +6,7 @@
 
 If you want to update the libraries, replace the xla namespace with
 statusor, and fix the includes to replace tensorflow/compiler/xla/
-with src/lib/statusor. We also use Cobalt's Status instead of
+with src/public/lib/statusor. We also use Cobalt's Status instead of
 tensorflow's Status class. The final change is to remove references to the TF_*
 macros that cobalt does not use.
 
diff --git a/src/lib/statusor/LICENSE b/src/public/lib/statusor/LICENSE
similarity index 100%
rename from src/lib/statusor/LICENSE
rename to src/public/lib/statusor/LICENSE
diff --git a/src/lib/statusor/README.md b/src/public/lib/statusor/README.md
similarity index 100%
rename from src/lib/statusor/README.md
rename to src/public/lib/statusor/README.md
diff --git a/src/lib/statusor/status_macros.cc b/src/public/lib/statusor/status_macros.cc
similarity index 98%
rename from src/lib/statusor/status_macros.cc
rename to src/public/lib/statusor/status_macros.cc
index b1c0382..dcd1985 100644
--- a/src/lib/statusor/status_macros.cc
+++ b/src/public/lib/statusor/status_macros.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "src/lib/statusor/status_macros.h"
+#include "src/public/lib/statusor/status_macros.h"
 
 #include <algorithm>
 
diff --git a/src/lib/statusor/status_macros.h b/src/public/lib/statusor/status_macros.h
similarity index 96%
rename from src/lib/statusor/status_macros.h
rename to src/public/lib/statusor/status_macros.h
index 49346e6..de3546f 100644
--- a/src/lib/statusor/status_macros.h
+++ b/src/public/lib/statusor/status_macros.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COBALT_SRC_LIB_STATUSOR_STATUS_MACROS_H_
-#define COBALT_SRC_LIB_STATUSOR_STATUS_MACROS_H_
+#ifndef COBALT_SRC_PUBLIC_LIB_STATUSOR_STATUS_MACROS_H_
+#define COBALT_SRC_PUBLIC_LIB_STATUSOR_STATUS_MACROS_H_
 
 #include <memory>
 #include <ostream>  // NOLINT
@@ -12,7 +12,7 @@
 #include <utility>
 #include <vector>
 
-#include "src/lib/statusor/statusor.h"
+#include "src/public/lib/statusor/statusor.h"
 
 namespace cobalt::lib::statusor::status_macros {
 
@@ -201,4 +201,4 @@
   }                                                    \
   lhs = std::move(statusor.ValueOrDie()) /* NOLINT */
 
-#endif  // COBALT_SRC_LIB_STATUSOR_STATUS_MACROS_H_
+#endif  // COBALT_SRC_PUBLIC_LIB_STATUSOR_STATUS_MACROS_H_
diff --git a/src/lib/statusor/statusor.cc b/src/public/lib/statusor/statusor.cc
similarity index 94%
rename from src/lib/statusor/statusor.cc
rename to src/public/lib/statusor/statusor.cc
index 4598b2c..78d4693 100644
--- a/src/lib/statusor/statusor.cc
+++ b/src/public/lib/statusor/statusor.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "src/lib/statusor/statusor.h"
+#include "src/public/lib/statusor/statusor.h"
 
 #include "glog/logging.h"
 #include "src/public/lib/status.h"
diff --git a/src/lib/statusor/statusor.h b/src/public/lib/statusor/statusor.h
similarity index 97%
rename from src/lib/statusor/statusor.h
rename to src/public/lib/statusor/statusor.h
index ff751cd..6a71e20 100644
--- a/src/lib/statusor/statusor.h
+++ b/src/public/lib/statusor/statusor.h
@@ -57,13 +57,13 @@
 // stored value cannot invalidate the argument; in other words, the argument
 // cannot be an alias for the current value, or anything owned by the current
 // value.
-#ifndef COBALT_SRC_LIB_STATUSOR_STATUSOR_H_
-#define COBALT_SRC_LIB_STATUSOR_STATUSOR_H_
+#ifndef COBALT_SRC_PUBLIC_LIB_STATUSOR_STATUSOR_H_
+#define COBALT_SRC_PUBLIC_LIB_STATUSOR_STATUSOR_H_
 
 #include <utility>
 
-#include "src/lib/statusor/statusor_internals.h"
 #include "src/public/lib/status.h"
+#include "src/public/lib/statusor/statusor_internals.h"
 
 namespace cobalt::lib::statusor {
 
@@ -301,4 +301,4 @@
 
 }  // namespace cobalt::lib::statusor
 
-#endif  // COBALT_SRC_LIB_STATUSOR_STATUSOR_H_
+#endif  // COBALT_SRC_PUBLIC_LIB_STATUSOR_STATUSOR_H_
diff --git a/src/lib/statusor/statusor_internals.h b/src/public/lib/statusor/statusor_internals.h
similarity index 96%
rename from src/lib/statusor/statusor_internals.h
rename to src/public/lib/statusor/statusor_internals.h
index 23d49c9..ed84449 100644
--- a/src/lib/statusor/statusor_internals.h
+++ b/src/public/lib/statusor/statusor_internals.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COBALT_SRC_LIB_STATUSOR_STATUSOR_INTERNALS_H_
-#define COBALT_SRC_LIB_STATUSOR_STATUSOR_INTERNALS_H_
+#ifndef COBALT_SRC_PUBLIC_LIB_STATUSOR_STATUSOR_INTERNALS_H_
+#define COBALT_SRC_PUBLIC_LIB_STATUSOR_STATUSOR_INTERNALS_H_
 
 #include <utility>
 
@@ -242,4 +242,4 @@
 
 }  // namespace cobalt::lib::statusor::internal_statusor
 
-#endif  // COBALT_SRC_LIB_STATUSOR_STATUSOR_INTERNALS_H_
+#endif  // COBALT_SRC_PUBLIC_LIB_STATUSOR_STATUSOR_INTERNALS_H_
diff --git a/tools/lint_gn_rules_present.py b/tools/lint_gn_rules_present.py
index eddcd17..69f1e82 100755
--- a/tools/lint_gn_rules_present.py
+++ b/tools/lint_gn_rules_present.py
@@ -17,6 +17,12 @@
 cobalt_root = os.path.abspath(
     os.path.join(os.path.join(os.path.dirname(__file__), '..')))
 
+ALLOW_ABSENCE = [
+    # TODO(fxbug.dev/93229): Remove these once StatusOr move is done.
+    'src/lib/statusor/statusor.h',  # Symlink to file in src/public/lib/statusor/
+    'src/lib/statusor/status_macros.h',  # Symlink to file in src/public/lib/statusor/
+    'src/lib/statusor/statusor_internals.h',  # Symlink to file in src/public/lib/statusor/
+]
 
 def main():
   out_path = os.path.join(cobalt_root, 'out')
@@ -55,7 +61,7 @@
       seen_sources.add(source)
 
   for needed_file in present_files:
-    if f'//{needed_file}' not in seen_sources:
+    if f'//{needed_file}' not in seen_sources and needed_file not in ALLOW_ABSENCE:
       print(
           f"Saw source file {needed_file} that wasn't present in any gn targets"
       )
diff --git a/tools/lint_todos.py b/tools/lint_todos.py
index 606a8d6..78e764c 100755
--- a/tools/lint_todos.py
+++ b/tools/lint_todos.py
@@ -18,8 +18,12 @@
 
 VALID_FORMATS = 'TODO(fxbug.dev/12345): With a colon if a message is present'
 SKIP_VALIDATION = [
-  'src/lib/statusor/statusor.h', # Copied from external source
-  'src/pb/report_row.proto', # Copied from external source
+     # TODO(fxbug.dev/93229): Remove statusor symlink files once StatusOr move is done.
+    'src/lib/statusor/statusor.h',  # Symlink to file in src/public/lib/statusor/
+    'src/lib/statusor/status_macros.h',  # Symlink to file in src/public/lib/statusor/
+    'src/lib/statusor/statusor_internals.h',  # Symlink to file in src/public/lib/statusor/
+    'src/public/lib/statusor/statusor.h',  # Copied from external source
+    'src/pb/report_row.proto',  # Copied from external source
 ]
 
 todo = re.compile(r'TODO\((.*)\)')
diff --git a/tools/lint_visibility.py b/tools/lint_visibility.py
index affccfc..2e776b9 100755
--- a/tools/lint_visibility.py
+++ b/tools/lint_visibility.py
@@ -40,9 +40,6 @@
         '//src/registry:cobalt_registry_proto',
         '//src/registry:cobalt_registry_proto_protoc_outputs',
     ],
-    '//src/cobalt/bin/utils:fuchsia_http_client': [
-        '//src/lib/statusor:statusor',
-    ],
 }