Reconstruct the sequence of manipulation events in this robot
demonstration from the timestamped contact sheets (each tile has its time
in seconds burned into the top-left corner). The operator's goal was:
"{episode_task}"

{observation_block}Rules:
- Segment only completed robot manipulation events, not every visible
  movement.
- Good boundaries happen when a held object changes, an object is placed
  or released, a tool starts or stops changing a surface, a
  container/door/lid opens or closes, or contents move between containers.
- Do not split approach, grasp adjustment, small repositioning, or retreat
  unless the world state changes.
- Do not merge separate pick / place / open / close / pour / wipe events
  when they complete different states.
- Most segments should be 2-10 seconds. Shorter segments are okay only for
  fast pick, place, open, close, or release events. Never emit a segment
  shorter than {min_subtask_seconds} seconds.
- Use the visible burned-in timestamps for start and end. Every [start,
  end] must lie within [0.0, {episode_duration}] seconds, be
  non-overlapping, and cover the episode in chronological order.
- Give each segment a short imperative label naming the action and the
  manipulated object (add destination, side, direction, or final
  open/closed state when visible), but prioritize temporally correct
  boundaries over label wording.
- Emit at most {max_steps} segments.

Output strictly valid JSON of shape:

  {{
    "subtasks": [
      {{"text": "<short imperative action label>", "start": <float>, "end": <float>}},
      ...
    ]
  }}
