{
  "schema_version": "trajectory.v1",
  "trajectory_id": "d1-four-batch-showcase-60s-v3",
  "claim": "clearance-authored-cinematic-plan-not-physical-rollout",
  "duration_seconds": 60,
  "joint_names": ["joint1", "joint2", "joint3", "joint4", "joint5", "joint6"],
  "batch_order": ["A1", "B1", "A2", "B2"],
  "plate_reuse": {
    "plate-A": ["A1", "A2"],
    "plate-B": ["B1", "B2"]
  },
  "process_contract": {
    "shuttle": "process-shuttle-01",
    "station_order": ["printer", "wash", "deplate", "cure", "assembly_staging"],
    "pass_duration_seconds": 7,
    "workflow": [
      "drain",
      "shuttle_acquire",
      "transfer_to_wash",
      "wash",
      "transfer_to_deplate",
      "deplate",
      "empty_plate_return"
    ],
    "relative_schedule": {
      "drain": [0, 0.6],
      "shuttle_acquire": [0.6, 1.0],
      "transfer_to_wash": [1.0, 1.8],
      "wash": [1.8, 3.4],
      "transfer_to_deplate": [3.4, 4.2],
      "deplate": [4.2, 6.3],
      "empty_plate_return": [6.3, 7.0]
    },
    "deplate_substates_normalized": {
      "plate_locate": [0, 0.06],
      "plate_clamp": [0.06, 0.12],
      "raft_separation": [0.12, 0.30],
      "dual_pick_place": [0.30, 0.96],
      "fixture_verify": [0.96, 0.98],
      "plate_release": [0.98, 1.0]
    },
    "dual_pick_place_slots": 5
  },
  "phases": [
    {"id": "ingest", "start": 0, "end": 0.25},
    {"id": "fixture", "start": 0.25, "end": 0.5},
    {
      "id": "print_round_1",
      "start": 0.5,
      "end": 6.5,
      "batches": ["A1", "B1"],
      "plates": ["plate-A", "plate-B"],
      "layers": 2400,
      "sample_cycles": 48
    },
    {
      "id": "process_A1",
      "kind": "plate_pass",
      "start": 6.5,
      "end": 13.5,
      "batch": "A1",
      "plate": "plate-A",
      "reuse_cycle": 1,
      "schedule_ref": "process_contract.relative_schedule",
      "absolute_schedule": {
        "drain": [6.5, 7.1],
        "shuttle_acquire": [7.1, 7.5],
        "transfer_to_wash": [7.5, 8.3],
        "wash": [8.3, 9.9],
        "transfer_to_deplate": [9.9, 10.7],
        "deplate": [10.7, 12.8],
        "empty_plate_return": [12.8, 13.5]
      }
    },
    {
      "id": "process_B1",
      "kind": "plate_pass",
      "start": 13.5,
      "end": 20.5,
      "batch": "B1",
      "plate": "plate-B",
      "reuse_cycle": 1,
      "schedule_ref": "process_contract.relative_schedule",
      "absolute_schedule": {
        "drain": [13.5, 14.1],
        "shuttle_acquire": [14.1, 14.5],
        "transfer_to_wash": [14.5, 15.3],
        "wash": [15.3, 16.9],
        "transfer_to_deplate": [16.9, 17.7],
        "deplate": [17.7, 19.8],
        "empty_plate_return": [19.8, 20.5]
      }
    },
    {
      "id": "print_round_2",
      "start": 20.5,
      "end": 26.5,
      "batches": ["A2", "B2"],
      "plates": ["plate-A", "plate-B"],
      "layers": 2400,
      "sample_cycles": 48
    },
    {
      "id": "process_A2",
      "kind": "plate_pass",
      "start": 26.5,
      "end": 33.5,
      "batch": "A2",
      "plate": "plate-A",
      "reuse_cycle": 2,
      "schedule_ref": "process_contract.relative_schedule",
      "absolute_schedule": {
        "drain": [26.5, 27.1],
        "shuttle_acquire": [27.1, 27.5],
        "transfer_to_wash": [27.5, 28.3],
        "wash": [28.3, 29.9],
        "transfer_to_deplate": [29.9, 30.7],
        "deplate": [30.7, 32.8],
        "empty_plate_return": [32.8, 33.5]
      }
    },
    {
      "id": "process_B2",
      "kind": "plate_pass",
      "start": 33.5,
      "end": 40.5,
      "batch": "B2",
      "plate": "plate-B",
      "reuse_cycle": 2,
      "schedule_ref": "process_contract.relative_schedule",
      "absolute_schedule": {
        "drain": [33.5, 34.1],
        "shuttle_acquire": [34.1, 34.5],
        "transfer_to_wash": [34.5, 35.3],
        "wash": [35.3, 36.9],
        "transfer_to_deplate": [36.9, 37.7],
        "deplate": [37.7, 39.8],
        "empty_plate_return": [39.8, 40.5]
      }
    },
    {
      "id": "cure_delivery",
      "start": 40.5,
      "end": 46.5,
      "payload": "four-cassette rack",
      "cassettes": ["cassette-NW", "cassette-NE", "cassette-SW", "cassette-SE"],
      "workflow": ["rack_transfer", "rack_clamping", "uv_cure", "uv_cooldown", "cassette_delivery"],
      "rack_schedule": {
        "transfer": [40.5, 41.0],
        "clamp": [41.0, 41.3],
        "cure": [41.3, 45.3],
        "cooldown_unload": [45.3, 46.0],
        "delivery": [46.0, 46.5]
      },
      "substates": ["RACK_TRANSFER", "RACK_CLAMPING", "CURING", "UV_COOLDOWN", "TRAY_DELIVERY", "STAGED"]
    },
    {"id": "assembly", "start": 46.5, "end": 57.5},
    {"id": "commission", "start": 57.5, "end": 60}
  ],
  "task_cycle": {
    "pregrasp": [0, 0.12],
    "vertical_approach": [0.12, 0.2],
    "grasp": [0.2, 0.28],
    "vertical_lift": [0.28, 0.38],
    "quadrant_safe_traverse": [0.38, 0.72],
    "vertical_insertion": [0.72, 0.84],
    "release": [0.84, 0.91],
    "retreat": [0.91, 1]
  },
  "clearance_contract": {
    "minimum_equipment_clearance": 0.35,
    "rear_service_zone_max_z": -10.2,
    "assembly_targets_min_z": -4.0,
    "sample_count_per_arm_cycle": 101,
    "process_carrier_motion": "shuttle-owned collision-checked transfer",
    "process_carrier_y": 5.41
  },
  "time_compression": {
    "enabled": true,
    "engineering_playback_query": "speed=engineering",
    "note": "Contact dwells and robot ownership changes are preserved; long process and transit intervals are compressed."
  }
}
