{
  "schema_id": "tobi.embodied_layers.v1",
  "updated": "2026-09-21",
  "namespaces": {
    "device": {
      "rule": "Only streams written by the capture device or its factory calibration files.",
      "may_include": [
        "rgb",
        "tracking_gray",
        "ctrl_gray",
        "imu",
        "mag",
        "audio",
        "head_pose",
        "hand_tracking_openxr",
        "camera_params",
        "time_sync"
      ],
      "must_not_include": [
        "vision_skeleton",
        "hamer_mano",
        "stereo_sgbm",
        "foundation_stereo",
        "mosaic",
        "ocr",
        "sam_mask",
        "object_6dof_estimate",
        "human_sentence"
      ]
    },
    "estimate": {
      "rule": "Offline algorithms. Always carry method, version, and confidence or valid_mask when applicable.",
      "may_include": [
        "hand_2d_vision21",
        "hand_2d_mediapipe",
        "hand_2d_rtmpose",
        "hand_mano_hamer",
        "stereo_disparity",
        "stereo_z",
        "stereo_foundation",
        "privacy_mosaic",
        "ocr_boxes",
        "person_face_boxes",
        "gyro_heading_integral"
      ],
      "required_fields": [
        "method",
        "not_device_output",
        "episode_id"
      ]
    },
    "human": {
      "rule": "Human review. Never rewrite as detector output.",
      "may_include": [
        "narration",
        "keyframe_sentence",
        "object_time_span",
        "subtask_span",
        "accepted_flag"
      ]
    }
  },
  "empty_when_absent": [
    "boxes",
    "mask",
    "object_pose_6dof",
    "contact_force",
    "per_joint_confidence",
    "robot_eef_action",
    "depth_camera"
  ],
  "train_on": "Source video at native Hz (E2 Camera0/1 30 Hz, E6 rgb.mp4 ~60 Hz). Never 4 Hz / 10 Hz preview mp4.",
  "papers_third_party_only": [
    "FoundationStereo (CVPR 2025)",
    "HaMeR (CVPR 2024)",
    "EgoDex (dataset paper)"
  ],
  "vision_integration": {
    "report": "data-layers/reports/vision_pipeline_v1.json",
    "ran": ["apple_vision_hand_counts_1hz", "stereo_sgbm_lr_confidence"],
    "slot_only_not_run": ["mediapipe_hands", "rtmpose", "hamer", "foundation_stereo"],
    "rejected_for_these_episodes": ["multiview_triangulation_min3", "outlier_rejection_4plus_cameras", "butterworth_on_joints"],
    "rule": "A tracker enters estimate/ only with method, not_device_output, and per-joint xy or an explicit count-only flag. Two RGB eyes use stereo disparity, not an N-camera body solve."
  }
}