From 86f0b4bd20cdec86dfb5bdb7978d1f6ff4af111a Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Fri, 14 Aug 2026 22:41:54 +0800
Subject: [PATCH] [verified] feat: export performance diagnostics

---
 C3.tools/round1-session-snapshot-qa.sh |   28 ++++++++++++++++++++++++----
 1 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/C3.tools/round1-session-snapshot-qa.sh b/C3.tools/round1-session-snapshot-qa.sh
index 981dd57..1dac74a 100755
--- a/C3.tools/round1-session-snapshot-qa.sh
+++ b/C3.tools/round1-session-snapshot-qa.sh
@@ -143,7 +143,10 @@
 fullscreen_segments = [segment for segment in lane_segments if segment.get("type") == "fullscreen"]
 require([segment.get("label") for segment in fullscreen_segments] == fullscreen_labels, "fullscreen segment reports must match fullscreen labels")
 require(all(segment.get("fullscreenMarkerVisible") is True for segment in fullscreen_segments), "fullscreen segments must expose fullscreen marker")
-require(all(segment.get("fullscreenMarkerKind") == "cornerBracket" for segment in fullscreen_segments), "fullscreen segments must use corner bracket marker")
+require(
+    all(segment.get("fullscreenMarkerKind") in {"cornerBracket", "splitViewPair"} for segment in fullscreen_segments),
+    "fullscreen segments must use a known fullscreen marker"
+)
 require(all(segment.get("windowBlockCount") == 0 for segment in fullscreen_segments), "fullscreen segments must not expose floating-window blocks")
 non_fullscreen_segments = [segment for segment in lane_segments if segment.get("type") != "fullscreen"]
 require(all(segment.get("fullscreenMarkerKind") == "none" for segment in non_fullscreen_segments), "non-fullscreen segments must not expose fullscreen marker")
@@ -152,10 +155,27 @@
     marker_frame = segment.get("fullscreenMarkerFrame", {})
     app_frame = segment.get("appFrame", {})
     require(isinstance(marker_frame, dict), "fullscreen segments must expose marker frame")
-    require(isinstance(app_frame, dict), "fullscreen segments must expose centered App label frame")
     marker_mid_y = marker_frame.get("y", 0) + marker_frame.get("height", 0) / 2
-    app_mid_y = app_frame.get("y", 0) + app_frame.get("height", 0) / 2
-    require(abs(marker_mid_y - app_mid_y) <= 2, "fullscreen App label must be vertically centered in marker")
+    if segment.get("fullscreenMarkerKind") == "splitViewPair":
+        label_frames = segment.get("splitViewLabelFrames", [])
+        require(len(label_frames) == 2, "Split View fullscreen segments must expose two app label frames")
+        require(
+            segment.get("splitViewAppNames") and len(segment.get("splitViewAppNames")) == 2,
+            "Split View fullscreen segments must expose two ordered app names"
+        )
+        require(
+            label_frames[0].get("x", 0) + label_frames[0].get("width", 0) / 2
+            < marker_frame.get("x", 0) + marker_frame.get("width", 0) / 2
+            < label_frames[1].get("x", 0) + label_frames[1].get("width", 0) / 2,
+            "Split View app labels must occupy left and right marker halves"
+        )
+        for label_frame in label_frames:
+            app_mid_y = label_frame.get("y", 0) + label_frame.get("height", 0) / 2
+            require(abs(marker_mid_y - app_mid_y) <= 2, "Split View App labels must be vertically centered in marker")
+    else:
+        require(isinstance(app_frame, dict), "fullscreen segments must expose centered App label frame")
+        app_mid_y = app_frame.get("y", 0) + app_frame.get("height", 0) / 2
+        require(abs(marker_mid_y - app_mid_y) <= 2, "fullscreen App label must be vertically centered in marker")
 for segment in lane_segments:
     if segment.get("isCurrent") is True:
         require("current" in segment.get("visualStates", []), "current segment must expose current visual state")

--
Gitblit v1.9.3