tp: remove experimental package and diffuse contents into other packages

This CL removes the central "experimental" module from the stdlib. This
module's design was a bit of a mistake as it became a central dumping
ground for randoming things without clear ownership. Also making the
tables visible in the documentation while not being something people
should depend on was a bit of a misnomer.

Instead diffuse the modules inside into other packages and make all the
experimental_ prefixed tables just _ (i.e. internal tables which ~have
the same guarantees of being breakable at any time).

Change-Id: I7f2b85476f6bb53690ec2900d542463f184900d6
diff --git a/Android.bp b/Android.bp
index ebf7e39..952fcc4 100644
--- a/Android.bp
+++ b/Android.bp
@@ -11885,6 +11885,7 @@
         "src/trace_processor/perfetto_sql/stdlib/android/battery.sql",
         "src/trace_processor/perfetto_sql/stdlib/android/battery_stats.sql",
         "src/trace_processor/perfetto_sql/stdlib/android/binder.sql",
+        "src/trace_processor/perfetto_sql/stdlib/android/broadcasts.sql",
         "src/trace_processor/perfetto_sql/stdlib/android/dvfs.sql",
         "src/trace_processor/perfetto_sql/stdlib/android/io.sql",
         "src/trace_processor/perfetto_sql/stdlib/android/monitor_contention.sql",
@@ -11908,19 +11909,17 @@
         "src/trace_processor/perfetto_sql/stdlib/common/slices.sql",
         "src/trace_processor/perfetto_sql/stdlib/common/thread_states.sql",
         "src/trace_processor/perfetto_sql/stdlib/common/timestamps.sql",
-        "src/trace_processor/perfetto_sql/stdlib/experimental/android_broadcast.sql",
-        "src/trace_processor/perfetto_sql/stdlib/experimental/flat_slices.sql",
-        "src/trace_processor/perfetto_sql/stdlib/experimental/proto_path.sql",
-        "src/trace_processor/perfetto_sql/stdlib/experimental/slices.sql",
-        "src/trace_processor/perfetto_sql/stdlib/experimental/thread_executing_span.sql",
-        "src/trace_processor/perfetto_sql/stdlib/experimental/thread_state_flattened.sql",
         "src/trace_processor/perfetto_sql/stdlib/graphs/dominator_tree.sql",
         "src/trace_processor/perfetto_sql/stdlib/graphs/search.sql",
         "src/trace_processor/perfetto_sql/stdlib/intervals/overlap.sql",
         "src/trace_processor/perfetto_sql/stdlib/linux/cpu_idle.sql",
         "src/trace_processor/perfetto_sql/stdlib/pkvm/hypervisor.sql",
         "src/trace_processor/perfetto_sql/stdlib/prelude/slices.sql",
+        "src/trace_processor/perfetto_sql/stdlib/sched/thread_executing_span.sql",
         "src/trace_processor/perfetto_sql/stdlib/sched/thread_level_parallelism.sql",
+        "src/trace_processor/perfetto_sql/stdlib/sched/thread_state_flattened.sql",
+        "src/trace_processor/perfetto_sql/stdlib/slices/flat_slices.sql",
+        "src/trace_processor/perfetto_sql/stdlib/slices/slices.sql",
     ],
     cmd: "$(location tools/gen_amalgamated_sql.py) --namespace=stdlib --cpp-out=$(out) $(in)",
     out: [
diff --git a/BUILD b/BUILD
index 09d7509..14d7423 100644
--- a/BUILD
+++ b/BUILD
@@ -2249,6 +2249,7 @@
         "src/trace_processor/perfetto_sql/stdlib/android/battery.sql",
         "src/trace_processor/perfetto_sql/stdlib/android/battery_stats.sql",
         "src/trace_processor/perfetto_sql/stdlib/android/binder.sql",
+        "src/trace_processor/perfetto_sql/stdlib/android/broadcasts.sql",
         "src/trace_processor/perfetto_sql/stdlib/android/dvfs.sql",
         "src/trace_processor/perfetto_sql/stdlib/android/io.sql",
         "src/trace_processor/perfetto_sql/stdlib/android/monitor_contention.sql",
@@ -2282,19 +2283,6 @@
     ],
 )
 
