{
  "cohorts": [
    "native",
    "primary_forgery",
    "sensor_fault",
    "cross_channel"
  ],
  "corroboration": {
    "actuator": {
      "arm_effort_bound_nm": 0.02,
      "arm_position_bound_rad": 0.001,
      "arm_velocity_bound_rad_s": 0.01,
      "calibration_id": "dvidia-piper-drive-v04",
      "finger_position_bound_m": 0.0005,
      "finger_velocity_bound_m_s": 0.001,
      "gripper_command_bound_m": 0.0001,
      "gripper_effort_bound_n": 0.02,
      "gripper_kp_n_per_m": 40.0,
      "gripper_kv_ns_per_m": 5.0
    },
    "camera": {
      "calibration_id": "dvidia-overhead-ortho-v04",
      "center_xy_m": [
        0.44,
        -0.12
      ],
      "frame_id": "workstation_world",
      "height": 480,
      "pixel_error_bound_px": 1.5,
      "position_bound_m": 0.04,
      "vertical_span_m": 0.6,
      "width": 640,
      "yaw_bound_rad": 0.12
    },
    "camera_frames": 11,
    "camera_period_s": 0.02,
    "camera_source_id": "overhead-rgb",
    "drive_period_s": 0.002,
    "drive_samples": 100,
    "drive_source_id": "piper-drive-bus-v1",
    "history_s": 0.2,
    "limitations": [
      "Separate RGB/drive processing shares the same simulator; no physical sensor independence is established.",
      "A green elongated candidate is not authenticated target identity. Axial yaw cannot distinguish a 180 degree flip.",
      "Orthographic RGB does not measure height or table support. Drive effort is not target contact force.",
      "Compatible auxiliary observations do not prove that the primary support/contact assertions are true.",
      "Freshly timestamped consistent replay/common-mode forgery and motion between camera samples may pass.",
      "Uncertainty bounds and calibration IDs are declared synthetic assumptions, not authenticated or hardware calibrated."
    ],
    "maximum_age_s": 0.1,
    "policy": "Primary incomplete/unknown is retained. Primary complete requires valid aligned RGB and drive windows, compatible pose/motion, and release corroboration; any refusal returns unknown.",
    "release": {
      "command_min_m": 0.03,
      "effort_abs_max_n": 0.1,
      "jaw_gap_min_m": 0.06,
      "jaw_rate_abs_max_m_s": 0.01
    },
    "time_tolerance_s": 1e-06
  },
  "development_exposure": "Development uses seed2026101904. Final seed2026102007 was not inspected before source/protocol freeze.",
  "faults": [
    "camera_missing",
    "camera_stale",
    "camera_gap",
    "camera_bad_calibration_id",
    "actuator_missing",
    "actuator_stale",
    "actuator_gap",
    "actuator_wrong_units"
  ],
  "layout_count": 8,
  "layouts": [
    {
      "azimuth_deg": 137.423,
      "id": "fresh-01",
      "xy_m": [
        0.408156,
        -0.088494
      ],
      "yaw_rad": -0.074852
    },
    {
      "azimuth_deg": 125.646,
      "id": "fresh-02",
      "xy_m": [
        0.412829,
        -0.117084
      ],
      "yaw_rad": -0.016596
    },
    {
      "azimuth_deg": 134.821,
      "id": "fresh-03",
      "xy_m": [
        0.40942,
        -0.129271
      ],
      "yaw_rad": -0.06837
    },
    {
      "azimuth_deg": 126.053,
      "id": "fresh-04",
      "xy_m": [
        0.392863,
        -0.146641
      ],
      "yaw_rad": -0.073618
    },
    {
      "azimuth_deg": 157.741,
      "id": "fresh-05",
      "xy_m": [
        0.399421,
        -0.090068
      ],
      "yaw_rad": 0.096692
    },
    {
      "azimuth_deg": 155.536,
      "id": "fresh-06",
      "xy_m": [
        0.389885,
        -0.086064
      ],
      "yaw_rad": 0.065939
    },
    {
      "azimuth_deg": 126.326,
      "id": "fresh-07",
      "xy_m": [
        0.416413,
        -0.100906
      ],
      "yaw_rad": -0.087482
    },
    {
      "azimuth_deg": 153.572,
      "id": "fresh-08",
      "xy_m": [
        0.386464,
        -0.154426
      ],
      "yaw_rad": 0.035456
    }
  ],
  "native_scenarios": [
    "complete",
    "occluded",
    "wrong_position",
    "wrong_orientation",
    "missing_target",
    "wrong_object",
    "unreleased",
    "sustained_motion",
    "instant_alias",
    "yaw_flip180",
    "lookalike_wrongobject",
    "elevated_support"
  ],
  "oracle": "Frozen native _measure and observe across100ticks2ms; no observer features enter physical truth.",
  "planned_cases": 272,
  "primary_contract": {
    "absence_semantics": "Absent is a positive observation that the named target is absent, not omitted sensor data. Absent/unknown observations require null pose, speed and force fields.",
    "bounds": {
      "angular_speed_rad_s": [
        0.0,
        100.0
      ],
      "clock_s": [
        0.0,
        1000000000.0
      ],
      "force_n": [
        0.0,
        1000.0
      ],
      "linear_speed_m_s": [
        0.0,
        20.0
      ],
      "position_m": [
        -2.0,
        2.0
      ],
      "yaw_rad": [
        -3.141592653589793,
        3.141592653589793
      ]
    },
    "criteria": {
      "angular_speed_max_rad_s": 0.05,
      "continuous_dwell_s": 0.2,
      "linear_speed_max_m_s": 0.01,
      "position_tolerance_m": 0.025,
      "robot_force_max_n": 0.01,
      "support_force_min_n": 0.01,
      "yaw_tolerance_rad": 0.2617993877991494
    },
    "decision_semantics": "Invalid, missing, stale, gapped or insufficient evidence returns unknown before physical scoring. Unknown presence in the scoring window returns unknown. A physical predicate fails only when its entire interval violates its threshold. Any definite failure returns incomplete; otherwise any threshold overlap returns unknown; all intervals passing returns complete.",
    "history_semantics": "history_start_s is the beginning of the first sample interval. Each t_s ends one 2 ms interval. Validate the full packet; score only the latest 100 samples.",
    "limitations": [
      "Self-consistent fabricated sensor observations cannot be detected by this verifier; sensor provenance and integrity need an independent trusted channel.",
      "A pass means the latest 100 samples satisfy the fixed contract at a declared 2 ms cadence; it is not continuous-time, hardware, identity-estimator or force-sensor certification.",
      "The caller must provide a trusted goal and now_s on the same monotonic or simulation clock as the observations; the packet cannot authenticate its own clock.",
      "Uncertainty bounds are asserted by the data source, not validated calibration. Explicit zero bounds represent an exact native-state assumption; they do not establish noiseless physical sensors."
    ],
    "max_age_s": 0.1,
    "max_samples": 500,
    "packet_fields": [
      "history_start_s",
      "sample_period_s",
      "samples",
      "schema",
      "uncertainty_bounds",
      "units"
    ],
    "required_samples": 100,
    "sample_fields": [
      "angular_speed_rad_s",
      "frame_id",
      "linear_speed_m_s",
      "object_id",
      "position_m",
      "presence",
      "robot_contact_force_n",
      "t_s",
      "table_support_force_n",
      "yaw_rad"
    ],
    "sample_period_s": 0.002,
    "schema": "dvidia.local-goal-observations/v1",
    "timestamp_tolerance_s": 1e-06,
    "uncertainty_maximum_bounds": {
      "angular_speed_rad_s": 100.0,
      "linear_speed_m_s": 20.0,
      "position_m": 2.0,
      "robot_contact_force_n": 1000.0,
      "table_support_force_n": 1000.0,
      "yaw_rad": 3.141592653589793
    },
    "uncertainty_semantics": "Mandatory symmetric absolute bounds in declared SI units. position_m bounds XY error norm, yaw_rad bounds wrapped yaw-distance error. Nonnegative metrics have lower bounds clamped at zero; yaw-distance upper is clamped at pi. All selected samples share these asserted bounds.",
    "units": {
      "angle": "rad",
      "angular_speed": "rad/s",
      "force": "N",
      "linear_speed": "m/s",
      "position": "m",
      "time": "s"
    }
  },
  "provider_calls": 0,
  "repeats": 3,
  "schema": "dvidia.sensor-goal-protocol/v1",
  "scope": "Synthetic 30g rigid shoe proxy, fixed PiPER and orthographic calibrated color observer. No learned detector, hardware validation, genuine sensor authentication or policy training.",
  "seed": 2026102007,
  "selection": "All scheduled cases count; generation mismatches remain. Hard generation failure seals diagnostics and stops scoring.",
  "source": {
    "commit": "90e84701ce7d5bc330ef41b02793e2ce037d702d",
    "files": {
      "pyproject.toml": "dedb6e95ed20c59fff64d42269f402de0ce039db7825792cc79d6ff667e58ab2",
      "src/dvidia_training/asset_catalog.json": "592f363389a96fef7f9223737aa72a2f1a74f400238924bf6790ec5bfd3302b7",
      "src/dvidia_training/asset_library.py": "12520ca13b7806004be37a0d7e0d1e023c90410c1eba899296fdcd5b28fdc7f7",
      "src/dvidia_training/image_goal_benchmark.py": "38fa1de5da6ee9f8e0ab60bc77d2561e82de0dad17dcc1d067b5816d8633996a",
      "src/dvidia_training/image_goal_scenes.py": "1fe41c3fe4d372b068681caf3f63766285b9238976043a9e15fe4dbadb40b79a",
      "src/dvidia_training/jev_client.py": "f5dad86c692144a1cf85bfeecf68b99318ea8d9df08e0fe5d47d144f80a380ee",
      "src/dvidia_training/local_goal_benchmark.py": "d1cf4990ba0239418855ea851416e37d3f3fd5c5e38bc0fb6183e432ba4e3ecf",
      "src/dvidia_training/local_goal_scenes.py": "58e8a01aae646a4e9078ebb1b2e629a23c93ce42198b027696a6e77dea0858b0",
      "src/dvidia_training/local_goal_verifier.py": "234d6374ae01cfdfd56fbfe1a4e1f27fc58baf8df88f47b02a30ca64bc238da5",
      "src/dvidia_training/reference_sim.py": "c1201d22eb13dd07a236ee63cc4ba68e129f6067e8db61ed41af2d820eb5e3b8",
      "src/dvidia_training/robot_profiles.lock.json": "4b2ee2ca675aceb2f826983cb3082a3e08e9aa0ff419b23078abcff08ebcc6fe",
      "src/dvidia_training/robot_profiles.py": "fb90782a6a9979e282182118ae0e3e29d00f101255cc57378dd3f692672bb13d",
      "src/dvidia_training/sensor_goal_benchmark.py": "d676f67cdf9ea5ead8a118c88bb8e3cdc3ef085d35505055a29d6fc05b6bd917",
      "src/dvidia_training/sensor_goal_observers.py": "53e96c99ffae058c701c9ccc0b5339317262909637acc14b351bec9e6cca99f7",
      "src/dvidia_training/sensor_goal_scenes.py": "9aac1531180364a380d01fcbb52375cd1f1e4aea18fa6f93d581a316b14f5af1",
      "src/dvidia_training/sensor_goal_verifier.py": "7d54a444e4a4a79c0b5a554fc0883ad88f091deb43ad0759d3a70e2e4a9dd90e",
      "src/dvidia_training/workstation.py": "2a6aa6686b5b273efcfb21156952df8ceca88d991674cd17df92f2dccc11b701"
    }
  },
  "timing_scope": "perf_counter_ns stages for JSON/file reads and PNG decoding, v03 baseline, RGB observation, drive observation, fusion, and their complete processed-window path. No inference cache; repeats read the same local sealed files, so OS file cache may be warm. Excludes rendering/acquisition, the200ms history wait, networking and robot actuation. Native scene/render generation wall time reported separately. Not hard real-time latency.",
  "warmups": 1
}