-# GN target: //src/trace_processor/perfetto_sql/stdlib/experimental:experimental
-perfetto_filegroup(
-    name = "src_trace_processor_perfetto_sql_stdlib_experimental_experimental",
-    srcs = [
-        "src/trace_processor/perfetto_sql/stdlib/experimental/android_broadcast.sql",
-        "src/trace_processor/perfetto_sql/stdlib/experimental/flat_slices.sql",
-        "src/trace_processor/perfetto_sql/stdlib/experimental/proto_path.sql",
-        "src/trace_processor/perfetto_sql/stdlib/experimental/slices.sql",
-        "src/trace_processor/perfetto_sql/stdlib/experimental/thread_executing_span.sql",
-        "src/trace_processor/perfetto_sql/stdlib/experimental/thread_state_flattened.sql",
-    ],
-)
-
 # GN target: //src/trace_processor/perfetto_sql/stdlib/graphs:graphs
 perfetto_filegroup(
     name = "src_trace_processor_perfetto_sql_stdlib_graphs_graphs",
@@ -2340,7 +2328,18 @@
 perfetto_filegroup(
     name = "src_trace_processor_perfetto_sql_stdlib_sched_sched",
     srcs = [
+        "src/trace_processor/perfetto_sql/stdlib/sched/thread_executing_span.sql",
         "src/trace_processor/perfetto_sql/stdlib/sched/thread_level_parallelism.sql",
+        "src/trace_processor/perfetto_sql/stdlib/sched/thread_state_flattened.sql",
+    ],
+)
+
+# GN target: //src/trace_processor/perfetto_sql/stdlib/slices:slices
+perfetto_filegroup(
+    name = "src_trace_processor_perfetto_sql_stdlib_slices_slices",
+    srcs = [
+        "src/trace_processor/perfetto_sql/stdlib/slices/flat_slices.sql",
+        "src/trace_processor/perfetto_sql/stdlib/slices/slices.sql",
     ],
 )
 
@@ -2352,13 +2351,13 @@
         ":src_trace_processor_perfetto_sql_stdlib_android_startup_startup",
         ":src_trace_processor_perfetto_sql_stdlib_chrome_chrome_sql",
         ":src_trace_processor_perfetto_sql_stdlib_common_common",
-        ":src_trace_processor_perfetto_sql_stdlib_experimental_experimental",
         ":src_trace_processor_perfetto_sql_stdlib_graphs_graphs",
         ":src_trace_processor_perfetto_sql_stdlib_intervals_intervals",
         ":src_trace_processor_perfetto_sql_stdlib_linux_linux",
         ":src_trace_processor_perfetto_sql_stdlib_pkvm_pkvm",
         ":src_trace_processor_perfetto_sql_stdlib_prelude_prelude",
         ":src_trace_processor_perfetto_sql_stdlib_sched_sched",
+        ":src_trace_processor_perfetto_sql_stdlib_slices_slices",
     ],
     outs = [
         "src/trace_processor/perfetto_sql/stdlib/stdlib.h",
diff --git a/protos/perfetto/trace_processor/trace_processor.proto b/protos/perfetto/trace_processor/trace_processor.proto
index 48959ad..c96caa0 100644
--- a/protos/perfetto/trace_processor/trace_processor.proto
+++ b/protos/perfetto/trace_processor/trace_processor.proto
@@ -47,7 +47,8 @@
   // 8. Add 'json' option to ComputeMetricArgs
   // 9. Add get_thread_state_summary_for_interval.
   // 10. Add 'slice_is_ancestor' to stdlib.
-  TRACE_PROCESSOR_CURRENT_API_VERSION = 10;
+  // 11. Removal of experimental module from stdlib.
+  TRACE_PROCESSOR_CURRENT_API_VERSION = 11;
 }
 
 // At lowest level, the wire-format of the RPC procol is a linear sequence of
diff --git a/python/perfetto/trace_processor/trace_processor.descriptor b/python/perfetto/trace_processor/trace_processor.descriptor
index ecb561d..261ab0b 100644
--- a/python/perfetto/trace_processor/trace_processor.descriptor
+++ b/python/perfetto/trace_processor/trace_processor.descriptor
Binary files differ
diff --git a/src/trace_processor/perfetto_sql/stdlib/BUILD.gn b/src/trace_processor/perfetto_sql/stdlib/BUILD.gn
index 26b7093..0f84ae8 100644
--- a/src/trace_processor/perfetto_sql/stdlib/BUILD.gn
+++ b/src/trace_processor/perfetto_sql/stdlib/BUILD.gn
@@ -22,13 +22,13 @@
     "android",
     "chrome:chrome_sql",
     "common",
-    "experimental",
     "graphs",
     "intervals",
     "linux",
     "pkvm",
     "prelude",
     "sched",
+    "slices",
   ]
   generated_header = "stdlib.h"
   namespace = "stdlib"
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/BUILD.gn b/src/trace_processor/perfetto_sql/stdlib/android/BUILD.gn
index 7236654..9ddd90d 100644
--- a/src/trace_processor/perfetto_sql/stdlib/android/BUILD.gn
+++ b/src/trace_processor/perfetto_sql/stdlib/android/BUILD.gn
@@ -21,6 +21,7 @@
     "battery.sql",
     "battery_stats.sql",
     "binder.sql",
+    "broadcasts.sql",
     "dvfs.sql",
     "io.sql",
     "monitor_contention.sql",
diff --git a/src/trace_processor/perfetto_sql/stdlib/experimental/android_broadcast.sql b/src/trace_processor/perfetto_sql/stdlib/android/broadcasts.sql
similarity index 95%
rename from src/trace_processor/perfetto_sql/stdlib/experimental/android_broadcast.sql
rename to src/trace_processor/perfetto_sql/stdlib/android/broadcasts.sql
index f35b751..3afe0bf 100644
--- a/src/trace_processor/perfetto_sql/stdlib/experimental/android_broadcast.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/android/broadcasts.sql
@@ -16,7 +16,7 @@
 
 -- Provides a list of broadcast names and processes they were sent to by the
 -- system_server process on U+ devices.
-CREATE PERFETTO VIEW experimental_android_broadcasts_minsdk_u(
+CREATE PERFETTO VIEW _android_broadcasts_minsdk_u(
   -- The name of the broadcast type which was sent.
   type STRING,
   -- The process name the broadcast was sent to.
diff --git a/src/trace_processor/perfetto_sql/stdlib/common/slices.sql b/src/trace_processor/perfetto_sql/stdlib/common/slices.sql
index e89a57b..84badb6 100644
--- a/src/trace_processor/perfetto_sql/stdlib/common/slices.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/common/slices.sql
@@ -253,4 +253,4 @@
 SELECT
   name
 FROM slice
-WHERE $id = id;
\ No newline at end of file
+WHERE $id = id;
diff --git a/src/trace_processor/perfetto_sql/stdlib/linux/cpu_idle.sql b/src/trace_processor/perfetto_sql/stdlib/linux/cpu_idle.sql
index 458166f..d4aeeb2 100644
--- a/src/trace_processor/perfetto_sql/stdlib/linux/cpu_idle.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/linux/cpu_idle.sql
@@ -79,4 +79,3 @@
 FROM _freq_idle_counters ific
 WHERE idle_value >=0
 GROUP BY cpu, idle_value;
-
diff --git a/src/trace_processor/perfetto_sql/stdlib/experimental/BUILD.gn b/src/trace_processor/perfetto_sql/stdlib/proto_path/BUILD.gn
similarity index 68%
copy from src/trace_processor/perfetto_sql/stdlib/experimental/BUILD.gn
copy to src/trace_processor/perfetto_sql/stdlib/proto_path/BUILD.gn
index d9a48c1..a0d9582 100644
--- a/src/trace_processor/perfetto_sql/stdlib/experimental/BUILD.gn
+++ b/src/trace_processor/perfetto_sql/stdlib/proto_path/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright (C) 2022 The Android Open Source Project
+# Copyright (C) 2023 The Android Open Source Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -14,13 +14,6 @@
 
 import("../../../../../gn/perfetto_sql.gni")
 
-perfetto_sql_source_set("experimental") {
-  sources = [
-    "android_broadcast.sql",
-    "flat_slices.sql",
-    "proto_path.sql",
-    "slices.sql",
-    "thread_executing_span.sql",
-    "thread_state_flattened.sql",
-  ]
+perfetto_sql_source_set("proto_path") {
+  sources = [ "proto_path.sql" ]
 }
diff --git a/src/trace_processor/perfetto_sql/stdlib/experimental/proto_path.sql b/src/trace_processor/perfetto_sql/stdlib/proto_path/proto_path.sql
similarity index 94%
rename from src/trace_processor/perfetto_sql/stdlib/experimental/proto_path.sql
rename to src/trace_processor/perfetto_sql/stdlib/proto_path/proto_path.sql
index 5ab538c..46b3e65 100644
--- a/src/trace_processor/perfetto_sql/stdlib/experimental/proto_path.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/proto_path/proto_path.sql
@@ -15,7 +15,7 @@
 
 -- Creates a Stack consisting of one frame for a path in the
 -- EXPERIMENTAL_PROTO_PATH table.
-CREATE PERFETTO FUNCTION experimental_proto_path_to_frame(
+CREATE PERFETTO FUNCTION _proto_path_to_frame(
 -- Id of the path in EXPERIMENTAL_PROTO_PATH.
   path_id LONG)
 -- Stack with one frame
@@ -31,7 +31,7 @@
 
 -- Creates a Stack following the parent relations in EXPERIMENTAL_PROTO_PATH
 -- table starting at the given path_id.
-CREATE PERFETTO FUNCTION experimental_proto_path_to_stack(
+CREATE PERFETTO FUNCTION _proto_path_to_stack(
 -- Id of the path in EXPERIMENTAL_PROTO_PATH that will be the leaf in the returned stack.
   path_id LONG)
 -- Stack
@@ -61,4 +61,4 @@
 SELECT stack
 FROM R
 WHERE
-  parent_id IS NULL;
\ No newline at end of file
+  parent_id IS NULL;
diff --git a/src/trace_processor/perfetto_sql/stdlib/sched/BUILD.gn b/src/trace_processor/perfetto_sql/stdlib/sched/BUILD.gn
index 143aff0..8e83d6f 100644
--- a/src/trace_processor/perfetto_sql/stdlib/sched/BUILD.gn
+++ b/src/trace_processor/perfetto_sql/stdlib/sched/BUILD.gn
@@ -15,5 +15,9 @@
 import("../../../../../gn/perfetto_sql.gni")
 
 perfetto_sql_source_set("sched") {
-  sources = [ "thread_level_parallelism.sql" ]
+  sources = [
+    "thread_executing_span.sql",
+    "thread_level_parallelism.sql",
+    "thread_state_flattened.sql",
+  ]
 }
diff --git a/src/trace_processor/perfetto_sql/stdlib/experimental/thread_executing_span.sql b/src/trace_processor/perfetto_sql/stdlib/sched/thread_executing_span.sql
similarity index 94%
rename from src/trace_processor/perfetto_sql/stdlib/experimental/thread_executing_span.sql
rename to src/trace_processor/perfetto_sql/stdlib/sched/thread_executing_span.sql
index a5c4f5a..8e74d2f 100644
--- a/src/trace_processor/perfetto_sql/stdlib/experimental/thread_executing_span.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/sched/thread_executing_span.sql
@@ -15,7 +15,7 @@
 --
 
 INCLUDE PERFETTO MODULE common.slices;
-INCLUDE PERFETTO MODULE experimental.flat_slices;
+INCLUDE PERFETTO MODULE slices.flat_slices;
 
 -- A 'thread_executing_span' is thread_state span starting with a runnable slice
 -- until the next runnable slice that's woken up by a process (as opposed
@@ -273,7 +273,7 @@
 -- @column blocked_function   Kernel blocked_function of thread state before waking up.
 -- @column is_root            Whether the thread_executing_span is a root.
 -- @column depth              Tree depth of thread executing span from the root.
-CREATE TABLE experimental_thread_executing_span_graph AS
+CREATE TABLE _thread_executing_span_graph AS
 WITH roots AS (
 SELECT
   start_id AS root_id,
@@ -315,7 +315,7 @@
 CREATE PERFETTO FUNCTION _critical_path_start_ts(ts LONG, leaf_blocked_ts LONG)
 RETURNS LONG AS SELECT MAX($ts, IFNULL($leaf_blocked_ts, $ts));
 
--- See |experimental_thread_executing_span_critical_path|
+-- See |_thread_executing_span_critical_path|
 CREATE PERFETTO TABLE _critical_path
 AS
 WITH chain AS (
@@ -332,7 +332,7 @@
     blocked_function AS critical_path_blocked_function,
     utid AS critical_path_utid,
     upid AS critical_path_upid
-  FROM experimental_thread_executing_span_graph graph
+  FROM _thread_executing_span_graph graph
   UNION ALL
   SELECT
     graph.parent_id,
@@ -348,7 +348,7 @@
     chain.critical_path_blocked_function,
     chain.critical_path_utid,
     chain.critical_path_upid
-  FROM experimental_thread_executing_span_graph graph
+  FROM _thread_executing_span_graph graph
   JOIN chain ON (chain.parent_id = graph.id AND (chain.ts > chain.critical_path_blocked_ts))
 ) SELECT * FROM chain;
 
@@ -356,7 +356,7 @@
 -- every sleeping thread state is computed and unioned with the thread executing spans on that thread.
 -- The duration of a thread executing span in the critical path is the range between the start of the
 -- thread_executing_span and the start of the next span in the critical path.
-CREATE PERFETTO FUNCTION experimental_thread_executing_span_critical_path(
+CREATE PERFETTO FUNCTION _thread_executing_span_critical_path(
   -- Utid of the thread to compute the critical path for.
   critical_path_utid INT,
   -- Timestamp.
@@ -409,18 +409,18 @@
       critical_path_utid
    FROM span_starts;
 
--- Limited thread_state view that will later be span joined with the |experimental_thread_executing_span_graph|.
+-- Limited thread_state view that will later be span joined with the |_thread_executing_span_graph|.
 CREATE PERFETTO VIEW _span_thread_state_view
 AS SELECT id AS thread_state_id, ts, dur, utid, state, blocked_function as function, io_wait, cpu FROM thread_state;
 
--- |experimental_thread_executing_span_graph| span joined with thread_state information.
+-- |_thread_executing_span_graph| span joined with thread_state information.
 CREATE VIRTUAL TABLE _span_graph_thread_state_sp
 USING
   SPAN_JOIN(
-    experimental_thread_executing_span_graph PARTITIONED utid,
+    _thread_executing_span_graph PARTITIONED utid,
     _span_thread_state_view PARTITIONED utid);
 
--- Limited slice_view that will later be span joined with the |experimental_thread_executing_span_graph|.
+-- Limited slice_view that will later be span joined with the |_thread_executing_span_graph|.
 CREATE PERFETTO VIEW _span_slice_view
 AS
 SELECT
@@ -430,28 +430,28 @@
   CAST(ts AS INT) AS ts,
   CAST(dur AS INT) AS dur,
   utid
-FROM experimental_slice_flattened;
+FROM _slice_flattened;
 
--- |experimental_thread_executing_span_graph| span joined with slice information.
+-- |_thread_executing_span_graph| span joined with slice information.
 CREATE VIRTUAL TABLE _span_graph_slice_sp
 USING
   SPAN_JOIN(
-    experimental_thread_executing_span_graph PARTITIONED utid,
+    _thread_executing_span_graph PARTITIONED utid,
     _span_slice_view PARTITIONED utid);
 
--- Limited |experimental_thread_executing_span_graph| + thread_state view.
+-- Limited |_thread_executing_span_graph| + thread_state view.
 CREATE PERFETTO VIEW _span_graph_thread_state
 AS
 SELECT ts, dur, id, thread_state_id, state, function, io_wait, cpu
 FROM _span_graph_thread_state_sp;
 
--- Limited |experimental_thread_executing_span_graph| + slice view.
+-- Limited |_thread_executing_span_graph| + slice view.
 CREATE PERFETTO VIEW _span_graph_slice
 AS
 SELECT ts, dur, id, slice_id, slice_depth, slice_name
 FROM _span_graph_slice_sp;
 
--- |experimental_thread_executing_span_graph| + thread_state view joined with critical_path information.
+-- |_thread_executing_span_graph| + thread_state view joined with critical_path information.
 CREATE PERFETTO TABLE _critical_path_thread_state AS
 WITH span AS MATERIALIZED (
     SELECT * FROM _critical_path
@@ -494,8 +494,8 @@
 FROM span_starts
 WHERE MIN(span_end_ts, thread_state_end_ts) - ts > 0;
 
--- |experimental_thread_executing_span_graph| + thread_state + critical_path span joined with
--- |experimental_thread_executing_span_graph| + slice view.
+-- |_thread_executing_span_graph| + thread_state + critical_path span joined with
+-- |_thread_executing_span_graph| + slice view.
 CREATE VIRTUAL TABLE _critical_path_sp
 USING
   SPAN_LEFT_JOIN(
@@ -505,7 +505,7 @@
 -- Flattened slices span joined with their thread_states. This contains the 'self' information
 -- without 'critical_path' (blocking) information.
 CREATE VIRTUAL TABLE _self_sp USING
-  SPAN_LEFT_JOIN(thread_state PARTITIONED utid, experimental_slice_flattened PARTITIONED utid);
+  SPAN_LEFT_JOIN(thread_state PARTITIONED utid, _slice_flattened PARTITIONED utid);
 
 -- Limited view of |_self_sp|.
 CREATE PERFETTO VIEW _self_view
@@ -883,7 +883,7 @@
 -- stacked from top to bottom: self thread_state, self blocked_function, self process_name,
 -- self thread_name, slice stack, critical_path thread_state, critical_path process_name,
 -- critical_path thread_name, critical_path slice_stack, running_cpu.
-CREATE PERFETTO FUNCTION experimental_thread_executing_span_critical_path_stack(
+CREATE PERFETTO FUNCTION _thread_executing_span_critical_path_stack(
   -- Thread utid to filter critical paths to.
   critical_path_utid INT,
   -- Timestamp of start of time range to filter critical paths to.
@@ -962,8 +962,8 @@
   )
 SELECT EXPERIMENTAL_PROFILE(stack, 'duration', 'ns', dur) AS pprof FROM stacks;
 
--- Returns a pprof aggreagation of the stacks in |experimental_thread_executing_span_critical_path_stack|
-CREATE PERFETTO FUNCTION experimental_thread_executing_span_critical_path_graph(
+-- Returns a pprof aggreagation of the stacks in |_thread_executing_span_critical_path_stack|
+CREATE PERFETTO FUNCTION _thread_executing_span_critical_path_graph(
   -- Descriptive name for the graph.
   graph_title STRING,
   -- Thread utid to filter critical paths to.
diff --git a/src/trace_processor/perfetto_sql/stdlib/experimental/thread_state_flattened.sql b/src/trace_processor/perfetto_sql/stdlib/sched/thread_state_flattened.sql
similarity index 89%
rename from src/trace_processor/perfetto_sql/stdlib/experimental/thread_state_flattened.sql
rename to src/trace_processor/perfetto_sql/stdlib/sched/thread_state_flattened.sql
index 48dcfbf..2ba1406 100644
--- a/src/trace_processor/perfetto_sql/stdlib/experimental/thread_state_flattened.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/sched/thread_state_flattened.sql
@@ -13,18 +13,18 @@
 -- See the License for the specific language governing permissions and
 -- limitations under the License.
 
-INCLUDE PERFETTO MODULE experimental.flat_slices;
+INCLUDE PERFETTO MODULE slices.flat_slices;
 
 -- Create a table which joins the thread state across the flattened slices.
-CREATE VIRTUAL TABLE _experimental_span_joined_thread USING
-  SPAN_JOIN(experimental_slice_flattened PARTITIONED utid, thread_state PARTITIONED utid);
+CREATE VIRTUAL TABLE __span_joined_thread USING
+  SPAN_JOIN(_slice_flattened PARTITIONED utid, thread_state PARTITIONED utid);
 
 -- Get the thread state breakdown of a flattened slice from its slice id.
 -- This table pivoted and summed for better visualization and aggregation.
 -- The concept of a "flat slice" is to take the data in the slice table and
 -- remove all notion of nesting. For more information, read the description
--- of experimental_slice_flattened.
-CREATE PERFETTO FUNCTION experimental_get_flattened_thread_state(
+-- of _slice_flattened.
+CREATE PERFETTO FUNCTION _get_flattened_thread_state(
   -- Id of the slice of interest.
   slice_id LONG,
   -- Utid.
@@ -84,7 +84,7 @@
   blocked_function,
   waker_utid,
   irq_context
-FROM _experimental_span_joined_thread
+FROM __span_joined_thread
 WHERE
   track_id = (SELECT track_id FROM interesting_slice)
   AND ts >= (SELECT ts FROM interesting_slice)
@@ -94,8 +94,8 @@
 -- This table pivoted and summed for better visualization and aggragation.
 -- The concept of a "flat slice" is to take the data in the slice table and
 -- remove all notion of nesting. For more information, read the description
--- of experimental_slice_flattened.
-CREATE PERFETTO FUNCTION experimental_get_flattened_thread_state_aggregated(
+-- of _slice_flattened.
+CREATE PERFETTO FUNCTION _get_flattened_thread_state_aggregated(
   -- Slice id.
   slice_id LONG,
   -- Utid.
@@ -145,7 +145,7 @@
 WITH
 final_table AS (
   SELECT *
-  FROM experimental_get_flattened_thread_state($slice_id, $utid)
+  FROM _get_flattened_thread_state($slice_id, $utid)
 )
 SELECT
 fs.slice_id,
diff --git a/src/trace_processor/perfetto_sql/stdlib/experimental/BUILD.gn b/src/trace_processor/perfetto_sql/stdlib/slices/BUILD.gn
similarity index 75%
rename from src/trace_processor/perfetto_sql/stdlib/experimental/BUILD.gn
rename to src/trace_processor/perfetto_sql/stdlib/slices/BUILD.gn
index d9a48c1..ac79369 100644
--- a/src/trace_processor/perfetto_sql/stdlib/experimental/BUILD.gn
+++ b/src/trace_processor/perfetto_sql/stdlib/slices/BUILD.gn
@@ -1,4 +1,4 @@
-# Copyright (C) 2022 The Android Open Source Project
+# Copyright (C) 2023 The Android Open Source Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -14,13 +14,9 @@
 
 import("../../../../../gn/perfetto_sql.gni")
 
-perfetto_sql_source_set("experimental") {
+perfetto_sql_source_set("slices") {
   sources = [
-    "android_broadcast.sql",
     "flat_slices.sql",
-    "proto_path.sql",
     "slices.sql",
-    "thread_executing_span.sql",
-    "thread_state_flattened.sql",
   ]
 }
diff --git a/src/trace_processor/perfetto_sql/stdlib/experimental/flat_slices.sql b/src/trace_processor/perfetto_sql/stdlib/slices/flat_slices.sql
similarity index 94%
rename from src/trace_processor/perfetto_sql/stdlib/experimental/flat_slices.sql
rename to src/trace_processor/perfetto_sql/stdlib/slices/flat_slices.sql
index a6b7f9b..4353ed2 100644
--- a/src/trace_processor/perfetto_sql/stdlib/experimental/flat_slices.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/slices/flat_slices.sql
@@ -51,7 +51,7 @@
 -- @column upid               Alias for `process.upid`.
 -- @column pid                Alias for `process.pid`.
 -- @column process_name       Alias for `process.name`.
-CREATE TABLE experimental_slice_flattened AS
+CREATE TABLE _slice_flattened AS
 -- The algorithm proceeds as follows:
 -- 1. Find the start and end timestamps of all slices.
 -- 2. Iterate the generated timestamps within a stack in chronoligical order.
@@ -102,9 +102,9 @@
 WHERE depth != -1;
 
 CREATE
-  INDEX experimental_slice_flattened_id_idx
-ON experimental_slice_flattened(slice_id);
+  INDEX _slice_flattened_id_idx
+ON _slice_flattened(slice_id);
 
 CREATE
-  INDEX experimental_slice_flattened_ts_idx
-ON experimental_slice_flattened(ts);
+  INDEX _slice_flattened_ts_idx
+ON _slice_flattened(ts);
diff --git a/src/trace_processor/perfetto_sql/stdlib/experimental/slices.sql b/src/trace_processor/perfetto_sql/stdlib/slices/slices.sql
similarity index 97%
rename from src/trace_processor/perfetto_sql/stdlib/experimental/slices.sql
rename to src/trace_processor/perfetto_sql/stdlib/slices/slices.sql
index 757e7b0..20383b3 100644
--- a/src/trace_processor/perfetto_sql/stdlib/experimental/slices.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/slices/slices.sql
@@ -19,7 +19,7 @@
 -- `thread_slice` and `process_slice`, this view contains all slices,
 -- with thread- and process-related columns set to NULL if the slice
 -- is not associated with a thread or a process.
-CREATE PERFETTO VIEW experimental_slice_with_thread_and_process_info(
+CREATE PERFETTO VIEW _slice_with_thread_and_process_info(
   -- Alias for `slice.id`.
   id INT,
   -- Alias for `slice.type`.
diff --git a/test/trace_processor/diff_tests/stdlib/slices/tests.py b/test/trace_processor/diff_tests/stdlib/slices/tests.py
index 4f814cc..9b565bb 100644
--- a/test/trace_processor/diff_tests/stdlib/slices/tests.py
+++ b/test/trace_processor/diff_tests/stdlib/slices/tests.py
@@ -54,10 +54,10 @@
     return DiffTestBlueprint(
         trace=Path('trace.py'),
         query="""
-        INCLUDE PERFETTO MODULE experimental.slices;
+        INCLUDE PERFETTO MODULE slices.slices;
 
         SELECT name, ts, dur, depth, thread_name, tid, process_name, pid
-        FROM experimental_slice_with_thread_and_process_info;
+        FROM _slice_with_thread_and_process_info;
       """,
         out=Csv("""
         "name","ts","dur","depth","thread_name","tid","process_name","pid"
@@ -143,10 +143,10 @@
     return DiffTestBlueprint(
         trace=DataPath('chrome_input_with_frame_view.pftrace'),
         query="""
-        INCLUDE PERFETTO MODULE experimental.flat_slices;
+        INCLUDE PERFETTO MODULE slices.flat_slices;
 
         SELECT e.name, e.ts, e.dur, e.depth
-        FROM experimental_slice_flattened e
+        FROM _slice_flattened e
         JOIN thread_track ON e.track_id = thread_track.id
         JOIN thread USING(utid)
         WHERE thread.tid = 30944;
diff --git a/test/trace_processor/diff_tests/tables/tests.py b/test/trace_processor/diff_tests/tables/tests.py
index 5a8f393..8346078 100644
--- a/test/trace_processor/diff_tests/tables/tests.py
+++ b/test/trace_processor/diff_tests/tables/tests.py
@@ -268,8 +268,8 @@
     return DiffTestBlueprint(
         trace=DataPath('android_monitor_contention_trace.atr'),
         query="""
-      INCLUDE PERFETTO MODULE experimental.thread_state_flattened;
-      select * from experimental_get_flattened_thread_state_aggregated(11155, NULL);
+      INCLUDE PERFETTO MODULE sched.thread_state_flattened;
+      select * from _get_flattened_thread_state_aggregated(11155, NULL);
       """,
         out=Path('thread_state_flattened_aggregated_csv.out'))
 
@@ -277,8 +277,8 @@
     return DiffTestBlueprint(
         trace=DataPath('android_monitor_contention_trace.atr'),
         query="""
-      INCLUDE PERFETTO MODULE experimental.thread_state_flattened;
-      select * from experimental_get_flattened_thread_state(11155, NULL);
+      INCLUDE PERFETTO MODULE sched.thread_state_flattened;
+      select * from _get_flattened_thread_state(11155, NULL);
       """,
         out=Path('thread_state_flattened_csv.out'))
 
diff --git a/test/trace_processor/diff_tests/tables/tests_sched.py b/test/trace_processor/diff_tests/tables/tests_sched.py
index ad2d875..399cb55 100644
--- a/test/trace_processor/diff_tests/tables/tests_sched.py
+++ b/test/trace_processor/diff_tests/tables/tests_sched.py
@@ -126,7 +126,7 @@
     return DiffTestBlueprint(
         trace=DataPath('sched_wakeup_trace.atr'),
         query="""
-        INCLUDE PERFETTO MODULE experimental.thread_executing_span;
+        INCLUDE PERFETTO MODULE sched.thread_executing_span;
         SELECT
           root_id,
           parent_id,
@@ -140,7 +140,7 @@
           blocked_function,
           is_root,
           depth
-        FROM experimental_thread_executing_span_graph
+        FROM _thread_executing_span_graph
           WHERE blocked_function IS NOT NULL
         ORDER BY ts
         LIMIT 10
@@ -163,7 +163,7 @@
     return DiffTestBlueprint(
         trace=DataPath('sched_wakeup_trace.atr'),
         query="""
-        INCLUDE PERFETTO MODULE experimental.thread_executing_span;
+        INCLUDE PERFETTO MODULE sched.thread_executing_span;
         SELECT
           root_id,
           parent_id,
@@ -177,7 +177,7 @@
           blocked_function,
           is_root,
           depth
-        FROM experimental_thread_executing_span_graph
+        FROM _thread_executing_span_graph
           WHERE ts = 1735842081507 AND dur = 293868
         """,
         out=Csv("""
@@ -189,7 +189,7 @@
     return DiffTestBlueprint(
         trace=DataPath('sched_wakeup_trace.atr'),
         query="""
-        INCLUDE PERFETTO MODULE experimental.thread_executing_span;
+        INCLUDE PERFETTO MODULE sched.thread_executing_span;
         SELECT COUNT(*) AS count FROM _runnable_state WHERE state = 'Running'
         """,
         out=Csv("""
@@ -201,8 +201,8 @@
     return DiffTestBlueprint(
         trace=DataPath('sched_wakeup_trace.atr'),
         query="""
-        INCLUDE PERFETTO MODULE experimental.thread_executing_span;
-        SELECT ts,dur FROM experimental_thread_executing_span_graph
+        INCLUDE PERFETTO MODULE sched.thread_executing_span;
+        SELECT ts,dur FROM _thread_executing_span_graph
           WHERE dur IS NULL OR ts IS NULL
         """,
         out=Csv("""
@@ -213,8 +213,8 @@
     return DiffTestBlueprint(
         trace=DataPath('sched_switch_original.pb'),
         query="""
-        INCLUDE PERFETTO MODULE experimental.thread_executing_span;
-        SELECT COUNT(*) AS count FROM experimental_thread_executing_span_graph
+        INCLUDE PERFETTO MODULE sched.thread_executing_span;
+        SELECT COUNT(*) AS count FROM _thread_executing_span_graph
         """,
         out=Csv("""
         "count"
@@ -225,7 +225,7 @@
     return DiffTestBlueprint(
         trace=DataPath('sched_wakeup_trace.atr'),
         query="""
-        INCLUDE PERFETTO MODULE experimental.thread_executing_span;
+        INCLUDE PERFETTO MODULE sched.thread_executing_span;
         SELECT
           id,
           ts,
@@ -236,7 +236,7 @@
           critical_path_blocked_state,
           critical_path_blocked_function,
           critical_path_utid INT
-        FROM experimental_thread_executing_span_critical_path(NULL, start_ts, end_ts), trace_bounds
+        FROM _thread_executing_span_critical_path(NULL, start_ts, end_ts), trace_bounds
         ORDER BY ts
         LIMIT 10
         """,
@@ -258,7 +258,7 @@
     return DiffTestBlueprint(
         trace=DataPath('sched_wakeup_trace.atr'),
         query="""
-        INCLUDE PERFETTO MODULE experimental.thread_executing_span;
+        INCLUDE PERFETTO MODULE sched.thread_executing_span;
         SELECT
           id,
           ts,
@@ -269,7 +269,7 @@
           critical_path_blocked_state,
           critical_path_blocked_function,
           critical_path_utid INT
-        FROM experimental_thread_executing_span_critical_path((select utid from thread where tid = 3487), start_ts, end_ts), trace_bounds
+        FROM _thread_executing_span_critical_path((select utid from thread where tid = 3487), start_ts, end_ts), trace_bounds
         ORDER BY ts
         LIMIT 10
         """,
@@ -291,7 +291,7 @@
     return DiffTestBlueprint(
         trace=DataPath('sched_wakeup_trace.atr'),
         query="""
-        INCLUDE PERFETTO MODULE experimental.thread_executing_span;
+        INCLUDE PERFETTO MODULE sched.thread_executing_span;
         SELECT
           id,
           ts,
@@ -301,7 +301,7 @@
           name,
           table_name,
           critical_path_utid
-        FROM experimental_thread_executing_span_critical_path_stack((select utid from thread where tid = 3487), start_ts, end_ts), trace_bounds
+        FROM _thread_executing_span_critical_path_stack((select utid from thread where tid = 3487), start_ts, end_ts), trace_bounds
         ORDER BY ts
         LIMIT 11
         """,
@@ -324,8 +324,8 @@
     return DiffTestBlueprint(
         trace=DataPath('sched_wakeup_trace.atr'),
         query="""
-        INCLUDE PERFETTO MODULE experimental.thread_executing_span;
-        SELECT HEX(pprof) FROM experimental_thread_executing_span_critical_path_graph("critical path", (select utid from thread where tid = 3487), 1737488133487, 16000), trace_bounds
+        INCLUDE PERFETTO MODULE sched.thread_executing_span;
+        SELECT HEX(pprof) FROM _thread_executing_span_critical_path_graph("critical path", (select utid from thread where tid = 3487), 1737488133487, 16000), trace_bounds
       """,
         out=BinaryProto(
             message_type="perfetto.third_party.perftools.profiles.Profile",
diff --git a/tools/check_sql_modules.py b/tools/check_sql_modules.py
index 20440f9..27e95cb 100755
--- a/tools/check_sql_modules.py
+++ b/tools/check_sql_modules.py
@@ -45,11 +45,11 @@
         '_chrome_mojo_slices', '_chrome_java_views', '_chrome_scheduler_tasks',
         '_chrome_tasks'
     ],
-    '/experimental/thread_executing_span.sql': [
-        '_wakeup', 'experimental_thread_executing_span_graph', '_critical_path',
-        '_wakeup_graph', 'experimental_thread_executing_span_graph'
+    '/sched/thread_executing_span.sql': [
+        '_wakeup', '_thread_executing_span_graph', '_critical_path',
+        '_wakeup_graph', '_thread_executing_span_graph'
     ],
-    '/experimental/flat_slices.sql': ['experimental_slice_flattened']
+    '/slices/flat_slices.sql': ['_slice_flattened']
 }
 
 
diff --git a/ui/src/frontend/app.ts b/ui/src/frontend/app.ts
index ae4c38b..015b893 100644
--- a/ui/src/frontend/app.ts
+++ b/ui/src/frontend/app.ts
@@ -323,7 +323,7 @@
 
             if (engine !== undefined && trackUtid != 0) {
               await runQuery(
-                `SELECT IMPORT('experimental.thread_executing_span');`,
+                `SELECT IMPORT('sched.thread_executing_span');`,
                 engine);
               await addDebugSliceTrack(
                 engine,
@@ -338,7 +338,7 @@
                       process.name AS process_name,
                       'thread_state' AS table_name
                     FROM
-                      experimental_thread_executing_span_critical_path(
+                      _thread_executing_span_critical_path(
                           ${trackUtid},
                           ${window.start},
                           ${window.end} - ${window.start}) cr
@@ -365,7 +365,7 @@
 
             if (engine !== undefined && trackUtid != 0) {
               await runQuery(
-                `SELECT IMPORT('experimental.thread_executing_span');`,
+                `SELECT IMPORT('sched.thread_executing_span');`,
                 engine);
               await addDebugSliceTrack(
                 engine,
@@ -399,10 +399,10 @@
 
             if (engine !== undefined && trackUtid != 0) {
               addQueryResultsTab({
-                query: `SELECT IMPORT('experimental.thread_executing_span');
+                query: `SELECT IMPORT('sched.thread_executing_span');
                    SELECT *
                       FROM
-                        experimental_thread_executing_span_critical_path_graph(
+                        _thread_executing_span_critical_path_graph(
                         "criical_path",
                          ${trackUtid},
                          ${window.start},
diff --git a/ui/src/frontend/thread_state_tab.ts b/ui/src/frontend/thread_state_tab.ts
index 3d4047f..1c881ec 100644
--- a/ui/src/frontend/thread_state_tab.ts
+++ b/ui/src/frontend/thread_state_tab.ts
@@ -291,7 +291,7 @@
     ), m(Button,
       {
         label: 'Critical path lite',
-        onclick: () => runQuery(`INCLUDE PERFETTO MODULE experimental.thread_executing_span;`, this.engine)
+        onclick: () => runQuery(`INCLUDE PERFETTO MODULE sched.thread_executing_span;`, this.engine)
           .then(() => addDebugSliceTrack(
             this.engine,
             {
@@ -306,7 +306,7 @@
                       process.name AS process_name,
                       'thread_state' AS table_name
                     FROM
-                      experimental_thread_executing_span_critical_path(
+                      _thread_executing_span_critical_path(
                         ${this.state?.thread?.utid},
                         trace_bounds.start_ts,
                         trace_bounds.end_ts - trace_bounds.start_ts) cr,
@@ -323,7 +323,7 @@
     ), m(Button,
       {
         label: 'Critical path',
-        onclick: () => runQuery(`INCLUDE PERFETTO MODULE experimental.thread_executing_span;`, this.engine)
+        onclick: () => runQuery(`INCLUDE PERFETTO MODULE sched.thread_executing_span;`, this.engine)
           .then(() => addDebugSliceTrack(
             this.engine,
             {
@@ -331,7 +331,7 @@
                   `
                     SELECT cr.id, cr.utid, cr.ts, cr.dur, cr.name, cr.table_name
                       FROM
-                        experimental_thread_executing_span_critical_path_stack(
+                        _thread_executing_span_critical_path_stack(
                           ${this.state?.thread?.utid},
                           trace_bounds.start_ts,
                           trace_bounds.end_ts - trace_bounds.start_ts) cr,